|
#include <reg52.h>//頭文件
#define uchar unsigned char
#define uint unsigned int //預(yù)定義
sbit rs=P3^5; //1602的數(shù)據(jù)/命令控制,高電平為數(shù)據(jù),低電平為命令
sbit rw=P3^3; //1602讀寫控制
sbit lcden=P3^4; //1602的en,1602的使能信號
sbit dula=P2^6; //為了關(guān)上數(shù)碼管顯示防止相互干擾
sbit wela=P2^7; //為了關(guān)上數(shù)碼管顯示防止相互干擾
sbit jian=P3^7; //+
sbit jian1=P3^6; //-
int i=0,zhi=30,zhi1=0,zhi2=0; //i
uchar table1[]="Speed: ";
uchar table2[]="I LIKE MCU ! ";
void delay(uint x) //延時子程序,為了給液晶反應(yīng)時間
{
uint a,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
void write_com(uchar com) //寫入命令子程序
{
P0=com; //命令送入P0
rs=0; //選擇指令寄存器
rw=0; //選擇寫
delay(20);// 延時一小會兒,讓1602準(zhǔn)備接收
lcden=0;
lcden=1; //使能線電平變化, 命令送入1602的8位數(shù)據(jù)口
lcden=0;
}
void write_date(uchar date) //寫入數(shù)據(jù)子程序
{
P0=date;//把要顯示數(shù)據(jù)送入P0
rs=1; //選擇數(shù)據(jù)寄存器
rw=0;//選擇寫
lcden=0;
lcden=1; //使能線電平變化,數(shù)據(jù)送入
lcden=0;
}
void lcd_init() // 1602初始化函數(shù)
{
dula=0;
wela=0;
write_com(0x38); //8位數(shù)據(jù),雙列
delay(20);
write_com(0x0c);//開啟顯示屏,關(guān)光標(biāo),光標(biāo)不閃
delay(20);
write_com(0x06); //顯示地址遞增,即寫入數(shù)據(jù)后,顯示位置后移一位
delay(20);
write_com(0x01); //清屏
delay(20);
}
void main()
{
uchar a;
init();
write_com(0x80); //寫入顯示首地址
delay(20); //液晶反應(yīng)時間
for(a=0;a<14;a++)
{
write_date(table1[a]); //寫入顯示固定字符
delay(20); //液晶反應(yīng)時間
}
write_com(0xc0);
delay(50);
for(a=0;a<14;a++)
{
write_date(table2[a]);
delay(40);
}
while(1)
{
if(jian==0)
{
delay(200);
if(jian==0)
{
i++;
}
if(i>9)
i=9;
while(jian==0);
}
if(jian1==0)
{
delay(200);
if(jian1==0)
{
i--;
}
if(i<0)
i=0;
while(jian1==0);
} zhi=i+'0'; //轉(zhuǎn)換為ASCII碼顯示
write_com(0x80+6); //寫入顯示首地址
delay(20); //液晶反應(yīng)時間
write_date(zhi); //寫入顯示的字符
delay(20); //液晶反應(yīng)時間
}
}
結(jié)果: .....
Build target '目標(biāo) 1'
assembling STARTUP.A51...
compiling 1602.C...
1602.C(60): warning C206: 'init': missing function-prototype
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?LCD_INIT?1602
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
SYMBOL: INIT
MODULE: 1602.obj (1602)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL: INIT
MODULE: 1602.obj (1602)
ADDRESS: 0004H
Program Size: data=47.0 xdata=0 code=458
creating hex file from "1602"...
"1602" - 0 Error(s), 4 Warning(s).
|
|