基于51单片机的数字钟设计_毕业论文_第1页
基于51单片机的数字钟设计_毕业论文_第2页
基于51单片机的数字钟设计_毕业论文_第3页
基于51单片机的数字钟设计_毕业论文_第4页
基于51单片机的数字钟设计_毕业论文_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、 PAGE27 / NUMPAGES30 大学电子信息学院电子系统综合设计课程论文基于51单片机的数字钟设计目 录TOC o 1-3 h z uHYPERLINK l _Toc3266883731 作品的背景与意义 PAGEREF _Toc326688373 h 1HYPERLINK l _Toc3266883742 功能指标设计 PAGEREF _Toc326688374 h 1HYPERLINK l _Toc3266883753 作品方案设计 PAGEREF _Toc326688375 h 1HYPERLINK l _Toc3266883763.1总体方案的选择 PAGEREF _Toc3

2、26688376 h 1HYPERLINK l _Toc3266883773.1.1方案一:基于单片机的数字钟设计23.1.1方案二:基于数电实验的数字钟设计33.1.2两种方案的比较3HYPERLINK l _Toc3266883783.2控制方案比较3HYPERLINK l _Toc3266883793.3显示方案比较3HYPERLINK l _Toc3266883803.4单片机理论知识介绍43.4.1单片机型号5 3.4.2硬件电路平台6 3.4.3部时钟电路 7 3.4.4复位电路7 3.4.5按键部分 8HYPERLINK l _Toc3266883814 硬件设计9HYPERLI

3、NK l _Toc3266883824.1显示模块电路图9HYPERLINK l _Toc3266883845 软件设计11HYPERLINK l _Toc3266883855.1主程序流程图11HYPERLINK l _Toc3266883865.2中断服务以与显示12HYPERLINK l _Toc3266883886 系统测试13HYPERLINK l _Toc3266883896.1测试环境13HYPERLINK l _Toc3266883906.2测试步骤136.2.1硬件测试136.2.2软件测试13 1.连接单片机和计算机串接13 6.2.3实施过程14 HYPERLINK l

4、_Toc3266883926.3测试结果187 实验总结18 7.1代码编写过程中出现问题18 7.2整个实验过程的体会19 7.3实验误差分析。19HYPERLINK l _Toc326688393参考文献20HYPERLINK l _Toc326688394附录1 系统电路图21HYPERLINK l _Toc326688395附录2 系统软件代码21HYPERLINK l _Toc326688396附录3 系统器件清单261 作品的背景与意义数字钟是采用数字电路实现对.时,分,秒。数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,

5、而且大扩展了钟表原先的报时功能。基于单片机的数字钟具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以与家用电器等各个领域,生活中诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等也可广泛应用,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以与针对具体应用对象特点的软件结合,以作完善。因此,研究数字钟与扩大其应用,有着非常现实的意义。2 功能指标设计 本实验中,数字钟是基于单片机实现时、分、秒计时

6、的装置,以单片机SST89E516RD为核心元件同时结合LCD显示器、74HC573锁存器、74HC138译码器、74HC02或非门等芯片在同相应软件结合动态显示“时”、“分”、“秒”的现代计时装置。还可以具有校时功能,秒表功能,和定时器功能,利用单片机实现的数字时钟具有编程灵活,便于功能的扩充等优点。3 作品方案设计3.1总体方案的选择3.1.1方案一:基于单片机的数字钟设计 在软件各个步骤做到位的前提下,程序主要分为三个板块来设计。第一,实现数码管的点亮。16位的指针DPTR高8位是连接P2端口的8位I/O口,可控制与P0口连接的锁存器74HC573的使能控制端;DPTR低8位连接P0端口

7、的8位I/O口,通过DPTR数据的设置和传输,锁存在74HC573中,一旦使能端有效,便可实现选取数码管的显示位与现实数据,此过程经过两次传输实现。第二,实现定时器的1S定时,时间到转向秒位的加1。根据机器周期,计算初值,由于机器部已经产生周期性脉冲,只需人为通过代码控制计数,1S后转向处理函数即可。第三,实现按键校正时间。实验室的单片机有4*4按键和单独与P3口相连的四个按键,由于只实现时分秒的校正,故可选择与P3.2,P3.3,P3.4,P3.5口连接的四个按键较方便,主函数循环扫描是否有按键按下,由于人按键有时间延迟,可选择下降沿触发,若采用电平触发,则需要在处理代码中循环检查,按键松开

