标题: 1602输出中文字符,通过5*8的矩阵点亮某些点,即可观察到中文(最多8个自定义字符) [打印本页]

作者: TAOjiadashao    时间: 2018-2-11 14:32
标题: 1602输出中文字符,通过5*8的矩阵点亮某些点,即可观察到中文(最多8个自定义字符)
lcd1602液晶屏通过4个5*8的矩阵组合点亮某些点,即可观察到中文(最多8个自定义字符)下面是实验效果的实物图


单片机源程序如下:
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. sbit lcdrs  = P0^7;        //液晶引脚定义
  5. sbit led_cs = P0^6;
  6. sbit lcden  = P0^5;


  7. uchar num;
  8. uchar code cg_1602[]={0x00,0x00,0x00,0x01,0x01,0x01,0x05,0x05,
  9. 0x00,0x00,0x04,0x04,0x04,0x04,0x1f,0x15,
  10. 0x05,0x05,0x01,0x01,0x01,0x02,0x02,0x00,
  11. 0x15,0x15,0x15,0x04,0x04,0x04,0x00,0x00, //帅
  12. 0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x07,
  13. 0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x1e,
  14. 0x04,0x04,0x04,0x04,0x06,0x00,0x00,0x00,
  15. 0x10,0x10,0x10,0x12,0x1e,0x00,0x00,0x00};//比
  16. //根据5*8的矩阵自己定义字符,通过16进制的数转化
  17. /*延时函数*/
  18. void delay(uint xms)
  19. {
  20.         uint i,j;
  21.         for(i=xms;i>0;i--)
  22.         for(j=114;j>0;j--);
  23. }
  24. /*1602液晶*/
  25. void write_com(uchar com)//写命令
  26. {
  27.         lcdrs=0;
  28.         lcden=0;
  29.         P2=com;
  30.         delay(5);
  31.         lcden=1;
  32.         delay(5);
  33.         lcden=0;
  34. }
  35. void write_data(uchar date)//写数据
  36. {
  37.         lcdrs=1;
  38.         lcden=0;
  39.         P2=date;
  40.         delay(5);
  41.         lcden=1;
  42.         delay(5);
  43.         lcden=0;
  44. }



  45. void write_cg()//写入固定汉字和符号
  46. {
  47.         write_com(0x40); //设定CGRAM地址
  48.         for(num=0;num<64;num++) //将自定义字型码写入CGRAM中  最多8个自定义字符,8*8=64 如果是5个自定义字符就是5*8=40
  49.         {
  50.                 write_data(cg_1602[num]);
  51.         }

  52.         //第一个字
  53.         write_com(0x80);
  54.         {
  55.                 write_data(0);
  56.         }
  57.         write_com(0x81);
  58.         {
  59.                 write_data(1);
  60.         }
  61.         write_com(0xc0);
  62.         {
  63.                 write_data(2);
  64.         }
  65.                 write_com(0xc1);
  66.         {
  67.                 write_data(3);
  68.         }
  69.                 //第二个字
  70.                 write_com(0x82);
  71.         {
  72.                 write_data(4);
  73.         }
  74.         write_com(0x83);
  75.         {
  76.                 write_data(5);
  77.         }
  78.         write_com(0xc2);
  79.         {
  80.                 write_data(6);
  81.         }
  82.                 write_com(0xc3);
  83.         {
  84.                 write_data(7);
  85.         }         
  86.          
  87. }
  88. void init_1602()//初始化
  89. {
  90.         led_cs=0;

  91.         write_com(0x38);
  92.         write_com(0x0c);
  93.         write_com(0x06);
  94.         write_com(0x01);


  95.         write_cg();

  96. }

  97. /*主函数*/
  98. void main()
  99. {
  100.         led_cs=0;
  101. …………
  102. …………
  103. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

全部资料51hei下载地址:
1602.docx (14.01 KB, 下载次数: 7)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1