视频:
1.rar
(1.15 MB, 下载次数: 7)
- #include<reg51.h>
- #include<intrins.h>
- #include<stdlib.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define LCD_data P0 //数据口
- #define ushort unsigned short int
- ushort b;
- /*******引脚定义*******/
- sbit LCD_RS=P3^5;
- sbit LCD_RW=P3^6;
- sbit LCD_EN=P3^4;
- sbit LCD_PSB=P3^7;
- sbit wela=P2^6;
- sbit dula=P2^7;
- uchar code dis1[]={"abcdefg"};
- uchar code dis2[]={"您好"};
- uchar code dis3[]={"欢迎光临"};
- uchar code dis4[]={"www.baidu.com"};
- uchar code dis5[]={"数值:"};
- uchar dis6[5]={"L 000"};
- uchar dis7[5]={"R 000"};
- uchar code dis8[]={""};
- /*******延时函数*******/
- void delay_1ms(uint x)
- {
- uint i,j;
- for(j=0;j<x;j++)
- for(i=0;i<110;i++);
- }
- void quzhi()
- {
- uint f=dis6[5],g=dis7[5];
- for(f=0;f<5;f++)
- for(g=0;g<5;g++);
- }
- /*******写指令*******/
- void write_cmd(uchar cmd)
- {
- LCD_RS=0;
- LCD_RW=0;
- LCD_EN=0;
- P0=cmd;
- delay_1ms(5);
- LCD_EN=1;
- delay_1ms(5);
- LCD_EN=0;
- }
- /*******显示数据*******/
- void write_dat(uchar dat)
- {
- LCD_RS=1;
- LCD_RW=0;
- LCD_EN=0;
- P0=dat;
- delay_1ms(5);
- LCD_EN=1;
- delay_1ms(5);
- LCD_EN=0;
- }
- /*******设定初始显示位置*******/
- void lcd_pos(uchar x,uchar y)
- {
- uchar pos;
- if(x==0)
- x=0x82;
- else if(x==1)
- x=0x91;
- else if(x==2)
- x=0x8A;
- else if(x==3)
- x=0x98;
- pos=x+y;
- write_cmd(pos);
- }
- void lcd_pos2(uchar x,uchar y)
- {
- uchar pos2;
- if(x==0)
- x=0x80;
- else if(x==1)
- x=0x93;
- else if(x==2)
- x=0x8B;
- else if(x==3)
- x=0x98;
- pos2=x+y;
- write_cmd(pos2);
- }
- /*******LCD初始化程序*******/
- void lcd_init()
- {
- LCD_PSB=1; //并口方式
- write_cmd(0x30);
- delay_1ms(5);
- write_cmd(0x0c); //显示开,关光标
- delay_1ms(5);
- write_cmd(0x01); //清除LCD的显示内容
- delay_1ms(5);
- }
- /*******LCD数据显示位置*******/
- void shuju()
- {
- uchar i;
- lcd_pos(0,0); //第一行
- while(dis1[i]!='\0')
- {
- write_dat(dis1[i]);
- i++;
- }
- lcd_pos(1,0); //第二行
- i=0;
- while(dis2[i]!='\0')
- {
- write_dat(dis2[i]);
- i++;
- }
- lcd_pos(2,0); //第三行
- i=0;
- while(dis3[i]!='\0')
- {
- write_dat(dis3[i]);
- i++;
- }
- lcd_pos(3,0); //第四行
- i=0;
- while(dis4[i]!='\0')
- {
- write_dat(dis4[i]);
- i++;
- }
- delay_1ms(2000);
- write_cmd(0x01);
- lcd_pos2(0,0); //第一行
- i=0;
- while(dis5[i]!='\0')
- {
- write_dat(dis5[i]);
- i++;
- }
- lcd_pos2(1,0); //第二行
- i=0;
- while(dis6[i]!='\0')
- {
- write_dat(dis6[i]);
- i++;
- }
- lcd_pos2(2,0); //第三行
- i=0;
- while(dis7[i]!='\0')
- {
- write_dat(dis7[i]);
- i++;
- }
- lcd_pos2(3,0); //第四行
- i=0;
- while(dis8[i]!='\0')
- {
- write_dat(dis8[i]);
- i++;
- }
- }
- /*******主程序*******/
- void main()
- {
- uchar i;
- wela=0;
- dula=0;
- TMOD=0x01;
- TH0=(65536-45872)/256;
- TL0=(65536-45872)%256;
- EA=1;
- ET0=1;
- TR0=1;
- delay_1ms(10);
- lcd_init();
- shuju();
- quzhi();
- while(1)
- {
- lcd_pos2(2,0); //第三行
- i=0;
- while(dis7[i]!='\0')
- {
- write_dat(dis7[i]);
- i++;
- }
- lcd_pos2(1,0); //第二行
- i=0;
- while(dis6[i]!='\0')
- {
- write_dat(dis6[i]);
- i++;
- }
- }
- }
- void T0_time() interrupt 1
- {
- TH0=(65536-45872)/256;
- TL0=(65536-45872)%256;
- b++;
- dis7[2]='0'+b;
- if (b>9)
- {
- b=0;
- }
- dis7[3]='0'+b;
- if (b>99)
- {
- b=0;
- }
- dis7[4]='0'+b;
- if (b>999)
- {
- b=0;
- }
- dis6[2]='0'+b;
- if (b>9)
- {
- b=0;
- }
- dis6[3]='0'+b;
- if (b>9)
- {
- b=0;
- }
- dis6[4]='0'+b;
- if (b>9)
- {
- b=0;
- }
- }
复制代码 |