基于51单片机的电子显示屏仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code table[]="I LOVE you!";
- uchar code table1[]="WWW.BAIDU.COM";
- sbit lcden=P3^4; //液晶使能端
- sbit lcdrs=P3^5; //液晶数据命令选择端
- sbit dula=P2^6; //申明U1锁存器的锁存端
- sbit wela=P2^7; //申明U2锁存器的锁存端
- uchar num;
- unsigned char a=0x00;
- void delay(uint z)
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void write_com(uchar com)
- {
- lcdrs=0;
- P0=com;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void write_data(uchar date)
- {
- lcdrs=1;
- P0=date;
- delay(5);
- lcden=1;
- delay(5);
- lcden=0;
- }
- void init()
- {
- dula=0;
- wela=0;
- lcden=0;
- write_com(0x38);//设置16X2显示,5X7点阵,8位数据接口
- write_com(0x0c);//设置开显示,不显示光标
- write_com(0x06);//写一个字符后地址指针加1
- write_com(0x01);//显示清零,数据指针清零
- TMOD = 0x20;
- SCON = 0x50;
- TH1 = 0xFD;
- TL1 = TH1;
- PCON = 0x00;
- EA = 1;
- ES = 1;
- TR1 = 1;
- }
- void SendOneByte(unsigned char c)
- {
- SBUF = c;
- while(!TI);
- TI = 0;
- }
- void main()
- {
- init();
- write_com(0x80);
- for(num=0;num<11;num++)
- {
- write_data(table[num]);
- delay(5);
- }
- write_com(0x80+0x40);
- for(num=0;num<13;num++)
- {
- write_data(table1[num]);
- delay(5);
- }
- write_com(0x80);
- while(1)
- {
- }
- }
- ser()interrupt 4
- {
- RI=0;
- write_com(0x01);
- a=SBUF;
- write_data('I');
- write_data('g');
- write_data('e');
- write_data('t');
- write_data(' ');
- write_data(a);
- }
复制代码
所有资料51hei提供下载:
显示屏.rar
(15.63 KB, 下载次数: 55)
|