目录1设计要求.. (1)2设计方案及实现 (1)2.1系统功能分析 (1)2.2功能实现方案 (1)3使用的元件及功能 (3)3.1 89c51引脚图与功能说明 (3)3.2 LED数码管 (6)4实现电路图及调试 (6)4.1实现电路图 (6)4.2 调试及问题解决 (7)4.3 仿真结果 (7)5心得体会 (8)6 参考文献 (9)7 附录 (9)电子跑秒表的设计内容提要:本次课程设计通过电子秒表的设计与制作,学到了单片机最小系统的概念与设计,对单片机调用、定时等功能模块有了进一步的了解,并利用这个设计对单片机的编程方法有了一定程度的深入了解,并对51单片机有了深入的了解。
关键字:89c51单片机、键控、中断、数码管显示1设计要求以89s51单片机为核心芯片,设计一个模拟电子跑秒表,要求如下:A、利用LED显示秒表的计时过程;B、可以对秒表进行初始时间设置;C、可以调整秒表的时间。
2设计方案及实现2.1系统功能分析本次课设设计电路通过以下四个按键实现要求功能:Start键实现秒表的启动计时;Stop实现秒表的清零;Pause键实现计时的停止;Set键实现对秒表的时间预置。
同时以上各键按下后能在数码管上清晰显示时间的改变,以供使用者操作以及测试。
2.2功能实现方案由系统的功能分析可以得到,功能的实现是通过对按键的控制得到,在源代码的编写中则可以通过对各个按键的调用实现键控功能,同时显示在数码管上。
设计语言采用汇编语言,通过对按键的判断(JNB语句)以及调用(DISP,INC等),完成键控数码管显示。
实现方案流程图如下所示:图1 程序流程图3使用的元件及功能3.1 89c51引脚图与功能说明AT89c51是一个40引脚的芯片,其中继承了运算器、控制器、存储器,是一个高度集成的芯片,可将编写编译后的程序载入到芯片中,进而实现能够达到要求的功能。
其管脚图如下:图2 89c51管脚图管脚说明: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:来自反向振荡器的输出。
3.2 LED数码管数码管管脚图如下所示图3 LED数码管管脚图LED数码管采用的是有发光二极管按一定的结构组合起来的显示器件。
课设中使用的显示数码管为共阳极数码管,A-G脚因输入不同的二进制编码可以显示不同的数字。
在实验中则为高低电平的判断显示。
4实现电路图及调试4.1实现电路图图4 电子跑秒表实现电路图4.2调试及问题解决将所编写的电子秒表的程序下载到芯片中,调试程序。
遇到的问题就是数码管不能正确的显示。
没有正确编写数码管的显示程序,将小数点的显示位置改正,同时实验的数码管采用的是共阳的数码管显示,因为0亮1不亮,必须严格按照这个来编写程序。
反复进行测试,对四个按键分别进行测试,检查是否完成预定的四个功能:启动、暂停、预置时间、停止。
是否实现了定时/计数器中断。
4.3 仿真结果程序成功运行仿真结果如下图所示:图5 仿真结果图5心得体会通过这个为期二周的单片机课程设计使我对AT89C51单片机有了更一层深入的了解,同时加强了动手实践能力。
在这次课程设计中虽然也遇到了各种困难,但通过资料书以及求解于同学都解决了问题。
同时结合实践进一步巩固了课本上的理论知识,将学习的理论基础知识又加深了一遍。
认识到我们所学的知识还是远远不够的,我们需要不断学习提升自己的能力,不仅仅是动手能力,还有编程能力和考虑问题的全面性。
单片机在日常生活中应用广泛,结合这学期在学的嵌入式系统原理,我们更多的了解了单片机的发展现状和发展趋势,以及在生活中的广泛应用,其实80C51只是我们所接触的一种简单的单片机,在实际应用中,有各个公司生产的不同型号的、针对不同功能设计的、以及根据用户的需要和发展自主研发设计的单片机还有很多,由此设计出来的嵌入式系统更是数不胜数。
能够亲身的进行自我实践,并进行实际的应用,其实使我们对现行单片机的一次深入的了解,并能够提升我们将来在学习工作遇到的单片机设计问题。
6 参考文献[1].林土胜.《单片机技术及工程实践》.机械工业出版社.2010[2].李群芳张士军.《单片微型计算机与接口技术》.电子工业出版社.7 附录汇编语言程序源代码ORG 0000HAJMP MAINORG 0003HRETIORG 0013HRETIORG 000BHLJMP T100MSORG 001BHRETIORG 0100HMAIN:MOV P2,#0FFHMOV P0,#00HMOV TMOD,#01H MOV TH0,#3CHMOV TL0,#0B0HMOV DPTR,#TABMOV R0,#00HMOV R1,#00HMOV R2,#00HMOV R3,#00HMOV R5,#02HSETB EASETB ET0 START0:JNB P1.1, START1JNB P1.3,STOPJNB P1.5,PAUSEJNB P1.7,SET1LCALL DISP LJMP START0DISP: MOV A,R3MOVC A,@A+DPTRMOV P0,ASETB P2.0LCALL DELAYCLR P2.0MOV A,R2MOVC A,@A+DPTRMOV P0,ASETB P2.1LCALL DELAYCLR P2.1MOV A,R1MOVC A,@A+DPTRMOV P0,ASETB P2.2CLR P0.7LCALL DELAYCLR P2.2SETB P0.7MOV A,R0MOVC A,@A+DPTRMOV P0,ASETB P2.3LCALL DELAYCLR P2.3RETTAB: DB 0Xc0,0Xf9,0Xa4,0Xb0,0X99 DB 0X92,0X82,0Xf8,0X80,0X90 DELAY: MOV R6,#20D1: MOV R4,#248DJNZ R4,$DJNZ R6,D1RETSET1:JNB P1.7,SET1 INC R3LCALL DISPLJMP START0START1: SETB TR0 LJMP START0RETISTOP: CLR TR0 MOV R0,#00HMOV R1,#00HMOV R2,#00HMOV R3,#00H LCALL DISP LJMP START0 PAUSE: CLR TR0LCALL DISP LJMP START0 RETIT100MS: CLR TR0 MOV TH0,#3CHMOV TL0,#0B0HDJNZ R5,EXITMOV R5,#02HINC R0CS1: CJNE R0,#0AH,CS2 MOV R0,#00HINC R1CS2: CJNE R1,#0AH,CS3 MOV R1,#00HINC R2CS3: CJNE R2,#0AH,CS4 MOV R2,#00HINC R3CS4: CJNE R3,#0AH,EXIT MOV R3,#00HEXIT: SETB TR0RETIEND。