8、的后,更改相应位的时间,之后返回主程序。3.1.1方案二:基于数电实验的数字钟设计 采用集成电路定时器555组成多谐振荡器,输出1000Hz的振荡频率信号,再由三片74LS90芯片级联组成的分频器进行分频,每片为1/10分频器,三片级联正好获得1Hz的标准脉冲,实现“秒”的记时功能。再用两片74LS90芯片级联组成六十进制计数器,输入分频器产生的1Hz标准脉冲,实现“分”的计时功能,采用中规模集成电路74LS193计数器两片组成“12翻1”的计数器件,输入六十进制计数器产生的脉冲,在通过LED显像管显示时间,即可实现数字钟功能。即当计数器计时到12时59分59秒,再来一个秒脉冲,数字钟自动显示

9、00时00分00秒,实现日常的生活习惯用的计量规律。图3.1 数字钟电路3.1.2两种方案的比较 基于单片机的数字中设计可将软件与硬件相结合,在计算机的上编写代码,然后将代码通过数据线输入到单片机,输出指令运行。其显示的精确度除了与本身的程序优劣外还收到计算机的运行速度有关,但可以人为的提高代码质量和优化计算机运算速度来实现改善。而且可以在只变代码的情况下扩展数字钟功能,如特定时间响鸣,如显示星期,功能多变实用,软件代码编写测试检验相对简单。基于555的硬件数字钟,由于硬件芯片已经封装集成,芯片本身存在传输数据误差,且在人为连接组装芯片的时候会由于导线等各种原因会出现较大误差。功能比较有限,如

10、果需要附加功能,可能需要改变硬件线路,这比软件编写较困难。3.2控制方案比较 基于单片机设计数字钟方案的控制器件包括SST89E系列51单片机系统,电脑提供的+5V电源,LED动态显示电路,按键输出部分,输出电路等几部分组成。单片机有多种选择,数字钟设计用51单片机较好,51单片机是单片机中的一种,单片(single-chip microcomputer)是一块集成芯片,但不是一块实现某一个逻辑作用的芯片,而是在这块芯片当中,集成了一个计算机系统。如中央处理器(CPU)、存储器(ROM,RAM)、I/O接口、定时器/计数器、中断系统等。中央处理器是单片机的核心单元,他由运算器和控制器组成,他的

11、主要作用是实现算术运算、逻辑运算、和控制。SST89E系列51单片机主要包括SST89E51RD,SST89E52RD,SST89E54RD,SST89E58RD, SST89E554RD,SST89E554564等。与其它MCS51系列单片机相比,其突出特点是:部嵌入SuperFlash存储器:提高器件抗干扰性能,SST的MCU在51系列中是抗干扰性能最好的;可编程计数器阵列(产生PWM输出);有IAP功能(能够支持远程在线下载和修改程序);增强的双倍速模式:比其它所有的51单片机执行速度快一倍。3.3显示方案比较 依次点亮八段码,设置较快的扫描频率,在段式液晶上面形成稳定的输出。本实验中的

12、C51单片机上采用8位8段LED数码管显示,数码管引脚如下:图3.2 LED管实图 图3.3 LED电路图 LED有共阴极和共阳极两种。二极管的阴极连接在一起,通常此为公共阴极接地,而加电压则暗。共阳极则将发光二极管的阳极连接在一起,接入+5V的电压。一位显示器由8个发光二极管组成,其中7个发光二极管构成字型“8”的各个笔划(段)ag,另一个小数点为dp发光二极管。当在某段发光二极管施加一定的正向电压时,该段笔划即亮;为了保护各段LED不被损坏,需外加限流电阻。本实验利用利用人眼的视觉残留现象,依次点亮每个八段码单元,只要扫描速度超过人眼可以识别的频率,就可以看到稳定的信息输出。本实验中写了一

