基于单片机的继电器控制设计毕业设计Word文档下载推荐.docx
- 文档编号:18326998
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:25
- 大小:24.43KB
基于单片机的继电器控制设计毕业设计Word文档下载推荐.docx
《基于单片机的继电器控制设计毕业设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的继电器控制设计毕业设计Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
3.2相关程序代码21
3.2.1主程序模块21
3.2.2红外解码程序22
3.2.3温度控制程序24
3.2.4所用相关延时程序28
结论29
鸣谢30
参考文献31
附录32
设计总说明
单片机已经渗入到生活的各个领域,它是很难找到哪些领域没有单片机的痕迹。
导弹的导航装置,在飞机上控制各种仪器,计算机网络通信和数据传输,工业自动化过程的实时控制和数据处理。
该微控制器被广泛用于在该领域的智能管理和过程控制,仪器仪表,家电产品,医疗设备,航空航天,专门的设备。
近年来,随着电子信息产业的快速发展,作为继电器的基本组成部分,广泛应用于家电,通讯,汽车,仪器仪表,机械设备,航空航天自动化和控制领域。
最近的统计数据显示,继电器已经成为第一大产品在电子元件产品之中。
单片机控制继电器的电路在生活中随处可见,小的元件但是作用无穷。
本文基于容易实现,方便操作,贴近生活使用的设计理念,采用STC89C52单片机为控制核心,为控制终端,并采用包括按键、1602界面显示、以及通过LABVIEW开发的上位机控制界面等在内的多个控制源来控制继电器,从而达到控制其他家用电器。
关键词:
单片机;
红外接收头;
DS18B20;
继电器;
LCD1602
ABSTRACT
SCM
equipment,
variousinstruments
ontheaircraft
control,
computernetwork
communicationsanddatatransmission,
real-timecontrolanddataprocessing
ofindustrialautomation
process.
Themicrocontroller
iswidelyusedin
intelligentmanagement
andprocesscontrol
inthefieldofinstrumentation,
electricalappliances,
medicalequipment,
aerospace,
specialequipment.
Inrecentyears,
withtherapiddevelopmentofelectronicinformation
industry,
asabasicpartof
therelay,
widelyusedin,mechanicalequipment,
automationand
controlfield.
Thelateststatistics
show,
therelay
the
electroniccomponent
products.
MCU
controlrelaycircuitcanbeseeneverywhereinlife,
small
but
infinite
element.
Thispaperisbasedonthe
easy,
convenientoperation,
closetothe
designphilosophyof
life,
usingSTC89C52
microcontrollerasthecontrolcore,
anduses
asacontrolterminal,including
buttons,
1602
interfacedisplay,
and
throughthe
LABVIEWdevelopmentof
PCcontrolinterface,
apluralityofcontrol
source
tocontroltherelay
tocontrolthe
other(void)
{
LCD_Init();
初始化液晶
DelayMs(20);
延时有助于稳定
LCD_Clear();
清屏
csh();
while
(1)无限循环
{
Disp_Temperature();
温度数据采集,并转化成LCD1602要显示的代码
key();
按键扫描
Disp();
显示程序
}
}
3.2.2红外解码程序
**********************************************************
voidIR_IN()interrupt2using0
unsignedcharj,k,N=0;
EX1=0;
delay1(15);
if(IRIN==1)
{
EX1=1;
return;
}
确认IR信号出现
while(!
IRIN)等IR变为高电平,跳过9ms的前导低电平信号。
delay1
(1);
}
for(j=0;
j<
4;
j++)收集四组数据
for(k=0;
k<
8;
k++)每组数据有8位
while(IRIN)等IR变为低电平,跳过4.5ms的前导高电平信号。
delay1
(1);
}
IRIN)等IR变为高电平
while(IRIN)计算IR高电平时长
N++;
if(N>
=30)
{
EX1=1;
return;
}0.14ms计数过长自动离开。
}高电平计数完毕
IRCOM[j]=IRCOM[j]>
>
1;
数据最高位补“0”
if(N>
=8){IRCOM[j]=IRCOM[j]|0x80;
}数据最高位补“1”
N=0;
}endfork
}endforj
if(IRCOM[2]!
=~IRCOM[3])
EX1=1;
if(IRCOM[2]==0x0c)
{jdq1=!
jdq1;
j1=jdq1;
if(jdq1==0)shuju1[2]='
N'
;
elseshuju1[2]='
F'
if(IRCOM[2]==0x18)
{jdq2=!
jdq2;
j2=jdq2;
if(jdq2==0)shuju1[6]='
elseshuju1[6]='
if(IRCOM[2]==0x5e)
{jdq3=!
jdq3;
j3=jdq3;
if(jdq3==0)shuju1[10]='
elseshuju1[10]='
beep();
EX1=1;
3.2.3温度控制程序
*****初始化DS18B20*****
voidInit_DS18B20(void)
unsignedcharx=0;
DQ=1;
Delay(8);
稍做延时
DQ=0;
单片机将DQ拉低
Delay(80);
精确延时,大于480us
拉高总线
Delay(14);
x=DQ;
稍做延时后,如果x=0则初始化成功,x=1则初始化失败
Delay(20);
*****读一个字节*****
unsignedcharReadOneChar(void)
unsignedchari=0;
unsignedchardat=0;
for(i=8;
i>
0;
i--)
给脉冲信号
dat>
=1;
if(DQ)
dat|=0x80;
Delay(4);
return(dat);
*****写一个字节*****
voidWriteOneChar(unsignedchardat)
i>
i--)
DQ=dat&
0x01;
Delay(5);
voidTmpchange(void)发送温度转换命令
Init_DS18B20();
WriteOneChar(0xCC);
跳过读序号列号的操作
WriteOneChar(0x44);
启动温度转换
*****读取温度*****
unsignedintReadTemperature(void)
unsignedchara=0;
unsignedcharb=0;
unsignedintt=0;
floattt=0;
Tmpchange();
WriteOneChar(0xBE);
读取温度寄存器
a=ReadOneChar();
读低8位
b=ReadOneChar();
读高8位
t=b;
t<
<
=8;
t=t|a;
tt=t*0.0625;
t=tt*100+0.5;
放大10倍输出并四舍五入
return(t);
*****数据转换子程序*****
Disp_Temperature()显示温度
{e=ReadTemperature();
获取温度值
m=e100;
温度整数位
a=e1000;
计算得到温度十位数字
shuju2[2]=ASCII_NUM[a];
把计算得到的数放到显示的数组里
b=e100-a*10;
计算得到温度个位数字
shuju2[3]=ASCII_NUM[b];
把计算得到的数放到显示的数组里
d=e%10;
计算得到温度小数点后一位
shuju2[6]=ASCII_NUM[d];
c=(e%100)10;
计算得到温度小数点后两位
shuju2[5]=ASCII_NUM[c];
shuju2[13]=ASCII_NUM[shangxian10];
计算得到上限十位,并把计算得到的数放到显示的数组里
shuju2[14]=ASCII_NUM[shangxian%10];
计算得到上限个位,并把计算得到的数放到显示的数组里
if(m>
=shangxian){jdq4=0;
shuju1[14]='
}温度不在范围内接通继电器
else{jdq4=1;
j4=jdq4;
*****初始化温度检测子程序*****
Disp_Temperature1()显示温度
3.2.4所用相关延时程序
voidDelay(uinti)DS18B20延迟程序
while(i--);
voidqudou(void)去抖延迟
{inti;
for(i=0;
i<
2400;
i++);
voidDelayUs2x(unsignedchart)
{
while(--t);
voidDelayMs(unsignedchart)
while(t--)
大致延时1mS
DelayUs2x(245);
结论
本设计通过了试验,基本上符合设计要求,论文涉及的相关理论的得到了进一步的验证。
系统采用软件解码具有电路简单、经济实用、操作简单、适用性强等特点,单片机采用STC89C52,充分利用了它的资源。
系统的功能还有很大的扩展空间,比如在程序里集成多个解码程序,让系统自适应不通种类的遥控器,如果系统加入语
音芯片还可以在设置语音提示,使之功能更加完美。
鸣谢
经过这次锻炼我的体会更深了,我认识到实践是最好的老师,有很多的知识如果不去实践就永远也不会有透彻的理解,每一次的实践都是一种进步。
很感谢各位指导老师的关心,你们帮助我解决了设计过程中遇到的一些问题,并提出了一些具有指导性的建议,使的本设计更趋完善。
也感谢每一个看到我的论文的老师和朋友,因为你们的阅读使我的论文散发了生命力,由于时间仓促,还希望大家的批评与指点。
参考文献
[2]郭天祥.新概念51单片机C语言程序教程—入门、提高、开发、拓展全攻略[M].北京:
电子工业出版社,2009:
1-137
[3]欧伟明,何静,凌云,刘剑等编著,肖伸平主审.单片机原理与应用系统[M].北京:
91-101.
[4]中山单片机学习网.红外遥控解码原理及单片机软件键码实例[EBOL].
[5]苏长赞.红外线与超声波遥控[M].北京:
人民邮电出版社,1993:
1-62.
[6]凌志斌,邓超平,郑益慧,叶芃生;
红外遥控技术及其解码方案[J];
中国学术期刊;
2003年06期:
1-4.
[7]何立民.单片机应用系统设计.北京:
航天航空大学出版社.2001年.
[8]朱光忠;
吕梅蕾;
杨子鸣;
基于单片机的红外遥控开关控制器[J];
计算机工程与设计;
[9]聂诗良,李磊民.AMethodofSendingandRecivingInfraredRemote-controlSignlewithMicrochipComputer[J]信息技术报;
2004,28
(2):
21-23.
[10]李志超,周华.DesignandApplicationofInfraredRemoteControl[11]梁超,谢皓.DesignandApplicationofInfraredRemoteControl
附录
#include<
reg51.=P1^2;
定义减键
sbitK1=P1^3;
sbitK2=P1^4;
sbitK3=P1^5;
sbitDQ=P1^6;
定义DS18B20总线IO
sbitBEEP=P2^4;
蜂鸣器驱动线
sbitIRIN=P3^3;
红外接收器数据线
sbitj1=P2^3;
sbitj2=P2^2;
sbitj3=P2^1;
sbitj4=P2^0;
voidbeep();
intjdq1=1,jdq2=1,jdq3=1,jdq4=1;
charshuju1[]="
"
charshuju2[]="
ucharIRCOM[7];
signedcharm,wendu;
温度值全局变量
uinta,b,c,d,e,f,g,=38;
上限报警温度,默认值为38
写入命令函数
voidLCD_Write_Com(unsignedcharcom)
#ifndefPROTEUS
while(LCD_Check_Busy());
忙则等待
#else
DelayUs2x(50);
#endif
RS_CLR;
RW_CLR;
EN_SET;
DataPort=com;
_nop_();
EN_CLR;
写入数据函数
voidLCD_Write_Data(unsignedcharData)
#ifndefPROTEUS
while(LCD_Check_Busy());
#else
DelayUs2x(50);
#endif
RS_SET;
RW_CLR;
EN_SET;
DataPort=Data;
_nop_();
EN_CLR;
清屏函数
voidLCD_Clear(void)
LCD_Write_Com(0x01);
DelayMs(5);
写入字符串函数
voidLCD_Write_String(unsignedcharx,unsignedchary,unsignedchar*s)
if(y==0)
LCD_Write_Com(0x80+x);
表示第一行
else
LCD_Write_Com(0xC0+x);
表示第二行
while(*s)
LCD_Write_Data(*s);
s++;
初始化函数
voidLCD_Init(void)
LCD_Write_Com(0x38);
*显示模式设置*
LCD_Write_Com(0x08);
*显示关闭*
*显示清屏*
LCD_Write_Com(0x06);
*显示光标移动设置*
LCD_Write_Com(0x0C);
*显示开及光标设置*
shuju1[0]='
1'
shuju1[1]='
:
'
shuju1[2]='
shuju1[3]='
'
shuju1[4]='
2'
shuju1[5]='
shuju1[6]='
shuju1[7]='
shuju1[8]='
3'
shuju1[9]='
shuju1[10]='
shuju1[11]='
shuju1[12]='
4'
shuju1[13]='
shuju1[15]='
shuju1[16]='
\0'
shuju2[0]='
T'
shuju2[1]='
shuju2[4]='
.'
shuju2[7]='
C'
shuju2[8]='
shuju2[9]='
shuju2[11]='
H'
shuju2[12]='
shuju2[15]='
shuju2[16]='
uns
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 继电器 控制 设计 毕业设计
![提示](https://static.bdocx.com/images/bang_tan.gif)