找回密码
 立即注册
查看: 2077|回复: 1

51单片机四线spi驱动UC1601液晶屏

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:509
  • 最近打卡:2025-05-02 08:24:06

17

主题

65

回帖

1658

积分

金牌会员

积分
1658
发表于 2023-11-26 11:12:13 | 显示全部楼层 |阅读模式
  1. #include <STC89C5xRC.H>
  2. /*
  3. 丝印:HEM12864-12,驱动IC:UC1601
  4.         接线:1-CS;2-RST;3-DC;4-RW;5-SCK;8-SDA;13-VDD;14-BL-;15-BL+;16-GND
  5.         51单片机四线spi驱动UC1601液晶屏
  6.         焊盘1(BM0)\焊盘4(BM1)接地,BM[1:0]:"LL":S8(四线spi)
  7. */
  8. #define uchar unsigned char
  9. #define uint unsigned int
  10. #define Disp_On 0xaf // Display Enable
  11. #define Disp_Off 0xae // Display Disable
  12. #define Page_Add 0xb0 // Page Address Start
  13. //#define Row_Add 0x40 // Scroll Line Start
  14. sbit CD = P2^5; // Control or Data Select
  15. sbit CS0 = P2^7; // Chip select
  16. sbit RST = P2^6; // System reset
  17. sbit SCK=P2^3;
  18. sbit SDA=P2^2;
  19. uchar row,col; // 全局变量
  20. unsigned char code peom[]={
  21. 0x02,0xE2,0x22,0x22,0x22,0xFE,0x22,0x22,
  22. 0x22,0xFE,0x22,0x22,0x22,0xE2,0x02,0x00,
  23. 0x00,0xFF,0x00,0x08,0x06,0x01,0x16,0x08,
  24. 0x06,0x01,0x02,0x4C,0x80,0x7F,0x00,0x00,/*"两",0*/
  25. 0x80,0x80,0x40,0x20,0x10,0x08,0x04,0xC3,
  26. 0x04,0x08,0x10,0x20,0x40,0x80,0x80,0x00,
  27. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
  28. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"个",1*/
  29. 0x10,0x10,0x12,0xD2,0x52,0x5F,0x52,0xF2,
  30. 0x52,0x5F,0x52,0xD2,0x12,0x10,0x10,0x00,
  31. 0x00,0x00,0x00,0x9F,0x52,0x32,0x12,0x1F,
  32. 0x12,0x32,0x52,0x9F,0x00,0x00,0x00,0x00,/*"黄",2*/
  33. 0xF2,0x12,0x12,0xF2,0x02,0xF2,0x12,0x12,
  34. 0xF2,0x00,0xFC,0x16,0x25,0x84,0xFC,0x00,
  35. 0xFF,0x01,0x82,0xFF,0x00,0xFF,0x01,0x82,
  36. 0xFF,0x10,0x13,0x12,0x52,0x82,0x7E,0x00,/*"鹂",3*/
  37. 0x00,0xFC,0x04,0x04,0xFC,0x00,0x00,0xFC,
  38. 0x04,0x16,0x65,0x04,0x84,0xFC,0x00,0x00,
  39. 0x00,0x0F,0x04,0x04,0x0F,0x00,0x10,0x13,
  40. 0x12,0x12,0x12,0x52,0x92,0x42,0x3E,0x00,/*"鸣",4*/
  41. 0x00,0x22,0x26,0x1A,0x12,0x02,0x7E,0x80,
  42. 0x22,0x26,0x1A,0x12,0x02,0x7E,0x00,0x00,
  43. 0x20,0x21,0x29,0x25,0x23,0x25,0x29,0xF1,
  44. 0x29,0x25,0x23,0x25,0x29,0x21,0x20,0x00,/*"翠",5*/
  45. 0x10,0x10,0xD0,0xFF,0x90,0x10,0xFC,0x04,
  46. 0x02,0xF8,0x00,0xFC,0x04,0x04,0xFC,0x00,
  47. 0x04,0x03,0x00,0xFF,0x00,0x01,0x8F,0x44,
  48. 0x32,0x0F,0x00,0xFF,0x04,0x08,0x07,0x00,/*"柳",6*/
  49. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  50. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  51. 0x00,0x00,0x58,0x38,0x00,0x00,0x00,0x00,
  52. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",7*/
  53. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
  54. 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
  55. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  56. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"一",8*/
  57. 0x00,0x10,0x88,0xC4,0x33,0x00,0x40,0x42,
  58. 0x42,0x42,0xC2,0x42,0x42,0x42,0x40,0x00,
  59. 0x02,0x01,0x00,0xFF,0x00,0x00,0x00,0x00,
  60. 0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,/*"行",9*/
  61. 0x00,0x00,0xF8,0x08,0x08,0x0C,0x0A,0x09,
  62. 0x08,0x08,0x08,0x08,0xF8,0x00,0x00,0x00,
  63. 0x00,0x00,0xFF,0x41,0x41,0x41,0x41,0x41,
  64. 0x41,0x41,0x41,0x41,0xFF,0x00,0x00,0x00,/*"白",10*/
  65. 0x00,0x80,0xEE,0x8A,0xFA,0xAA,0xAE,0x14,
  66. 0x12,0xF7,0xAA,0xAA,0xF6,0x12,0x10,0x00,
  67. 0x00,0x40,0x40,0x5E,0x52,0x53,0x56,0x5A,
  68. 0x52,0x5A,0x1E,0x50,0x90,0x70,0x00,0x00,/*"鹭",11*/
  69. 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x40,
  70. 0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
  71. 0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,
  72. 0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,/*"上",12*/
  73. 0x40,0x44,0x54,0x54,0x54,0x54,0x54,0x7F,
  74. 0x54,0x54,0x54,0x54,0x54,0x44,0x40,0x00,
  75. 0x00,0x00,0x00,0xFF,0x15,0x15,0x15,0x15,
  76. 0x15,0x55,0x95,0x7F,0x00,0x00,0x00,0x00,/*"青",13*/
  77. 0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,
  78. 0x42,0x42,0x42,0x42,0x42,0x40,0x40,0x00,
  79. 0x80,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,
  80. 0x03,0x0C,0x10,0x20,0x40,0x80,0x80,0x00,/*"天",14*/
  81. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  82. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  83. 0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,
  84. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"。",15*/
  85. 0x10,0x0C,0xC4,0x54,0x4C,0x64,0xD5,0x46,
  86. 0x44,0x44,0x4C,0x54,0xC4,0x14,0x0C,0x00,
  87. 0x00,0x00,0xFF,0x40,0x44,0x62,0x55,0x49,
  88. 0x55,0x43,0x40,0x40,0xFF,0x00,0x00,0x00,/*"窗",0*/
  89. 0x40,0x40,0x20,0x20,0x90,0x88,0x94,0xE3,
  90. 0x84,0x88,0x90,0x20,0x20,0x40,0x40,0x00,
  91. 0x00,0x00,0x00,0xFC,0x44,0x44,0x44,0x44,
  92. 0x46,0x45,0x44,0xFC,0x00,0x00,0x00,0x00,/*"含",1*/
  93. 0x02,0x02,0xE2,0x22,0x22,0xFE,0x22,0x22,
  94. 0x22,0xFE,0x22,0x22,0xE2,0x02,0x02,0x00,
  95. 0x00,0x00,0xFF,0x48,0x44,0x43,0x40,0x40,
  96. 0x40,0x43,0x44,0x44,0xFF,0x00,0x00,0x00,/*"西",2*/
  97. 0x00,0xF0,0x00,0xFF,0x00,0xF0,0x40,0x20,
  98. 0x10,0x0C,0x23,0xCC,0x10,0x20,0x40,0x00,
  99. 0x00,0x1F,0x10,0x0F,0x08,0x1F,0x00,0x01,
  100. 0x09,0x11,0x21,0xD1,0x0D,0x03,0x00,0x00,/*"岭",3*/
  101. 0x80,0x80,0x84,0x84,0x84,0x84,0x84,0xFC,
  102. 0x82,0x82,0x82,0x83,0x82,0x80,0x80,0x00,
  103. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
  104. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"千",4*/
  105. 0x24,0x24,0xA4,0xFE,0x23,0x22,0x80,0x70,
  106. 0x00,0xFF,0x00,0x80,0x40,0x30,0x00,0x00,
  107. 0x08,0x06,0x01,0xFF,0x01,0x86,0x40,0x30,
  108. 0x0E,0x01,0x06,0x18,0x20,0x40,0x80,0x00,/*"秋",5*/
  109. 0x10,0x0C,0x05,0x55,0x55,0x55,0x05,0x7F,
  110. 0x05,0x55,0x55,0x55,0x05,0x14,0x0C,0x00,
  111. 0x00,0x00,0x41,0x49,0x49,0x49,0x49,0x49,
  112. 0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,/*"雪",6*/
  113. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  114. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  115. 0x00,0x00,0x58,0x38,0x00,0x00,0x00,0x00,
  116. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",7*/
  117. 0x00,0xF8,0x01,0x06,0x00,0x00,0x02,0x02,
  118. 0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,
  119. 0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
  120. 0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,/*"门",8*/
  121. 0x10,0x60,0x02,0x0C,0xC0,0x00,0xF8,0x08,
  122. 0x0C,0x0B,0x08,0x08,0x08,0xF8,0x00,0x00,
  123. 0x04,0x04,0x7C,0x03,0x00,0x00,0xFF,0x41,
  124. 0x41,0x41,0x41,0x41,0x41,0xFF,0x00,0x00,/*"泊",9*/
  125. 0x00,0x08,0x88,0x48,0x28,0x18,0x0F,0xE8,
  126. 0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,
  127. 0x00,0x20,0x11,0x09,0x05,0x41,0x81,0x7F,
  128. 0x01,0x01,0x05,0x09,0x11,0x20,0x00,0x00,/*"东",10*/
  129. 0x00,0x00,0x80,0x9E,0x92,0x92,0x92,0x92,
  130. 0x92,0x92,0x92,0x9E,0x80,0x00,0x00,0x00,
  131. 0x84,0x84,0x44,0x44,0x24,0x14,0x0C,0x07,
  132. 0x0C,0x14,0x24,0x44,0x44,0x84,0x84,0x00,/*"吴",11*/
  133. 0x04,0x04,0x04,0x04,0x04,0xFC,0x44,0x44,
  134. 0x44,0x44,0x44,0xC4,0x04,0x04,0x04,0x00,
  135. 0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x00,
  136. 0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00,/*"万",12*/
  137. 0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0xFE,
  138. 0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
  139. 0x40,0x40,0x44,0x44,0x44,0x44,0x44,0x7F,
  140. 0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,/*"里",13*/
  141. 0x80,0x80,0xFC,0x96,0xE5,0x84,0xFC,0x80,
  142. 0x40,0x3E,0x02,0x02,0x7E,0x40,0x40,0x00,
  143. 0x80,0x60,0x1F,0x02,0x4C,0x80,0x7F,0x00,
  144. 0xFE,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,/*"船",14*/
  145. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  146. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  147. 0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,
  148. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"。",15*/
  149. };
  150. /*------------------延时子程序1----------------------------*/
  151. void delay(uint i)
  152. {
  153.         while(i--);
  154. }
  155. /*------------------延时子程序2----------------------------*/
  156. void delay1s(uint t)
  157. {
  158.         uint i,j;
  159.         for(i=0;i<t;i++)
  160.         for(j=0;j<10000;j++)
  161.         ;
  162. }
  163. void write_byte(uchar byte)
  164. {
  165.         uchar i=0x80;
  166.         SCK=0;
  167.         delay(10);
  168.         SDA=0;
  169.        
  170.         while(i){
  171.                 if(byte&i) SDA=1;
  172.                 else SDA=0;
  173.                 SCK=1;
  174.                 delay(10);
  175.                 SCK=0;
  176.                 i>>=1;
  177.         }       
  178.        
  179.         SCK=0;
  180.         delay(10);
  181.         SDA=1;
  182. }
  183. /*------------------写命令到LCD-----------------------------*/
  184. void write_com(uchar cmdcode)
  185. {
  186.         CD = 0;
  187.         CS0 = 0;
  188.         write_byte(cmdcode);
  189.         CS0 = 1;
  190. }
  191. /*-------------------写数据到LCD----------------------------*/
  192. void write_data(uchar Dispdata)
  193. {
  194.         CD = 1;
  195.         CS0 = 0;
  196.         write_byte(Dispdata);
  197.         CS0 = 1;
  198. }
  199. /*-------------------清屏-----------------------------------*/
  200. void Clr_Scr()
  201. {
  202.         uchar j,k;
  203.         for(k=0;k<8;k++)
  204.         {
  205.                 write_com(Page_Add+k);
  206.                 write_com(0x10);
  207.                 write_com(0x00);
  208.                 for(j=0;j<132;j++)
  209.                         write_data(0x00);
  210.         }
  211. }
  212. /*------------------初始化LCD屏-----------------------------*/
  213. void Init_lcd()
  214. {
  215.         delay(6000);
  216.         RST=0;
  217.         delay(6000);
  218.         RST=1;
  219.         delay(6000);
  220.         write_com(0xe2); // Set System Reset
  221.         delay(6000);
  222.         write_com(0x2f); // Set Power Control loading 15-24nF
  223.         write_com(0xa6); // Set 正常 Display
  224.         write_com(0xc4); // Set Mapping Control
  225.         write_com(0xa0); // Set Frame Rate
  226.         write_com(0x89); // Set RAM Address Control
  227.         write_com(0xe8); // Set Bias Ratio : 1/6
  228.         write_com(0x81);
  229.         write_com(0xaf); // Set Vbias : 7.99V 0xff
  230.         write_com(0xf1);
  231.         write_com(0x3f); // Set COM End (63) 3f
  232.         write_com(0xf2);
  233.         write_com(0x00); // Set Partial Display Start (0)  0x20
  234.         write_com(0xf3);
  235.         write_com(0x3f); // Set Partial Display End (63) 3f
  236.         write_com(0x85); // Set Partial Display Control
  237.         write_com(Disp_On); // Set Display Enable
  238. }
  239. //-------LCD设置坐标---------------------------------------
  240. void LCD_SetPos(uint page, uint column)
  241. {
  242.     column = column - 1; //我们平常所说的第 1 列,在 LCD 驱动 IC 里是第 0 列。所以在这里减去 1.
  243.     page = page - 1;
  244.                 write_com(0xb0 + page);
  245.                 write_com(column & 0x0f);
  246.     column >>= 4;
  247.     column=column|0x10;
  248.                 write_com(column);                //取高4位行地址
  249. }
  250. //显示 16x16 点阵图像、汉字、生僻字或 16x16
  251. void display_graphic_16x16(uint page, uint column,uchar fs,signed char *dp)
  252. {
  253.                 uchar i;//;
  254.     LCD_SetPos(page, column);                //发送地址,第一页
  255.     for (i = 0; i < 16; i++)                                //第一页的数据16字节,列号自动累加
  256.     {
  257.         if(fs==0)  write_data( *dp); //写数据到LCD,如果要反色显示,就在*P前用~取反。
  258.                                 if(fs==1)  write_data(~*dp); //反色
  259.         dp++;
  260.     }
  261.     LCD_SetPos(page + 1, column);                //发送地址,第二页
  262.     for (i = 0; i < 16; i++)                                //第二页的数据16字节
  263.     {
  264.                         if(fs==0)  write_data( *dp); //写数据到LCD,如果要反色显示,就在*P前用~取反。
  265.                         if(fs==1)  write_data(~*dp); //反色
  266.       dp++;
  267.     }
  268. }
  269. void main()
  270. {
  271.         int i;
  272.         Init_lcd();
  273.         Clr_Scr();
  274.         while(1)
  275.         {
  276.                 Clr_Scr();
  277.                 for(i=0;i<32;i++)
  278.                 {
  279.                         display_graphic_16x16(1+(int)(i/8)*2, i*16%128+1, 0, peom+i*32);
  280.                 }
  281.                 delay1s(50);
  282.                 for(i=0;i<1024;i++)
  283.                 {
  284.                         display_graphic_16x16((1+(int)(i/8)%8*2)%8, i*16%128+1, 0, peom+(i%32)*32);
  285.                         write_com(0x40|i%64); // Set Scroll Line
  286.             delay1s(1);
  287.                 }
  288.                 delay1s(50);
  289.         }
  290. }
复制代码

70eb7bca7df4480d836cc75e081ee40b.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:168
  • 最近打卡:2024-07-22 01:43:27

2

主题

89

回帖

708

积分

高级会员

积分
708
发表于 2023-12-1 08:39:01 来自手机 | 显示全部楼层
用的isp
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 20:41 , Processed in 0.145031 second(s), 57 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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