13、个小程序,来测试此单片机是共阳极还是共阴极。 图3.4共阴极 高电平驱动 图3.5共阳极 低电平驱动本设计中,应用单片机平台上的LED显像管比较合适和方便。3.4单片机理论知识介绍51单片机: 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受与应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间51 系列单片机仍将占据嵌入式系统产品的中低端市场。汇编语言: 汇编语言是一

14、种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。汇编语言可以与高级语言配合使用,应用十分广泛。ISP: ISP(In-System Programming)在系统可编程,是当今流行的单片机编程模式,指电路板上的空白元器件可以编程写入最终用户代码,而不需要从电路板上取下元器件。已经编程的器件也可以用ISP方式擦除或再编程。本次课程设计便使用ISP方式,直接将编写好的程序下载到连接好的单片机中进行调试。3.4.1单片机型号 SST8

15、9E516RD是SST公司出产的一款基于8051核的8 位单片机,SST89E516RD最大的特点是具有在线调试和在线下载功能,为工程开发中的调试提供了最大的方便。该芯片中含有1K的RAM和64K+8K的置可擦除程序存储器ROM。其程序存储器达到了51核结构单片机寻址的最大围,能够满足大容量程序存储的要求。SST89E156RD在5V电压下可以工作在040MHz的频率围。SST的MCU除了具备和一般单片机一样,可以通过专用编程器将程序代码烧写到片ROM中,然后装入系统运行程序以外,还具备另外两种特殊的下载和仿真功能。程序下载功能:SST单片机可以不需要编程器,直接通过串行通信口,将程序下载到单

16、片机ROM中,且下载的程序在单片机断电后仍会保存,不会丢失。程序下载后,直接复位或者重新上电单片机就可以工作。在线仿真功能:SST单片机还具有在线仿真功能,同样通过单片机的串口,通过在keil软件中设置可以实现在线仿真,具有单步执行、全速执行、设置端点等调试功能。图3.6 SST89E156RD芯片图3.4.2硬件电路平台:“MCS51单片机系统学习板V1.1”是大学电子创新平台中的单片机学习和开发平台。它兼容DIP40封装的51系列单片机,板上配备SST公司的SST89E516RD高性能单片机,可利用串口进行在线下载、硬件仿真和断点调试。系统采用基于总线结构的设计,板上既具有普通的IO实验,

17、更多的采用总线方式扩展板上资源。图3.7 51单片机平台3.4.3部时钟电路 部时钟电路是单片机的心脏,它控制着单片机的工作节奏,CPU就是通过复杂的时序电路完成不同的指令功能的。部时钟的产生方式是利用单片机部的振荡器,然后在引脚X1(18脚)和X2(19脚)两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入部时钟电路,外接晶振时,晶振两端的电容一般选择为30PF左右;这两个电容对频率有微调的作用,晶振的频率围可1.2MHz-12MHz之间选择。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。3.4.4复位电路MCS-51单片机的复位是由

18、外部的复位电路来实现的。复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到部复位操作所需要的信号。复位方式有上电复位和按键手动复位两种方式。上电复位:上电复位电路是种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够

19、长的时间。下图为复位电路RC。 图3.8 复位电路手动复位:通过接通按钮开关,使单片进入复位状态。 复位电路虽简单,但很重要。一个单片机系统能否正常运行,首先要检查是否能复位成功。初步检查可用示波器探头监视RST引脚,按下复位键,观察是否有足够幅度的波形输出(瞬时的),还可以通过改变复位电路阻容值进行实验。3.4.5按键部分它是整个系统中最简单的部分,根据功能要求,本系统共需四个按键:功能移位键、功能加键、功能减键、定闹键。并采用独立式按键。在XD12键盘上选定3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。分、秒加到59后变为00;小时加到23后再按键即变为00。再调校时

