历史上的今天
今天是:2024年10月24日(星期四)
2019年10月24日 | 多功能水温控制系统的仿真设计+单片机源码
2019-10-24 来源:51hei
研究目标:
研究课题是多功能水温控制系统的设计。要求系统温度测量范围大于要求的30~90℃,最小区分度为0.1℃,控制精度在0.5℃以内,温度控制的静态误差小于1℃。可利用按键系统调整控制水温的上下限设定。如果发现采集的温度值低于下限值就进行报警,并通过控制继电器使加热设备持续加热直到接近温度上限的温度,系统等待水温冷却在控制范围内。如果采集的温度值高于上限值,那么也有相应的报警声提示操作人员对水温进行控制。如果并没有超过上下限则不会报警。采集到的温度用数码管显示进行显示。本系统不仅具有一般水温控制系统的特点如设置温度上下限、报警等,还可以在水温过低时控制继电器使加热设备持续加热。废话不多说,直接上图。
仿真原理图如下
单片机源程序如下:
#include #include #include #define uchar unsigned char #define uint unsigned int sbit key1=P3^0; sbit key2=P3^1; sbit key3=P3^2; sbit led=P3^3; sbit shenwen=P3^4; sbit baojing=P3^5; uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xbf,0xc7,0x89}; uchar code tab3[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x3f,0xff}; uchar yi,er,san,si,san1; uint shangxian=90,xiaxian=30,flag=0; void delay(int ma); void display1(uchar yi,uchar er,uchar san,uchar si); void display2(uchar yi,uchar er,uchar san1,uchar si); void keyscan(); void main() { float wendu=0; int wenduzhen=0; yi=11;er=11;san=11;si=11; baojing=shenwen=1;//关闭蜂鸣器,继电器 while(1) { keyscan(); if(flag==0)//温度测试界面 { wendu=temget(); if(wendu shenwen=0; baojing=0; } else if((wendu>=xiaxian) && (wendu<=shangxian) ) { baojing=1;//报警关闭 } else if(wendu>=shangxian)//报警开启,烧水功能关闭 { shenwen=1; baojing=0; } wenduzhen=wendu*10; yi=wenduzhen/1000; er=wenduzhen%1000/100; san=wenduzhen%100/10; si=wenduzhen%10; display1(yi,er,san,si); } else if(flag==1)//温度下限设置界面 { yi=13;er=12; san1=xiaxian%100/10; si=xiaxian%10; display2(yi,er,san1,si); } else if(flag==2)//温度上限设置界面 { yi=14;er=12; san1=shangxian%100/10; si=shangxian%10; display2(yi,er,san1,si); } if(xiaxian>=shangxian)led=0;//下限超过上限led亮 else led=1; } } void keyscan() { if(key1==0)//设置界面 { delay(5); if(key1==0) { flag++; if(flag>2)flag=0; } while(!key1); } if(key2==0)//加数值 { delay(5); if(key2==0) { if(flag==1) { xiaxian++; if(xiaxian>=89)xiaxian=89; } else if(flag==2) { shangxian++; if(shangxian>=90)shangxian=90; } } while(!key2); } if(key3==0)//减数值 { delay(5); if(key3==0) { if(flag==1) { xiaxian--; if(xiaxian<0)xiaxian=0; } else if(flag==2) { shangxian--; if(shangxian<1)xiaxian=1; } } while(!key3); } } void display1(uchar yi,uchar er,uchar san,uchar si) { P2=0X01;
史海拾趣
|
在柏林推出的DVB T(地面数字广播)数字电视也已经影响到汽车娱乐系统中的电视接收。现在,汽车电视接收机不仅能够接收模拟电视信号(它仍将在城市以外的地区继续存在数年),而且也能够接收和处理DVB T信号。Hirschmann Electronic ...… 查看全部问答> |
|
BOOT0/1得来回倒腾。BOOT0=0调试一次之后如果停止调试,再启用调试就出现“Programming Failed!”错误 试出来唯一的解决方法就是始终保持BOOT1=1。 如果出现BOOT0=0无法调试的情况,就断电改成BOOT0=1再上电,从RAM启动,运行J-link ARM软件,连 ...… 查看全部问答> |
|
课程描述 参加嵌入式linux系统与应用开发就业班可以使学员快速掌握嵌入式系统开发的流程,系统移植的方法,编写Bootloader等。学习本课程的学员能够从事嵌入式系统相关的项目开发。 1、培训过程中,如有部分内容理解不透或消化不好,可免费在下期 ...… 查看全部问答> |
|
请教各位前辈一个问题: 我要将linux系统裁剪(系统功能简单,只需要保留网络功能),并制作成ISO光盘安装,如何做? 1.使用定制安装linux系统,如使用LFS, Gentoo安装。 问题:安装后的系统如何制作成ISO,实现光盘安装?&n ...… 查看全部问答> |
|
帮忙推荐一款适合于初学者arm开发板,最好有详细的实验手册,我想买周立功牌子的 我想买一套周立功的arm开发板,我原先看重的是一款easyarm1138 的板子,他网站上介绍的价格是198元,然后打电话过去问了一下,他说这款板子过期了,并且配套的试验教材和文档也没有,他推荐我买easyarm 2131,480元,且配有各种资料文档。 大家, ...… 查看全部问答> |
|
菜鸟问题:请问arm9中集成usb模块部分中的固件程序可以重新改写吗? 我在用以arm9为核心的智能手机开发板6410,要修改其中usb模块部分的固件程序,其实就是修改描述符的值。请问有搞过 这方面的高手吗?到底可以修改吗? 请高手指点迷津,小弟不胜感激!!!!!… 查看全部问答> |
|
链接是我在网络版块提的问题!在这里也问问大家!各位大虾帮我!150分,不够还可以加! http://topic.eeworld.net/u/20080124/10/3e66c379-f123-4581-9a21-06514d1350d6.html… 查看全部问答> |




