基于温湿sht10度测量显示电路设计(有仿真图)(编辑修改稿)内容摘要:

//指令 LCD_RW=0。 //写入 LCD_E=1。 //允许 LCD_DB=dat。 delay_n10us(10)。 //实践证明,我的 LCD1602 上,用 for 循环 1 次就能完成普通写指令。 LCD_E=0。 delay_n10us(10)。 //实践证明,我的 LCD1602 上,用 for 循环 1 次就能完成普通写指令。 } 盐城工学院课程设计说明书( 2020) 10 /*。 模块名称 :LCD_write_data()。 功 能 :LCD1602 写数据函数。 占用资源 : (LCD_RS),(LCD_RW),(LCD_E).。 参数说明 :dat 为写数据参数。 */ void LCD_write_data(uchar dat) { delay_n10us(10)。 LCD_RS=1。 //数据 LCD_RW=0。 //写入 LCD_E=1。 //允许 LCD_DB=dat。 delay_n10us(10)。 LCD_E=0。 delay_n10us(10)。 } /*。 模块名称 :LCD_disp_char()。 功 能 :LCD1602 显示一个字符函数,在某个屏幕位置上显示一个字符 ,X( 015),y(12)。 占用资源 :。 参数说明 :X 为 1602 的列值 (取 值范围是 015),y 为 1602 的行值 (取值范围是 12), dat 为所要显示字符对应的地址参数。 */ void LCD_disp_char(uchar x,uchar y,uchar dat) { uchar address。 if(y==1) address=0x80+x。 else address=0xc0+x。 LCD_write_mand(address)。 LCD_write_data(dat)。 } /* 盐城工学院课程设计说明书( 2020) 11。 模块名称 :LCD_disp_str()。 功 能 :LCD1602 显示字符串函数,在某个屏幕起始位置 {X( 015),y(12)}上显示一个字符串。 占用资源 :。 参数说明 :X 为 1602 的列值 (取值范围是 015),y 为 1602 的行值 (取值范围是 12), str 为所要显示字符串对应的指针参数。 */ void LCD_disp_str(uchar x,uchar y,uchar *str) { uchar address。 if(y==1) address=0x80+x。 else address=0xc0+x。 LCD_write_mand(address)。 while(*str!=39。 \039。 ) { LCD_write_data(*str)。 str++。 } } /*。 模块名称 :delay_n10us()。 功 能 :延时函数,延时约 n 个 10us。 占用资源 :。 参数说明 :。 */ void delay_n10us(uint n) //延时 n 个 10us@12M 晶振 { uint i。 for(i=n。 i0。 i) { _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 } } sbit SCK = P2^6。 //定义通讯时钟端口 sbit DATA = P2^7。 //定义通讯数据端口 盐城工学院课程设计说明书( 2020) 12 typedef union { unsigned int i。 //定义了两个共用体 float f。 } value。 enum {TEMP,HUMI}。 //TEMP=0,HUMI=1 define noACK 0 //用于判断是否结束通讯 define ACK 1 //结束数据传输 //adr mand r/w define STATUS_REG_W 0x06 //000 0011 0 define STATUS_REG_R 0x07 //000 0011 1 define MEASURE_TEMP 0x03 //000 0001 1 define MEASURE_HUMI 0x05 //000 0010 1 define RESET 0x1e //000 1111 0 /****************定义函数 ****************/ void s_transstart(void)。 //启动传输函数 void s_connectionreset(void)。 //连接复位函数 char s_write_byte(unsigned char value)。 //DHT90 写函数 char s_read_byte(unsigned char ack)。 //DHT90 读函数 char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode)。 //测量温湿度函数 void calc_dht90(float *p_humidity ,float *p_temperature)。 //温湿度补偿 /*。 模 块名称 :s_transstart()。 功 能 :启动传输函数。 占用资源 :。 参数说明 :。 */ void s_transstart(void) // generates a transmission start { DATA=1。 SCK=0。 //Initial state _nop_()。 SCK=1。 _nop_()。 盐城工学院课程设计说明书( 2020) 13 DATA=0。 _nop_()。 SCK=0。 _nop_()。 _nop_()。 _nop_()。 SCK=1。 _nop_()。 DATA=1。 _nop_()。 SCK=0。 } /*。 模块名称 :s_connectionreset()。 功 能 :连接复位函数。 占用资源 :。 参数说明 :。 */ void s_connectionreset(void) // munication reset: DATAline=1 and at least 9 SCK cycles followed by transstart { unsigned char i。 DATA=1。 SCK=0。 //Initial state for(i=0。 i9。 i++) //9 SCK cycles { SCK=1。 SCK=0。 } s_transstart()。 //transmission start } /*。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。