20、均不向上一单位进位(例如分加到59后变为00;但小时不发生改变)。按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的I/O端口形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的机械特性有关,一般在5-10ms之间。为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。本文采用的是独立式按键,直接用I/O口线构成单个按键电路,每个按键占用一条I/O口线,每个按键的工作状态不会产生互相影响。4 硬件设计4.1显示模块电路图图3.9 LED电路图 由MCS51单片机系统的硬件原理图

21、可知,8位数码管的显示由SEL18端控制由哪个数码管显示,由SEG_AG端控制显示的数据,同时这两个端口都与P0口相接的74HC573的输出有关,而控制端分别为与非门输出口的CS_LED_SEL11,CS_LED_SEG11,由此找到CS3,CS2与非门输入端,同时CS3,CS2为HC138译码器的输出,由高8位的A8,9,10,15控制,故可通过对高8位的设置从而来控制数码管的显示。 图4.1 74HC138芯片图图4.2 或非门电路 图4.3 74HC573芯片图5 软件设计5.1主程序定时器的程序流图 图4.4 主程序定时器的程序流图 5.2中断服务以与显示 图4.5 中断服务以与显示6

22、系统测试6.1测试环境硬件:MCS51单片机系统一片一片,计算机一台,通讯电缆一根,数据线一根。 软件:Windows XP操作系统、Keil51软件,SoftICE监控程序。6.2测试步骤6.2.1硬件测试先检测单片机与计算机的连接问题,将单片机设置为可控制状态;由于我们拿到的是现成的51单片机,首先编先一段程序检测LED数码管是否完好,同时利用这个小程序可以检测数码管是共阴极还是共阳极类型,查看晶体振荡器的振荡频率,复位是否有效,电源是否接通好等硬件设施。6.2.2软件测试连接单片机和计算机串接SoftICE的下载与使用:SoftICE的英文是Software In Circuit Emu

23、lator的简称,其翻译成中文就是在线的软件仿真器的意思,它是SST公司为方便SST用户在使用SST单片机(包括SST89C5xSST89x564RD/554RC/516RD2/5XRD2 )调试程序所开发的开发工具,这个SST 的仿真器功能可以代替大部分的专用仿真器的功能,使单片机工程师在开发单片机时省却了价格昂贵的仿真器和编程器,使得51单片机的开发更加容易和普与并且SST的单片机价格便宜,出厂时就包含了在线下载和在线仿真的功能。SoftICE 监控程序占用89E516RD的MCU 的5Kbyte 程序空间为:BLOCK1的4Kbyte 从0000h 到0FFFh BLOCK0的1Kbyt

24、e 从FC00h 到FFFFh由于SST的MCU在出厂时已经将BOOT LOADER的下载监控程序写入到芯片中,因此无需编程器就可通过SST BOOT-STRAP LOADER软件工具将用户程序下载到SST的MCU中,从而运行用户程序。 SST BOOT-STRAP LOADER软件工具还可将原来的MCU部的下载监控程序转换为SoftICE的监控程序从而实现SOFTICE的仿真功能。 执行SSTEasyIAP11F.exe软件运行SST Boot-Strap Loader,在部模式下检测到对应器件的型号后,SoftICE固件通过按SoftICE菜单下“Download SoftICE”选项下载

25、,便将SoftICE固件下载到MCU, 在BLOCK1的SST Boot-Strap Loader会被SoftICE固件代替,详细操作步骤如下: 1、选择连接的串口,选择Detect Target MCU for Firmware1.1F and RS232 Config: 2、选择芯片型号和部存储器模式,选择SST89E/V516RD2和Internet Memory: 3、选择串口波特率MCU的晶振频率,串口号为COM1,晶振频率为11.0592MHz: 4、按确定后再重新复位MCU: 5、如果通讯成功在窗口的右上角可以显示出芯片的型号与BOOT LOADER的版本信息: 6、点击DOWN

