完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include #define uint unsigned int #define uchar unsgned char #define SET P3_1 #define DEC P3_2 #define ADD P3_3 #define BEEP P3_6 #define ALAM P1_2 #define DQ P3_7 bit shanshuo_st; bit beep_st; ***it DIAN=P0^5; uchar x=0 ; signed char m; uchar n; uchar set_st=0; signed char shangxian=38; signed char xiaxian=5; //uchar code LEData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff}; uchar code LEData[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7,0xCF,0xDA,0x9B,0xDC,0x9B,0x8B}; void Delay_DS18B20(int num) { while(num--); } /*初始化DS18B20*/ void Init_DS18B20(void) { unsigned char x=0; DQ=1; Delay_DS18B20(8); DQ=0; Delay_DS18B20(80); DQ=1; Delay_DI18B20(14); x=DQ; Delay_DS18B20(20); } /*读一个字节*/ unsigned char ReadOneChar(void) { unsigned char i=0; unsigned char dat=0; for(i=8;i>0;i--) { DQ=0; dat>>1; DQ=1; if(DQ) dat|=0x80; Delay_DS18B20(4); } return(dat); } /*写一个字节*/ void WriteOneChar(unsigned char dat) { unsigned char i=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; Delay_DS18B20(5); DQ=1; dat>>=1; } } /*读取温度*/ unsigned int ReadTemperature(void) { unsigned char a=0; unsigned char b=0; unsigned int t=0; float tt=0; Init_DS18B20(); WriteOneChar(0xCC);//跳过读序列号的操作 WriteOneChar(0x44); Init_DS18B20(); WriteOneChar(0xCC);//跳过读序列号的操作 WriteOneChar(0xBE);//读取温度寄存器 a=ReadOneChar(); //读取低8位 b=ReadOneChar(); //读取高8位 t=b; t<<=8; t=t|a; tt=t*0.0625; t=tt*10+0.5; //放大10倍输出并四舍五入 return(t); } /*延时子程序*/ void Delay(uint num) { while(--num); } /*初始化定时器0*/ void Inittime(void) { TMOD=0x1; TH0=0x3c; TL0=0xb0; //50ms(晶振12M) } /*读取温度*/ void check_wendu(void) { uint a,b,c; c=ReadTemperature()-5; a=c/100; b=c/10-a*10; m=c/10; n=c-a*100-b*10; if(m<0){m=0;n=0;} if(m>99){m=99,n=9;} } /*显示开机初始化等待画面*/ void Disp_init(void) { P0=~0x80; P2=0x7F; Delay(200); P2=0xDF; Delay(200); P2=0xF7; Delay(200); P2=0xFD; Delay(200); P2=0xFF; } /*显示温度子程序*/ void Disp_Temperature(void) P0=~0x98; P2=0x7F; Delay(400); P0=~LEDData[n]; P2=0xDF; Delay(400); P0=~LEDData[m%10]; DIAN=0; P2=0xF7; Delay(400); P0=~LEDData[m/10]; P2=0xFD; Delay(400); P2=0xff; /*显示报警温度子程序*/ void Disp_alARM(uchar baojing) { P0=~0x98; P2=0x7F; Delay(200); P0=~LEDData[baojing%10]; P2=0xDF; Delay(200); P0=~LEDData[baojing/10]; P2=0xF7; Delay(200); if(set_st==1)P0=~0xCE; else if(set_st==2)P0=~0x1A; P2=0xFD; Delay(200); P2=0xff; } /*报警子程序*/ void Alarm() { if(x>=10){beep_st=~beep_st;x=0;} if(m>=shangxian&&beep_st==1)||(m BEEP=0; ALAM=0; } else { BEEP=1; ALAM=1; } } /*主函数*/ void main(void) { uint z; InitTimer(); EA=1; TR0=1; ET0=1; IT0=1; IT1=1; check_wendu(); check_wendu(); for(z=0;z<300;z++) { Disp_init(); } while(1) { if(SET==0) { Delay(2000); do{}whie(SET==0); set_st++;x=0;shanshuo_st=1; if(set_st>2)set_st=0; } if(set_st==0) { EX0=0; EX1=0; check_wendu(); Disp_Temperature(): Alarm(); } else if(set_st==1) { BEEP=1; ALAM=1; EX0=1; EX1=1; if(x>=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st){Disp_alarm(shanxian);} } else if(set_st==2) { BEEP=1; ALAM=1; EX0=1; EX1=1; if(x>=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st){Disp_alarm(xiaxian);} } } } /*定时器0中断服务*/ void time0(void)interrupt 1 { TH0=0x3c; TL0=0xb0; x++; } /*外部中断0服务程序*/ void int0(void)interrupt 0 EX0=0; if(DEC==0&&set_st==1) { do{ Disp_alarm(shangxian); } while(DEC==0); shanxian--; if(shangxian else if(DEC==0&&set_st==2) { do{ Disp_alarm(xiaxian); } while(DEC==0); xiaxian--; if(xiaxian<0)xiaxian=0; } /*外部中断1服务程序*/ void int1(void)interrupt 2 { EX1=0; if(ADD==0&&set_st==1) { do{ Disp_alarm(shangxian); } while(ADD==0); shangxian++; if(shangxian>99)shangxian=99; } else if(ADD==0&&set_st==2) { do{ Disp_alarm(xiaxian); } while(ADD==0); xiaxian++; if(xiaxian>shangxian)xiaxian=shangxian; } } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
1907个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36358 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4396 浏览 0 评论
6050 浏览 1 评论
6763 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4213 浏览 0 评论
619浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
614浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
606浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
694浏览 2评论
798浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 05:14 , Processed in 0.907635 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号