单片机热水器控制程序代码(基于单片机的热水器控制系统)

发布日期:2024-04-29 10:05:14 更新时间:2024-11-22 02:57:00 浏览次数:1880  

1、单片机中void Timer0_isr(void) interrupt 1 using 1 怎么理解

   1、这个是定时器0的中断函数。 ,interrupt——中断。 3、定时器设置初值并开后,当计数器计数到你设置的数后,就会产生一个定时器中断,然后无论你当时程序在运行什么代码,都会跳转到IsrTimer0这个函数运行,运行完毕后再跳回去执行之前的代码。 using 1这个写法不能变,函数名是也要这样写的。 扩展资料 定时器的适用范围及注意事项 适用范围 1、在实行峰谷电价差的地区,可使用大功率电器在低电价阶段自动运行。 2、用于控制需定时开与关的家用电器。如:饮水机、热水器、空调、电饭煲、广告照明等。 3、用于控制通电时间长短。如:电动自行车电池、电池、蓄电池的充电。 4、需频繁通断的用电场合。如花圃、草坪的间歇喷灌、鱼缸的周期性增氧过滤、喷泉等。 5、家庭防盗系统的自动控制。 注意事项 1、本产品所接电器功率总和不得超过额定功率,为室内干燥环境中使用。 2、本产品可循环工作,设置的程序可循环使用。 3、不可把本产品直接插入已运行中的电器上。 4、当电器用品接入定时器后,开关状态务必是开启状态。 5、保修期内请勿擅自拆卸定时器,一旦拆卸,将终止保修。需维修时请找专业电工或专业人士。 参考资料:百科定时器 可以参考下面的理解: 1、这个是定时器0的中断函数。 ,interrupt——中断。 3、定时器设置初值并开后,当计数器计数到用户设置的数后,就会产生一个定时器中断,然后无论你当时程序在运行什么代码,都会跳转到IsrTimer0这个函数运行,运行完毕后再跳回去执行之前的代码。 using 1这个写法不能变,函数名是也要这样写的。 扩展资料: 单片机定时器介绍 定时/计数器T位的专用寄存器组成,即定时/计数器T组成,T组成。 此外,其内部还有和T启动或停止计数,同时包含定时/计数器的状态。 TF1:定时器1溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除。或用软件清除。 TF0:定时器0溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除,或用软件清除。 参考资料:百科单片机 这是按照单片机的中断向量顺序编的,也是缺省状态下的优先级。 外部中断0 interrupt 0 定时器0 interrupt 1 外部中断1 interrupt 2 定时器1 interrupt 3 串口中断 interrupt 4 定时器2 interrupt 5 后面的using1 就是在中断器里工作寄存器Rn使用第1工作区 工作寄存器共有决定 RS1 RS0 对应H 对应FH 对应H~H 对应H~1FH interrupt 是中断 interrupt 0 外部中断0 interrupt 2 外部中断1 interrupt 3 定时器1中断 interrupt 4 串口中断 using ~ R7来使用 H 第一组 FH 第二组 H ~ H 第三组 H ~ 1FH 第四组 interrupt 指中断声明 后面的数字代表中断源 using 1指工作寄存器组

2、51单片机c语言编程的温湿度检测控制程序

   /******************************************************************** * 文件名 : * 描述 : 该文件实现了用温度传感器件DSB对温度的采集,并在数码管上显示出来。 * 创建人 : 东流,月日 * 版本 : ***********************************************************************/ #include<> #define uchar unsigned char #define uint unsigned int #define jump_ROM 0xCC #define start #define read_EEROM 0xBE sbit DQ = P数据口 unsigned char TMPH,TMPL; uchar code table[] = {xb,xd,xf,0x6f}; /******************************************************************** * 名称 : delay() * 功能 : 延时,延时时间大概为US。 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void delay_1() { int i,j; for(i=0; i<=; i) for(j=0; j<=2; j) ; } /******************************************************************** * 名称 : delay() * 功能 : 延时函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void delay(uint N) { int i; for(i=0; i> i; temp = temp & ; write_bit(temp); delay(5); } } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void main() { float tt; uint temp; P; while(1) { Reset(); write_byte(jump_ROM); write_byte(start); Reset(); write_byte(jump_ROM); write_byte(read_EEROM); TMPL = read_byte(); TMPH = read_byte(); temp = TMPL / TMPH * ; P0 = table[temp/%]; P2 = 6; Delay_1ms(5); P0 = table[temp%]; P2 = 7; Delay_1ms(5); } } 这里也都是在复制的,要想看还得靠自己啊,最后祝你开心快乐,父母健康,时,记得捎上我啊!谢了~!~

