完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`1602显示的温湿度好像不能实时采集,是程序的问题还是硬件的问题,有点头大,找不着北了= =。 `
例10-DS18B20温度测量.rar
(49.43 KB, 下载次数:
)
|
|
相关推荐
8个回答
|
|
这个应该硬件问题不太大 应为从图片中看,单片机最小系统工作正常 就是温度传感器部分不好看,方便的话 请把原理图 源程序一起贴出来 这样坛友才好帮你解决问题
|
|
|
|
#include #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 #include ***it beep = P1^4; //蜂鸣器IO口定义 uchar a_a; bit flag_300ms ; // 按键的IO变量的定义 uchar key_can; //按键值的变量 ***it wh_led = P2^2; //温度报警指示灯IO口定义 ***it wl_led = P2^3; //温度报警指示灯IO口定义 ***it sh_led = P2^1; //湿度报警指示灯IO口定义 ***it sl_led = P2^0; //湿度报警指示灯IO口定义 uchar flag_en = 1; uchar menu_1; //菜单设计的变量 uint t_high = 30,t_low = 10; //温度报警参数 uint s_high = 30,s_low = 10; //湿度报警参数 /*************************************************************** * 名称 : delay_1ms() * 功能 : 延时1ms函数 * 输入 : q * 输出 : 无 ****************************************************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i for(j=0;j<120;j++); } ***it dht11=P1^5; //温度传感器IO口定义 uchar table_dht11[5]={1,2,3,4,5}; uchar code table_num[]="0123456789abcdefg"; ***it rs=P1^0; //寄存器选择信号 H:数据寄存器 L:指令寄存器 ***it rw=P1^1; //寄存器选择信号 H:数据寄存器 L:指令寄存器 ***it e =P1^2; //片选信号 下降沿触发 /******************************************************************** * 名称 : delay_uint() * 功能 : 小延时。 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void delay_uint(uint q) { while(q--); } /******************************************************************** * 名称 : write_com(uchar com) * 功能 : 1602命令函数 * 输入 : 输入的命令值 * 输出 : 无 ***********************************************************************/ void write_com(uchar com) { e=0; rs=0; rw=0; P0=com; delay_uint(25); e=1; delay_uint(100); e=0; } /******************************************************************** * 名称 : write_data(uchar dat) * 功能 : 1602写数据函数 * 输入 : 需要写入1602的数据 * 输出 : 无 ***********************************************************************/ void write_data(uchar dat) { e=0; rs=1; rw=0; P0=dat; delay_uint(25); e=1; delay_uint(100); e=0; } /***********************lcd1602上显示特定的字符****0XDF 度********************/ void write_zifu(uchar hang,uchar add,uchar date) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(date); } /***********************lcd1602上显示两位十进制数************************/ void write_sfm2(uchar hang,uchar add,uint date) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(0x30+date/10%10); write_data(0x30+date%10); } /***********************lcd1602上显示这字符函数************************/ void write_string(uchar hang,uchar add,uchar *p) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p == ' |