找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17909|回复: 38
收起左侧

LCD1602汉字显示的单片机程序下载 Proteus仿真

[复制链接]
ID:2656 发表于 2008-8-13 22:57 | 显示全部楼层 |阅读模式
明天回家拉,送大家一个1602显示汉字的程序,懒的写注释
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
1.jpg

单片机源程序如下:
  1. #include<reg51.h>
  2. void enable(void);
  3. void writeaddr(unsigned char m);
  4. void writedata(unsigned char m);
  5. void selfdata(unsigned char m,unsigned char a);
  6. void init(void);
  7. unsigned char writestring(unsigned char m);
  8. unsigned char move(unsigned char m);
  9. void delay10ms(unsigned char time);
  10. void shift(unsigned char s,unsigned char n);
  11. sbit P27=P2^7;
  12. sbit P25=P2^5;
  13. sbit P26=P2^6;
  14. sbit P37=P3^7;
  15. unsigned char s=0xc0;
  16. unsigned char code table[8][8]={
  17. 0x02,0x02,0x0A,0x0A,0x0A,0x04,0x08,0x1F,/***第一个自定义字符
  18. ***/0x04,0x1F,0x15,0x15,0x17,0x05,0x04,0x1F,
  19. 0x02,0x04,0x0C,0x14,0x04,0x04,0x04,0x1F,
  20. 0x14,0x3F,0x15,0x15,0x14,0x11,0x1F,0x1F,
  21. 0x04,0x08,0x3F,0x0A,0x04,0x0A,0x11,0x1F,
  22. 0x1E,0x0A,0x0F,0x01,0x1F,0x01,0x03,0x1F,
  23. 0x00,0x00,0x07,0x05,0x07,0x00,0x00,0x1F,  
  24. 0x04,0x0A,0x11,0x0E,0x00,0x0E,0x0A,0x0E};
  25. unsigned char code string[]={"oh!wa!wa!wa!"};
  26. main()
  27. {   
  28.        init();
  29.       while(1)   
  30.            {
  31.            selfdata(0x80,1);
  32.                selfdata(0x81,2);
  33.                selfdata(0x82,1);
  34.                selfdata(0x83,2);
  35.            selfdata(0x84,1);
  36.                selfdata(0x85,2);
  37.                shift(s,1);
  38.          
  39.                                   }                      }
  40. void delay10ms(unsigned char time)
  41. {
  42.     unsigned char a,b,c;
  43.      for(a=0;a<time;a++)
  44.        for(b=0;b<10;b++)
  45.            for(c=0;c<120;c++);
  46.                                 }
  47. void enable(void)
  48. {     
  49.                
  50.              P27=1;
  51.         
  52.         P27=0;
  53.                 }
  54. void LCD_BZ(void)
  55. {    P25=0;
  56.          P26=1;
  57.          P27=0;
  58.          P3=0xFF;
  59.      for(P27=1;P37==1; P27=~P27,P27=~P27);
  60.                                                 }
  61. void writeaddr(unsigned char m)
  62. {       LCD_BZ();
  63.        P25=0;
  64.        P26=0;
  65.        P3=m;
  66.        enable();
  67.                              }
  68. void writedata(unsigned char m)
  69. {      LCD_BZ();
  70.        P25=1;
  71.        P26=0;
  72.        P3=m;
  73.        enable();                            }
  74. void init(void)
  75. {     writeaddr(0x01);
  76.       writeaddr(0x0c);
  77.       writeaddr(0x38);           
  78.       writeaddr(0x06);
  79.                          }
  80. void selfdata(unsigned char m,unsigned char a)
  81. {       unsigned char n;
  82.         n=a-1;
  83.               switch(n)
  84.                 {
  85.               case 0:writeaddr(0x40);break;
  86.                           case 1:writeaddr(0x48);break;
  87.                           case 2:writeaddr(0x50);break;
  88.                           case 3:writeaddr(0x58);break;
  89.                           case 4:writeaddr(0x60);break;
  90.                           case 5:writeaddr(0x68);break;
  91.                           case 6:writeaddr(0x70);break;
  92.                           case 7:writeaddr(0x78);break;
  93.                                                              }
  94.                  for(a=0;a<8;a++)
  95.                    writedata(table[n][a]);
  96.          writeaddr(m);
  97.          writedata(n);
  98.                                                  }
  99. unsigned char writestring(unsigned char m)
  100. {     unsigned char a=0,*n=string;   
  101.       writeaddr(m);
  102.           for(;*n!=0;n++)
  103.            {
  104.           writedata(*n);
  105.           a++;                         }
  106.               return(a);                        }
  107. unsigned char move(unsigned char m)
  108. {    static char d=1;
  109.      unsigned char c,all,*p=string,n=0;   
  110.       delay10ms(50);
  111.           writeaddr(0x01);
  112.    
  113.    all=writestring(m+=1);
  114.             if(m+all>0xd0)
  115.             {
  116.                      writeaddr(0xc0);
  117.                  c=d;
  118.            for(n=(m+all-0xd0);n!=0;n--)
  119.            {
  120.                       writedata(*(p+all-d));
  121.                           --d;
  122.                
  123.                                      }
  124.                         
  125.                                 d=c;
  126.                                 d++;
  127.                                 if(d==all+1)
  128.                               {
  129.                                    d=1;
  130.                                            m=0xc0;
  131.                                                        }
  132.                                                                            }
  133.                      s=m+1;
  134.                      return(m);                       }
  135. void shift(unsigned char s,unsigned char n)
  136. {    s-=1;
  137.      for(;n!=0;n--)
  138.                  move(s);
  139.                                                          }