3、基于51单片机的温控遥控电风扇用c语言写的程序

   #include<> void main() { char a[4]=; int i,j,k; char space= ; for(i=0;i<4;i) { printf(\n); printf( ); for(j=1;j<=i;j) printf(%c,space); for(k=0;k<4;k) printf(%c,a[k]); } printf(\n); }

4、跪求基于单片机的温湿度监控系统代码?

   #include <> #include <> //Keil library (is used for _nop()_ operation) #include <> //Keil library #include <> //Keil library unsigned char Tem,Hum; unsigned char Set_Tem,Set_Hum; sbit SS = P1^0; //片选 sbit SCLK = P 时钟 sbit MOSI = P1^2; //数据输入 sbit MISO = P1^3; //数据输出 sbit LED = P1^7; //指示灯 sbit ISD_INT = P3^2; //中断 sbit AN = P1^6; //执行 sbit STOP = P1^5; //复位 sbit PR = P 录音 PR=0 放音 sbit DATA=P2^0; sbit SCK=P2^1; sbit SCL=P1^1; sbit SDA=P1^0; #define TEMP 0 #define HUMI 1 typedef union { unsigned int i; float f; } value; //enum {,EMP,HUMI}; //以上所示为系统的主程序结构,其中子程序可根据系统整个具体的要进行添加代码, //刷新LED显示子程序write_led();硬件采用译码器;按键检测子程序check_key();的执行通过读单片机I/O口高低电平识别按键。 //以下所示代码为读温湿度传感器子程序read_ senr()的程序内容: /******************************************************************** 工程名 SHTxx demo program () 文件名: MCU: family 编译器: Keil ersion *******************************************************************/ // // modulvar // void warning(void); void Delay(unsigned int time); #define noACK 0 #define ACK 1 unsigned int *p_value; #define STATUS_REG_W #define STATUS_REG_R #define MEASURE_TEMP #define MEASURE_HUMI #define RESET 0 // char s_write_byte(unsigned char value) // // 写一个字节eaa,检查应答信 { unsigned char idata i,error=0; for (i=;i/=2) { if (i & value) DATA=1; else DATA=0; SCK=1; _nop_();_nop_();_nop_(); //时钟脉冲宽度 5 us SCK=0; } DATA=1; //释放DATA SCK=1; //9个CLK后应答 error=DATA; //检查应答信 (DATA 被拉低) SCK=0; return error; // 如果没有应答则error=1 }// // char s_read_byte(unsigned char ack) // // 读一个字节,检查应答信 { unsigned char i,val=0; DATA=1; //释放DATA信 for (i=;i/=2) { SCK=1; if (DATA) val=(val | i); SCK=0; } DATA=!ack; //如果 ack==1 ,拉低DATA SCK=1; //clk #9 for ack _nop_();_nop_();_nop_(); //延时5秒 SCK=0; DATA=1; //释放DATA return val; } // void s_transstart(void) // // generates a transmission start // _____ ________ // DATA: |_______| // ___ ___ // SCK : ___| |___| |______ { DATA=1; SCK=0; //初始状态 _nop_(); SCK=1; _nop_(); DATA=0; _nop_(); SCK=0; _nop_();_nop_();_nop_(); SCK=1; _nop_(); DATA=1; _nop_(); SCK=0; } // void s_connectionreset(void) // //通讯复位: 至少在9 SCK 周期后,DATA=1 传输开始 // _____________________________________________________ // DATA: //|_______| // _ _ _ _ _ _ _ _ _ ___ ___ // SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______| |___| { unsigned char i; DATA=1; SCK=0; //初始状态 for(i= SCK周期 { SCK=1; SCK=0; } s_transstart(); //通讯开始 } // char s_ftreset(void) // resets the senr by a ftreset { unsigned char error=0; s_connectionreset(); //复位通讯 error=s_write_byte(RESET); //发送复位命令 return error; //如果传感器没有响应则error=1 } // char s_read_statusreg(unsigned char *p_value,unsigned *p_checksum) // //读效验寄存器状态 (8bit) { unsigned char error=0; s_transstart(); //通讯开始 error=s_write_byte(STATUS_REG_R); //发送命令 *p_value=s_read_byte(ACK); //读状态寄存器(8bit) *p_checksum=s_read_byte(noACK); //读效验和 return error; //如果传感器没有响应则error=1 } // char s_write_statusreg(unsigned char *p_value) // // writes the status register with checksum (8bit) { unsigned char error=0; s_transstart(); //通讯开始 error=s_write_byte(STATUS_REG_W);// 发送命令 error=s_write_byte(*p_value); //发送状态寄存器的值 return error; //如果传感器没有响应则error=1 } // char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode) // // makes a measurement (humidity/temperature) with checksum { unsigned char idata error=0; unsigned int i; s_transstart(); //通讯开始 switch(mode) { //发送名令 case TEMP : error=s_write_byte(MEASURE_TEMP); break; case HUMI : error=s_write_byte(MEASURE_HUMI); break; default : break; } for (i=) break; //等待传感器完成测量 if(DATA) error=1; *(p_value) =s_read_byte(ACK); //读取第一个字节 *(p_value1)=s_read_byte(ACK); //读取第二个字节 *p_checksum =s_read_byte(noACK); //读取效验和 return error; } // // void calc_sth(float *p_humidity ,float *p_temperature) // // 计算温度和湿度 // input : humi [Ticks] ( bit) // temp [Ticks] ( bit) // output: humi [%RH] // temp { const float xdata C1=; const float xdata C2=; const float xdata C3=; const float xdata T1=; const float xdata T2=; float rh=*p_humidity; //计算湿度值 float t=*p_temperature; // 计算温度值 float rh_lin; float rh_true; float t_C; t_C=t* ; rh_lin=C; rh_true=(t_C*rh)rh_lin; if(rh_true>)rh_true=; //如果结果超出了可能的范围就取消 if(rh_true<)rh_true=; *p_temperature=t_C; *p_humidity=rh_true; } // float calc_dewpoint(float h,float t) // // calculates dew point // input: humid,ty , temperature // output: dew point { float dew_point,logEx; logEx=*t/()(log(h)2); dew_point = (logEx )*(); return dew_point; } // void main_measure() // // 使用SHT功能步骤: // // 2. 测量温度,湿度 // 3. 计算温度,湿度 // . 显示温度,湿度 { value humi_val,temp_val; float dew_point,error; unsigned char checksum; unsigned int idata i; s_connectionreset(); while(1) { error=0; error=s_measure((unsigned char*) &); //测量湿度 error=s_measure((unsigned char*) &); //测量温度 if(error!=0) s_connectionreset(); //如果有错误就复位 else { (float); //将整数转换成浮点数 (float); calc_sth(&); //计算温度,湿度 dew_point=calc_dewpoint(); //计算dew //printf(temp:% humi:% dew point:%,\n,temp_v,,); } for (i=;i);// } } //语音功能子程序 //下面代码为语音芯片使用范例,该功能放在主程序中的warning()子程序中执行。 void delay(unsigned int time) //延迟 n 秒 { while(time!=0) { time ; } } void delayms(unsigned int time) //延迟 n 毫秒 { TMOD=; for(time;time>0;time) { TH0 = 0xfc; TL0 = 0x; TR0 = 1; while(TF0!=1) {;} TF0=0; TR0=0; } } //************************************ //ISD 位数据 //************************************ void spi_send(unsigned char isdx) { unsigned char idata k; SS=,开 spi 通信端 SCLK=0; for(k=0;k<8;k) //先发低位再发高位,依发送。 { i { if((isdx&) MOSI=1; else MOSI=0; isdx=isdx>>1; SCLK=1; delay(2); SCLK=0; delay(2); } } //******************************* //发送 stop 指令 //******************************* void isd_stop(void) { delay(); spi_send(); SS=1; delayms(); } //******************************* //发送上电指令,并延迟 ms //******************************* void isd_pu(void) { delay(); SS=0; spi_send(); SS=1; delayms(); } //发送掉电指令,并延迟 ms //******************************* void isd_pd(void) { delay(); spi_send(0x); SS=1; delayms(); } //******************************* //发送 play 指令 //******************************* void isd_play(void) { LED=0; spi_send(0xf0); SS=1; } //******************************* //发送 rec 指令 //******************************* void isd_rec(void) { LED=0; spi_send(0xb0); SS=1; } //******************************* //发送 setplay 指令 //******************************* void isd_setplay(unsigned char adl,unsigned char adh) { spi_send(adl); //发送放音起始地址低位 adh=adh||0xe0; spi_send(adh); //发送放音起始地址高位 SS=1; } //******************************* //发送 setrec 指令 //******************************* void isd_setrec(unsigned char adl,unsigned char adh) { spi_send(adl); //发送放音起始地址低位 adh=adh||0xa0; spi_send(adh); //发送放音起始地址高位 SS=1; } //************************************ //芯片溢出,LED 闪烁提醒停止录音 //************************************ void isd_overflow(void) { while(AN==0) { LED=1; delayms(); LED=0; delayms(); } } //************************************ //检查芯片是否溢出(读,OF,并返回 OF 值) //************************************ unsigned char chk_isdovf(void) { SS=0; delay(2); SCLK=0; delay(2); SCLK=1; SCLK=0; delay(2); if (MISO==1) { SCLK=0; SS =1; //关闭 spi 通信端 isd_stop(); //发送 stop 指令 return } else { SCLK=0; SS =1; //关闭 spi 通信端 isd_stop(); //发送 stop 指令 return } } //********************************************************************** //主程序 //功能:,按住 AN 键,LED 点亮开始录音,松开 AN 即可停止录音 // 再次按下 AN 键,LED 点亮开始录第二段音,依次类推,直到芯片溢出。 // 按 stop 键芯片复位 // ,按一下 AN 键,即播放一段语音。按 stop 键芯片复位。 //************************************************************************ void voice(void) { unsigned char ovflog; while(1) { P=P3=0xff; //初始化 while (AN==1) //等待 AN 键按下 { if (AN==0) //按键防抖动 {delayms();} } isd_pu(); // AN 键按下,ISD 上电并延迟 ms isd_pd(); isd_pu(); if (PR==1) //如果 PR=1 则转入录音部分 { delayms(); //延迟录音 isd_setrec(xh 地址的 setplay 指令 do { isd_rec(); //发送 rec 指令 while(AN==0) //等待录音完毕 { if (ISD_INT==0)//如果芯片溢出,进行 LED 闪烁提示, isd_overflow(); //如果取消录音(松开AN键)则停止录音,芯片复位 } if (ISD_INT==0) break; LED=1; //录音完毕,LED 熄灭 isd_stop(); //发送停止命令 while(AN==1) //如果 AN 再次按下,开始录制下一段语音 { if(STOP==0) //如果按下 STOP 按键,则芯片复位 break; if (AN==0) delayms(); } }while(AN==0); } else //如果 PR==0 则转入放音部分 { while(AN==0){;} isd_setplay(x 地址开始放音 do { isd_play(); //发送放音指令 delay(); while(ISD_INT==1) //等待放音完毕的 EOM 中断信 {;} LED=1; isd_stop(); //放音完毕,发送 stop 指令 if (ovflog=chk_isdovf())//检查芯片是否溢出,如溢出则停止放音,芯片复位 break; while(AN==1) //等待 AN 键再次按下 { if (STOP==0) break; if(AN==0) delayms(); } }while(AN==0); // AN 键再次按下,播放下一段语音 } isd_stop(); isd_pd(); } } #define ZLG #define RADR #define uchar unsigned char #define uint unsigned int /************************************/ void I2cStart(void) { SDA=1; SCL=1; Delay(); SDA=0; Delay(); SCL=0; } /************************************/ void I2cStop(void) { SDA=0; SCL=1; Delay(); SDA=1; Delay(); SCL=0; } /************************************/ void WriteI2cByte(uchar dat) { uchar k; SCL=0; for (k=0;k<8;k) { SDA=(bit)(dat&); SCL=1; Delay(); SCL=0; dat<<=1; } SCL=0; } /*************************************/ uchar ReadI2cByte(void) { uchar dat,k; for (k=0;k<8;k) { SCL=0; SDA=1; //一定要将SDA置为高电平,否则不能正常连续取数据 Delay(); SCL=1; dat<<=1; if (SDA) dat|=; SCL=0; Delay(); } SCL=0; return dat; } /*************************************/ void SendAck(void) { SDA=0; Delay(); SCL=1; Delay(); SCL=0; } /*************************************/ void SendNoAck(void) { SDA=1; SCL=1; Delay(); SCL=0; } /************************************/ void I2cWaitAck(void) { uchar ack; SDA=1; SCL=1; Delay(); ack=SDA; SCL=0; } /***********************************************************/ void I2cReadSequence(uchar sla,uchar sbua,uchar *s,uchar len) { uchar l; I2cStart(); WriteI2cByte(sla); I2cWaitAck(); WriteI2cByte(sbua); I2cWaitAck(); I2cStart(); WriteI2cByte(sla1); I2cWaitAck(); for (l=0;lSet_Tem && Hum >Set_Hum)//设置报警区间 { warning();//执行警告 启动报警 } */ } } 你好! 都是毕业论文惹得祸 仅代表个人观点,不喜勿喷,。

