基于stc单片机恒温控制系统的设计及c语言程序内容摘要:

显示当前测得的温度 */ if(ReadTempFlag1==1) { ReadTempFlag1=0。 temp=ReadTemperature()。 TempH=temp4。 TempL=tempamp。 0x0F。 TempL=TempL*6/10。 //小数近似处理 if(TempH/10==0) //不考虑负温度 10 TempData1[0]=0。 //消隐 else TempData1[0]=DuanMa[TempH/10]。 //十位温度 TempData1[1]=DuanMa[TempH%10]|0x80。 //个位温度 ,带小数点 TempData1[2]=DuanMa[TempL]。 //显示小数点后一位 TempData1[3]=0x39。 //显示 C符号 } /* 显示用户设定的温度 */ if(!KEY_ADD) //如果检测到低电平,说明按键按下 { DelayMs(10)。 //延时去抖,一般 1020ms if(!KEY_ADD) //再次确认按键是否按下,没有按下则退出 { while(!KEY_ADD)。 //如果确认按下按键等待按键释放,没有释放则一直等待 { if(usertemp50) //加操作 usertemp++。 } } } if(!KEY_DEC) //如果检测 到低电平,说明按键按下 { DelayMs(10)。 //延时去抖,一般 1020ms if(!KEY_DEC) //再次确认按键是否按下,没有按下则退出 { while(!KEY_DEC)。 //如果确认按下按键等待按键释放,没有释放则一直等待 { if(usertemp10) //减操作 usertemp。 } } } TempData2[0]=DuanMa[usertemp/10]。 TempData2[1]=DuanMa[usertemp%10]|0x80。 TempData2[2]=DuanMa[0]。 TempData2[3]=0x39。 Display2(0,4)。 /* 红绿灯指示加温状态 */ if(TempHusertemp1)//当测的温度低于用户设定温度 1度时,红灯亮, { //PWM=1三极管导通,加热电阻快速加热 LED_Red=0。 LED_Green=1。 11 PWM=1。 } else { if(TempH=usertemp)//当测的温度高于用户设定温度时,绿灯亮, { //PWM=0三极管关闭,加热电阻停止加热 LED_Red=1。 LED_Green=0。 PWM=0。 } else // 当测的温度与用户设定温度的差值小于 1度且没达到用户设定温度时 ,加热 { LED_Red=0。 //电阻加热 ,红绿灯都亮 ,当温度超过设定温度时 ,绿灯亮 ,加热电阻又 LED_Green=0。 //会断开 ,从而导致温度维持一定范围 ,红灯会闪烁 ,代表温度恒定。 PWM=1。 } } } } /* 显示函数,用于动态扫描数码管 输入参数 FirstBit 表示需要显示的第一位,如赋值 2表示从第三个数码管开始显示 如输入 0表示从第一个显示。 Num表示需要显示的位数,如需要显示 99两位数值则该值输入 2 */ void Display1(unsigned char FirstBit,unsigned char Num) { static unsigned char i=0。 DataPort0=0。 //清空数据,防止有交替重影 LATCH1=1。 //段锁存 LATCH1=0。 DataPort0=WeiMa[i+FirstBit]。 //取位码 LATCH2=1。 //位锁存 LATCH2=0。 DataPort0=TempData1[i]。 //取显示数据,段码 LATCH1=1。 //段锁存 LATCH1=0。 i++。 if(i==Num) i=0。 } void Display2(unsigned char FirstB。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。