完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
这是仿真的图片
|
|
|
|
你可以把程序直接贴出来
|
|
|
|
肯定是你程序处理有问题
|
|
|
|
#include #include #define uchar unsigned char #define uint unsigned int ***it RS=P2^0; ***it RW=P2^1; ***it EN=P2^2; ***it DQ=P3^0; ***it key1=P3^3; ***it key2=P3^4; ***it key3=P3^5; ***it beep=P3^6; ***it led=P3^7; uchar code str1[]={0x28,0x16,0x50,0x06,0x04,0x00,0x00,0xF5}; //ROM1 uchar code str2[]={0x28,0xA6,0x5D,0x06,0x04,0x00,0x00,0x1E}; //ROM2 uchar code str3[]={0x28,0x2E,0x6C,0x06,0x04,0x00,0x00,0x1C}; //ROM3 uchar code str4[]={0x28,0x04,0x23,0x06,0x04,0x00,0x00,0Xe3}; //ROM4 uchar code table[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00}; //摄氏温度符号 uchar code eyn[]={0,1,2,3,4,5,6,7,8,9} ; uchar num1,num,num2; uint zhengchang[4]; uchar data disdata[5]; uint tvalue;//温度值 uchar tflag;//温度正负标志 int yushe; uchar ge,shi,baoj; /******lcd1602程序*****/ void delay1ms(uint ms)//延时1毫秒 { uint i,j; for(i=0;i } void wr_com(uchar com) {delay1ms(1); RS=0; RW=0; EN=0; P1=com; delay1ms(1); EN=1; delay1ms(1); EN=0; } void wr_dat(uchar dat) {delay1ms(1); RS=1; RW=0; EN=0; P1=dat; delay1ms(1); EN=1; delay1ms(1); EN=0; } void lcd_init() {delay1ms(15); wr_com(0x38);delay1ms(5); wr_com(0x08);delay1ms(5); wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5); wr_com(0x0c);delay1ms(5); } /*****de18b20程序***/ void delay_18B20(uint i) { while(i--); } void ds1820rst()/*ds1820复位*/ {uchar x=0; DQ=1; delay_18B20(4); DQ=0; delay_18B20(100); DQ=1; delay_18B20(40); } uchar ds1820rd() {uchar i=0; uchar dat=0; for(i=0;i<8;i++) {DQ=0 ; dat>>=1; DQ=1; if(DQ) dat|=0x80; delay_18B20(10); } return(dat); } void ds1820wr(uchar dat) { uchar i=0; for (i=0;i<8;i++) {DQ=0; DQ=dat&0x01; delay_18B20(10); DQ=1; dat>>=1; } } void b20_Matchrom(uchar a) { char j; ds1820wr(0x55); if(a==1) { for(j=0;j<8;j++) ds1820wr(str1[j]); } if(a==2) {for(j=0;j<8;j++) ds1820wr(str2[j]); } if(a==3) {for(j=0;j<8;j++) ds1820wr(str3[j]); } if(a==4) {for(j=0;j<8;j++) ds1820wr(str4[j]); } } uint read_temp(uchar z) {uchar a,b; float tt; ds1820rst(); ds1820wr(0xcc); ds1820rst(); if(z==1) { b20_Matchrom(1); } if(z==2) { b20_Matchrom(2); } if(z==3) { b20_Matchrom(3); } if(z==4) { b20_Matchrom(4); } ds1820wr(0x44); delay1ms(5); ds1820rst(); ds1820wr(0xcc); ds1820rst(); if(z==1) { b20_Matchrom(1); } if(z==2) { b20_Matchrom(2); } if(z==3) { b20_Matchrom(3); } if(z==4) { b20_Matchrom(4); } ds1820wr(0xbe); a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue<<=8; tvalue=tvalue|a; if(tvalue<0x0fff) tflag=0; else { tvalue=~tvalue+1; tflag=1; } tt=tvalue*0.625; tvalue=tt*10; tvalue=tt; return(tvalue); } void baojing(){ TMOD=0x11; TH0=(65536-500)/256; TL0=(65536-500)%256; EA=1; ET0=1; TR0=1; } void key_itre(){ TMOD=0x11; TH1=(65536-50000)/256; TL1=(65536-50000)%256; EA=1; ET1=1; TR1=1; } uchar key_zhi(){ uchar key_num=0; if(!key1){ num2=0; num=0; delay1ms(10); if(!key1){ key_itre(); while(!key1){ if(num>1){ key_num=1; while(!key1); } } if(key_num!=1){ EA=0; ET1=0; TR1=0; key_num=2; } } } if(!key2){ delay1ms(10); if(!key2){ delay1ms(10); if(!key2){ while(!key2); key_num=3; } } } if(!key3){ delay1ms(10); if(!key3){ delay1ms(10); if(!key3){ while(!key3); key_num=4; } } } return key_num; } void key(){ uchar key_val,j; uchar i=0; uchar a[3]; key_val=key_zhi(); if(1==key_val) { key_val=0; } else if(2==key_val) { key_val=0; wr_com(0x01); while(1) { wr_com(0x80); wr_dat(eyn[i+1]); wr_dat(':'); wr_dat('u'); wr_dat('p'); wr_dat('p'); wr_dat('e'); wr_dat('r'); wr_dat(' '); wr_dat('T'); wr_dat('='); //zhengchang[4] if (zhengchang>99) { a[0]=zhengchang/100; a[1]=zhengchang%100/10; a[2]=zhengchang%10; for(j=0;j<3;j++){ if(a[j]!=0){ for(;j<3;j++){ wr_dat(eyn[a[j]]); } break; } } key_val=key_zhi(); if(1==key_val){key_val=0;wr_com(0x01);return;} if(2==key_val){ key_val=0; i++; if(i>3)i=0; } if(3==key_val){ zhengchang=zhengchang-1; } if(4==key_val){ zhengchang=zhengchang+1; } } } } } void main() { uchar bj_flag=0; uint temp[4]; uchar xs_flag=0; uchar flag[4]; uchar disdata[5]; uchar i; lcd_init(); wr_com(0x80); wr_dat(eyn[1]); wr_com(0x89); wr_dat(eyn[2]); wr_com(0x80+0x40); wr_dat(eyn[3]); wr_com(0x80+0x49); wr_dat(eyn[4]); for(i=0;i<4;i++){ temp=read_temp(i+1); zhengchang=30; flag=0; } delay1ms(800); while(1) { key(); for(i=0;i<4;i++) { flag=0; } temp[0]=read_temp(1); temp[1]=read_temp(2); temp[2]=read_temp(3); temp[3]=read_temp(4); for(i=0;i<4;i++){ if(temp>(zhengchang*10)){ flag=1; xs_flag=1; if(0==bj_flag){ baojing(); bj_flag++; } } if(0==xs_flag){ EA=0; ET0=0; TR0=0; led=1; beep=1; bj_flag=0; } } xs_flag=0; for(i=0;i<4;i++){ if(flag==1){ xs_flag=1; break; } } if(xs_flag==0){ for(i=0;i<4;i++){ flag=1; } } else xs_flag=0; disdata[0]=temp[0]/1000; disdata[1]=temp[0]%1000/100; disdata[2]=temp[0]%100/10; disdata[3]=temp[0]%10; if(flag[0]==1){ wr_com(0x80); wr_dat(eyn[1]); wr_dat(':'); for(i=0;i<3;i++){ if(0==disdata){ wr_dat(' '); }else{ wr_dat(eyn[disdata[i++]]); for(;i<3;i++){ wr_dat(eyn[disdata]); } break; } } if(0==disdata[3]){ wr_dat(' '); wr_dat(' '); } else{ wr_dat('.'); wr_dat(eyn[disdata[3]]); } }else{ wr_com(0x80); for(i=0;i<8;i++){ wr_dat(' '); } } disdata[0]=temp[1]/1000; disdata[1]=temp[1]%1000/100; disdata[2]=temp[1]%100/10; disdata[3]=temp[1]%10; if(flag[1]==1){ wr_com(0x80+0x09); wr_dat(eyn[2]); wr_dat(':'); for(i=0;i<3;i++){ if(0==disdata){ wr_dat(' '); } else{ wr_dat(eyn[disdata[i++]]); for(;i<3;i++){ wr_dat(eyn[disdata]); } break; } } if(0==disdata[3]){ wr_dat(' '); wr_dat(' '); } else{ wr_dat('.'); wr_dat(eyn[disdata[3]]); } } else{ wr_com(0x89); for(i=0;i<8;i++){ wr_dat(' '); } } disdata[0]=temp[2]/1000; disdata[1]=temp[2]%1000/100; disdata[2]=temp[2]%100/10; disdata[3]=temp[2]%10; if(flag[2]==1){ wr_com(0x80+0x40); wr_dat(eyn[3]); wr_dat(':'); for(i=0;i<3;i++){ if(0==disdata){ wr_dat(' '); } else{ wr_dat(eyn[disdata[i++]]); for(;i<3;i++){ wr_dat(eyn[disdata]); } break; } } if(0==disdata[3]){ wr_dat(' '); wr_dat(' '); } else{ wr_dat('.'); wr_dat(eyn[disdata[3]]); } } else{ wr_com(0x80+0x40); for(i=0;i<8;i++){ wr_dat(' '); } } disdata[0]=temp[3]/1000; disdata[1]=temp[3]%1000/100; disdata[2]=temp[3]%100/10; disdata[3]=temp[3]%10; if(flag[3]==1){ wr_com(0x80+0x49); wr_dat(eyn[4]); wr_dat(':'); for(i=0;i<3;i++){ if(0==disdata){ wr_dat(' '); } else{ wr_dat(eyn[disdata[i++]]); for(;i<3;i++){ wr_dat(eyn[disdata]); } break; } } if(0==disdata[3]){ wr_dat(' '); wr_dat(' '); } else{ wr_dat('.'); wr_dat(eyn[disdata[3]]); } } else{ wr_com(0x80+0x49); for(i=0;i<8;i++){ wr_dat(' '); } } } } void t0t() interrupt 1 { TH0=(65536-500)/256; TL0=(65536-500)%256; num1++; beep=~beep; if(num1>200){ led=~led; num1=0; } } void t1t() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; num2++; if(num2>=20){ num2=0; num++; } } 这是程序 |
|
|
|
学习学习。。。。。。。。。。。。。。
|
|
|
|
1602不可以直接显示数字,必须把数字转换成ASCII码才行.数字+48就是对应的ASCII码
|
|
|
|
恩。。楼主觉得换成***加个画曲线的功能咋样,
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2004 浏览 0 评论
2424 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
4209 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1018 浏览 0 评论
【原创】收藏!单片机输出4种波形的函数信号发生器毕设(Proteus仿真+原理图+源码和论文)
4558 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 12:25 , Processed in 0.678465 second(s), Total 90, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191