void lcd_pos(uchar pos) // 设定显示位置
{
lcd_wcmd(pos|0x80); //数据指针=80+地址变量
}
void lcd_init() //LCD 初始化设定
{
delay(15); //等待LCD 电源稳定
lcd_wcmd(0x38); //16*2 显示,5*7点阵,8 位数据
delay(5);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x0c); //显示开,关光标
delay(5);
lcd_wcmd(0x06); //移动光标
delay(5);
lcd_wcmd(0x01); //清除LCD 的显示内容
delay(5);
}
void lcd_clr() // 清屏子程序
{
lcd_wcmd(0x01); //清除LCD 的显示内容
delay(5);
}
void flash() // 闪动子程序
{delay(600); //控制停留时间
lcd_wcmd(0x08); //关闭显示
delay(200); //延时
lcd_wcmd(0x0c); //开显示
delay(200);
lcd_wcmd(0x08); //关闭显示
delay(200); //延时
lcd_wcmd(0x0c); //开显示
delay(200);
}
void intsvr0(void) interrupt 0 using 1 //温度输入中断级优先
{wendushuru();
}
main() //主程序
{ uchar i;
EA=1; PT0=1;
ET1=1;
IT0=1;IT1=1;
EX0=1;EX1=1;
TMOD=0X20; //波特率为9600的定时器1
TL1=-5000/256; //定时器1的初值
TH1=-5000%256;
SCON=0xe8; //设置串行口,可多机通信
PCON=0X00;
TR1=1;
do{ rom();
tmpchange(); // 开始温度转换
delay(200); // 读取延时
tmp(); //读取温度
wendushuru();
temp_control();
delay(10);
lcd_init(); //初始化LCD
while(1)
{lcd_clr();
lcd_pos(0x10); //设置显示位置为第一行第17 列
do
{ //显示字符" "
lcd_wdat(TEMP);
}while(1);
for(i=0;i<16;i++) //向左移动16 格
{
lcd_wcmd(0x18); //字符同时左移一格
delay(100); //控制移动时间
}
flash(); //闪动二次
}
}while(1);
}
<< 上一页 [11] [12] [13] [14] [15] [16]