目录 1概述: 3 2设计内容 3 3设计思想 4 4教学实验系统连线 4 5所用芯片工作原理 4 6实验连线图 5 7程序流程图 6 8程序源代码 6 9设计心得 10 电子秒表 1概述: 本实验利用单片机的定时器/计数器定时和记数的原理,结合dvcc实验箱上的集成电路芯片8032、LED数码管以及实验箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本实验设计了四个开关按键:其中一个按键按下去时以1秒加一开始计时,即秒表开始键(本实验中当开关从1变为0时开始计时),另一个按键按下去时暂停计时,使秒表停留在原先的计时(本实验中当相应开关从1变为0时即停止计时),第三个按键按下去时清0(本实验中当相应开关从1变为0时即停止计时),第四按键按下去则是以每10ms秒快速加一计时(本实验中当开关从1变为0时开始计时)。本实验中开始时都要使各按键回到各初始位置,即都处于1状态。 2设计内容 用AT89C51设计一个2位LED数码显示“秒表”,显示时间为00~99秒,每秒自动加一。另设计一个“开始”按键和一个“复位”按键。再增加一个“暂停”按键和一个“快加”按键(每10ms快速加一)。按键说明:按“开始”按键,开始计数,数码管显示从00开始每秒自动加一;按“复位”按键,系统清零,数码管显示00;按“暂停”按键,系统暂停计数,数码管显示当时的计数;按“快加”按键,系统每10ms快速加一,即数码显示管在原先的计数上快速加一。该实验要求进行计时并在数码管上显示时间,则可利用DVCC系列单片机微机仿真实验系统中的芯片8032(芯片的功能类似于芯片AT89C51,其管脚功能也和AT89C51的管脚功能类似)中的P3.2管脚做为外部中断0的入口地址,并实现“开始”按键的功能;将P3.3做为外部中断1的入口地址,并实现“清零”按键的功能;将P3.0做为数据信号DATA输入的入口地址;将P3.1做为时钟信号CLK输入的入口地址。定时器T0作为每秒加一的定时器;定时器T1作为“快加”键的定时器。其中“开始”按键当开关由1拨向0(由上向下拨)时开始计时;“清零”按键当开关由1拨向0(由上向下拨)时数码管清零,此时若再拨“开始”按键则又可重新开始计时。 3设计思想 该实验要求进行计时并在数码管上显示时间,则可利用DVCC系列单片机微机仿真实验系统中的芯片8032(芯片的功能类似于芯片AT89C51,其管脚功能也和AT89C51的管脚功能类似)中的P3.2管脚做为外部中断0的入口地址,并实现“开始”按键的功能;将P3.3做为外部中断1的入口地址,并实现“清零”按键的功能;将P3.0做为数据信号DATA输入的入口地址;将P3.1做为时钟信号CLK输入的入口地址。定时器T0作为每秒加一的定时器;定时器T1作为“快加”键的定时器。其中“开始”按键当开关由1拨向0(由上向下拨)时开始计时;“清零”按键当开关由1拨向0(由上向下拨)时数码管清零,此时若再拨“开始”按键则又可重新开始计时。 4教学实验系统连线 4.1 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。 4.2 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。 4.3 把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上; 5所用芯片工作原理 8032是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效的微控制器。8032芯片如下 5.1主要特性: ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·全静态工作:0Hz-24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 6实验连线图
7程序流程图
8程序源代码 ;******************************************************************; 描述: 2位LED数码显示"秒表",显示时间为00~99秒,每秒自动加1,; 一个"开始"键,一个"复位"键,一个"暂停"键,一个“快加”键。; 调用子程序:暂停键子程序,计时键子程序,清0键子程序,加一子程序; 显示子程序,定时子程序;所用特殊寄存器:寄存器A,寄存器C;所用中断:外部中断INT0、INT1,定时器T0、T1;*************************************************************************** org 0000h ajmp main ;主程序入口地址 org 0003h ajmp zhongduan0 ;中断0入口地址 org 000bh ajmp yanshi ;定时器T0入口地址 org 0013h ajmp zhongduan1 ;中断1入口地址 org 001bh ajmp dingshi1 ;定时器T1入口地址 org 0030h;***********************************************************; 主程序;***********************************************************main: mov tcon,#05h ;主程序开始 外部中断跳变模式 mov tmod,#11h ;定时器0,1模式1 mov ie,#8fh ;开总中断,中断0,1,定时器0,1 mov dptr,#tab mov r1,#00h mov r2,#00h mov r3,#40 ;循环次数40 mov tl0,#2Ch ;置初值,定时25MS mov th0,#0CFh mov tl1,#78h ;置初值,定时10MS mov th1,#0ech clr tr0 ;关定时器 clr tr1;***********************************************************; 暂停键K3,快加键K4程序;***********************************************************here:jb p1.0,hereshow:clr tr1 clr tr0 acall xianshikuaijia:jb p1.2,kuaijia ;等待P1.2为0 快加 clr tr0 setb tr1here3:jnb p1.2,here3 ajmp here;***********************************************************; 外部中断INT0子程序-----计时按键K1子程序;***********************************************************zhongduan0: setb tr0 ;计时按键 reti;***********************************************************; 外部中断INT1子程序----复位按键K2子程序;***********************************************************zhongduan1:clr tr0 ;复位按键 clr tr1 mov 12h,#00h mov 11h,#00h acall xianshi ;调用显示子程序 mov r1,#00h mov r2,#00h reti;***********************************************************; 加一子程序;***********************************************************jia1: inc r1 ;加1子程序 cjne r1,#0ah ,loop ;判断是否到表尾 mov r1,#00h inc r2 cjne r2,#0ah,loop mov r2,#00hloop: mov 12h,r1 ;重新赋值 mov 11h,r2 ret;***********************************************************; 显示子程序;***********************************************************
xianshi:mov r7,#02h ;2个数码管显示子程序 mov r0,#12hloop5: mov r6,#08h ;8位2进制数 mov a,@r0 movc a,@a+dptrloop6:rlc a ;循环左移 clr p3.1 mov p3.0,c setb p3.1 djnz r6,loop6 dec r0 djnz r7,loop5 ret;***********************************************************; 定时器T0子程序;***********************************************************yanshi: mov tl0,#2Ch ;定时子程序 mov th0,#0CFh djnz r3,loop7 acall jia1 ;调用加1子程序 acall xianshi ;调用显示子程序 mov r3,#40loop7: reti;***********************************************************;定时器T1子程序;*********************************************************** dingshi1:mov tl1,#78h ;置初值,定时10MS mov th1,#0ech clr tr0 setb tr1 mov 12h,r1 mov 11h,r2 jnb p1.0,show acall jia1 acall xianshilop7:reti;***********************************************************tab:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh end 9设计心得 1、 认真审题,看懂题目的要求!选择适当的课题,不益太简单或者太难。做到既能把课题完成又能锻炼自己的能力!2、 根据课题要求,复习相关的知识,查询相关的资料。3、 根据实验条件,找到适合的方案,找到需要的元器件及工具,准备实验。4、 根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序。然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。5、 还要根据实验的实际情况,添加些额外程序来使系统更加的稳定,如开关的消震荡(采用延迟)。6、 程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。7、 该实验的程序可以参考DVCC系列单片机微机仿真实验系统实验指导书中的串并转换实验,也可自己根据自己熟悉的方法来编程。 8、 在设计控制开关时,注意2个中断的打开和关闭的先后顺序,否则就会出错。9、 这次的单片机课程设计重点是理论与实际的相结合。不再只读书了。10、 该设计从头到尾都要自己参与,熟悉了对整个设计的过程,更系统的锻炼了自己。