26、LOAD SOFTICE的按钮即可将MCU部的BOOT LOADER的监控程序更换为SOFTICE的监控程序: 7、点击确定按钮确认转换为SOFT ICE的监控程序: 8、这是转换后的提示信息,说明转换SOFTICE监控程序成功: 9、此时这片SST89E516RD芯片便具备了SOFTICE的在线仿真的功能。 10、若要将Keil C编译生成的HEX文件下载到MCU中,则在通讯成功(参见5)后,点击Download或者Dnload/Run UserCode: 11、点击浏览后选择需要下载的HEX文件,然后点击“OK”确定: 12、然后点击“是”确认下载,或者点击“否”放弃下载。 6.2.3实施

27、过程 1.第一个小程序:点亮最右边的数码管,显示设定的数字ORG 0000HJMP MAIN ;转入主程序ORG 0100H ;主程序MAIN: MOV A,#0FEH ;选择最右边的数码管 MOV DPTR,#8300H ;通过SEL选择数码管地址端 MOVX DPTR,A ;将最右边数码管的地址传给低8位p0口,点亮 MOV A,#3FH ;设置显示数字,0 MOV DPTR,#8200H ;通过SEG选择显示的数据 MOVX DPTR,A ;将要显示的数据的地址传给低8位p0口,显示 LJMP MAIN ;使程序一直在主程序中,之前少了这句,编译 通过,却运行不了 END2.第二个小程序

28、:点亮最右边的数码管,从TAB字表中选择想要显示的数字ORG 0000HJMP MAINORG 0100HMAIN: MOV 7EH,#3 ;用地址7EH做十进制数据3的缓冲区 MOV R0,#7EH ;将数据3寄存在R0寄存器 MOV DPTR,#TAB ;将DPTR指针指向字表 MOV A,R0 ;把R0中的数据放到A中,注意区别于A,R0 MOVC A,A+DPTR ;从字表中取出从0开始的编号为3的数存在A MOV DPTR,8200H ;显示A中的数据 MOVX DPTR,A MOV A,0FEH ;选择最右边的数码管 MOV DPTR,8300H MOVX DPTR,ATAB:DB

29、 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND3.第三个小程序:用定时器T0在秒位(最右边的数码管)上实现1S加1显示 初始值的计算: 模式0最长定时约16ms, 模式1最长可定时约130ms, 模式2最长可定时约510us 要实现1s定时,可选择模式1,每个50ms中断一次,中断20次为1s。 根据公式,设初值为X (216 X)*12/(12*106HZ)=50*10-3s 所以算得 X =15536=3CB0H 故初值 (TL0)=0B0H,(TH0)=3CH代码:ORG 0000HJMP MAINORG 000BH ;T0中断入口AIMP SER

30、VE ;转入中断ORG 0030HMAIN: MOV B,#14H ;中断次数20 MOV TMOD,#01H ;打开定时器T0,模式1 MOV TL0,#0B0H ;设定初始值 MOV TH0,#3CH SETB TR0 ;启动定时器T0 SETB ET0 ;允许T0中断 SETB EA ;允许CPU中断 MOV R1,#0 ;将0存入R1 SJMP $ ;等待中断SERVER: MOV TL0,#0B0H ;重设初始值 MOV TH0,#3CH DJNZ B,LOOP ;循环,中断20次后转到一下句 MOV B,#14H ;重设中断次数20 MOV A,#0FEH ;点亮最右边的数码管 M

31、OV DPTR,#8300H MOVX DPTR,A MOV A,R1 ;R1中的数据存入A INC R1 ;R1中数据自加 MOV DPTR,#TAB ;显示R1数据在字表中指的数 MOVC A,A+DPTR MOV DPTR,8200H MOVX DPTR,ALOOP:RETI ;中断返回,区别于RETTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND4.主程序:实现时分秒的计时,采用23:59:59数制 代码用了地址33H作为中断次数的存储,用32H,31H,30H分别作为秒分时数据的存储,在主程序中编写显示程序,在中断中对秒分时进行处理,

32、即1S到,秒位加1,秒位满59,分位加1,分位满59,时位加1,时位满23,全部归零,同时在中断中对秒分时位数据进行DIV处理,提出个位和十位数字,时十位存入39H,时个位存入38H,分十位存入37H,分个位存入36H,秒十位存入35H,秒个位存入34H,分别对应数码管的左边第三个数码管以后的六位。其中用到了R0的#00H与#0FFH的转换来作为标识,来控制1S到后才显示刷新一次,否则数码管显示飞快。5 拓展功能按键实现时间校正 在主函数中进行P3.2,P.3.3,P3.4,P3.5口判断,经试验,发现当按键按下时,有效电平是低电平,故采用JNB指令来判断是否按键,若按下,则将程序转移,键1按

