单片机课程设计报告院系:****班别:****课程名称:****姓名:****学号:****指导老师:****日期:****年**月**日一、设计任务与要求用89C51设计一个2位的LED数码作为“秒表”。
显示时间为00—99秒,每秒自动加1,另设计一个“开始”键和一个“复位”键。
能存储三组计时。
按一次开始键,开始计数,第二次按开始键后,计时停止。
之后再按开始键,则轮流显示存储的三个计时值,直到按复位键后,再按开始键,则开始重新计时。
二、设计思想和设计说明本设计利用AT89C52单片机的定时器/计时器定时和计数的原理,使其能精确计时。
设计中包括硬件电路的设计和系统程序的设计,其硬件电路主要有主控制器、计时与显示电路和复位电路等。
主控制器用AT89C52,显示电路采用共阴极LED数码管显示计时时间。
利用中断系统使其能实现开始暂停的功能。
P3.2,P3.3开口接2个按钮,分别实现开始,暂停,复位的功能。
电路原理图设计最基本得要求是正确性,其次布局合理,最后在正确性和布局合理的前提下力求完美。
三、硬件原理框图四、硬件原理图与其软件配合1、程序存储器2、数据存储器六、程序流程图七、源程序清单====================================================== ORG 0000HAJMP MAINORG 0003HAJMP X0_INTORG 000BHAJMP T0_INTORG 0013HAJMP X1_INTMAIN:MOV TMOD,#01H ;T0定时方式1MOV TH0, #(65536-50000) / 256 ;50ms@12MHzMOV TL0, #(65536-50000) MOD 256;SETB TR0SETB ET0 ;开启定时中断SETB EX0SETB EX1SETB EA ;定时器初始化结束,下面循环显示即可MOV R1, #99H ;0~99计数.MOV R7, #1 ;50ms计数.MOV P0, #3FHMOV P2, #3FHLOOP:SJMP LOOP;-----------------------------------------------------------DELAY: ;延时子程序.AA4: MOV R4, #0DJNZ R4, $DJNZ R4, $RET;-----------------------------------------------------------X0_INT: ;启动/停止CPL F0RETI;-----------------------------------------------------------X1_INT: ;清零MOV R1, #0MOV P0, #3FHMOV P2, #3FHRETI;-----------------------------------------------------------T0_INT: ;50ms中断执行一次.MOV TL0, #(65536-50000) MOD 256;MOV TH0, #(65536-50000) / 256 ;50ms@12MHzDJNZ R7, T0_END ;中断不到20次.MOV R7, #20JNB F0, T0_ENDMOV A, R1ADD A, #1DA AMOV R1, AANL A, #0FHMOV DPTR, #TABMOVC A, @A+DPTR ;查出段码MOV P2, AMOV A, R1SWAP AANL A, #0FHMOVC A, @A+DPTR ;查出段码MOV P0, A ;显示十位数.T0_END:RETI;-----------------------------------------------------------TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH, 6FHEND====================================================== =====八、芯片资料AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52实物图图2 AT89C52引脚图主要功能特性:1、兼容MCS51指令系统2、8k可反复擦写(大于1000次)Flash ROM;3、32个双向I/O口;4、256x8bit内部RAM;5、3个16位可编程定时/计数器中断;6、时钟频率0-24MHz;7、2个串行中断,可编程UART串行通道;8、2个外部中断源,共8个中断源;9、2个读写中断口线,3级加密位;10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能;11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。
管脚说明:VCC、VPP:接电压。
VSS:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,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编程和校验时接收高八位地址信号和控制信号。
P2.6和P2.7端口分别控制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V通过IN4148二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码管就能正常显示数字。
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)。
九、收获体会通过这次的秒表设计,我对一些专业知识和电子设计有了更深的了解,同时也尝试着去应用自己的所掌握的知识。
本次设计主要是对已学习的模拟电子技术、数字电子技术和单片机的综合应用,同时加上电路等知识,设计完成了利用软件模拟的秒表。
经过几天的奋战,我感受很深。
在设计过程中深感自己在培养动手能力这方面还需很大的努力。
单片机课程设计不仅给我提供了一个很好的展现应用自己所掌握的知识的平台,又是检验自己所学知识的一次考核。
在设计的过程中我也不可避免的遇到了很多的问题。
尤其是在调试过程中,会因为某些原因出不来结果,但通过老师对我的帮助最后还是成功的完成了这次的设计。
经过过这次的系统设计,我也发现了不少自己不会的知识,通过查询各方面资料,我也进步了很多,也学会了很多上课时没掌握的东西,最后在调试结果出来后,我更是无比的兴奋,无比的自豪。
总之,通过这次电子课程设计,我对自己的知识有了更好的掌握和应用,这使我在以后的学习和生活中受用终身。