电子跑表设计
- 格式:doc
- 大小:296.00 KB
- 文档页数:25
单片机课程设计说明书电子跑表设计系、部:电气与信息工程系学生姓名:成高强指导教师:廖代文职称教师专业:电气自动化技术班级:电气0901班完成时间:2011-11-24目录一、系统总体方案选择与说明 (3)1.设计要求 (3)2.设计思路 (3)二、系统结构框图与工作原理 (4)1.硬件电路的设计方案 (4)2.软件设计方案 (4)3.工作原理说明 (5)三、各单元硬件设计说明及计算方法 (5)四、软件设计与说明(包括流程图) (9)五、使用说明 (19)1.系统说明 (19)2.使用说明 (20)六、学习体会 (20)七、参考文献 (20)八、附录:程序清单 (21)一、系统总体方案选择与说明1.设计要求:要求以MCS-51系列单片机为核心设计一个多功电子表,具有电时钟和跑表功能。
做时钟时在4位LED 显示器上显示分、秒,做跑表时显示范围000.0秒~999.9秒并具有跑表启动和跑表复位功能键。
电子时钟的计时范围00分00秒59分-59秒,并在4位LED 显示器上显示;做跑表时显示范围000.0秒-999.9秒,当按下启动按钮跑表开始计时,按下停止按停止计时,当按下复位按钮跑表回零。
2.设计思路1)计时单元由单片机内部的定时器/记数器来实现。
2)时间显示功能通过LED数码管动态扫描来实现。
利用专用键盘/显示器接口芯片8279可实现对键盘/显示器的动态扫描,由于数码管要显示时钟,还要显示跑表,因此,我分别用31H、32 H计时钟,用R5、R6计跑表,当要显示哪一个的时候,就把哪一个地址送到显示地址35 H、36 H 中,达到跑表显示与时钟显示互不影响。
3)表的启动/复位/清零功能由软件来实现。
P1.0接启动键,P1.1接停止键,P1.2接清零键。
4)由于跑表和时钟的中断服务程序有冲突,我们就把跑表的中断服务程序写成另外的子程序了,这样就必须要引入标志位了,我们在此用42H 标志位,用标志位来给跑表计数。
二、 系统结构框图与工作原理1.硬件电路的设计方案根据设计要求和设计思路,硬件电路有两部分组成,即单片机按键电路,LED 显示器电路。
图1 为硬件电路设计框图。
图1 硬件电路设计框图2.软件设计方案根据设计要求和设计思路,进行模块设计。
8279的初始化程序模块,时钟记时程序模块,数制转换模块,显示模块,跑表工作模块。
图2为软件设计框图。
图2 电子跑表软件设计的模块MC51 8279 LED 显示电路按键电路 主程序模块8279初始化模块 时钟记时模块 数制转换模块显示模块跑表工作模块3.工作原理说明利用T0定时器定时100ms,即0.1s,用R5 R6作为跑表的计算器,用R7作为时钟计数器。
判断SRART键是否按下,若按下,则建立标志F0=1,同时将R5 R6单元清零;否则F0=0。
在T0中断服务中,判断F0,若F0=0,则用软件计数器R7计数;若F0=1,则在R7计数同时,还要用软件R5 R6计数。
中断返回后,判断F0,若F0=0,即作为时钟使用时,则R7=10为一秒,60秒则清零。
若F0=1,即作为跑表使用时,将R5 R6的值进行十进制调整,即为跑表显示值,到9999则R5 R6清零,重新开始计数。
若STOP键按下,则R5 R6停止计数。
在跑表停止状态下,则返回显示当前时间。
三、各单元硬件设计说明及计算方法1.在单片机中,定时功能既可以由硬件(定时/记数器)实现,也可通过软件定时实现。
硬件定时是利用单片机内定时器定时,启动以后定时器可与CPU并行工作,不占用CPU时间,CPU有较高的工作效率。
采用硬件定时和软件定时并用的方式,即用T0出中断功能实现50ms定时,通过软件延时程序实现1s定时。
.定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
2.8279是通用的可编程键盘/显示器接口芯片,可实现对键盘/显示器的自动扫描,不仅可以大大节省CPU对键盘/显示器的操作时间,从而减轻CPU的负担,而且显示稳定,程序简单,不会出现误动作。
8279具有8个先进先出的的键输入缓冲RAM单元,并提供16字节的缓冲RAM。
8279将段码写入显示缓冲RAM,8279自动对显示器扫描,将其内部显示缓冲RAM中的数据在显示上显示出来。
CUP通过对8279编程(将命令字写入8279)来选择其工作方式,简述如下:1)键盘/显示器方式设置命令字D7 D6 D5 D4 D3 D2 D1 D00 0 0 D D K K K高三位D7D6D5位为特征位000,D4D3两位用来设定显示方式,其定义如下:D4 D3 显示器方式0 0 8个字符显示—左边输入0 1 16个字符显示—左边输入1 0 8个字符显示—右边输入1 1 16个字符显示—右边输入8279最多可用来控制16位LED显示器,当显示位数超过8位时,均需设定为16为字符显示。
显示器的每一位对应一个8位的显示缓冲RAM 单元CPU将显示数据写入缓冲器时有左边输入和右边输入。
左边输入是较简单的方式,地址为1-15的显示缓冲RAM单元分别对应显示器的1(左)位-15(右)位。
CPU依次从0地址或某一个地址开始将段数据写入显示缓冲RAM。
D2D1D0为键盘工作方式选择位,如下表:D2 D1 D0 键盘工作方式0 0 0 编码扫描键盘,双键锁定0 0 1 译码扫描键盘,双键锁定0 1 0 编码扫描键盘,N键依次读出0 1 1 译码扫描键盘,N键依次读出1 0 0 编码扫描传感器矩阵1 0 1 译码扫描传感器矩阵1 1 0 选通输入,编码扫描显示器方式1 1 1 选通输入,译码扫描显示器方式当设定为编码工作方式时,内部计数器作二进制记数,四位二进制计数器的状态扫描线SL0-SL3输出,最多可为键盘/显示器提供16根扫描线(16选1)。
双键锁定,就是当键盘中同时有两个以上的键被按下时,任何一个键的编码信息君不能进入FIFO RAM中,直至仅剩下一键保持闭合时,该键的编码信息方能进入FIFO。
2)写显示缓冲RAM命令字D7 D6 D5 D4 D3 D2 D1 D01 0 0 AI A A A A高三位100为该命令字的特征位,该命令给出了显示缓冲RAM的地址信息,当CPU执行写显示缓冲RAM时,首先用该命令字给出要写入显示缓冲RAM地址,四位二进制代码。
AAAA可用来寻址显示缓冲RAM的16个存储单元。
若AI=1,则CPU在第一次写入时须给出地址外,以后每次写入,地址自动加1,直至所有显示缓冲RAM全部写毕。
3)读显示缓冲RAM命令字D7 D6 D5 D4 D3 D2 D1 D00 1 1 AI A A A A在CPU读显示数据之前先输出读缓冲RAM的命令。
D7D6D5=011该命令字的特征位。
22二进制代码AAAA用寻址显示缓冲RAM的一个缓冲单元。
AI为自动增量标志,若AI=1则CPU每次读出后,地址自动加1。
4)清除命令字D7 D6 D5 D4 D3 D2 D1 D01 1 0 CD CD CD CF CA该命令字用来清除FIFO RAM和显示缓冲RAM。
其中D4D3D2(CD)三位用来设定清除显示缓冲RAM的方式,其定义下:D4 D3 D2 清除显示RAM的方式1 0 X 将显示RAM全部清01 1 0 将显示RAM清成20H1 1 1 将显示RAM全部置10 X X 不清除(CA=0);则D3D2有效5)状态字8279的状态字节用于键输入和选通输入方式中,指出FIFO RAM中的字符的个数是否出错,状态字的格式如下:D7 D6 D5 D4 D3 D2 D1 D0DU S/E O U F N N ND2-D0表示FIFO RAM中数据的个数D3在F=1时,表示FIFO RAM已满(存有8个键入数据)D4在FIFO RAM中没有输入字符时,CPU对FIFO RAM读置“1UD5当FIFO已满,又输入一个字符时发生溢出置“1”OD6的S/E用于传感矩阵输入方式,几个传感器同时闭合时置“1”D7在清除命令执行期间该位为“1”,D7为1时对显示RAM写操作无效6)出入数据格式在键扫描方式中,键输入数据格式如下:D7 D6 D5 D4 D3 D2 D1 D0CNHL SHIFT SCAN SCAN SCAN RETURN RETURN RETURND2-D0指出输入键所在的列号(RL0-7Z状态确定)D5-D3指出输入键所在的行号(扫描记数植)D6控制SHIFT的状态D7控制CNTL的状态在传感器扫描方式或选通输入方式中,输入数据即为RL0-RL7输入状态D7 D6 D5 D4 D3 D2 D1 D0RL7 RL6 RL5 RL4 RL3 RL2 RL1 RL0由以上可确定8279状态口地址为0FF82H,数据口地址为0FF80H。
四、 软件设计与说明(包括流程图)(一) 主程序的设计图3 主程序设计框图设置定时器初8279初始化存储单元赋初值 P1.0开关P1.2开关P1.1开关跑表显示单元清0调跑表显示跑表显示单元调时钟显示设置各中断服务程序的入口地址相关寄存器清零主程序1)程序的起始地址:MCS-51单片机复位后,(PC)=0000H,而0003H-002BH分别是各中断源的入口地址。
所以,编程时应在0000H处写一条跳转指令。
当CPU接收到中断请求信号并予以响应后,CPU把当前的PC内容压入栈中进行保护,然后转入响应的中断服务程序入口处执行。
2)主程序的初始化:将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作设定。
Z8279 EQU 0FF82H ;8279状态/命令入口地址D8279 EQU 0FF80H ;8279数据口地址LEDMOD EQU 00H ;左边输入八位字符显示LEDFEQ EQU 2FH ;扫描速度LEDCLS EQU 0C1H ;清除显示RAMLEDWR0 EQU 80H ;设定的将要写入的显示RAM地址 ORG 0000HLJMP MAINORG 000BH ;T0中断入口地址LJMP INTT0ORG 0030HMAIN:LCALL INIT8279 ;初始化8279MOV TMOD, #01H ;T0工作方式MOV TH0, #3CH ;T0初值MOV TL0, #0B0HMOV IE,#82H ;开中断MOV R7,#2 ;中断两次MOV 31H,#0 ;放后两位数字MOV 32H,#0 ;放前两位数字MOV 41H,#0 ;用在定时器计中断个数MOV P1,#0FFH ;开放P1口SETB TR0 ;启动定时器LOOP:JNB P1.0,ZHONG ;判开关P1.0信号,时钟与跑表切换。