基于89c52的数字温度传感器设计课程设计(编辑修改稿)内容摘要:

char dat) { unsigned char i=0。 for(i=0。 i8。 i++) { DQ=0。 DQ=datamp。 0x01。 delay(5)。 DQ=1。 dat=1。 } } /**********************************/ 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()。 b=ReadOneChar()。 t=b。 t=8。 t=t|a。 tt=t*。 t=tt*10+。 return(t)。 } /***************************/ ifndef __18B20_H__ define __18B20_H__ include sbit DQ=P2^2。 Init_DS18B20(void)。 ReadOneChar(void)。 WriteOneChar(unsigned char dat)。 ReadTemperature(void)。 void delay(unsigned int i)。 endif 液晶显示子函数 include include uchar hanzi0[]=时间 :。 uchar hanzi1[]=温度 :。 uchar hanzi2[]=高报警 :。 uchar hanzi3[]=低报警 :。 void delay_ms(uchar a) { uint i,j。 for(i=a。 i0。 i) for(j=6245。 j0。 j)。 } /************************************************/ /******************************* //在 12m 晶振时延时 50us **********************************/ void delayus(uchar t) { uint i,j。 for(i=t。 i0。 i) for(j=19。 j0。 j)。 } /********************************/ void write_(uchar ) { rs=0。 rw=0。 e=0。 lcd_dat_port=。 delayus(1)。 e=1。 delayus(10)。 e=0。 delayus(2)。 } /***********************************/ void write_data(uchar dat) { rs=1。 rw=0。 e=0。 lcd_dat_port=dat。 delayus(1)。 e=1。 delayus(10)。 e=0。 delayus(2)。 } /********************************/ void init() { uchar i。 delay_ms(2)。 write_(0x30)。 delayus(4)。 write_(0x30)。 delayus(4)。 write_(0x0c)。 delayus(4)。 write_(0x01)。 delayus(240)。 write_(0x06)。 delayus(10)。 /******************/ write_(0x80)。 delay_ms(1)。 for(i=0。 i9。 i++) { write_data(hanzi0[i])。 } write_(0x90)。 delay_ms(1)。 for(i=0。 i9。 i++) { write_data(hanzi1[i])。 } write_(0x88)。 delay_ms(1)。 for(i=0。 i16。 i++) { write_data(hanzi2[i])。 } write_(0x98)。 delay_ms(1)。 for(i=0。 i16。 i++) { write_data(hanzi3[i])。 } delay_1ms(10)。 } ifndef __LCD12864_H__ define __LCD12864_H__ include include define lcd_dat_port P0 sbit rs=P3^5。 sbit e=P3^4。 sbit rw=P3^6。 void write_(uchar )。 void write_data(uchar dat)。 void delay_ms(uchar a)。 void delayus(uchar t)。 void init()。 void lcd_char_write(uchar x_pos,y_pos,lcd_dat)。 endif 延时函数 include void delayshu(void) { int k。 for(k=0。 k1000。 k++)。 } /**********************/ void lcd_delay(uint ms) { uint i。 while(ms) { for(i=0。 ii++) {。 } } } /***************************************/ /**********************************/ void delay_1ms(uchar x) { uchar i=0,j=0。 for(i=0。 ix。 i++) { for(j=0。 j113。 j++) {。 } } } ifndef __DELAY_H__ define __DELAY_H__ include define uchar unsigned char define uint unsigned int void lcd_delay(uchar ms)。 void delayshu(void)。 void delay_1ms(uchar x)。 endif 时钟函数 include include /******************************************************************** 函 数 名: RTInputByte() 功 能:实时时钟写入一字节 说 明:往 DS1302 写入 1Byte 数据 (内部函数 ) 入口参数: d 写入的数据 返 回 值:无 设 计: zhaojunjie 日 期: 20200319 修 改: 日 期:。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。