第一组电子数字钟-课程设计
计算机应用0801班 单片机课程设计报告 第一组湖南人文科技学院课程设计报告课 程 名 称: 单片机原理及应用设计 设 计 题 目: 电子数字钟 系 别: 计算机科学技术系 专 业: 计算机应用技术 组 别: 第一组 组 员: 雷赞、贾晨、蒋小菊、夏欢 、彭瑞琨、蒲相印 学 号: 、 、 起 止 日 期: 2010.12.15-2010.12.31 指 导 教 师: 李 芝 成 课程设计题目电子数字钟组号第一组班级08级计应班系别计算机科学技术系专业计算机应用技术专业组长雷赞组员贾晨、蒋小菊、夏欢、彭瑞琨、蒲相印指导教师 李芝成课程设计目的通过电子数字钟设计实验,系统地掌握单片机应用系统的软硬件设计与程序调试方法。课程设计环境1. PC兼容机 2Proteus7.13. keilc51v7.064TSC51/98实验开发系统5TMSD集成开发环境 课程设计要求1. 掌握Proteus7.1、keilc51v7.06及单片机开发平台的使用方法;2. 利用现有的实验平台和PC机,根据设计课题要求,组成一个单片机模拟应用系统,结合一个实际的接口技术问题首先在Proteus7.1、keilc51v7.06中调试,再在实验台上编程模拟实现。3. 通过设计掌握单片机硬件电路的设计方法,学会软件程序的编写和调试。课程设计工作进度计划日期工 作 内 容2010.12.20-12.21搜集相关的设计资料,确定选题;2010.12.22-12.23搜集并熟悉相关课题资料,整理出设计思路;2010.12.24将整体思路模块化,并对本组成员进行工作分组;2010.12.25-12.27整理思路,画出工作流程图和设计原理图2010.12.28-2010.12.29着重编写和调试运行程序2010.12.30-12.31结合硬件配置系统环境,并进行系统验证任务分配雷赞硬件电路雷赞、贾晨软件编程雷赞、夏欢软件编程雷赞、蒋小菊资料整理彭瑞琨、蒲相印资料打印目 录1、引言- 2 -1.1电子数字时钟方案- 3 -1.2 数码管显示方案- 3 -1.3 系统的简要说明- 4 -2、电子数字钟的硬件电路- 4 -2.1 复位电路- 5 -2.3 控制电路- 6 -3、软件设计分析- 8 -3.1地址空间及端口分配- 8 -3.2总体架构说明- 8 -3.3各子程序功能及出入口地址- 9 -3.4程序流程图- 10 -3.5源程序- 10 -4、调试过程- 18 -5、课设结果- 19 -6、心得体会- 20 -参考文献- 20 -附录1- 21 -附录2- 21 -课程设计任务书及成绩评定- 22 -1、设计的目的与要求。- 22 -2、设计进度及完成情况- 22 -3、成绩评定- 22 -1、引言1.1电子数字时钟方案方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。方案二:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。该方案具有硬件电路简单的特点。但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。1.2 数码管显示方案方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。静态显示时较小的电流能获得较高的亮度,且字符不闪烁。但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。从节省I/O口和降低能耗出发,本设计采用方案二。1.3 系统的简要说明利用单片机(AT89C51)制作简易电子时钟,由六个LED数码管分别显示小时十位、小时个位、分钟十位、分钟个位、秒钟十位、秒钟个位。一个按键用于时间调整。下图为该数字时钟的系统框图。 显示部分控制部分单片机(AT89S51)按键S2复位电路电源部分直流电源4.5V6个七段共阴极数码管显示秒,分钟及小时位位选部分6个PNP三极管(9012)图1.1 数字时钟的系统框图2、电子数字钟的硬件电路2.1 复位电路图2.1 复位电路如图2.1所示,复位电路主要由型号为1N4148的二极管,型号为10UF/16V的电解电容,型号为104的瓷片电容,10K的电阻以及按键S1构成,S1接芯片的相应引脚RST,当开关按下时引脚RST为高电平1,断开时引脚为低电平0。2.2 数码管的连接电路图2.2 数码管内部连接电路图2.3 数码管的外部引脚图图2.3为数码管的引脚图,每位的段码线(a,b,c,d,e,f,g,dp)分别与1个8位的锁存器输出相连,由AT89C51控制组合09十个数据,如令其显示1则b,c引脚(即2,3引脚)送高电平,此时数码管显示1。由于各位的段码线并联,8位I/O口输出段码对各个显示位来说都是相同的。2.3 控制电路2.4 数字时钟的控制电路AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度,非易失性存储技术生产,兼容标准8051指令系统及引脚。AT89C51提供以下标准功能:4K字节Flash闪速存储器,128字节内部RAM,32I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。如图3-7所示,AT89C51有40引脚,双列直插(DIP)封装,所用引脚功能如下:1. VCC 运行时加5V2. GND 接地3. XTAL1 振荡器反相放大器及内部时钟发生器的输入端4. XTAL2 振荡器反相放大器的输出端5. RST 复位输入,高电平有效,在晶振工作时,在RST引脚上作用2个机器周期以上的高电平,将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFT AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。6. EA/VPP 片外程序存储器访问允许信号。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地),如果EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。7. P1口,P2口P1,P2是一组带内部上拉电阻的8位双向I/O口。运行时通过P1口控制驱动电路的工作,将数据送到数码管,显示相应的段码,为了达到减少功耗或满足端口对最大电流的限制,应加上一限流电阻。P2.0P2.5口控制数码管的位选,使六个数码管轮流显示数据,等于1时位选三极管导通,等于0 时位选三极管截止。无自锁开关(S2P3.7)开关接相应引脚P3.7,当开关按下时,相应引脚为低电平0,断开时引脚为高电平1。图2.5 电子钟整体电路图3、软件设计分析3.1地址空间及端口分配30h37h地址空间分别分配给led1、led2、led3、led4、led8、led5、led6 、led7.用于数码管显示。38h地址空间分配给gn,定义38h空间为按键次数读取的缓存空间。39h地址空间分配给nao1f,用于存储调整闹钟一分加一按键次数读取缓存。3ah地址空间分配给nao1s,用于存储调整闹钟一时加一按键次数读取缓存。3bh地址空间分配给nk1,定义3bh空间是闹钟开启开关按键次数读取缓存空间。3dh地址空间分配给nao2f,用于存储调整闹钟二分加一按键次数读取缓存。3eh地址空间分配给nao2s,用于存储调整闹钟二时加一按键次数读取缓存。50h地址空间用于存放50ms中断寄存。51h地址空间用与存放秒的十位和个位。52h地址空间用与存放分的十位和个位。53h地址空间用与存放时的十位和个位。p1.1端口分配给zdled ,定义灯接到p1.1.利用setb和clr zdled控制灯的亮暗起到整点报时显示作用。p1.0 端口分配给nb,定义蜂鸣器接到p1.0 利来实现闹肿p0端口分配给数码管显示控制p2端口分配给数码管选择显示控制。3.2总体架构说明该时钟程序设计思路如下:(1)、在程序头将设计中的一些固定空间进行分配并注释。(2)、初始化程序,如设定时钟初始显示005956 以便一开始就能进入整点报时状态,显示该功能;设定使用定时器1;将一些未到时钟设计功能的功能端口关闭等。(3)开始主程序进行程序扫描,先扫描拆字子程序,将分配好的时分秒等高地位的数字调入到显示子程序中。>显示子程序通过分配的空间对应口将拆字子程序的内容在七段数码管上显示相应的时分秒,再调用走时程序使时钟进行读秒等工作。>进入按键扫描,判断按键是否有变动,若有就根据设计程序对相应的按键按入次数而进行实现相应的功能。如进入时间调整、闹钟一设置、闹钟开启与否等。>进入闹钟一、二的判断,在时分上与设置的闹铃时间吻合的话就做相对应的判断,再依据是否有开启闹钟而进行响铃与否,如果有响铃则设置其一直响铃知道有人为按取消按键取消闹铃。>进入整点报时扫描,判断是否在时分上都进入了整点,如果是就报时显示灯闪烁五下(5s),然后就退出整点报时,等到下一个整点的