|
#include<reg51.h> //頭文件
#define uchar unsigned char //預(yù)定義
#define uint unsigned int
#define lcd_dat P0
sbit lcdrs=P2^6; //1602的數(shù)據(jù)/指令選擇控制線
sbit lcdrw=P2^5; //1602的讀寫控制線
sbit lcden=P2^4; //1602的使能控制線
sbit yihao=P2^0; //一號(hào)病房按鍵
sbit erhao=P2^1;
sbit sanhao=P2^2;
sbit sihao=P2^3;
uchar table1[]="Number";
uchar table2[]="1234";
void delay(uint z) //延時(shí)子程序
{
uint x,y;
for(x=z;x>0;x--) for(y=110;y>0;y--);
}
void write_com(uchar com) //寫命令子程序
{
lcdrs=0;
lcdrw=0;
P0=com;
delay(5);
lcden=1;
delay(3);
lcden=0;
}
void write_data(uchar date) //寫數(shù)據(jù)子程序
{
lcdrs=1;
lcdrw=0;
P0=date;
delay(5);
lcden=1;
delay(3);
lcden=0;
}
void init() //1602初始化子程序
{
write_com(0x38);//顯示模式設(shè)置。
delay(5);
write_com(0x0c);//關(guān)光標(biāo),不閃爍
delay(5);
write_com(0x06); //顯示地址遞增,即寫一個(gè)數(shù)據(jù)后,顯示位置右移位
delay(5);
write_com(0x01); //清屏
delay(5); }
void Number() //顯示Number子程序
{uchar m;
write_com(0x80);
for(m=0;m<6;m++) //將table[]中的數(shù)據(jù)依次寫入1602顯示
{
write_data(table1[m]);
delay(200);
}
}
void main() //主函數(shù)
{
unsigned char FLAG; //FLAG的值為P2口的值
init();
do
{
FLAG=P2;
switch(FLAG&0X0f) //屏蔽P2口高四位
{
case 0X0E:
Number();
write_com(0x80+10); //顯示地址設(shè)為90H(即10H,)上排第十位
write_data(table2[0]);
delay(200);
break;
case 0X0D:
Number();
write_com(0x80+10); //顯示地址設(shè)為90H(即10H,)上排第十位
write_data(table2[1]);
delay(200);
break;
case 0X0B:
Number();
write_com(0x80+10); //顯示地址設(shè)為90H(即10H,)上排第十位
write_data(table2[2]);
delay(200);
break;
case 0X07:
Number();
write_com(0x80+10); //顯示地址設(shè)為90H(即10H,)上排第十位
write_data(table2[3]);
delay(200);
break;
default:
break;
}
}
while(1);
}
5GLQAOC7GTY%YB%}T_BL8]4.png (19.93 KB, 下載次數(shù): 69)
下載附件
2017-4-25 13:54 上傳
|
|