课程设计定时开关Word下载.docx
- 文档编号:21618493
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:22
- 大小:481.48KB
课程设计定时开关Word下载.docx
《课程设计定时开关Word下载.docx》由会员分享,可在线阅读,更多相关《课程设计定时开关Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
设计采用的是时、分、秒显示,单片机对数据进行处理同时在数码管上显示。
3.3主程序流程图
图2主程序流程图
四、各部分电路设计
4.1单片机最小系统设计
(1)芯片:
AT89C51
AT89C51是各单片机中最为典型和最有代表性的一种是一种带4KB闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的单片机,可稳定地工作于5V的电源下。
其集成度高、功能强、能耗低、通用性好、价格便宜。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。
其组合而成的配件产品在日常生活的使用过程中非常方便、简单且实用,深受着广大消费者的喜爱。
AT89C51管脚说明如下:
P0口:
P0口为三态双向口,能带8个TTL电路。
有两种功能:
第一功能是一个8位漏极开路型的双向I/O口,这时P0口可看做数据总线;
第二功能是在访问外部存储器时,分时提供低8位地址和8位双向数据总线,这时先用做地址总线再用做数据总线。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P0口内部无上拉电阻,作为I/O口使用时,必须外接上拉电阻。
P1口:
P1口是一个内部带上拉电阻的8位准双向I/O口(使用前有一个准备动作),负载能力为4个TTL电路。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部带上拉电阻的8位准双向I/O口,P2口缓冲器可接收、输出4个TTL门电流。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
4.2时钟电路
单片机的时钟产生方法有两种:
内部时钟方式和外部时钟方式。
本系统中AT89C51单片机采用内部时钟方式。
最常用的内部时钟方式是采用外接晶体和电容组成的并联谐振回路。
振荡晶体可在1.2MHz~12MHz之间。
电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小和振荡电路起振速度有少许影响,一般可在20pF~100pF之间取值。
AT98C51单片机的时钟电路如图3所示。
单片机的时钟产生方法有两种:
4.3复位电路
复位是单片机的初始化操作。
单片机系统在上电启动运行时,都需要先复位。
其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。
单片机的外部复位电路有上电自动复位和按键手动复位两种。
本系统中AT89C51单片机采用上电加按键手动复位电路,如图4所示。
图3AT89C51单片机的复位电路
4.4CD4066模拟开关设计
CD4066的引脚功能下图5所示。
图4CD4066引脚功能图
每个封装内部有4个独立的模拟开关,每个模拟开关有输入、输出、控制三个端子,其中输入端和输出端可互换。
当控制端加高电平时,开关导通;
当控制端加低电平时开关截止。
模拟开关导通时,导通电阻为几十欧姆;
模拟开关截止时,呈现很高的阻抗,可以看成为开路。
模拟开关可传输数字信号和模拟信号,可传输的模拟信号的上限频率为40MHz。
各开关间的串扰很小,典型值为-50dB。
CD4066是四双向模拟开关,主要用作模拟或数字信号的多路传输。
CD4066由四个相互独立的双向开关组成,每个开关有一个控制信号端,开关可以相互独立地开断,互补影响。
这种结构消除了开关晶体管阈值电压随输入信号的变化,因此在整个工作信号范围内导通阻抗比较低。
CD4066引出端排列与CC4016一致,但具有比较低的导通阻抗。
另外,导通阻抗在整个输入信号范围内基本不变。
与单通道开关相比,具有输入信号峰值电压范围等于电源电压以及在输入信号范围内导通阻抗比较稳定等优点。
但若应用于采保电路,仍推荐CD4016。
当模拟开关的电源电压采用双电源时,例如=﹢5V,=﹣5V(均对地0V而言),则输入电压对称于0V的正、负信号电压(﹢5V~﹣5V)均能传输。
这时要求控制信号C=“1”为+5V,C=“0”为-5V,否则只能传输正极性的信号电压。
4.5显示模块设计
本系统中采用8位LED数码管显示时、分、秒,用一片74HC573分别对段码锁存和一片74HC138对位码进行控制,实现动态扫描方式显示,节省单片机I/O口资源,简化硬件电路。
(1)LED显示器
LED显示器是由若干个发光二极管组成显示字段的显示部件,当发光二极管导通时,相应的一个点或一个笔划发光,控制不同组合的二极管导通,就能显示出各种字符。
LED显示器有多种形式,如:
“米”字型显示器,点阵显示器和七段数码显示器等。
在本系统中采用八段数码显示器。
因为共阴极的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故本系统中的8位LED数码管均用共阴极的数码管。
(2)74HC573芯片
特点:
三态总线驱动输出,置数全并行存取,缓冲控制输入,使能输入有改善抗扰度的滞后作用。
原理说明:
74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出将随数据(D)输入而变。
当使能为低时,输出将锁存在已建立的数据电平上。
输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。
这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。
特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。
74HC573引脚说明:
图574HC573引脚图
(3)显示电路
将两片74HC573的数据输入端D0-D7都分别与AT89C51单片机的P1.0–P1.7引脚连接,输出端与数码管的段端,位端相连。
实现段选和位选。
两片74HC573的锁存使能端LE与OE分别接VCC和GND,74HC573的输出端接至数码管,如图7所示。
图6显示电路
1.4调时模块设计
当k1接地时,处于设置时间状态。
当k1高电平时,处于工作状态。
Ke2高电平时用于调节时间的增加。
处于低电平时用于调节时间的减少。
K3,k4,k5,分别用于调节时间的时,分,秒位。
如图8
图7调时模块设计
五、整体电路图
图九整体电路图
六、仿真及调试
(1)KEIL工程的建立
Keil单片机模拟调试软件对MCS51单片机应用系统的软件开发过程采用工程(Project)管理。
工程保存着程序编辑的信息和程序调试的环境。
在开始编写程序之前首先应该建立一个工程。
新建一个工程之前通常还需要建立一个文件夹,后面产生的工程文件和源程序文件等都将存储在这个文件夹之中。
在如图所示的集成开发环境的窗口中选择Project→NewProject命令将打开建立新工程的对话框,如图6-1所示。
图6-1
在“保存在”下拉列表框中选择新建工程将要存储的文件夹名,在“文件名”文本框中输入工程的名称,注意对于工程不要添加扩展名,单击“保存”按钮即可完成一个工程的创建。
单击“保存”按钮在完成一个工程创建的同时也打开了单片机芯片型号选择对话框。
如图6-2所示的对话框已经完成了芯片型号的选择。
图6-2芯片的选择
(2)源文件的输入
Keil单片机模拟调试软件内集成了一个文本编辑器,用该文本编辑器可以编辑源程序。
如图6-3所示。
在图6-3中已经完成了汇编语言源文件的输入,并且完成了源程序向当前工程的添加。
如图6-3所示:
图6-3源文件输入
完成c语言源文件的输入后,在集成开发环境中选择File→SaveAs命令可以完成文件的第一次存储。
注意,c源文件的扩展名应该是.c,它应该与工程文件存储在同一文件夹内。
在完成文件的第一次存储后,当对c语言源文件又进行了修改,再次存储文件时则应该选择File→Save命令、单击保存工具按钮或者按快捷键Ctrl+S实现文件的保存。
首先点击左边的Project窗口的Target1,然后使用菜单“Project中的OptionforTarget1”即出现对工程设置的对话框,如图6-4所示:
图6-4调试对话框的设置
对上图进行相应的设置,用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。
在设置好工程后就可以进行编译、连接。
选择Project中的Buildtarget,对当前工程进行连接,编译过程中会出现很多语法错误,会有错误报告出现,双击该行,可以定位到出错的位置,对源程序反复新盖之后,最终会得到如图所示的结果,提示获得了名为Hex的文件,该文件即可被编程器读入写到芯片中
图6-5调试后的结果
写到芯片中的程序,可以用Proteus中进行仿真,仿真结果如下图6-6所示:
七、设计总结
经过将近一周的单片机课程设计,我有了很多的体会和感想。
通过本次对定时开关的设计,我对单片机这门课程有了更进一步的了解。
无论是在其硬件连接方面还是在软件编程方面,都取得了新的收获。
本次课程设计采用了AT89S51单片机芯片,通过本次实验及查阅相关资料,我们对其有了一定的认识,在本课题设计报告的硬件介绍部分也对其作了详细的论述。
S51在C51的基础上增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。
另外,在对单片机编程方面,我们又掌握了一些新的编程思想,使得程序更为简练、易懂,而且更为严谨,程序执行的稳定性得到了提高,以前在学单片机这门课程时只是对其理论知识有了初步的了解。
通过本次实验,我们对它的工作原理彻底理解了,对其启动设置、转换结束判断以及输出控制等都基本掌握。
电路连接方面,我们对其与单片机的连接也有了更为直观的认识,通过实验的摸索以及必要的理论知识,我们准确的实现了它于单片机的互连。
设计过程中,我遇到过许多次失败的考验,比如,自己对单片机编程时遇到了很多阻碍,想要放弃,然而,就在要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。
于是,我坚持了下来。
我非常感激同组队员对我的的指导和帮助,没有他们的帮助,我还会做很多的无用功。
通过这次设计,这也对我们今后的工作敲响了警钟:
要认真的看待每个需要处理的问题,不要认为事情过于简单,不能急于求成,但不要放弃。
要保持头脑清醒。
单片机是很重要的一门课程,老师和一些工作的朋友都曾说过,如果学好一门单片机,就凭这个技术这门手艺找一个好工作也不成问题。
尽管我们在课堂学到的内容很有限,但在以后的学习中单片机还需要好好的深入研究和学习。
最后感谢老师对我的精心指导和帮助,感谢同学们对我的帮助。
八、参考文献
[1]《单片机原理及应用》,张毅刚、彭喜元,高等教育出版社2011.12
[2《]单片机应用技术指导书》,陆剑,河南工业职业技术学院2005.12.
[3《]单片机系统设计与实》,汪道辉,电子工业出版社2007.6
[4《单片机应用系统设计与实现》,辛友顺、胡永生,福建科学技术出版社2010.6
[5]《单片机开发与实例》,黄庆华、张永格,电子工业出版社2008.9
[6]《单片机原理与应用》(C语言版)闫玉德、俞红,机械工业出版社2005.3
[7]《单片机应用教程》,清李叶紫、王喜斌、胡辉,青华大学出版社.2008.6.
[8]《单片机应用技术》,刘守义、王静霞,西安电子科技大学出版社,2002.6
附录1
九、程序
#include<
reg51.h>
#defineDataPortP1
sbitLED=P0^0;
charhour=23,minute=59,second=59;
unsignedchari=0;
unsignedcharTempData[8];
sbitwei=P2^0;
sbitduan=P2^1;
sbitKEY1=P2^2;
sbitKEY2=P2^3;
sbitKEY3=P2^4;
sbitKEY4=P2^5;
sbitKEY5=P2^6;
sbitmotor=P2^7;
unsignedcharcodeduanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsignedcharcodeweima[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
voiddisplay(unsignedchara,unsignedcharb);
voiddelay(unsignedcharnum);
voidKeyScan();
voidDataDeal();
voidTiner0_Init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
voidmain()
Tiner0_Init();
motor=0;
TempData[0]=duanma[second%10];
TempData[1]=duanma[second/10];
TempData[2]=0x40;
TempData[3]=duanma[minute%10];
TempData[4]=duanma[minute/10];
TempData[5]=0x40;
TempData[6]=duanma[hour%10];
TempData[7]=duanma[hour/10];
display(0,8);
while
(1)
{
if(KEY1==1)
{
display(0,8);
if((second==0)&
&
(minute==0)&
(hour==0))
{
TempData[0]=duanma[0];
TempData[1]=duanma[0];
TempData[2]=0x40;
TempData[3]=duanma[0];
TempData[4]=duanma[0];
TempData[5]=0x40;
TempData[6]=duanma[0];
TempData[7]=duanma[0];
motor=0;
}
else
motor=1;
}
}
else
{
LED=0;
KeyScan();
}
voidTiner0_isr()interrupt1
if(KEY1==1)
i++;
if((second!
=0)||(minute!
=0)||(hour!
=0))
if(i==20)
i=0;
second--;
if(second<
0)
{
second=59;
minute--;
if(minute<
{
minute=59;
hour--;
}
}
DataDeal();
voidDataDeal()
TempData[3]=0;
voiddisplay(unsignedchara,unsignedcharb)
staticunsignedcharc=0;
DataPort=0;
duan=1;
duan=0;
DataPort=weima[c+a];
wei=1;
wei=0;
DataPort=TempData[c];
c++;
if(c==b)
c=0;
voiddelay(unsignedcharnum)
while(num--);
voidKeyScan()
if(KEY1==0)
if((KEY3==0)||(KEY4==0)||(KEY5==0))
delay(30);
if((KEY3==0)||(KEY4==0)||(KEY5==0))
if(KEY2==1)
{
if(KEY3==0)
{
while(!
KEY3);
if(hour<
24)
{
hour++;
if(hour==24)
{
hour=0;
}
}
if(KEY4==0)
KEY4);
if(minute<
60)
minute++;
if(minute==60)
minute=0;
if(KEY5==0)
KEY5);
if(second<
second++;
if(second==60)
second=0;
else
{
if(hour>
hour--;
if(hour==0)
if(minute>
minute--;
if(minute==0)
if(second>
second--;
if(second==0)
成绩评定·
一、指导教师评语(根据学生设计报告质量、答辩情况及其平时表现综合评定)。
课程设计成绩评定
班级姓名学号
综合成绩:
指导教师签字年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 定时 开关