毕业论文:基于单片机数字式电子秒表电路设计内容摘要:

PU( AT89C51)请求中断。 当 CPU 相应中断,执行中断服务程序,并从 FIF0 寄存器中读取编码数据之后,则 IRQ 中断信号将自动撤销。 如果上一个键的编码数据尚未取走,下一个键又被按下,则新的键码会自动进入 FIF0 由 8 个存储单元组成,故最多可依次暂存 8 个键码。 只有在读所有数据时, IRQ 中断请求信号才会撤销。 在中断服务程序中,CPU是用片外取数指令从 FIF0 中读取数据。 LED 数码显示电路的实现 由于 LED 数码 显示器为多位,采用动态显示扫描显示方式,即逐基于单片机数字式电子秒表电路设计 13 个地循环地点亮各位显示器。 这样虽然在任一时刻只有 1 位显示器被点亮,但是由于人眼具有视觉残觉效益,看起来与全部显示器持续点亮的效果基本一样。 为了实现 8 个 LED 显示器的动态扫描显示,段码控制信号由 8279芯片的 outA0— outA outB0— outB3 显示器刷新寄存器输出。 而位控制信号由 8279 芯片的扫描线 SL0、 SL SL2 经译码器 74LS138 输出 0Y 、1Y 、„ 7Y 共 8 个扫描线与 LED 显示器数码管共阴极相连。 8279 芯片数据口首地址为 FF80H。 8 位 LED 显示器的每位显示段码通过显示字符子程序以查看方式( MOVC A,@A+DPTR)进行确定和输出显示子程序( Display),显示缓冲区的首地址为 50H。 硬件电路的实现 总电路图 将微处理器 AT89C5接口芯片 8279,以及各个功能元件按要求进行线路连接,所得电路图见附录。 硬件电路的工作过程 首先,软件程序已固化在程序存储器 FLASH ROM 中。 开启直流电源 +5V,经 R2C3 组成的微分电路将微处理器 AT89C5 8279 接口芯片进行清零。 按 C 键,时钟清零;按 B 键,输入时钟初始值,并按北京时间要求把时、分依次通过 0— 9 和 0.— ;然后,按 A 键,时钟开始计时。 其次,电子秒表功能,按 D 键将时钟停止计时;通过按 C 键,时钟清零;按 A 键,启动电子秒表开始计时;按 D 键,电子秒表停止计基于单片机数字式电子秒表电路设计 14 时。 再次,为保证处理器 AT89C5接口芯片 8279 可靠工作,外加手动复位功能 SW1。 基于单片机数字式电子秒表电路设计 15 序的设计与实现 电子秒表主程序设计 主程序的设计构思 主程序包括三个部分:第一部分为初始化设置,包括设置堆栈指针、8279 初始化、定时器 /计数器初始化、显示缓冲区初始化、开中断、定时器 /计数器启动等。 定时器 /计数器初始化就是选择定时器 /寄存器 TMOD 的工作方式,它的高 4 位控制定时器 T1,低 4 位控制定时器 T0。 TMOD 中各位的定义如下: T1 T0 GATE CF1 M1 M0 GATE CF1 M1 M0 0 0 0 1 0 0 0 0 TMOD 其中: CF1: T/C 功能选择位,当 CF1=1 时为计数方式;当 CF1=0时为定时方式。 M1M0:T/C 工作方式定义位, M1M0=01 时为工作方式,16 位定时 /计数器。 TMOD=10H。 设置定时 /计数器初始值,定时 10ms,计数初值 X=DC00H( MOV TL1,00H MOV TH1,0DCH)。 显示缓冲区初始化,其显示缓冲区的首地址(最低位)为 50H。 共送入 8 个字符( MOV R0,50H MOV R2,08H)。 二部分主要是通过键扫描 实现各种人机对话功能。 核心部分是键扫基于单片机数字式电子秒表电路设计 16 描子程序 GETKEY。 GETKEY 的主要功能是先通过读 8279 的状态字,判断是否有键按下,如有键按下则通过读 FIF0 RAM 命令,读得键值,通过查表得到相应的键号( 0~ F 号键相应的键号分别为 30H~ 3FH)。 GETKEY 子程序的出口条件是:如无键按下, A 累加器的值为 00H;如有键按下, A 累加器的值为 FFH, B 寄存器中的内容则为键号。 通过按键识别实现相应的人机对话功能。 各项人机对话功能如下: 按“ C”键,秒表清零功能:在主程序中将键号和 3CH 比较,如相等,则调用时钟清零子程 序( CLEAR— T)。 该子程序功能是将显示缓冲区 50H~ 57H(分别存放十时、时、十分、分、十秒、秒、百毫秒、十毫秒的数值 )全部清零,显示全零。 按“ A”键,时钟启动计时功能:在主程序中将键盘扫描所得键号和 3AH 比较,如相等,则调用时钟启动计时子程序( START— T)。 该子程序的功能是将 TR1 置 1,启动定时器 /计数器 1 工作。 按“ D”键,时钟停止计时功能:在主程序中将键盘扫描所得序号和 3DH 比较,如相等,则调用时钟停止计时子程序( STOP_T)。 该子程序的功能是将 TR1 置 0,关闭定时器 /计数器 1。 按“ B” 键,设置时钟初值功能:在主程序中将键盘扫描所得键号和 3BH 比较,如相等,则调用设置时钟初值子程序( SET_T)。 该子程序的功能是通过按 8 个数字键,设置时钟各位(十时、时、十分、分、十秒、秒、百毫秒和十毫秒)的初值。 程序的设计思路是:先通过键扫描确认是否有键按下,然判断键值是否在 0~ 9 之间(即键号是否在30H~ 39H 之间),以排除非数字键。 后将键值( 0~ 9)依次送入显示缓冲区 50H~ 57HDANYUAN ,再调显示子程序实现显示。 其中调用了GETWORD 子程序。 该子程序的功能是在键扫描判断出有键按下后,再判断 是否按的是 0~ 9 数字键(键号为 30H~ 39H)。 判断方法是将键基于单片机数字式电子秒表电路设计 17 号与 C6H 相加,如有进位,则表示非 0~ 9 数字键。 若在 8 次键入过程中任何一次输入了非数字键,则 8 位 LED 数码管全部显示为零,要求重新输入。 SET_T 子程序用一个循环程序实现上述 8 次键入的功能。 第三部分是实现电子秒表的显示。 主要调用显示子程序 DISP。 该显示子程序与以前所述子程序不同之处是其中某些位要显示小数点。 按照课题要求,为区分时、分、秒、毫秒,要求时钟显示格式为.,即 8 位数据显示中每间隔一位要显示一个小数点。 为能显示小数 点,本显示子程序中的 DISLED 子程序与以往有所不同,在以 LEDSEG 为起始地址的段码表中,增加了 16 个能显示小数点的段码值,如显示“ 3”的段码为 3FH,而显示“ 3.”的段码为 BFH。 这段码的变化在懂得 LED 数码管工作原理的基础上应不难理解。 当在 DISLED子程序的段码表中加入 16 个带小数点的段码后,为实现预定的显示格式,只要在原显示子程序中加上一条 ADD A, 10H 指令即可。 这样,当要求显示数据为“ 3”时,原通过查表得到的段码应为 4FH,而现为CFH,即显示“ 3.”,从而使 0LED 数码管上显示的数据均带有小数点。 基于单片机数字式电子秒表电路设计 18 主程序的流程框图 图 主程序框图 开始 设置堆栈指针 8279 芯片初始化 定时器 /计数器 1 初始化 显示缓冲区初始化 开中断 键盘扫描 是否有键按下 键号送 A 累加器 判是 否为 C 键 判是否为 A 键 判是否为 D 键 判是否为 B 键 显示 调设置时钟初值子程序 调停止计时子程序 调启动计时子程序 调时钟清零子程序 N N N N Y Y Y Y N Y 基于单片机数字式电子秒表电路设计 19 主程序的实现 ORG 0000H ;主程序起始地址 LJMP START ;转主程序 ORG 001BH ;定时器 T1 中断入口地 ;址 LJMP CTC_T1 ;转中断 服务程序 ORG 0040H START: MOV SP,5FH ;设置堆栈指针初始化 ;程序 LCALL P8279 ; 8279 初始化 MOV TMOD,10H ;设定时器 /计数器 1 为 ;定时方式,工作方式 1 MOV TL1,@00H ;定时 10ms MOV TH1,0DCH MOV R0,50H ;时钟缓冲区清零 MOV R2,08H CLR A LOOP0: MOV @R0,A INC R0 DJNZ R2,LOOP0 SETB EA ;允许中断 SETB ET1 WAIT: LCALL GETKEY ;读键盘 CJNE A,0FFH,CONT ;判断是否有键输入 MOV A,B ;键号送 A CJNE A,3CH,KEY_A ;输入键是“ C”键,转 ; CLEAR_T LCALL CLEAR_T SJMP WAIT KEY_A: CJNE A,3AH,KEY_D ;输入键是“ A”键, ;转 START_T 基于单片机数字式电子秒表电路设计 20 LCALL START_T SJMP WAIT KEY_D: CJNE A,3DH,KEY_B ;输入键是“ D”键, ;转 STOP_T LCALL STOP_D SJMP WAIT KEY_B: CJNE A,3BH,CONT ;输入键是“ B”键, ;转 SET_T LCALL SET_T SJMP WAIT CONT: LCALL DISPLAY ;显示时间 SJMP WAIT ;循环 CLEAR_T: CLR TR1 ;时钟清零子程序,关 ;计数器 MOV R0,50H ;时钟缓冲区清零 MOV R2,08H CLR A LOOP: MOV @R0,A INC R0 DJNZ R2,LOOP LCALL DISPLAY ;显示 RET START_T: SETB TR1 ;电子钟开始计时子程序 RET STOP_T: CLR TR1 ;电子钟停止计时子程序 RET SET_T: CLR TR1 ;关计数器,设置时钟初 ;值子程序 MOV R1,50H MOV。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。