找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2044|回复: 0
打印 上一主题 下一主题
收起左侧

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)


评分

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

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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