复制代码

仿真dsn文件:
Proteus仿真7.5版本.7z (27.8 KB, 下载次数: 391)
回复

使用道具 举报

ID:2902 发表于 2008-8-29 22:00 | 显示全部楼层

o(∩_∩)o... 谢谢了

回复

使用道具 举报

ID:7884 发表于 2008-12-17 16:01 | 显示全部楼层

谢了

回复

使用道具 举报

ID:7503 发表于 2008-12-27 20:46 | 显示全部楼层
1602怎么显示汉字?
回复

使用道具 举报

ID:8281 发表于 2008-12-31 23:17 | 显示全部楼层

回复

使用道具 举报

ID:8151 发表于 2009-1-1 16:30 | 显示全部楼层

谢谢

回复

使用道具 举报

ID:9148 发表于 2009-3-4 17:48 | 显示全部楼层
谢谢
回复

使用道具 举报

ID:10058 发表于 2009-4-12 22:56 | 显示全部楼层
谢谢了!!!
回复

使用道具 举报

ID:3840 发表于 2009-4-13 20:05 | 显示全部楼层
好东西值得一顶
回复

使用道具 举报

ID:11365 发表于 2009-4-17 14:59 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:11951 发表于 2009-4-28 20:57 | 显示全部楼层

回复

使用道具 举报

ID:12060 发表于 2009-5-1 17:18 | 显示全部楼层

我不知道说什么是好

回复

使用道具 举报

ID:12060 发表于 2009-5-1 17:31 | 显示全部楼层
还算是吧
回复

使用道具 举报

ID:12255 发表于 2009-5-4 20:54 | 显示全部楼层
谢谢
回复

使用道具 举报

ID:12397 发表于 2009-5-7 18:17 | 显示全部楼层
先顶后下!
回复

使用道具 举报

ID:10354 发表于 2009-5-8 00:47 | 显示全部楼层
!!!
回复

使用道具 举报

ID:12470 发表于 2009-5-8 18:09 | 显示全部楼层
回复

使用道具 举报

ID:12491 发表于 2009-5-10 21:29 | 显示全部楼层
谢谢了,先下了!等我会了再用
回复

使用道具 举报

ID:11084 发表于 2009-5-15 18:35 | 显示全部楼层
几顶后下,支持楼主!!
回复

使用道具 举报

ID:13003 发表于 2009-5-17 16:55 | 显示全部楼层

谢谢楼主~~~~~~~~

回复

使用道具 举报

ID:13481 发表于 2009-5-27 13:11 | 显示全部楼层
asp文件~~用啥打开??请教了
回复

使用道具 举报

ID:12718 发表于 2009-5-29 17:23 | 显示全部楼层
下载了就要顶
回复

使用道具 举报

ID:13721 发表于 2009-6-3 10:05 | 显示全部楼层
 不知道如何用!不过还是谢了!
回复

使用道具 举报

ID:8456 发表于 2009-6-9 17:59 | 显示全部楼层

谢了

回复

使用道具 举报

ID:16167 发表于 2009-8-12 11:36 | 显示全部楼层
谢谢啦^_^
回复

使用道具 举报

ID:16167 发表于 2009-8-12 11:37 | 显示全部楼层
把asp改成rar就好咯
回复

使用道具 举报

ID:16170 发表于 2009-8-12 12:58 | 显示全部楼层
这个也能显汉字?
回复

使用道具 举报

ID:16172 发表于 2009-8-12 13:55 | 显示全部楼层
谢谢楼主的分享
回复

使用道具 举报

ID:16695 发表于 2009-9-1 06:58 | 显示全部楼层
谢谢了。东西还是很不错的
回复

使用道具 举报

ID:16949 发表于 2009-9-7 17:50 | 显示全部楼层
学习
回复

使用道具 举报

ID:15906 发表于 2009-9-8 00:50 | 显示全部楼层
 有人会用吗?教一教,不知如何用?
回复

使用道具 举报

ID:17102 发表于 2009-9-11 23:59 | 显示全部楼层
下载了就要顶
回复

使用道具 举报

ID:17130 发表于 2009-9-12 21:41 | 显示全部楼层
1602还能显汉字?我看看
回复

使用道具 举报

ID:17130 发表于 2009-9-12 21:52 | 显示全部楼层

我以为你能写出什么东西来呢 还是字符手册上那些!~

回复

使用道具 举报

ID:16406 发表于 2009-9-13 16:32 | 显示全部楼层
谢谢楼主啦
回复

使用道具 举报

ID:27078 发表于 2011-6-4 14:12 | 显示全部楼层

谢了

 

回复

使用道具 举报

ID:29335 发表于 2011-6-14 21:09 | 显示全部楼层

o(∩_∩)o... 谢谢了

回复

使用道具 举报

ID:111970 发表于 2016-4-2 20:23 | 显示全部楼层
看看。。怎么样 啊?
回复

使用道具 举报

ID:171111 发表于 2017-5-6 14:36 | 显示全部楼层
十分感谢         
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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