模拟交通灯毕业论文(4)

2019-03-29 16:43

4 软件设计

4.1 定时1秒的方法

定时方法我们采用软硬件结合的方法,在主程序中设定一个初值为20的软件计数器使定时器0工作于方式1定时50毫秒,这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。为零表示1秒已到。

4.2 定时器初值计算

定时器工作时必须给计数器送初值,将这个值送到TH和TL中。他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。因此工作于方式1,定时器为16位计数器其定时时间由下式计算:

定时时间=(216-X)×振荡周期×12(或) X=216-定时时间/振荡周期×12

式中x为T0的初始值,该值和计数器工作方式有关。 如单片机的主脉冲频率为12MHZ ,经过12分频 方式0 定时时间=213 × 1微秒=8.192毫秒 方式1 定时时间=216 × 1微秒=65.536毫秒

秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题,定时器需定时50毫秒,故T0工作于方式1,定时20次,就可定时一秒。

4.3 主程序模块

主程序初始化和按键控制,首先将时间、中断、次数、和显示分别进行初始化,然后启动定时器对时间进行判断,将时间送数据缓冲区,调用显示程序,同时扫描按键程序,用无条件跳转指令返回, 再调用显示程序,如此周而复始的循环,如图4.1所示

开始 查灯状态表T0初始化 查时间表中断初始化 次数初始化保存表地址 显示初始化调用显示 扫描按键启动T0 图4.1 主程序流程图

主程序:

初值:X=216-定时时间/振荡周期×12=216-50ms/1us=15536=3CB0H,TH0=3CH , TL0=0B0H。 ORG 0000H AJMP START ORG 0030H

START: MOV TMOD, #01H; 令T0为定时器方式1 MOV TH0, #3CH ;装入定时器初值

MOV TL0, #0B0H

SETB EA ;开T0中断 SETB TF0

SEBT TR0 ;启动T0计数器 MOV R0, #20H ;软件计数器赋初值

LJMP $ ; 等待中断

4.4 中断服务程序模块

进入中断程序后,先保护现场,判断一秒钟到了吗?如果没有到将定时器重装初值恢复现场,返回主程序,如果一秒钟到了,将软件计数器重初值;判断指示灯循环显示完了吗?如果没完,将保地址重新送入程序计数器中,然后再查表下一地址,显示下一组指示灯状态和显示时间,保存下一组程序数据地址,将定时器重装初值,恢复现场,返回主程序,如果完了,查表首地址,查时间地址,保存下一地址,将定时器重装初值,恢复现场,返回主程序。同时一秒到了应先判断个位是否为0,如果个位是0,判断十位是不是0,如果十位也是0,判断交通灯是否安黄、绿、红的顺序循环完必,如果没循环完应查下一组数据继续循环,如果循环完必,应查表首地址,周而复始的循环,如果十位不是0,应将十位先减1,个位送9,然后返回,再进行中断定时一秒,然后再判断,如果个位不是0,应将个位减1,将定时器重装初值,恢复现场。重新周而复始的循环,如图4.2所示。

图4.2 中断程序流程图

4.5 显示程序模块

显示程序采用动态显示,由位码控制那一个数码管显示,由段码控制数码管显示什么数值,根据中断程序显示时间来查表显示数值,从第一位到第四位逐个点亮,同时每显示一位判断一次四位显示完了吗?没有显示完进行显示下一位,显示完了从头开始再循环。如图4.3所示

DESPLAY: MOV R2 , #01H NEXT3: MOV A , @R0

U2: RET

显示程序入口将段码送口将位码送口调用延时将位码左移判断显示完了吗?将下一段码送口子程序返回图4.3 显示程序流程图

;将位码送R2

MOV R0 , #30 ;将段码送R0

MOV DPTR , #TAB2 MOVC A , @A+DPTR

MOV P0 , A ;将段码送R0 MOV P1 , R2 ;将位码送R2 LCALL DELAY1 ;调用延时程序 MOV A , R2

JB ACC.3 , U2 ;显示完转U2

RL A ;未显示完,将未码左移 MOV R2 , A ;将位码重送、R2中 INC R0 ;指向31H LJMP NEXT3

;显示返回


模拟交通灯毕业论文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018年中考语文试卷真题汇编:实用类文本阅读

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: