#include <reg52.h>//头文件
#define uchar unsigned char
#define uint unsigned int //预定义
sbit rs=P3^5; //1602的数据/命令控制,高电平为数据,低电平为命令
sbit rw=P3^3; //1602读写控制
sbit lcden=P3^4; //1602的en,1602的使能信号
sbit dula=P2^6; //为了关上数码管显示防止相互干扰
sbit wela=P2^7; //为了关上数码管显示防止相互干扰
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) //延时子程序,为了给液晶反应时间
{
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准备接收
lcden=0;
lcden=1; //使能线电平变化, 命令送入1602的8位数据口
lcden=0;
}
void write_date(uchar date) //写入数据子程序
{
P0=date;//把要显示数据送入P0
rs=1; //选择数据寄存器
rw=0;//选择写
lcden=0;
lcden=1; //使能线电平变化,数据送入
lcden=0;
}
void lcd_init() // 1602初始化函数
{
dula=0;
wela=0;
write_com(0x38); //8位数据,双列
delay(20);
write_com(0x0c);//开启显示屏,关光标,光标不闪
delay(20);
write_com(0x06); //显示地址递增,即写入数据后,显示位置后移一位
delay(20);
write_com(0x01); //清屏
delay(20);
}
void main()
{
uchar a;
init();
write_com(0x80); //写入显示首地址
delay(20); //液晶反应时间
for(a=0;a<14;a++)
{
write_date(table1[a]); //写入显示固定字符
delay(20); //液晶反应时间
}
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'; //转换为ASCII码显示
write_com(0x80+6); //写入显示首地址
delay(20); //液晶反应时间
write_date(zhi); //写入显示的字符
delay(20); //液晶反应时间
}
}
结果:.....
Build target '目标 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).
|