数字自动打铃系统(带程序版).doc_第1页
数字自动打铃系统(带程序版).doc_第2页
数字自动打铃系统(带程序版).doc_第3页
数字自动打铃系统(带程序版).doc_第4页
数字自动打铃系统(带程序版).doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安航空职业技术学院毕业设计设计题目 数字自动打铃系统 院 系: 自动化工程系 专 业: 电气自动化 班 级: 电气四班 学生姓名: 李东辉 学 号: 09603406 指导教师: 马宁丽 目录设计要求.31. 方案论证与对比 31.1方案一:采用时钟芯片和键盘实现功能.31.2方案二:采用中断定时实现功能 41.3方案比较52. 单元电路设计与论证5 2.1单片机、I/O拓展 8 2.2打铃电路设计9 2.3时间设置电路设计.10 2.4数码管电路设计.103. 系统软件工作流程图10 3.1主程序工作流程.11 3.2定时器中断显示子程序11 3.3中断服务子程序13 3.4时间设定子程序144. 系统功能实际测试14 4.1程序实际编译测试15 4.2系统实际测试16 4.3软件调试步骤16 4.5子程序调试步骤16 4.5调试结果16 4.6系统误差及性能分析5. 设计总结.16.6 详细仪器清单.177 致谢.18参考文献.19附录.20附录1.详细程序20附录2.整体电路.21数字自动打铃系统设计设计要求1.基本计时和显示功能(12小时制)。2.可设置当前时间(包括上下午标志,时、分的数字显示)。3.能在上午7:30(早自习)和下午10:30(晚熄灯)定点打铃,且每次打铃均为响铃5s,停2s,再响5s。1.方案论证与对比1.1方案一 采用时钟芯片和键盘实现功能方案一原理框图如图1-1所示:DS1302芯片蜂鸣器89C52单片机8255芯片数码管键 盘图 1-1 采用时钟芯片和键盘实现功能该系统用DS1302对时、分、秒计时和设置打铃时间,采用三线串行数据传输接口与STC89C52进行同步通信,用矩阵键盘来设置时间值,并通过8255芯片读入设置值,最后通过89C52单片机芯片综合控制1,把当前时间送到数码管显示,到点把信号送入蜂鸣器,实现打铃。1.2方案二:采用中断定时实现功能方案二原理框图如图1-2所示:蜂鸣器中 断数码管8255芯片89C52图 1-2 采用中断定时实现功能该系统以STC89C52单片机为核心控制部件。用8255做I/O拓展芯片,数码管接8255的PA、PB引脚,用动态扫描的方式显示当前时间。蜂鸣器与单片机的P2.0口相连,当打铃时间到时,由STC89C52发出打铃指令。以外部INT0和INT1中断按钮实现调时功能。1.3方案比较本设计要求能实现基本计时和打铃功能。计时和打铃时间设计,方案一中用到了DS1302时钟芯片计时和打铃时间设置;方案二中采用定时器中断来计时并结合软件设置打铃时间。上述两种方案中:方案一的外围硬件电路设计复杂,而且时钟芯片没有得到充分利用,而方案二的软件计时具有硬件开销小,成本低,外围电路设计简单等优点。调时设计,方案一中用矩阵键盘实现调时功能;方案二中采用外部中断0和1的两个按钮来实现调时。上述两种方案中:方案一的软件设计比方案二的难度系数大,使程序易读性不强。综合对计时的精密程度要求不高的本系统,本设计采用方案一来实现功能。2.单元电路设计与论证本设计主要由STC89C52单片机芯片与8255芯片组成的模块为控制核心、蜂鸣器电路模块实现打铃功能、中断0、1按钮模块调整当前时间、数码管显示模块显示时间,由以上四大模块构成了本系统,详细电路图见附录一,硬件设计总框图如图2-1:扫描电路89C52蜂鸣器打铃电路按键8255 I/O拓展引脚数码管外部中断图2-1硬件设计总框图 STC89C52单片机芯片主要特性与MCS-51 兼容 8K字节可编程闪烁存储器 寿命:1000写/擦循环 数据保留时间:10年 全静态工作:0Hz-24Hz 三级程序存储器锁定 512内部RAM 32可编程I/O线 两个16位定时器/计数器 5个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 管脚说明: 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编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器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)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 8255芯片8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部 分、控制部分。如下图 蜂鸣器移位键加一键2.1单片机、I/O拓展图 2-2 主控电路框图STC89C52RC是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。STC89C52具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,256 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时/计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。其主要特性1如有:与MCS-51 兼容;8k可反复擦写(1000次)Flash ROM;全静态工作:0Hz24MHz;三级程序存储器锁定;256*8位内部RAM;32可编程I/O线;2个16位可编程定时/计数器;5个中断源;可编程串行通道;低功耗的空闲和掉电模式。I/O拓展采用8255芯片,单片机用89C52,电路框图如图2-2所示。2.2打铃电路设计1K限流电阻P型三极管蜂鸣器5V电源采用P型三极管为蜂鸣器提供5V电源,并把STC89C52的P2.0口与三极管的基极相连接,当P2.0口有低电平输入出时,三极管导通2,蜂鸣器响应,从而实现打铃功能。电路框图如图2-3所示:图2-3打铃电路框图2.3时间设置电路设计用中断0开关作为移位开关并接入SCT89C52芯片的P3.2口,设置所需调节的显示位;用中断1开关作为加一开关并接入SCT89C52芯片的P3.3口,对所选调节位进行加一操作。利用中断按键实现时间设置的电路框图如图2-4所示:接 地加一开关中断1按钮移位开关中断0按钮5V电源图 2-4 时间设置电路框图2.4数码管电路设计8255的PA口控制数码管的位选,低电平有效;PB口做为段选输出,接1K欧姆的限流电阻3。如图2-5所示:图2-5数码管显示电路框图1K限流电阻P型三极管数码管3系统软件工作流程图3.1主程序工作流程Y开 始初始化8255芯片和打开中断调用扫秒显示子程序打 铃键按下?打铃到?时间设置子程序YNN主程序首先设置8255模式,并打开中断0,设置中断为边沿触发模式,然后在死循环中顺序执行读秒显示子程序,按键扫描子程序,打铃判断子程序,主程序如下图所示图 3-1 主程序流程图主程序首先设置8255模式,并打开中断0,设置中断为边沿触发模式;其次在死循环中执行读秒显示子程序,当定时器满一秒时,在显示缓冲区中时间加一,等待送入数码管显示;再次按键扫描子程序,如果有中断0或中断1按钮被按下时,则转入相应功能的子程序中;最后如果当前显示时间满足预设打铃条件,通过打铃判断子程序跳入对应的打铃方式中执行4。详细主程序见附录二,主程序流程图如图3-1。3.2定时器中断显示子程序此子程序为本设计的核心之一,首先初始化定时器T0,设置T0为工作方式1,其初始值为3CB0H(既每次溢出定时50ms),并对其循环20次,然后把时间加1s,并送入显示缓冲区等待显示5。显示时,先取出内存地址中的数据,然后查得对应的显示用段码从PB口输出,PA口将对应的数码管选中供电,就能显示缓冲区中的数据值。为了显示秒位和上下午标志在数码管显示上特加了“”、“A”、“P”这三个特殊字符子。程序流程图如图3-2:Y恢复现场,中断返回NT加一处理1S到?数码管显示当前时间保护现场T0中断定时器初值校正图 3-2定时器中断显示子程序流程图3.3中断服务子程序此子程序是为调时时服务的,首先初始化定时器T1,设置T1为工作方式1,其初始值为3CB0H(既每次溢出定时50ms)1,并对其循环8次,然后使数码管被选中的调时位闪烁,子程序流程图如图3-3所示:秒表时钟调时闪烁T1中断保护现场闪烁处理秒表/闪烁?恢复现场,中断返回加10ms处理图 3-3 T1中断服务程序流程图3.4时间设定子程序 时间设定模块的设计要点是按键的去抖处理与“一键多态” 5的处理。即只涉及2个键完成了6位时间参数的设定。“一键多态”即多种功能的实现思想史,根据按键时刻的系统状态,决定按键采取何种动作,即何种功能。移位键中断屏蔽左移一位恢复现场返回计时移位键/加一键?加一键加一处理图 3-4 键盘扫描子程序流程图4.系统功能实际测试4.1程序实际编译测试在Keil C51编译环境下编译过程中所产生的误差主要是在重装初值的过程中大约需要8个机器周期,本设计采用在程序开始时对定时器赋初值多加8个机器周期来消除此误差。最后在Keil C51编译环境下编译通过,0警告,0错误。4.2系统实际测试实际效果如图4-2所示,达到设计要求。图4-2实物图4.3 软件调试步骤1、打开软件后,在Project菜单中选择New Project命令,打开一个新项目。保存此项目,输入工程文件名后,并保存工程文件的目录。2、为项目文件选择一个目标器件,即选择8051的类型。在Data base 列表框中选择“ATML 89C52”,确定。3、上述设置好后,创建源程序文件并输入程序代码。输入好代码后点击“文件/保存”。4、把源文件添加到项目中,用鼠标指在目标工作区的目标1,点击右键在弹出的菜单中选择添加文件到源代码组,在弹出的添加文件框中,选择需要添加到项目中的文件。5、开始编译,对项目文件进行编译。若没有错误后进行硬件调试。4.4子程序调试步骤子程序调试应一个模块一个模块地进行,首先单独调试各功能子程序,检查程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来进行总调试。故调试步骤6如下:A、蜂鸣器的调试调试方法:先把打铃程序下载到单片机,让蜂鸣器发声,看是否在正确的时间内实现打铃。B、数码管程序调试正确的显示时间是整个程序的关键之一。调试方法:先把程序下载到单片机,让数码管显示,是否正确的显示时间的变化。C、键盘调时序正确的显示所调的时间是整个程序的关键之一。调试方法:先把键盘程序和显示程序下载到单片机,让数码管显示,是否正确的所调时间的变化。4.5调试结果实现计时和显示功能(12小时制),可设置当前时间(包括上下午标志,时、分的数字显示),能在上午7:30和下午10:30定点打铃,且每次打铃均为响铃5s,停2s,再响5s。4.6系统误差及性能分析经测试该简易自动打铃系统在一天内会出现时间误差,该误差主要是由于晶振自身的误差所造成的。另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累积误差很小,可以忽略。5.设计总结通过这次毕业设计,我得到了很多收获和体会,懂得了合作的重要性和必要性,以及工程设计的大体过程。第一,巩固和加深了对单片机基本知识和理解,提高了综合运用所学知识的能力。第二,增强了根据课程需要选学参考资料,查阅手册,图表和文献资料的自学能力。通过独立思考,深入研究有关问题,学会自己分析解决问题的方法。第三,通过实际方案的分析比较,设计计算,安装调试等环节,初步掌握了简单使用电路的分析方法和工程设计方法。第四,在这次课程设计过程中,光有理论知识是不够的,还必须懂一些实践中的知识。所以在课程设计的实践中,我们应将实验课与课堂教学结合起来,锻炼自己的理论联系实际的能力与实际动手能力。第五,掌握了比较常用的仪器的使用方法,提高了动手能力。第六,培养了严谨的工作作风和科学态度。总之这次课程设计,培养了我们综合应用单片机原理及应用的理论知识和理论联系实际的能力;在设计的过程中还培养了我们的不耻下问的求学精神,同学共同协作,一齐商量讨论,解决了许多问题。这一切都令我们受益匪浅,在今后的学习工作中我们会一如既往,不断努力。 6.详细仪器清单类型规格数量备注5V直流电源ZH-60031USB232converterU232-P91电阻1k13个芯片82551片扩展I/O芯片STC89C521片晶振12M1个蜂鸣器无源1个数码管3位共阳极2个极性电容0.1UF1个非极性电容30pf2个LED2个工作指示灯按键开关3个单刀双掷开关1个三极管7个7. 致谢经过最近多天的毕业设计,我充分太充分认识到理论知识和实践结合的重要性。经过两年多的理论基础的学习,我成功的将理论运用如实践,并成功的运用单片机,以前只是在路上看见那些交通灯,但是并没有认真的研究交通灯的内部控制原理,还有单片机上那些芯片的功能和引脚图平常也不是常接触,通过这次城市道口交通灯控制系统设计让我清楚如果想做一个产品该怎样思考。此次毕业设计持续的时间较长,对我的耐心是一种极大的考验,对有些程序的编写要及时的做出判断,当然学生也要积极的配合老师的工作,努力将自己所学的知识尽可能的运用到对方案的设计中去。感谢老师的细心指导、和伙伴之间的配合.。我会努力学习,为学校争光,也为我的老师们,更重要的是为祖国的发展做出自己应有的那份贡献,不管是否微薄,也要努力再努力.感谢老师参考文献1 张鑫.单片机原理及应用M.北京:电子工业出版社,2005.8.2 康光华.电子技术基础.模拟部分M.北京:高等教育出版社,2006.1.3 康光华.电子技术基础.数字部分M.北京:高等教育出版社,2006.1.4 祁伟, 杨亭. 单片机C51程序设计教程与实验M.北京:北京航空航天大学出版社,2006. 5 楼然苗.李光飞.单片机课程设计指导M.北京:北京航空航天大学出版社,2007.46 单片机学习网附录附录1. 整体电路图附录2. 详细程序#include reg52.h#include#define PA XBYTE0xD1FF /*PA口地址*/#define PB XBYTE0xD2FF /*PB口地址*/#define PC XBYTE0xD5FF /*PC口地址*/#define CON XBYTE0xD7FF /*控制字地址*/#define uchar unsigned charCode Char dis_714=0xA0,0xBB,0x62,0x2A,0x39,0x2C,0x24,0xBA,0x20,0x28,0xff,0x7f,0x30,0x70;/* 共阳LED段码表 0 1 2 3 4 5 6 7 8 9 不亮 - A P*/ code char scan_con8=0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xBF,0x7f; / 列扫描控制字data char disdata8=0x08,0x05,0x09,0x02,0x0b,0x00,0x01,0x0d;/计时单元数据初值,共6个data char dis8=0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x00;/显示单元数据,共6个数据data char con1s=0x00,con04s=0x00,con=0x00,con05s=0x00,d=0x00;/1秒定时用sbit key0=P32; /移位键sbit key1=P33; / 加一sbit BEEP=P20; /蜂鸣器接口/*/1毫秒延时程序/*/delay1ms(int t)int i,j;for(i=0;it;i+) for(j=0;j120;j+);/*/ /扫描程序/*/scan()char k;for(k=0;k=6) con=0;TR1=0;ET1=0;TR0=1;ET0=1; if(con=0) if(key1=0) delay1ms(10); while(key1=0);d=con+2; disdatad+; if(disdatad=14) disdatad=0;discon=disdatad;dis6=0x0a; EA=1; /*/ 打铃程序 /*/Play1() uchar i,t; for(i=0;i100;i+) BEEP=BEEP; delay1ms(t); BEEP=1; Play2() BEEP=1; bell()if(disdata0=0x00|disdata0=0x01|disdata0=0x02|disdata0=0x03|disdata0=0x04)&disdata1=0x00&disdata2=0x00&disdata3=0x03&disdata5=0x07&disdata6=0x00&disdata7=0x0c|(disdata0=0x00|disdata0=0x01|disdata0=0x02|disdata0=0x03|disdata0=0x04)&disdata1=0x00&disdata2=0x00&disdata3=0x03&disdata5=0x00&disdata6=0x01&disdata7=0x0d) Play1();if(disdata0=0x05|disdata0=0x06)&disdata1=0x00&disdata2=0x00&disdata3=0x03&disdata5=0x07&disdata6=0x00&disdata7=0x0c|(disdata0=0x05|disdata0=0x06)&disdata1=0x00&d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论