33、下,关闭定时器T1,此时要不断扫描键盘有无按键按下,故需要返回主函数;键2按下时,分位加1,由于主程序不断扫描键盘,这里调用加1函数时采用了和JMP循环扫描键2指令,即当按下键2松开的瞬间,调用程序分位加1,此时肉眼看到数码管时间好像是闪烁一次加1,否则由于人按键时间的延迟,会使分位增加的并不是1,时位的情况与分位类似;当键4按下时,重新启动定时器T1,返回主函数,即实现数码管显示为校正后的时间正常走时的情况。 按键部分代码如下:(完整加键的代码见附录2) JNB P3.2,LP1 ;键1按下 JNB P3.3,LP2 ;键2按下 JNB P3.4,LP3 ;键3按下 JNB P3.5,LP4

34、 ;键4按下LP1: CLR TR1 ;关定时器T1 LJMP LOOP ;循环主函数,使重新扫描键盘LP2: P3.3,LD1 ;键2按下松开瞬间,调用MINUTE,分位加1 JMP LP2 LD1: LCALL MINUTE LJMP LOOPLP3: P3.4,LD2 ;键3按下松开瞬间,调用HOUR,时位加1 JMP LP3 LD2: LCALL HOUR LJMP LOOPLP4: SETB TR1 ;打开定时器T1 LJMP LOOP6.3测试结果 图4.6 实验结果图 正常时间显示:右边六位数码管实现了时分秒的时间显示,秒位每1s加1,待加到59时,下1秒分位显示加1,而个位自动

35、返回00,分位加到59时,下1秒时位显示加1,而分位和秒位自动返回00,从而实现时间显示。时间校正:本实验用了与P3.2,P3.3,P3.4,P4.5口连接的四个键来对分位和时位进行时间的校正,键1按下,数码管上时间显示暂停,定时器T1关闭,键2每按一次,分位显示加1,键3每按一次,时位显示加1,且同时满足满数时的进位要求,键4按下,定时器重新启动,数码管在修改后的时间上正常显示。7 实验总结7.1代码编写过程中出现问题(1)对数码管的结构的测试,是共阴极,故8个数码管的位显示为底电平有效;(2)8位数的高位超过9,前要加0,否则报出错;(3)主程序从0030H 以后的入口进入,之前000BH

36、以与001BH分别为定时器T0,T1中断入口;(4)区别传输数据存在寄存器中还是传输的数据作为地址存放在寄存器中;(5)重设初值的问题,容易忘记;(6)在写调用语言时要考虑调用代码的位置,太靠后的话考虑用长调用指令;(7)尽管代码分解成几个阶段来编写,可能在一个小程序中测试成功,但将定时器和显示整合在一起后中间各种值的传送以与存储都会由于马虎而出现各种问题,故在写汇编语言时必须对整个流程熟悉,而且保持清醒的头脑。(8)学会程序的调试。通过编译可以找到语法上的错误,编译没错误时还不一定一定能运行,当结果不是预期的时候,可以选择一步一步运行,或者设置断点,有时可以通过查看RAM中数据每步变化情况来

37、查看每步代码时候运行以与是否运行正确。(9)本实验中代码不够简化,之前的方案是设置两个定时器,一个计时,一个显示,结果导致代码相当的麻烦,尽管已经去掉了显示的计时器,显示部分还是显得有庸长,如果时间允许,我们会尝试更简便的显示方案。7.2整个实验过程的体会(1)当确定主题后,我们有必要查阅相关的资料,由于是小组协作,故每个人分工明确,这是正式着手开始的应当考虑的。本实验中,炳林主要负责代码的编写以与报告中软件部分的撰写,胡柳依主要负责硬件资料的查询以与报告中硬件、资料概述方面的撰写和绘制电路图,通过合作,共同完成本次试验。 (2)在查资料过程中,我们需要考虑目前实验室所提供的期间以与元件,各种

