导航:首页 > 操作系统 > 单片机的控制系统设计

单片机的控制系统设计

发布时间:2022-11-18 09:43:54

㈠ 请简述单片机系统的设计过程是怎样的

单片机应用系统设计分为硬件设计与软件设计两部分及系统调试三个部分,大致过程如下:一、硬件电路设计1、根据任务需求规划确定单片机类型及外围接口电路方案;2、根据方案设计具体电路。二、软件设计1、根据目标任务的功能需求,结合硬件电路控制方式,规划设计软件功能模块;2、将功能模块细化成流程图;3、根据流程图编写程序代码;4、将编译后的目标代码下载到实物单片机或虚拟单片机进行软件仿真调试;三、系统调试1、将初调成功的目标的代码下载到单片机目标试验板进行软硬件联调及功能验证;2、验证成功符合设计要求,就可以进入小批量测试了。

㈡ 基于单片机的电热水壶控制系统设计

这个简单,你在壶内放个温度传感器

㈢ 基于单片机的热水器温度控制系统

东华理工大学毕业设计(论文)

基于单片机的热水器温度控制

摘 要

温度是日常生活中不可缺少的物理量,温度在各个领域都有积极的意义。很多行业中以及日常生活中都有大量的用电加热设备,如用于加热处理的加热热水器,用于洗浴的电热水器及各种不同用途的温度箱等,采用单片机对它们进行控制具有控制方便、简单、灵活性大等特点,而且还可以大幅提高被控系统的性能,从而能被大大提高产品的质量。因此,智能化温度控制技术正被广泛地应用。

本温度设计采用现在流行的AT89C51单片机为控制器,用PID控制方法,再配以其他电路对热水器的水温进行控制。

关键词:89C51; PID; 温度控制

I

1/41页
东华理工大学毕业设计(论文)

ABSTRACT

Temperature is essential physical in daily life ,and in various fields has positive implications.A lot of businesses and daily lives have a lot of electric heating equipment.Such as electric water heater for bathing and variety of different uses of the temperature boxes. MCU to control them with easy to control,simple,flexibility and other characteristics,also can significantly improve the performance of the controlled system,which can be greatly improved proct quality. Therefore,intelligent temperature control technology is being widely used.

The temperature control design uses the now popular AT89C51 MCU controller,with PID control method, which together with

㈣ 单片机控制系统的硬件设计包括哪些

单片机硬件设计,是针对设计需求,以单片机为核心来设计外围电路的。首先要有电源部分,因为单片机供电电压大多是5V或者3.3V,还要有时钟电路、复位电路,这是最基本的。然后就是根据实际项目需求,加入通讯电路、输入输出电路等等。

㈤ 51单片机控制的电子时钟系统 毕业设计

可以用1302做
我有现成的
LCD1602
显示的,51做的
基本思路是用单片机读取1302里面的信息,处理,然后送LCD1602显示。
有兴趣可以去我博客看,里面还上传了之前我做的实物图片和PCB,可以照着做。

㈥ 单片机毕业设计,基于51单片机的电梯控制系统的设计

