历史上的今天
返回首页

历史上的今天

今天是: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;

推荐阅读

史海拾趣

ASI [ASI Semiconductor, Inc]公司的发展小趣事

为了进一步提升产品质量和客户满意度,ASI积极寻求ISO 9001认证。经过严格的审核和准备,ASI最终成功获得了这一国际公认的质量管理体系认证。这一认证不仅证明了ASI在质量管理方面的卓越表现,还为其在全球商用和军用通信领域占据领先地位提供了有力保障。

汇顶科技(GOODiX)公司的发展小趣事

随着电子行业的快速发展,许多电子产品型号逐渐停产或变得稀缺。ASI敏锐地捕捉到了这一市场变化,并开始专注于生产停产及稀缺元器件的替代或新设计。其RF功率晶体管生产线主要提供Motorola、Philips及SGS Thomson公司的替代型号,而微波二极管生产线则主要提供HP、M/A-COM、Alpha及Loral/Frequency sources公司的替代型号。这一策略不仅满足了市场的需求,还进一步巩固了ASI在行业中的地位。

DACHANG公司的发展小趣事

DACHANG公司深知创新是企业发展的根本动力。因此,公司始终将创新作为自己的核心竞争力,不断推出具有创新性的产品和解决方案。无论是产品设计、技术研发还是市场营销,DACHANG公司都积极引入新的理念和模式,为公司的发展注入了源源不断的活力。

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:近年来,随着全球对环境保护和可持续发展的重视,电子行业也面临着绿色转型的压力。

发展:HN Electronics积极响应环保号召,将绿色生产理念融入公司的发展战略中。公司投入大量资金进行技术改造和设备升级,减少生产过程中的能耗和污染排放。同时,HN Electronics还积极研发和推广绿色电子产品,满足市场对环保产品的需求。

关键事件:2020年,HN Electronics推出了一系列采用环保材料和先进生产工艺的绿色电子产品,这些产品不仅性能优异,而且符合国际环保标准,赢得了市场的广泛好评。

Amphenol Aerospace公司的发展小趣事

背景:进入21世纪后,随着全球化和互联网的发展,HN Electronics开始寻求更广阔的市场空间。

发展:公司决定拓展国际市场,首先在亚洲市场设立分支机构,随后进军欧洲和北美。为了加速国际化进程,HN Electronics与多家国际知名电子企业建立了战略合作关系,共同开发新产品。

关键事件:2005年,HN Electronics与韩国某知名电子企业签署合作协议,共同研发新一代显示驱动芯片,这一合作极大地提升了公司在显示技术领域的竞争力。

Ampire Co Ltd公司的发展小趣事

背景:随着公司实力的增强,HN Electronics开始考虑通过并购来扩大规模和市场份额。

发展:公司精心挑选了几家在电子元件制造和系统集成方面具有优势的中小企业进行并购,通过资源整合和优势互补,进一步巩固了市场地位。同时,HN Electronics还向产业链上下游延伸,涉足原材料供应和终端产品制造领域。

关键事件:2015年,HN Electronics成功并购了一家在被动元件领域具有领先地位的企业,这一并购极大地增强了公司的供应链整合能力和市场竞争力。

问答坊 | AI 解惑

车载移动电视接收的系统方案

在柏林推出的DVB T(地面数字广播)数字电视也已经影响到汽车娱乐系统中的电视接收。现在,汽车电视接收机不仅能够接收模拟电视信号(它仍将在城市以外的地区继续存在数年),而且也能够接收和处理DVB T信号。Hirschmann Electronic ...…

查看全部问答>

STM32调起来还得看RP?

BOOT0/1得来回倒腾。BOOT0=0调试一次之后如果停止调试,再启用调试就出现“Programming Failed!”错误 试出来唯一的解决方法就是始终保持BOOT1=1。 如果出现BOOT0=0无法调试的情况,就断电改成BOOT0=1再上电,从RAM启动,运行J-link ARM软件,连 ...…

查看全部问答>

嵌入式linux系统与应用开发就业班

课程描述 参加嵌入式linux系统与应用开发就业班可以使学员快速掌握嵌入式系统开发的流程,系统移植的方法,编写Bootloader等。学习本课程的学员能够从事嵌入式系统相关的项目开发。 1、培训过程中,如有部分内容理解不透或消化不好,可免费在下期 ...…

查看全部问答>

linux系统裁剪,制作成ISO安装盘,如何做?

请教各位前辈一个问题:  我要将linux系统裁剪(系统功能简单,只需要保留网络功能),并制作成ISO光盘安装,如何做?  1.使用定制安装linux系统,如使用LFS, Gentoo安装。 问题:安装后的系统如何制作成ISO,实现光盘安装?&n ...…

查看全部问答>

求教 如何截获格式化磁盘的消息!

小弟正在做一个功能,防止格式化磁盘,想截获windows格式化磁盘的消息,请问应该怎么截获或者是有什么好办法呢?…

查看全部问答>

帮忙推荐一款适合于初学者arm开发板,最好有详细的实验手册,我想买周立功牌子的

我想买一套周立功的arm开发板,我原先看重的是一款easyarm1138 的板子,他网站上介绍的价格是198元,然后打电话过去问了一下,他说这款板子过期了,并且配套的试验教材和文档也没有,他推荐我买easyarm 2131,480元,且配有各种资料文档。 大家, ...…

查看全部问答>

菜鸟问题:请问arm9中集成usb模块部分中的固件程序可以重新改写吗?

       我在用以arm9为核心的智能手机开发板6410,要修改其中usb模块部分的固件程序,其实就是修改描述符的值。请问有搞过 这方面的高手吗?到底可以修改吗?    请高手指点迷津,小弟不胜感激!!!!!…

查看全部问答>

协议驱动的简单问题!谁帮我解决我送150分!急!

链接是我在网络版块提的问题!在这里也问问大家!各位大虾帮我!150分,不够还可以加! http://topic.eeworld.net/u/20080124/10/3e66c379-f123-4581-9a21-06514d1350d6.html…

查看全部问答>

单片机能不能显示图片

小弟有几个问题 单片机能不能显示图片 应该选什么型号的单片机 难不难…

查看全部问答>