38、型号需要对应,给查资料带来一定的困难,由于小组人数有限,论文的下载,查阅以与汇编语言的理解都用去的相当的时间。在写报告,展示成果的时候我们也遇到一些问题,首先,需要用流程图来描绘实现方案流程图,由于时间和小组人数的限制,在这方面的完成略显粗糙。其次,由于单片机显示的灯光不是那么明显,在拍照的时候显示的不是那么清晰,至此我们没有更好的电子器件来记录显示的结果。7.3实验误差分析系统的误差跟每秒中断次数和个人计算机有关,系统每次调用定时中断程序的过程中硬件由软件置数来实现的,而在程序调用过程中堆栈建立,参数传递等都是需要耗时,这些时间都被无形中加到了定时长度中去,所以使得每次定时长度都大于理论推导

39、值。解决方案:系统每次调用中断处理程序所执行的操作都是一样的,即系统每次定时的时间误差应该是一个常数,故可以根据个人试验情况稍加修改公式: X=2n-50ms/(振荡周期*12)+x 其中x可有试验测试数据得出。参考文献朝青.单片机原理与接口技术.航空航天大学.涵芳MCS-51系列单片机原理与应用M 航空航天大学王毓银数字电路逻辑设计M 高等教育2004-2 华东. 单片机原理与应用. 电子工业军. 51系列单片机高级实例开发指南. 航空航天大学许伟敏程佩青.多功能电子数字钟2009.电子技术基础实验课程组.电子技术基础实验指导书.大学电子信息学院.附录1 系统显示电路图 系统总电路图附录2

40、系统软件代码ORG 0000HAJMP MAINORG 001BHLJMP SERVEORG 0100HMAIN: MOV TMOD,#10H MOV 33H,#14H MOV R0,#0FFH;标示 CLR A MOV 30H,#17H ;时,23 MOV 31H,#3BH;分,59 MOV 32H,#3BH;秒,59 MOV 34H,#09H;显示秒个位初始化 MOV 35H,#05H;显示秒十位初始化 MOV 36H,#09H;显示分个位始化 MOV 37H,#05H;显示分十位初始化 MOV 38H,#03H ;显示时个位初始化 MOV 39H,#02H ;显示时十位初始化 SETB

41、ET1 ;允许定时器T1中断 SETB EA ;允许定时器T2中断 MOV TH1,#3CH;初始值 MOV TL1,#0B0H SETB TR1 LOOP: LCALL TIME_COUNTER MOV A,#0FEH ;显示秒个位 MOV DPTR,#8300H MOVX DPTR,A MOV A,34H MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR,#8200H MOVX DPTR,A LCALL DELAY LCALL TIME_COUNTER MOV A,#0FDH;显示秒十位 MOV DPTR,#8300H MOVX DPTR,A MOV A,35H M

42、OV DPTR,#TAB MOVC A,A+DPTR MOV DPTR,#8200H MOVX DPTR,A LCALL DELAY LCALL TIME_COUNTER MOV A,#0FBH ;显示分个位 MOV DPTR,#8300H MOVX DPTR,A MOV A,36H MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR,#8200H MOVX DPTR,A LCALL DELAY LCALL TIME_COUNTER MOV A,#0F7H ;显示分十位 MOV DPTR,#8300H MOVX DPTR,A MOV A,37H MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR,#8200H MOVX DPTR,A LCALL DELAY LCALL TIME_COUNTER MOV A,#0EFH;显示时个位 MOV DPTR,#8300H MOVX DPTR,A MOV A,38H MOV DPTR,#TAB MOVC A,A+DPTR MOV DPTR,#8200H MOVX DPTR,A LCALL DELAY LCALL TIME_COUNTER MOV A,#0DFH ;显示时十位 MOV DPTR,#8300H MOVX DPTR,A MOV A,39H MOV DPTR,#TAB

温馨提示

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

评论

0/150

提交评论