基于51单片机的电梯控制系统的设计
引 言
随着现代高科技的发展,住房和办公用楼都已经逐渐向高层发展。电梯是高层宾馆、商店、住宅、多层仓库等高层建筑不可缺少的垂直方向的交通运输工具。1889年美国奥梯斯升降机公司推出的世界上第一部以电动机为动力的升降机,同年在纽约市马累特大厦安装成功。随着建筑物规模越来越大,楼层也越来越高,对电梯的调速精度、调速范围等静态和动态特性都提出了更高的要求。由于传统的电梯运行逻辑控制系统采用的是继电器逻辑控制线路。采用这种控制线路,存在易出故障、维护不便、运行寿命较短、占用空间大等缺点。从技术发展来看,这种系统将逐渐被淘汰。
目前,由可编程控制器(PLC)或微型计算机组成的电梯运行逻辑控制系统,正以很快的速度发展着。可编程控制器,是微机技术与继电器常规控制技术相结合的产物,是在顺序控制器和微机控制器的基础上发展起来的新型控制器,是一种以微处理器为核心用作数字控制的专用计算机,它有良好的抗干扰性能,适应很多工业控制现场的恶劣环境,所以现在的电梯控制系统主要还是由可编程控制器控制。但是由于PLC的针对性较强,每一台PLC都是根据一个设备而设计的,所以价格较昂贵。而单片机价格相当便宜,如果在抗干扰功能上有所提高的话完全可以代替PLC实现对工控设备的控制。当然单片机并不象PLC那么有针对性,所以由单片机设计的控制系统可以随着设备的更新而不断修改完善,更完美的实现设备的升级。
电梯控制系统是比较复杂的一个大型系统,在计算机诞生的几十年里,继电器控制系统为电梯控制的发展做了巨大的贡献,但在性能上和PLC还是有本质上的差距。在科技的不断发展下,我想单片机控制系统很快可以解决抗扰性,成为方便有效的电梯控制系统。
由于时间和能力有限,在设计过程中难免有很多疏漏和不足之处,恳请老师批评指正,我将努力改正,争取做出完美的毕业设计。

目录
目录 1
引 言 2
第1章 绪 论 3
1.1 电梯的发展 3
1.2电梯的分类 4
第2章 方案的比较和确定 6
2.1 方案的选择 6
2.1.1 电梯继电器控制系统的优缺点 6
2.1.2 PLC控制系统的特点 6
2.1.3 电梯变频调速控制的特点 7
2.2 单片机控制方案的选择 7
2.3 变频器的选型 8
第3章 硬件系统的设计 10
3.1 硬件结构图 10
3.2 系统硬件原理图 10
3.3 89C51单片机的原理及其外围电路的设计 10
3.3.1 89C51单片机的原理与结构 10
3.3.2 单片机外围电路的设计 14
3.4 输入模块的设计 18
3.4.1 锁存器74LS373及其扩展功能简介 20
3.4.2 光电传感器 20
3.4.3 KC778B红外传感器基本应用电路 21
3.4.4 输入信号的采集 22
3.5 输出模块设计 24
3.5.1 DAC0832的功能简介 25
3.5.2 变频器功能简介 26
3.5.3 LED驱动器功能简介 29
3.5.4 控制信号的输出 32
第4章 系统软件的设计 34
4.1 主程序流程图 34
4.2 读入信息并显示子程序的流程图 37
4.3 延时去抖动子程序 37
4.4 设置目标层子程序流程图 38
4.5 电机拖动子程序流程图 39
4.6 电梯载客子程序流程图 40
4.7 中断服务流程图 41
小结与展望 42
致谢 43
参考文献 44
附录部分: 45
附录A 电气原理图 45
附录B 外文文献及其译文 46
附录C 主要参考文献及其摘要 50

㈦ 单片机控制系统设计有哪些基本要求

控制系统设计是一个很大的课题.从分类上来说有开环控制系统(如交通灯),闭环反馈控制系统(如温度控制),有模拟控制系统,也有数字控制系统.它们的具体设计要求各有不同.但总体来说,一般控制系统要求
1)满足控制精度和稳定性要求
2)满足响应时间要求
3)有足够的抗干扰和噪声的能力(鲁棒性)
4)容易实现,成本低

㈧ 单片机温度控制系统设计方案

#include<reg52.H>

externGetTemp(); //声明引用外部函数

; //声明引用外部变量

voiddelay(unsignedinti);

//elseIO

sbitLS138A=P2^2;//管脚定义

sbitLS138B=P2^3;

sbitLS138C=P2^4;

//此表为LED的字模,共阴数码管0-9-

unsignedcharcodeDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

unsignedlongLedOut[5],LedNumVal;

voidsystem_Ini()

