#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
//這三個引腳參考資料
sbit E=P2^2; //1602使能引腳
sbit RW=P2^1; //1602讀寫引腳
sbit RS=P2^0; //1602數據/命令選擇引腳
sbit key1=P3^1;
sbit key2=P3^2;
uchar tab[]="CurrentFrequence";
uchar tab1[]=" FM 100 MHz "; //要顯示什么就在這兒改
uchar tab2[]=" FM 100.2 MHz "; //[size=15.5555562973022px]要顯示什么就在這兒改
void delay(uint del) //延時1ms
{
uint i,j;
for(i=0;i<del;i++)
for(j=0;j<=168;j++);
}
void writecmd(uchar com) //寫指令
{
E=0;
RS=0;
RW=0;
P1=com;
delay(2);
E=1;
delay(2);
E=0;
}
void writedata(uchar dat)//寫數據
{
E=0;
RS=1;
RW=0;
P1=dat;
delay(2);
E=1;
delay(2);
E=0;
}
void init(void) //初始化
{
delay(15);
writecmd(0x38);
delay(5);
writecmd(0x38);
delay(5);
writecmd(0x38);
writecmd(0x38);
writecmd(0x08);
writecmd(0x01);
writecmd(0x06);
writecmd(0x0c);
}
void main()
{ uchar j,s;
uint k;
k=0;
init();
writecmd(0x80); //告訴液晶在哪個地方顯示 (設置地址指針)//80H+00
for(j=0;j<16;j++) //有16個字符,要循環(huán)16次
{
writedata(tab[j]);
delay(2);
}
while(1)
{
if (key1==0)
{
k=k+1;
//writecmd(0x80+0x40); //再設置第二行的起始位置80H+40H
//for(j=0;j<16;j++) //有16個字符,要循環(huán)16次
//{
}
if(key2==0)
{
k=k-1;
}
writecmd(0x80+0x40);
switch(k)
{
case 1:for(s=0;s<11;s++) { writedata(tab1[s]);};
case 2:for(s=0;s<11;s++) { writedata(tab2[s]);};
break;
}
}
} //讓液晶顯示就一直停在這里。
|