完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
最近在用LCD12864做一个数字时钟,时间部分已经基本搞定,就是往里面添加温度显示时,虽然可以显示温度,但是显示一会后就出现乱码了,而且添加在主函数里延时过大,影响功能按键的使用。 求大神帮忙看一下。时间显示,按键控制,温度显示,闹钟设置,AD转换识别系统, 还有一个我未实现的用串口来设置初始时间的问题。 #include #include #include #define uchar unsigned char #define uint unsigned int ***it DQ=P3^5; //定义DS18B20数据线引脚端 char a,d2,d1,d0; float f_temp; uint i,j,temp,low,high; /*端口定义*/ #define LCD_data P0 #include"24c02.h" ***it RS = P2^7; ***it RW = P2^6; ***it EN = P2^5; ***it s1 = P3^2; //SW1定义为--功能键 ***it s2 = P3^3; //SW2定义为--增大键 ***it s3 = P3^4; //SW3定义为--减小键 ***it feng = P3^2;//蜂鸣器 /************************************************/ ***it adwr = P2^1; //定义A/D的WR端口 ***it adrd = P2^2; //定义A/D的RD端口 ***it adcs = P3^6; /***********************************************/ uchar code dis1[]={" 现在时间 "};//10 uchar code dis2[]={" -- -- "}; uchar code dis3[]={" : : "}; uchar code dis4[]={"现在温度: 00.0度"}; //6 uchar t=0,s1num; char miao,shi,fen,ri,yue,nian; void delay(uint z) //延时 { uint r,w; for(r=0;r } /*写指令数据到LCD*/ /*RS=0,RW=0,E=高脉冲,D0--D7=指令码。*/ void write_cmd(uchar cmd) { RS = 0; RW = 0; EN = 0; P0 = cmd; delay(5); EN = 1; delay(5); EN = 0; } /*写显示数据到LCD*/ /*RS=1,RW=0,E=高脉冲,D0--D7=数据*/ void write_dat(uchar dat) //写入 { RS = 1; RW = 0; EN = 0; P0 = dat; delay(5); EN = 1; delay(5); EN = 0; } /*设置显示位置*/ void lcd_pos(uchar X,uchar Y) //方便主函数调用点地址 { uchar pos; if(X==0) {X=0x80;} else if(X==1) {X=0x90;} else if(X==2) {X=0x88;} else if(X==3) {X=0x98;} pos = X+Y; write_cmd(pos); //显示地址 } void write_sfm(uchar app,uchar add,uchar date) //写时分秒函数 { uchar shi,ge; shi = date/10; //分解一个2位数的十位和个位 ge = date%10; lcd_pos(app,add); //设置显示位置 write_dat(0x30+shi); //送去液晶显示十位 write_dat(0x30+ge); //送去液晶显示个位 } void init() /*LCD初始化设定*/ { uint g; write_cmd(0X30); //基本指令操作 delay(5); write_cmd(0X0C); //显示开,关光标 delay(5); write_cmd(0X01); //清除LCD的显示内容 delay(5); fen = 0; //初始化分钟变量值 miao = 0; shi = 0; s1num = 0; init_24c02(); // lcd_pos(1,0); g = 0; while(dis2[g]!=' |