Chinaunix首页 | 论坛 | 博客
  • 博客访问: 418672
  • 博文数量: 121
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1393
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-11 12:17
个人简介

www.vibexie.com vibexie@qq.com

文章分类

全部博文(121)

文章存档

2015年(55)

2014年(66)

我的朋友

分类: C/C++

2014-09-23 00:43:19


点击(此处)折叠或打开

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #include<stdlib.h>

  4. #define uchar unsigned char
  5. #define uint unsigned int

  6. sbit lcden=P3^4;
  7. sbit lcdrs=P3^5;
  8. sbit lcdrw=P3^6;
  9. sbit lcdpsb=P1^7;/*串并行*/
  10. sbit wela=P2^6;
  11. sbit dula=P2^7;

  12. uchar dis1[10];/*display1*/
  13. uchar dis2[]={""};
  14. uchar dis3[]={"我是谢彪"};
  15. uchar dis4[]={"--------"};
  16. uint i;

  17. void delay_ms(uint);
  18. void lcd_init();
  19. void write_cmd(uchar);
  20. void write_dat(uchar);
  21. void lcd_pos(uchar,uchar);
  22. void makerand();

  23. void main()
  24. {
  25.     wela=0;
  26.     dula=0;

  27.     delay_ms(10);
  28.     lcd_init();

  29.     lcd_pos(1,0);
  30.     i=0;
  31.     while(dis2[i]!=0)
  32.     {
  33.     write_dat(dis2[i]);
  34.     i++;
  35.     }

  36.     lcd_pos(2,0);
  37.     i=0;
  38.     while(dis3[i]!=0)
  39.     {
  40.     write_dat(dis3[i]);
  41.     i++;
  42.     }

  43.     lcd_pos(3,0);
  44.     i=0;
  45.     while(dis4[i]!=0)
  46.     {
  47.     write_dat(dis4[i]);
  48.     i++;
  49.     }

  50.     while(1)
  51.     {
  52.     lcd_pos(0,0);
  53.     makerand();
  54.     for(i=0;i<10;i++)
  55.     {
  56.      delay_ms(50);
  57.      write_dat(dis1[i]);
  58.     }
  59.     }

  60. }

  61. void lcd_init()
  62. {
  63.     lcdpsb=1;/*并行方式*/
  64.     write_cmd(0x30);
  65.     delay_ms(5);
  66.     write_cmd(0x0c);
  67.     delay_ms(5);
  68.     write_cmd(0x01);/*清除*/
  69.     delay_ms(5);
  70. }

  71. void lcd_pos(uchar x,uchar y)
  72. {
  73.     uchar pos;
  74.     if(x==0)
  75.     x=0x80;
  76.     else if(x==1)
  77.     x=0x90;
  78.     else if(x==2)
  79.     x=0x88;
  80.     else if(x==3)
  81.     x=0x98;
  82.     pos=x+y;
  83.     write_cmd(pos);
  84. }

  85. void makerand()
  86. {
  87.     uint ran;
  88.     ran=rand();
  89.     dis1[0]=ran/10000+0x30;
  90.     dis1[1]=ran%10000/1000+0x30;
  91.     dis1[2]=ran%1000/100+0x30;
  92.     dis1[3]=ran%100/10+0x30;
  93.     dis1[4]=ran%10+0x30;
  94.     ran=rand();
  95.     dis1[5]=ran/10000+0x30;
  96.     dis1[6]=ran%10000/1000+0x30;
  97.     dis1[7]=ran%1000/100+0x30;
  98.     dis1[8]=ran%100/10+0x30;
  99.     dis1[9]=ran%10+0x30;
  100. }

  101. void write_cmd(uchar cmd)
  102. {
  103.     lcdrs=0;
  104.     lcdrw=0;
  105.     lcden=0;
  106.     P0=cmd;
  107.     delay_ms(5);
  108.     lcden=1;
  109.     delay_ms(5);
  110.     lcden=0;
  111. }

  112. void write_dat(uchar dat)
  113. {
  114.     lcdrs=1;
  115.     lcdrw=0;
  116.     lcden=0;
  117.     P0=dat;
  118.     delay_ms(5);
  119.     lcden=1;
  120.     delay_ms(5);
  121.     lcden=0;
  122. }

  123. void delay_ms(uint del)
  124. {
  125.     uint i;
  126.     for(;del>0;del--)
  127.         for(i=124;i>0;i--);
  128. }
阅读(1333) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~