{

TMOD|=0x11;

TH1=0xD8;//10

TL1=0xF0;

IE=0x8A;

TR1=1;

}

main()

{unsignedchari;

system_Ini();

while(1)

{

GetTemp();

/********以下将读18b20的数据送到LED数码管显示*************/

LedNumVal=Temperature;//把实际温度送到LedNumVal变量中

LedOut[0]=Disp_Tab[LedNumVal%10000/1000];

LedOut[1]=Disp_Tab[LedNumVal%1000/100];

LedOut[2]=Disp_Tab[LedNumVal%100/10]; //十位

LedOut[3]=Disp_Tab[LedNumVal%10];//个位

for(i=0;i<4;i++)

{

P0=LedOut[i];

switch(i)

{ //138译码

case0:LS138A=0;LS138B=0;LS138C=0;break;

case1:LS138A=1;LS138B=0;LS138C=0;break;

case2:LS138A=0;LS138B=1;LS138C=0;break;

case3:LS138A=1;LS138B=1;LS138C=0;break;

}

delay(100);

}

P0=0;

}

}

//延时程序

voiddelay(unsignedinti)

{

charj;

for(i;i>0;i--)

for(j=200;j>0;j--);

}

/*************************此部分为18B20的驱动程序*************************************/

#include<reg52.H>

#include<intrins.h>

sbitD18B20=P3^7;

#defineNOP()_nop_()/*定义空指令*/

#define_Nop()_nop_()/*定义空指令*/

voidTempDelay(unsignedcharidataus);

voidInit18b20(void);

voidWriteByte(unsignedcharidatawr);//单字节写入

voidread_bytes(unsignedcharidataj);

unsignedcharCRC(unsignedcharj);

voidGemTemp(void);

voidConfig18b20(void);

voidReadID(void);

voidTemperatuerResult(void);

bitflag;

unsignedintidataTemperature;

unsignedcharidatatemp_buff[9];//存储读取的字节,readscratchpad为9字节,readromID为8字节

unsignedcharidataid_buff[8];

unsignedcharidata*p,TIM;

unsignedcharidatacrc_data;

unsignedcharcodeCrcTable[256]={

0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,

157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220,

35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,

190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,

70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,

219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,

101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,

248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,

140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,

17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,

175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,

50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,

202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,

87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22,

233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,

116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53};

//

/************************************************************

*Function:延时处理

*parameter:

*Return:

*Modify:

*************************************************************/

voidTempDelay(unsignedcharidataus)

{

while(us--);

}

/************************************************************

*Function:18B20初始化

*parameter:

*Return:

*Modify:

*************************************************************/

voidInit18b20(void)

{

D18B20=1;

_nop_();

D18B20=0;

TempDelay(80);//delay530uS//80

_nop_();

D18B20=1;

TempDelay(14);//delay100uS//14

_nop_();

_nop_();

_nop_();

if(D18B20==0)

flag=1;//detect1820success!

else

flag=0;//detect1820fail!

TempDelay(20);//20

_nop_();

_nop_();

D18B20=1;

}

/************************************************************

*Function:向18B20写入一个字节

*parameter:

*Return:

*Modify:

*************************************************************/

voidWriteByte(unsignedcharidatawr)//单字节写入

{

unsignedcharidatai;

for(i=0;i<8;i++)

{

D18B20=0;

_nop_();

D18B20=wr&0x01;

TempDelay(3);//delay45uS//5

_nop_();

_nop_();

D18B20=1;

wr>>=1;

}

}

/************************************************************

*Function:读18B20的一个字节

*parameter:

*Return:

*Modify:

*************************************************************/

unsignedcharReadByte(void)//读取单字节

{

unsignedcharidatai,u=0;

for(i=0;i<8;i++)

{

D18B20=0;

u>>=1;

D18B20=1;

if(D18B20==1)

u|=0x80;

TempDelay(2);

_nop_();

}

return(u);

}

/************************************************************

*Function:读18B20

*parameter:

*Return:

*Modify:

*************************************************************/

