基于MCS51单片机的智能控制开关的设计软件程序设计Word文档格式.docx
- 文档编号:21314104
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:17
- 大小:109.30KB
基于MCS51单片机的智能控制开关的设计软件程序设计Word文档格式.docx
《基于MCS51单片机的智能控制开关的设计软件程序设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于MCS51单片机的智能控制开关的设计软件程序设计Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
年月日
分院院长(签字):
摘要
单片计算机即单片微型计算机。
由RAM,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。
它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。
而51系列单片机是各单片机中最为典型和最有代表性的一种。
这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。
本设计主要设计了一种基于MCS-51单片机控制的智能控制开关,可以满足长时间无人值守的测控系统的要求。
设计电路主要由单片机89C51控制电路、按键与数码管显示电路以及电源电路组成。
系统能实现实时显示和定时控制显示、定时断电保护、准时对开关进行控制等的功能,是一款比较实用的智能开关。
关键词:
智能控制;
开关;
单片机;
定时
目录
摘要3
1智能开关5
1.1智能控制开关概述5
1.2智能开关的原理5
2单片机的相关知识5
2.1单片机简介5
2.2单片机的发展史5
2.3单片机的特点7
2.4AT89C2051单片机介绍7
3控制系统的软件设计9
3.1keil的介绍9
3.2控制程序的流程图10
3.3控制程序的介绍10
3.4程序的编译调试15
结束语15
参考文献17
附录17
1智能开关
1.1智能控制开关概述
该智能控制开关是由单片机89C51控制电路、按键与LCD显示电路和掉电存储电路以及电源电路组成,电路十分的简单,主要由51芯片编程实现,功能十分的强大,时间精度非常高,是一款比较实用的智能开关。
1.2智能开关的原理
智能开关控制的原理框图如下图所示。
它由以下几个部件组成:
单片机89C51、电源电路、开关控制、键盘输入和显示数码管组成。
时间显示采用数码管,以降低对单片机端口数的要求,同时也降低系统的功耗。
时间控制电路和键盘输入都是通过89C51的I/O口控制。
2单片机的相关知识
2.1单片机简介
单片机全称为单片机微型计算机(SingleChipMicrosoftcomputer)。
从应用领域来看,单片机主要用来控制,所以又称为微控制器(MicrocontrollerUnit)或嵌入式控制器。
单片机是将计算机的基本部件微型化并集成在一块芯片上的微型计算机。
2.2单片机的发展史
4位单片机:
1975年,美国德克萨斯仪器公司首次推出4位单片机TMS-1000;
此后,各个计算机公司竞相推出四位单片机。
日本松下公司的MN1400系列,美国洛克威尔公司的PPS/1系列等。
四位单片机的主要应用领域有:
PC机的输入装置,电池充电器,运动器材,带液晶显示的音/视频产品控制器,一般家用电器的控制及遥控器,电子玩具,钟表,计算器,多功能电话等。
8位单片机:
1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率先推出MCS-48系列单片机。
在这以后,8位单片机纷纷面市。
例如,莫斯特克和仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。
随着集成电路工艺水平的提高,一些高性能的8位单片机相继问世。
例如,1978年摩托罗拉公司的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX系列。
这类单片机的寻址能力达64KB,片内ROM容量达4--8KB,片内除带有并行I\O口外,还有串行I\O口,甚至还有A\D转化器功能。
8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。
16位单片机:
1983年以后,集成电路的集成度可达几十万只管/片,各系列16位单片机纷纷面市。
这一阶段的代表产品有1983年Intel公司推出的MCS-96系列,1987年Intel推出了80C96,美国国家半导体公司推出的HPC16040,NEC公司推出的783XX系列等。
16位单片机主要用于工业控制,智能仪器仪表,便携式设备等场合。
32位单片机:
随着高新技术只智能机器人,光盘驱动器,激光打印机,图像与数据实时处理,复杂实时控制,网络服务器等领域的应用与发展,20世纪80年代末推出了32位单片机,如Motorlora公司的MC683XX系列,Intel的80960系列,以及近年来流行的ARM系列单片机。
32位单片机是单片机的发展趋势,随着技术的发展及开发成本和产品价格的下降,将会与8位单片机并驾齐驱。
64位单片机:
近年来,64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信,算法密集的实时控制场合已有应用,如英国Inmos公司的TransputerT800是高性能的64位单片机。
2.3单片机的特点
1.单片机的存储器ROM和RAM时严格区分的。
ROM称为程序存储器,只存放程序,固定常数,及数据表格。
RAM则为数据存储器,用作工作区及存放用户数据。
2.采用面向控制的指令系统。
为满足控制需要,单片机有更强的逻辑控制能力,特别是单片机具有很强的位处理能力。
3.单片机的I/O口通常时多功能的。
由于单片机芯片上引脚数目有限,为了解决实际引脚数和需要的信号线的矛盾,采用了引脚功能复用的方法,引脚处于何种功能,可由指令来设置或由机器状态来区分。
4.单片机的外部扩展能力很强。
在内部的各种功能部件不能满足应用的需求时,均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便
2.4AT89C2051单片机介绍
VCC:
电源。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
图2.189C51单片机
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C2051的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
3控制系统的软件设计
3.1keil的介绍
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
2009年2月发布KeilμVision4,KeilμVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
2011年3月ARM公司发布最新集成开发环境RealViewMDK开发工具中集成了最新版本的KeiluVision4,其编译器、调试工具实现与ARM器件的最完美匹配。
3.2控制程序的流程图
3.3控制程序的介绍
(1)定时器T0的中断服务子程序:
voidinterserve(void)interrupt1using1
{
int_time++;
if(int_time==20)
{
int_time=0;
second++;
}
if(second==60)
{
second=0;
minute++;
}
if(minute==60)
{
minute=0;
hour++;
}
if(hour==24)
{
hour=0;
}
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
}
(2)显示时间的子程序:
voidDisplay()
{delay
(1);
P2=0xbf;
/*P2.6引脚输出低电平,DS6点亮*/
P0=Tab[second/10];
/*显示十位*/
delay
(1);
P2=0x7f;
P0=Tab[second%10];
/*显示个位*/
delay(10);
P2=0xf7;
P0=Tab[minute/10];
/*显示十位*/
P2=0xef;
P0=Tab[minute%10];
P2=0xdf;
P0=0x40;
/*分隔符“-”的段码*/
P2=0xfe;
P0=Tab[hour/10];
/*显示十位*/
P2=0xfd;
P0=Tab[hour%10];
P2=0xfb;
(3)设置定时时间时需要显示定时的时间,定时时间是:
voidDisplay0()
{
P0=Tab[s/10];
P0=Tab[s%10];
P0=Tab[m/10];
P0=Tab[m%10];
P0=Tab[h/10];
P0=Tab[h%10];
(4)延时1ms的程序:
voidDelayUs2x(uchart)
{
while(--t);
}
voiddelay(uchart)/*大致延时1mS*/
while(t--)
DelayUs2x(245);
(5)开关判断程序:
voidKaiguan()
{if(hour==h)
{if(minute==m)
{if(second==s)k5=1;
(6)主函数:
voidmain(void)
{
k0=1;
k1=1;
k2=1;
k3=1;
k4=1;
k5=0;
TMOD=0x01;
/*定时器T0方式设置*/
EA=1;
/*开中断总允许*/
ET0=1;
/*允许中断*/
TH0=(65536-46083)/256;
/*定时器高八位赋初值*/
/*定时器低八位赋初值*/
TR0=1;
int_time=0;
second=0;
minute=0;
/*时间变量初始化*/
hour=0;
s=0;
m=1;
/*设置时间变量初始化*/
h=0;
while
(1)
{
if(k0==0)
{EA=0;
while(k4!
=0)
{if(k2==0)
{delay(10);
if(k2==0){hour++;
if(hour>
23)hour=0;
while(k2==0);
if(k3==0)
if(k3==0){minute++;
if(minute>
59)minute=0;
while(k3==0);
Display();
}
if(k1==0)
{while(k4!
if(k2==0){h++;
if(h>
23)h=0;
if(k3==0){m++;
if(m>
59)m=0;
Display0();
}}
Display();
Kaiguan();
}
(7)另外,在程序的开始,还要有程序中子函数,变量的声明和头文件等,子函数,变量的声明程序如下:
#include<
reg52.h>
/*包含51单片机寄存器定义的头文件*/
#defineucharunsignedchar
ucharTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,};
/*数字0~9的段码*/
ucharint_time;
ucharsecond;
ucharminute;
/*时间变量*/
ucharhour;
uchars;
ucharm;
/*设置开关时间变量*/
ucharh;
voidKaiguan();
sbitk0=P3^0;
sbitk1=P3^1;
sbitk2=P3^2;
sbitk3=P3^3;
sbitk4=P3^4;
sbitk5=P1^3;
3.4程序的编译调试
打开keil软件,先要建立工程,project→Newproject,确定保存路径,然后输入工程名字,电击确认保存工程。
然后加载文件,输入文件名字,确认保存。
在keil中输入程序然后编译调试,直到出现如图中所示结果。
编译调试结果
结束语
经过这些天有关于出租车计价器的课程设计,使我对单片机的应用有了更深的了解。
在课程设计的过程中,还是碰到了许多的问题。
比如,对于数码管动态扫描显示和键盘的延时防抖的综合编程不能较好地解决;
对于代码的前后顺序及调用掌握得还不够好;
对于一些相关的应用软件没能熟练掌握。
通过这几天晚上的苦想和反复调试,以及参考网上的程序,最终还是把问题解决了。
通过这次课程设计,我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,也充分体会到了自己设计东西的乐趣、学会查阅资料和对别人的东西融会变通的重要性,也明白了很多知识光靠趴在书本上学是学不到其中的精髓的,必须亲自去试着实践,亲自去经历才能对它们真正的掌握,凡事都要自己去动下手,去实践一下,遇到困难,永远不要沮丧气馁。
在动手的过程中,不仅能增强实践能力,而且在理论上可以有更深的认识;
这次设计给了我极大的鼓舞和信心,相信在以后的学习中可以通过不断的摸索和实践来提高其他方面的知识。
本款里程表增加了不少功能,其中包括单价输出、单价调整、路程输出、等功能。
另外,本款里程表还具有性能可靠、电路简单、成本低、实用性强等特点,加上经过优化的程序,使其有很高的智能化水平。
通过本次课程设计,又使我学到了许多书本上无法学到的知识,也使也深该体会到单片机技术应用领域的广泛,不仅使我对学过的单片机知识有了很多的巩固,同时也对单片机这一门课程产生了更大的兴趣。
在本次课程设计过程中,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:
8051单片机及其引脚说明,为本次课程设计提供了一定的资料。
由于平时很少进行课程设计,所以对于课程设计报告的格式也是近期才接触到,经过这两次的设计,为我们以后毕业设计的制作也奠定了一定的基础。
参考文献
[1]谢自美.电子线路设计·
实验·
测试[M].武汉:
华中理工大学出版社,1992.
[2]何立民.单片机应用系统设计[M].北京:
北京航空航天大学出版社,1993.
[3]楼然笛.单片机开发[M].北京:
人民邮电出版社,1994.
[4]付家才.单片机控制工程实践技术[M].北京:
化学工业出版社2004.3.
[5]李光才.单片机课程设计实例指导[M].北京:
北京航空航天大学出版社2004.
[6]朱定华.单片机原理及接口技术实验[M].北京:
北方交通大学出版社2002.11.
[7]刘湘涛.江世明.单片机原理与应用[M].北京:
电子工业出版社,2006.
附录
编写程序需要根据硬件原理图编写,相应的引脚标号要一直,智能开关的硬件原理图如下图所示:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于MCS51单片机的智能控制开关的设计 软件程序设计 基于 MCS51 单片机 智能 控制 开关 设计 软件 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)