找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2928|回复: 1
收起左侧

基于51单片机的5110液晶显示程序

[复制链接]
ID:116063 发表于 2016-4-23 12:51 | 显示全部楼层 |阅读模式
基于51单片机的5110液晶显示程序
0.png
采用spi方式的51单片机程序如下:
  1. #include <reg51.h>   
  2. sbit    sce = P2^0;  //片选   
  3. sbit    res = P2^1;  //复位,0复位   
  4. sbit    dc  = P2^2;  //1写数据,0写指令   
  5. sbit    sdin = P2^3;  //数据   
  6. sbit    sclk = P2^4;  //时钟   
  7. sbit P27=P2^7;   
  8.    
  9. //6*16字符   
  10. unsigned char code shuzi[]={   
  11. /*--  文字:  >  --*/   
  12. /*--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --*/   
  13. /*--  高度不是8的倍数,现调整为:宽度x高度=6x16  --*/   
  14. 0x00,0x02,0x04,0x88,0x50,0x20,0x00,0x02,0x01,0x00,0x00,0x00,   
  15.    
  16. /*--  文字:  W  --*/   
  17. /*--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --*/   
  18. /*--  高度不是8的倍数,现调整为:宽度x高度=6x16  --*/   
  19. 0x1C,0xE0,0x3C,0xE0,0x1C,0x00,0x00,0x03,0x00,0x03,0x00,0x00,   
  20.    
  21. /*--  文字:  Y  --*/   
  22. /*--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --*/   
  23. /*--  高度不是8的倍数,现调整为:宽度x高度=6x16  --*/   
  24. 0x04,0x1C,0xE0,0x1C,0x04,0x00,0x00,0x02,0x03,0x02,0x00,0x00,   
  25.    
  26. /*--  文字:  G  --*/   
  27. /*--  宋体9;  此字体下对应的点阵为:宽x高=6x12   --*/   
  28. /*--  高度不是8的倍数,现调整为:宽度x高度=6x16  --*/   
  29. 0xF0,0x08,0x04,0x44,0xCC,0x40,0x00,0x01,0x02,0x02,0x01,0x00   
  30.    
  31.    
  32. };   
  33.    
  34. unsigned char code hanzi[]=   
  35. {   
  36. /*--  文字:  单  --*/   
  37. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  38. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  39. 0x00,0x00,0x7C,0x55,0x56,0xFC,0x56,0x55,0x54,0x7C,0x00,0x00,0x01,0x01,0x01,0x01,   
  40. 0x01,0x07,0x01,0x01,0x01,0x01,0x01,0x00,   
  41.    
  42. /*--  文字:  片  --*/   
  43. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  44. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  45. 0x00,0x00,0xFF,0x48,0x48,0x48,0x4F,0xC8,0x08,0x08,0x08,0x00,0x04,0x02,0x01,0x00,   
  46. 0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,   
  47.    
  48. /*--  文字:  机  --*/   
  49. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  50. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  51. 0x84,0x64,0xFF,0x24,0x44,0xFE,0x02,0x02,0xFF,0x02,0x00,0x00,0x01,0x00,0x07,0x04,   
  52. 0x02,0x01,0x00,0x00,0x07,0x04,0x07,0x00,   
  53.    
  54. /*--  文字:  开  --*/   
  55. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  56. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  57. 0x20,0x22,0x22,0xFE,0x22,0x22,0x22,0xFE,0x22,0x23,0x22,0x00,0x04,0x04,0x02,0x01,   
  58. 0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,   
  59.    
  60. /*--  文字:  发  --*/   
  61. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  62. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  63. 0x08,0x0E,0x88,0x78,0x2F,0xE8,0x28,0xA9,0x6A,0x08,0x08,0x00,0x04,0x02,0x05,0x04,   
  64. 0x02,0x02,0x01,0x02,0x02,0x04,0x04,0x00,   
  65.    
  66. /*--  文字:  工  --*/   
  67. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  68. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  69. 0x00,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x03,0x02,0x00,0x00,0x04,0x04,0x04,0x04,   
  70. 0x04,0x07,0x04,0x04,0x04,0x04,0x04,0x00,   
  71.    
  72. /*--  文字:  作  --*/   
  73. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  74. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  75. 0x10,0x08,0xFC,0x13,0x08,0x04,0xFF,0x24,0x24,0x24,0x04,0x00,0x00,0x00,0x07,0x00,   
  76. 0x00,0x00,0x07,0x01,0x01,0x01,0x01,0x00,   
  77.    
  78. /*--  文字:  室  --*/   
  79. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  80. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  81. 0x04,0x06,0x4A,0x6A,0x5A,0xCB,0x4A,0x5A,0x6A,0x4A,0x06,0x00,0x04,0x04,0x05,0x05,   
  82. 0x05,0x07,0x05,0x05,0x05,0x04,0x04,0x00,   
  83.    
  84. /*--  文字:  雨  --*/   
  85. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  86. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  87. 0x02,0xFA,0x9A,0x2A,0x0A,0xFE,0x9A,0x2A,0x0A,0xFB,0x02,0x00,0x00,0x07,0x00,0x01,   
  88. 0x00,0x07,0x00,0x05,0x04,0x07,0x00,0x00,   
  89.    
  90. /*--  文字:  亭  --*/   
  91. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  92. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  93. 0x60,0x22,0xA2,0xBA,0xAA,0xAB,0xAA,0xAA,0xBA,0x22,0x60,0x00,0x00,0x00,0x00,0x04,   
  94. 0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,   
  95.    
  96. /*--  文字:  电  --*/   
  97. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  98. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  99. 0x00,0xFC,0x94,0x94,0x94,0xFF,0x94,0x94,0x94,0xFE,0x04,0x00,0x00,0x01,0x00,0x00,   
  100. 0x00,0x03,0x04,0x04,0x04,0x04,0x06,0x00,   
  101.    
  102. /*--  文字:  子  --*/   
  103. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  104. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  105. 0x20,0x21,0x21,0x21,0x21,0xF9,0x29,0x25,0x23,0x31,0x20,0x00,0x00,0x00,0x00,0x04,   
  106. 0x04,0x07,0x00,0x00,0x00,0x00,0x00,0x00,   
  107.    
  108. /*--  文字:  第  --*/   
  109. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  110. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  111. 0x04,0xEA,0xAB,0xAE,0xAA,0xFC,0xAA,0xAB,0xAE,0xBA,0x82,0x00,0x04,0x04,0x02,0x01,   
  112. 0x00,0x07,0x00,0x02,0x02,0x02,0x01,0x00,   
  113.    
  114. /*--  文字:  一  --*/   
  115. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  116. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  117. 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x00,0x00,0x00,0x00,   
  118. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,   
  119.    
  120. /*--  文字:  行  --*/   
  121. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  122. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  123. 0x48,0x24,0xF3,0x08,0x09,0x09,0x09,0x09,0xF9,0x09,0x08,0x00,0x00,0x00,0x07,0x00,   
  124. 0x00,0x04,0x04,0x04,0x07,0x00,0x00,0x00,   
  125.    
  126. /*--  文字:  二  --*/   
  127. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  128. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  129. 0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x02,0x02,0x02,0x02,   
  130. 0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,   
  131.    
  132. /*--  文字:  三  --*/   
  133. /*--  宋体9;  此字体下对应的点阵为:宽x高=12x12   --*/   
  134. /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/   
  135. 0x00,0x02,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0x02,0x00,0x00,0x04,0x04,0x04,0x04,   
  136. 0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00   
  137.    
  138. };   
  139.    
  140. void delayms(unsigned  int ii)//1ms延时函数   
  141. {   
  142.     unsigned int i,x;   
  143.     for (x=0;x<ii;x++)   
  144.     {   
  145.     for (i=0;i<200;i++);   
  146.     }   
  147. ;   
  148. }   
  149.    
  150. /*--------------------------------------------  
  151. LCD_write_byte: 使用SPI接口写数据到LCD  
  152. 输入参数:dt:写入的数据;  
  153. command :写数据/命令选择;  
  154. 编写日期:20080918   
  155. ----------------------------------------------*/   
  156. void LCD_write_byte(unsigned char dt, unsigned char command)   
  157. {   
  158.     unsigned char i;   
  159.     sce=0;     
  160.     dc=command;   
  161.     for(i=0;i<8;i++)   
  162.     {   
  163.         if(dt&0x80)   
  164.             sdin=1;   
  165.         else   
  166.             sdin=0;   
  167.         dt=dt<<1;        
  168.         sclk=0;            
  169.         sclk=1;   
  170.     }      
  171.     dc=1;      
  172.     sce=1;     
  173.     sdin=1;   
  174. }   
  175. /*---------------------------------------  
  176. LCD_init: 3310LCD初始化  
  177. 编写日期:20080918   
  178. -----------------------------------------  */   
  179. void LCD_init(void)   
  180. {   
  181.     res=0;         
  182.     delayms(10);   
  183.     res=1;     
  184.     LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令   
  185.     LCD_write_byte(0xd0,0);//设定液晶偏置电压   
  186.     LCD_write_byte(0x20,0);//使用基本指令   
  187.     LCD_write_byte(0x0C,0);//设定显示模式,正常显示   
  188. }   
  189. /*-------------------------------------------  
  190. LCD_set_XY: 设置LCD坐标函数  
  191. 输入参数:X:0-83  Y:0-5  
  192. 编写日期:20080918   
  193. ---------------------------------------------*/   
  194. void LCD_set_XY(unsigned char X, unsigned char Y)   
  195. {   
  196.     LCD_write_byte(0x40 | Y, 0);// column   
  197.     LCD_write_byte(0x80 | X, 0);// row   
  198. }   
  199. /*------------------------------------------  
  200. LCD_clear: LCD清屏函数  
  201. 编写日期:20080918   
  202. --------------------------------------------*/   
  203. void LCD_clear(void)   
  204. {   
  205.     unsigned char t;   
  206.     unsigned char k;   
  207.     LCD_set_XY(0,0);   
  208.     for(t=0;t<6;t++)   
  209.     {   
  210.         for(k=0;k<84;k++)   
  211.         {   
  212.             LCD_write_byte(0x00,1);   
  213.                   
  214.         }   
  215.     }   
  216. }   
  217. /*---------------------------------------------  
  218. LCD_write_shu: 显示6(宽)*16(高)点阵列数字字母符号等半角类  
  219. 输入参数:c:显示的字符;  
  220. 编写日期:20080918   
  221. -----------------------------------------------*/   
  222. void LCD_write_shu(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 dd:字符   
  223. {   
  224.     unsigned char i;      
  225.       
  226.     LCD_set_XY(row*6, page);// 列,页   
  227.     for(i=0; i<6;i++)   
  228.     {   
  229.         LCD_write_byte(shuzi[c*12+i],1);   
  230.     }   
  231.       
  232.     LCD_set_XY(row*6, page+1);// 列,页   
  233.     for(i=6; i<12;i++)   
  234.     {   
  235.         LCD_write_byte(shuzi[c*12+i],1);   
  236.     }         
  237. }   
  238. /*---------------------------------------------  
  239. LCD_write_hanzi: 显示12(宽)*16(高)点阵列汉字等半角类  
  240. 输入参数:c:显示的字符;  
  241. 编写日期:20080918   
  242. -----------------------------------------------*/   
  243. void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 dd:字符   
  244. {   
  245.     unsigned char i;      
  246.       
  247.     LCD_set_XY(row*6, page);// 列,页   
  248.     for(i=0; i<12;i++)   
  249.     {   
  250.         LCD_write_byte(hanzi[c*24+i],1);   
  251.     }   
  252.       
  253.     LCD_set_XY(row*6, page+1);// 列,页   
  254.     for(i=12; i<24;i++)   
  255.     {   
  256.         LCD_write_byte(hanzi[c*24+i],1);   
  257.     }      
  258. }   
  259. main()   
  260. {      
  261.    
  262.     unsigned char k;   
  263.     res=0;   
  264.     for(k=0;k<250;k++);   
  265.     res=1;         
  266.     LCD_init();  //初始化LCD模块   
  267.     LCD_clear(); //清屏幕     
  268.     LCD_write_hanzi(0,0,0);  //单      
  269.     LCD_write_hanzi(2,0,1);  //片   
  270.     LCD_write_hanzi(4,0,2);  //机      
  271.     LCD_write_hanzi(6,0,3);  //开   
  272.     LCD_write_hanzi(8,0,4);  //发      
  273.     LCD_write_hanzi(10,0,5);  //工   
  274.     LCD_write_hanzi(12,0,6);  //作      
  275.     LCD_write_hanzi(0,2,7);  //室   
  276.    
  277.     LCD_write_hanzi(2,4,8);  //雨   
  278.     LCD_write_hanzi(4,4,9);  //亭   
  279.     LCD_write_hanzi(6,4,10);  //电   
  280.     LCD_write_hanzi(8,4,11);  //子                                 
  281.    
  282.     LCD_write_shu(10,4,0);  //>   
  283.     LCD_write_shu(11,4,1);  //W   
  284.     LCD_write_shu(12,4,2);  //Y   
  285.     LCD_write_shu(13,4,3);  //G   
  286.    
  287.     while(1)   
  288.     {   
  289.     }   
  290. }
复制代码


5110_spi.zip

25.57 KB, 下载次数: 25, 下载积分: 黑币 -5

c程序

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:415864 发表于 2019-6-2 16:59 | 显示全部楼层
兄弟,你这连头文件都没有啊
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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