voidread_bytes(unsignedcharidataj)

{

unsignedcharidatai;

for(i=0;i<j;i++)

{

*p=ReadByte();

p++;

}

}

/************************************************************

*Function:CRC校验

*parameter:

*Return:

*Modify:

*************************************************************/

unsignedcharCRC(unsignedcharj)

{

unsignedcharidatai,crc_data=0;

for(i=0;i<j;i++)//查表校验

crc_data=CrcTable[crc_data^temp_buff[i]];

return(crc_data);

}

/************************************************************

*Function:读取温度

*parameter:

*Return:

*Modify:

*************************************************************/

voidGemTemp(void)

{

read_bytes(9);

if(CRC(9)==0)//校验正确

{

Temperature=temp_buff[1]*0x100+temp_buff[0];

// Temperature*=0.625;

Temperature/=16;

TempDelay(1);

}

}

/************************************************************

*Function:内部配置

*parameter:

*Return:

*Modify:

*************************************************************/

voidConfig18b20(void)//重新配置报警限定值和分辨率

{

Init18b20();

WriteByte(0xcc);//skiprom

WriteByte(0x4e);//writescratchpad

WriteByte(0x19);//上限

WriteByte(0x1a);//下限

WriteByte(0x7f);//set11bit(0.125)

Init18b20();

WriteByte(0xcc);//skiprom

WriteByte(0x48);//保存设定值

Init18b20();

WriteByte(0xcc);//skiprom

WriteByte(0xb8);//回调设定值

}

/************************************************************

*Function:读18B20ID

*parameter:

*Return:

*Modify:

*************************************************************/

voidReadID(void)//读取器件id

{

Init18b20();

WriteByte(0x33);//readrom

read_bytes(8);

}

/************************************************************

*Function:18B20ID全处理

*parameter:

*Return:

*Modify:

*************************************************************/

voidTemperatuerResult(void)

{

p=id_buff;

ReadID();

Config18b20();

Init18b20();

WriteByte(0xcc);//skiprom

WriteByte(0x44);//Temperatureconvert

Init18b20();

WriteByte(0xcc);//skiprom

WriteByte(0xbe);//readTemperature

p=temp_buff;

GemTemp();

}

voidGetTemp()

{

if(TIM==100)//每隔1000ms读取温度

{TIM=0;

TemperatuerResult();

}

}

/*************************************

[t1(10ms)中断]中断

*************************************/

voidT1zd(void)interrupt3

{

TH1=0xD8;//10

TL1=0xF0;

TIM++;

}

/*************************此部分为74HC595的驱动程序使用SPI总线连接*************************************/

#include<reg52.h>

#include<intrins.h>

#defineNOP()_nop_()/*定义空指令*/

#define_Nop()_nop_()/*定义空指令*/

voidHC595SendData(unsignedintSendVal);

//SPIIO

sbitMOSIO=P1^5;

sbitR_CLK=P1^6;

sbitS_CLK=P1^7;

sbitIN_PL=P3^4;//74HC165shiftload把数据加载到锁存器中

sbitIN_Dat=P3^5;//74HC165output数据移出

sbitOE=P3^6;

/*********************************************************************************************************

**函数名称:HC595SendData

**功能描述:向SPI总线发送数据

*********************************************************************************************************/

voidHC595SendData(unsignedintSendVal)

{

unsignedchari;

for(i=0;i<16;i++)

{

if((SendVal<<i)&0x8000)MOSIO=1;//setdatalinehigh

elseMOSIO=0;

S_CLK=0;

NOP();

NOP();

S_CLK=1;

}

R_CLK=0;//setdatalinelow

NOP();

NOP();

R_CLK=1;//片选

OE=0;

}

㈨ 单片机交通信号灯控制系统设计

单片机交通信号灯控制
系统设计
有完整的程序。

阅读全文

与单片机的控制系统设计相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:485
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:382
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163