本帖最后由 zj97czb 于 2025-9-24 15:41 编辑
这个屏,能玩转的不多,评论区说主控是UC1701e。这个 UC1701e就是一个定制货,和UC1701C、UC1701x 的指令不一样,也就和常用的ST7567不一样。
常用芯片初始化中,写的都是命令,但UC1701e,命令后面带的是数据。还好是通用的SPI通信
初始化,注意有两条是数据
- void lcd12864_uc1701e_init(void)//
- {
- write_cmd(0xe2);//软复位
- delay_nms(15);
- write_cmd(0x24);//温度补偿P11
- write_cmd(0x2d);// 升压控制P12
- write_cmd(0xa6);// LCD屏设置(行、列方向和时钟频率)P12
- write_cmd(0xea);//regulation ratio=5.0屏工作电压(升压电压)P13
-
- write_cmd(0x81);//设置对比度P12
- write_dat(70);//对比度0-127
-
- write_cmd(0xc9);//开关机P12
- write_dat(0xaf);//开机
- }
复制代码
由于屏只接了奇数行,我用的是硬件SPI,所以要 驱动它就要按64行来写,字库可以与ST7657通用,上贴中的取模软件的取模方式为://垂直扫描,从左到右,从上到下,低位在前
- unsigned char xdata uc1701e_ziti32x16[64];
- unsigned char xdata uc1701e_ziti32x08[32];
复制代码 将16个字模数据转换成32个
- void uc1701e_16to32(unsigned char weihao)//将16个数据转换成32个
- {
- unsigned char i,j,temp;
- unsigned int temp1;
- for(i=0;i<16;i++)
- {
- temp=uc1701e_ziti1608[weihao][i];
- for(j=0;j<8;j++)
- {
- temp1>>=2; //
- if(temp&0x01)
- {
- temp1+=0x4000;//
- }
- temp>>=1;
- }
- if(i<8)
- {
- uc1701e_ziti32x08[i]=temp1%256;
- uc1701e_ziti32x08[i+8]=temp1/256;
- }
- else
- {
- uc1701e_ziti32x08[i+8]=temp1%256;
- uc1701e_ziti32x08[i+16]=temp1/256;
- }
-
- }
- }
复制代码
写一个字符
- void disp_uc1701e_hanzi16x8(unsigned char lie,unsigned char hang,unsigned char weihao) //写字符
- {
- unsigned char i,j;
-
- uc1701e_16to32(weihao);
- for(i=0;i<4;i++)
- {
- write_cmd(0xb0+hang+i);//行地址
- write_cmd(0x04);//设置列地址
- write_dat(lie);//列地址数据
- write_cmd(0x01);//写数据
- for(j=0;j<8;j++)
- {
- write_dat(uc1701e_ziti32x08[i*8+j]);
- }
- }
- }
复制代码
将32个字模数据转换成64个
- void uc1701e_32to64(unsigned char weihao)//将32个数据转换成64个
- {
- unsigned char i,j,temp;
- unsigned int temp1;
- for(i=0;i<32;i++)
- {
- temp=uc1701e_ziti1616[weihao][i];
- for(j=0;j<8;j++)
- {
- temp1>>=2; //
- if(temp&0x01)
- {
- temp1+=0x4000;//
- }
- temp>>=1;
- }
- if(i<16)
- {
- uc1701e_ziti32x16[i]=temp1%256;
- uc1701e_ziti32x16[i+16]=temp1/256;
- }
- else
- {
- uc1701e_ziti32x16[i+16]=temp1%256;
- uc1701e_ziti32x16[i+32]=temp1/256;
- }
-
- }
- }
复制代码 写一个16X16i汉字
- void disp_uc1701e_hanzi16x16(unsigned char lie,unsigned char hang,unsigned char weihao) //写汉字
- {
- unsigned char i,j;
-
- uc1701e_32to64(weihao);
- for(i=0;i<4;i++)
- {
- write_cmd(0xb0+hang+i);//行地址
- write_cmd(0x04);//设置列地址
- write_dat(lie);//列地址数据
- write_cmd(0x01);//写数据
- for(j=0;j<16;j++)
- {
- write_dat(uc1701e_ziti32x16[i*16+j]);
- }
- }
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|