找回密码
 立即注册

QQ登录

只需一步,快速开始

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

液晶LCD12864的程序

[复制链接]
跳转到指定楼层
楼主
ID:932669 发表于 2021-6-4 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #include <stdlib.h>
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define LCD_data P0
  7. sbit LCD_RS = P3^5;
  8. sbit LCD_RW = P3^6;
  9. sbit LCD_EN = P3^4;
  10. sbit LCD_PSB = P3^7;
  11. sbit wela  =P2^6;
  12. sbit dula  =P2^7;
  13. uchar disl[10];
  14. uchar code dis2[]={"xxxxxxxxxxxxx"};
  15. uchar code dis3[]={"王涛"};
  16. uchar code dis4[]={"--------"};
  17. void delay_1ms(uint x)
  18. {
  19.         uint i,j;
  20.         for(j=0;j<x;j++)
  21.             for(i=0;i<110;i++);
  22. }
  23. void write_cmd(uchar cmd)
  24. {
  25.         LCD_RS=0;
  26.         LCD_RW=0;
  27.         LCD_EN=0;
  28.         P0=cmd;
  29.         delay_1ms(5);
  30.         LCD_EN=1;
  31.         delay_1ms(5);
  32.         LCD_EN=0;
  33. }        
  34.         void write_dat(uchar dat)
  35. {
  36.   LCD_RS=1;
  37.   LCD_RW=0;
  38.   LCD_EN=0;
  39.   P0=dat;
  40.   delay_1ms(5);
  41.   LCD_EN=1;
  42.   delay_1ms(5);
  43.   LCD_EN=0;
  44. }
  45.   void lcd_pos(uchar X,uchar Y)
  46. {
  47.   uchar pos;
  48.   if(X==0)
  49.     {X=0x80;}
  50.   else if(X==1)
  51.     {X=0x90;}
  52.   else if(X==2)
  53.     {X=0x88;}
  54.   else if(X==3)
  55.     {X=0x98;}
  56.         pos=X+Y ;
  57.         write_cmd(pos);
  58. }
  59. void makerand()
  60. {
  61.   uint ran;
  62.   ran=rand();
  63.   disl[0]=ran/10000+0x30;
  64.   disl[1]=ran%10000/1000+0x30;
  65.   disl[2]=ran%1000/100+0x30;
  66.   disl[3]=ran%100/10+0x30;
  67.   disl[4]=ran%10+0x30;
  68.   ran=rand();
  69.   disl[5]=ran/10000+0x30;
  70.   disl[6]=ran%10000/1000+0x30;
  71.   disl[7]=ran%1000/100+0x30;
  72.   disl[8]=ran%100/10+0x30;
  73.   disl[9]=ran%10+0x30;
  74. }
  75. void lcd_init()
  76. {
  77.         LCD_PSB=1;
  78.         write_cmd(0x30);
  79.         delay_1ms(5);
  80.         write_cmd(0x0C);
  81.         delay_1ms(5);
  82.         write_cmd(0x01);
  83.         delay_1ms(5);
  84. }
  85. main()
  86. {
  87.         uchar i;
  88.         wela=0;
  89.         dula=0;
  90.         delay_1ms(10);
  91.         lcd_init();
  92.         lcd_pos(1,0);
  93.         i=0;
  94.         while(dis2[i]!='\0')
  95.   {
  96.          write_dat(dis2[i]);
  97.    i++;
  98.   }
  99.   lcd_pos(2,0);
  100.         i=0;
  101.         while(dis3[i]!='\0')
  102.   {
  103.          write_dat(dis3[i]);
  104.    i++;
  105.   }
  106.   lcd_pos(3,0);
  107.         i=0;
  108.         while(dis4[i]!='\0')
  109.   {
  110.          write_dat(dis4[i]);
  111.    i++;
  112.   }
  113.    while(1)
  114.          {
  115.                  lcd_pos(0,0);
  116.                  makerand();
  117.                  for(i=0;i<10;i++)
  118.                  {
  119.                          write_dat(disl[i]);
  120.                  }
  121.          }
  122. }

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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