数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索

[C51] 老王家液晶屏点亮记2:FPC印字YF1512832CS6;主控UC1701e;128X32

[复制链接]
zj97czb 发表于 昨天 15:31 | 显示全部楼层 |阅读模式
本帖最后由 zj97czb 于 2025-9-24 15:41 编辑

这个屏,能玩转的不多,评论区说主控是UC1701e。这个 UC1701e就是一个定制货,和UC1701C、UC1701x 的指令不一样,也就和常用的ST7567不一样。


常用芯片初始化中,写的都是命令,但UC1701e,命令后面带的是数据。还好是通用的SPI通信




初始化,注意有两条是数据
  1. void lcd12864_uc1701e_init(void)//
  2. {
  3.         write_cmd(0xe2);//软复位
  4.         delay_nms(15);
  5.         write_cmd(0x24);//温度补偿P11
  6.         write_cmd(0x2d);// 升压控制P12
  7.         write_cmd(0xa6);// LCD屏设置(行、列方向和时钟频率)P12
  8.         write_cmd(0xea);//regulation ratio=5.0屏工作电压(升压电压)P13
  9.         
  10.         write_cmd(0x81);//设置对比度P12
  11.         write_dat(70);//对比度0-127
  12.         
  13.         write_cmd(0xc9);//开关机P12
  14.         write_dat(0xaf);//开机
  15. }
复制代码


由于屏只接了奇数行,我用的是硬件SPI,所以要 驱动它就要按64行来写,字库可以与ST7657通用,上贴中的取模软件的取模方式为://垂直扫描,从左到右,从上到下,低位在前

  1. unsigned char xdata uc1701e_ziti32x16[64];
  2. unsigned char xdata uc1701e_ziti32x08[32];
复制代码
将16个字模数据转换成32个
  1. void uc1701e_16to32(unsigned char weihao)//将16个数据转换成32个
  2. {
  3.         unsigned char        i,j,temp;
  4.         unsigned int temp1;
  5.         for(i=0;i<16;i++)
  6.         {
  7.                 temp=uc1701e_ziti1608[weihao][i];
  8.                 for(j=0;j<8;j++)
  9.                 {
  10.                         temp1>>=2;        //
  11.                          if(temp&0x01)
  12.                                 {
  13.                                         temp1+=0x4000;//
  14.                                 }
  15.                                 temp>>=1;
  16.                 }
  17.                 if(i<8)
  18.                 {
  19.                         uc1701e_ziti32x08[i]=temp1%256;
  20.                         uc1701e_ziti32x08[i+8]=temp1/256;
  21.                 }
  22.                 else
  23.                 {
  24.                         uc1701e_ziti32x08[i+8]=temp1%256;
  25.                         uc1701e_ziti32x08[i+16]=temp1/256;
  26.                 }
  27.                
  28.          }
  29. }        

复制代码


写一个字符
  1. void        disp_uc1701e_hanzi16x8(unsigned char lie,unsigned char hang,unsigned char weihao)   //写字符
  2. {
  3.         unsigned char        i,j;
  4.         
  5.         uc1701e_16to32(weihao);
  6.         for(i=0;i<4;i++)
  7.         {
  8.           write_cmd(0xb0+hang+i);//行地址
  9.           write_cmd(0x04);//设置列地址
  10.                 write_dat(lie);//列地址数据
  11.                 write_cmd(0x01);//写数据
  12.                 for(j=0;j<8;j++)
  13.          {
  14.                  write_dat(uc1701e_ziti32x08[i*8+j]);
  15.           }
  16.         }
  17. }
复制代码


将32个字模数据转换成64个
  1. void uc1701e_32to64(unsigned char weihao)//将32个数据转换成64个
  2. {
  3.         unsigned char        i,j,temp;
  4.         unsigned int temp1;
  5.         for(i=0;i<32;i++)
  6.         {
  7.                 temp=uc1701e_ziti1616[weihao][i];
  8.                 for(j=0;j<8;j++)
  9.                 {
  10.                         temp1>>=2;        //
  11.                          if(temp&0x01)
  12.                                 {
  13.                                         temp1+=0x4000;//
  14.                                 }
  15.                                 temp>>=1;
  16.                 }
  17.                 if(i<16)
  18.                 {
  19.                         uc1701e_ziti32x16[i]=temp1%256;
  20.                         uc1701e_ziti32x16[i+16]=temp1/256;
  21.                 }
  22.                 else
  23.                 {
  24.                         uc1701e_ziti32x16[i+16]=temp1%256;
  25.                         uc1701e_ziti32x16[i+32]=temp1/256;
  26.                 }
  27.                
  28.          }
  29. }        
复制代码
写一个16X16i汉字
  1. void        disp_uc1701e_hanzi16x16(unsigned char lie,unsigned char hang,unsigned char weihao)   //写汉字
  2. {
  3.         unsigned char        i,j;
  4.         
  5.         uc1701e_32to64(weihao);
  6.         for(i=0;i<4;i++)
  7.         {
  8.           write_cmd(0xb0+hang+i);//行地址
  9.           write_cmd(0x04);//设置列地址
  10.                 write_dat(lie);//列地址数据
  11.                 write_cmd(0x01);//写数据
  12.                 for(j=0;j<16;j++)
  13.          {
  14.                  write_dat(uc1701e_ziti32x16[i*16+j]);
  15.           }
  16.         }
  17. }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 2家元 +150 收起 理由
飞向狙沙 + 30 謝謝分享
家睦 + 120

查看全部打赏

飞向狙沙 发表于 昨天 16:21 | 显示全部楼层
牛,我现在都不碰这些异形屏了,费劲点亮了真设计东西时还得专门画封装,搞完了也不能批量,完了别人想一块玩也不行,各种操蛋。有便宜用得到的通用屏就撸点,没有就直接买全新,实际上DIY用一两个单价五块跟单价两块没区别
回复 支持 反对

使用道具 举报

21cnsound 发表于 昨天 18:18 | 显示全部楼层
初始化,注意有两条是数据----厉害厉害,我就纳闷LZ是怎么研究出来的?
回复 支持 反对

使用道具 举报

 楼主| zj97czb 发表于 昨天 18:28 | 显示全部楼层
21cnsound 发表于 2025-9-24 18:18
初始化,注意有两条是数据----厉害厉害,我就纳闷LZ是怎么研究出来的? ...

看手册,手册用必应一搜就有
回复 支持 反对

使用道具 举报

kpj001 发表于 昨天 23:33 | 显示全部楼层
“常用芯片初始化中,写的都是命令,但UC1701e,命令后面带的是数据。” --- 不知道怎么来的结论,几乎都有命令带数据的,不然设置偏移这些怎么搞?
回复 支持 反对

使用道具 举报

ly0166225 发表于 15 分钟前 | 显示全部楼层
老王家有些货确实还不错,玩玩还行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-9-25 07:54 , Processed in 0.265200 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表