5、单片机设计电热水器

   MCUDSB,测温控制继电器开合电源即可 说的也太不详细了。系统要有功能要才行哦! 这个我会做。我的腾讯,两五两八 四九 两三两。注明来意。 我可以做仿真,实物,论文,程序。

6、单片机程序解释 ORG 0000H;LJMP START;ORG 0003H;LJMP INT_0;ORG 0040H;START:SET B EA SET B IT0

   展开全部 ORG H ; 上电 & 复位 入口地址 LJMP START ; 一般为 转向主程序 ORG 中断向量入口地址 LJMP INT_0 ; 转向外部 INT0 中断 程序 ORG H ; 程序从这里开始 START: SETB EA ; 开总中断 SETB IT,外部中断0为下降沿触发方式 SETB EX0 ; 开外部 INT0 中断 A_D: MO DPTR,#H MO A, #H MOX @DPTR, A ; ( DPTR) = A , 即地址 H SJMP A_D ; 转移至地址 为 A_D 处 INT_0: MOX A, @DPTR ; A = ( DPTR) 此处为 INT0 入口 处 MO R7, A ; R7 = A RETI ; 中断返回 END ; 程序结束 以上程序 并没有什么意义

天泽网
为大家整理了液晶电视、冰箱、空调、洗衣机、热水器等11种家庭电器的故障及维修方法,希望可以帮助大家自己维修家电的小故障。
家电知识 故障解答 故障解答 家电知识 故障知识 家电知识

企业网站开发经验,成熟的技术,完善的服务,公正的价格!