多功能计时器的设计

上传人:wuxin****2020 文档编号:156593821 上传时间:2022-09-27 格式:DOC 页数:21 大小:271.51KB
收藏 版权申诉 举报 下载
多功能计时器的设计_第1页
第1页 / 共21页
多功能计时器的设计_第2页
第2页 / 共21页
多功能计时器的设计_第3页
第3页 / 共21页
资源描述:

《多功能计时器的设计》由会员分享,可在线阅读,更多相关《多功能计时器的设计(21页珍藏版)》请在装配图网上搜索。

1、一设计要求:(1) 任务设计并制作一个可以完成足球、篮球比赛及其他用处途的多用计时装置。(2) 设计要求1) 基本要求 LED数码管显示计时结果; 适用于足球、篮球各种倒计时要求; 根据比赛要求设置相应的按键; 电源由外部提供,+5V; 计时时间到报警。2)发挥要求 改用LCD显示; 增加其他计时功能; 由6V电池供电(稳压电源提供); 时间到乐曲报警; 整体电路效率60%; 计时精度1s/h。二系统实现:本系统由软件与硬件仿真电路两部分组成,通过keil与protues联调实现足球、篮球计时的各种要求。系统由LCD1602显示,七个按键控制开始暂停选择等功能。2.1硬件仿真电路图2.2系统设

2、计程序总流程图 开始初始化篮球赛?足球赛?篮球赛计时界面开始?Y功能选择界面HOU=1?LCD显示上半场LCD显示下半场开始?计时并显示计时并显示NYY24秒复位?EXT=24暂停?开始?24秒复位?EXT=24时间到?HOU+1时间到?HOU+1暂停开始?暂停开始?YYYY暂停?开始?YYYYYYYYNNNNNNNNNNNNNN三主要硬件部分设计与选型3.1 LCD1602显示器 为了获得更好的效果本设计并没有采用常见的LED,而是采用了型号为LM016L的 LCD。LCD有LED数码显示更好的更的直观效果,也更加经久耐用。液晶显示模块体积小功耗低、显示内容丰富,现在字符型液晶显示模块已经是

3、单片机应用设计中最常用的信息显示器件之一了。本LCD是2行16列液晶 可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚). 该模块也可以只用D4-D7作为四位数据分两次传送。这样的话可以节省MCU的I/O口资源。引脚说明:VDD:电源正极,4.55.5V,通常使用5V电压。VL:LCD对比度调节端,电压调节范围为05V。接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地。RS:M

4、CU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平。R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据。E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0D7:8位数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4D7接口传送数据。BLA: LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右。BLK: LED背光地端。1602液晶模块内部的控制器共有11条控制指令,如表3.2所示:序号指令RSR/WD7D6D5D4D3

5、D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到CGRAM或DDRAM)10要写的数据内容11从CGRAM或DDRAM读数11读出的数据内容表3.2:控制命令表1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平) 指令1:清显示,指令码01H,光标复位

6、到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5

7、x7的点阵字符,高电平时显示5x10的点阵字符。 指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据。 指令11:读数据。与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0D7=状态字写指令输入RS=L,R/W=L,D0D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0D7=数据写数据输入RS=H,R/W=L,D0D7=数据,E=高脉冲输出无表3.3:基本操作时序表对于温度显示模块的编写也

8、要了解其时序图,通过时序图,编写相关的驱动程序,实现其相关读写操作,此外,要想要让其显示正确的命令,还要注意其内部相关控制指令。在本设计中主要用的是写入指令的子程序。 LCD1602的读写时序图四、主要功能模块程序设计这里只介绍LCD1602显示程序本系统使用LCD1602实现显示,只要参照LCD1602的使用手册进行初始化和程序编写就可以显示,即在程序编写中添加LCD1602的驱动程序。这里的驱动程序主要包括:初始化函数、设置显示坐标、写字符函数及写字符串函数。LCD1602的部分读写控制时序程序如下所示:(1) 写命令函数:向寄存器写入控制字参数:A-控制字W_CMD:ACALL WAIT

9、; /侧忙碌状态CLR RW; /写命令时,R/W为低电平CLR RS; /写入指令。RS为低电平SETB E; /置高使能线 MOV LCD, A; / 接收命令字并送到数据总线上CLR E: /在使能线的下降沿写入数据RET(2)写数据函数:向寄存器写入数据参数:A-待要显示数据W_DATA: ACALL WAIT/侧忙碌状态SETB RS/写数据时,RS为高电平CLR RW/写入数据。RW为低电平SETB E/置高使能线MOV LCD, A/ 接收数据并送到数据总线上CLR E/在使能线的下降沿写入数据RET五、功能演示1、开始界面,此时通过按键选择功能,有篮球赛计时和足球赛计时2、选择

10、篮球赛后出现下面界面,篮球赛是倒计时。Period:01表示第一小节,12:00表示本节剩余分秒时间,10表示24秒计时时间3、按下开始按键。开始倒计时,计时时可以随时暂停,计时和暂停过程中都可以进行24秒复位。4、第一小节时间结束,时间停止,并且蜂鸣器发出报警声音 5、再按下开始按钮,则进行第二小节计时,第一行小节标志换为026、选择足球赛计时功能后显示下面界面,足球赛是正计时。第一行显示比赛是上半场还是下半场,第二行比赛进行的时间,由于足球赛具有伤停补时时间,而且时间不确定,所以设计extra:0x。比赛工程中可用按键extra+extra-进行调节。7、按下开始键后开始计时。中间可以暂停

11、开始8、加时0分钟,45分钟时自动暂停。加时1分钟,46分钟时自动暂停。并报警 9、按开始键进行下半场计时。第一行显示Second half六、程序实现RS EQU P3.0 ;写入数据(1)或指令(0)选择端RW EQU P3.1 ;读(1)写(0)控制E EQU P3.2; ;使能LCD EQU P2 ;LCD数据口BF EQU P2.7 ;忙标志BA_FO BIT 30H ;选择功能标志位,1为篮球赛,0为足球赛EXT EQU 31H;加时赛储存地址HOU EQU 34H ;节数,上下半场储存地址MIN EQU 35H;分钟储存地址SEC EQU 36H;秒储存地址COUNT EQU 3

12、CB0H ;T0初值COUNT1 EQU 20 ;20*50Ms=1SCOUNT2EQU37HDATA_1EQU38H ;写数据数据首地址CMD_1EQU39H ;写指令指令首地址SECCOUN EQU 10H ;存放20的地址LEDBUF EQU 40H ;显示数据(数字)首地址LCDBUFEQU4AH ;显示数据(字符)首地址 ORG 0000H LJMP MAIN ORG 000BH ;T0中断入口 LJMP STIME ;调用定时器T0中断服务子程序MAIN: MOVSP,#60H ;装入固定点显示字母或符号 MOVLCDBUF+0,#0 MOVLCDBUF+1,#1MOVLCDBUF

13、+2,#2MOVLCDBUF+3,#3MOVLCDBUF+4,#4MOVLCDBUF+5,#5MOVLCDBUF+6,#6MOVLCDBUF+7,#7MOVLCDBUF+8,#8MOVLCDBUF+9,#9MOVLCDBUF+10,#10MOVLCDBUF+11,#11MOVLCDBUF+12,#12MOVLCDBUF+13,#13MOVLCDBUF+14,#14MOVLCDBUF+15,#15MOVP1,#0FFH ;P1口输出至高电平SETBP3.5 ;蜂鸣器口 ;-LCD1602初始化- MOV A, #00000001B ;发送清屏操作指令; CALL W_CMD ;调写入指令子程序

14、MOV A, #00001100B ;发送显示开/关控制 ACALL W_CMD ;指令,无光标,无闪烁 MOV A, #00011100B ;发送光标移动指令 ACALL W_CMD ;光标和字一起移动,光标自动右移 MOV A, #00111100B ;发送功能设置指令 CALL W_CMD ;8位DB,双行,5x7字符MOVA,HOU ;判断第几小节(上下半场 CJNEA,#01,LOP ;非01跳转lop判断hou为00还是别的LOP:JNCDINGSHI ;进位标志为1说明HOU1比赛小节结束,不显示功能选择界面MOV HOU,#01 ;进位标志为0说明HOU01,为00,比赛刚开始

15、HOU=1并显示功能选择界面 ;-LCD1602初始化结束-HUAN:MOVDATA_1,#LCDBUF MOVCOUNT2,#16 ;显示字符数为16个MOVCMD_1,#10000001B ; 显示从第一行第一个开始MOV DPTR, #TAB1 ;装入查表地址,LCALL DISPLAYLCD ;调用显示子程序MOVDATA_1,#LCDBUFMOVCOUNT2,#16MOVCMD_1,#11000001BMOV DPTR, #TAB2 ;装入查表地址LCALL DISPLAYLCD ;调用显示子程序 CE:JNBP1.0,BA ;功能选择判断,P1.0按下为低电平,选择篮球赛计时JNB

16、P1.1,FO ;功能选择判断,P1.1按下为低电平,选择足球计时SJMPCE BA:SETBBA_FO ;选择的篮球赛标志位置1SJMPDINGSHI FO:CLRBA_FO ;选择的足球赛标志位置0 ;-T0定时初始化-DINGSHI:MOV A, #00000001B ;清屏 CALL W_CMDMOVLEDBUF+5,#10 MOV TMOD,#01H ;设置T0定时,模式1 MOV TH0,#HIGH(COUNT) ;装入高4位初始值 MOV TL0,#LOW(COUNT) ;装入低4位初始值 SETB EA ;开中断 SETB ET0 ;开T0中断允许位,此时没有启动中断, MOV

17、 SECCOUN,#COUNT1 ;把数值20放到10H单元中 ;-T0定时初始化结束- JNBBA_FO,FOOT ;查看标志位,选择功能显示BASKE: ;篮球赛计时显示 MOV MIN,#12 ;初始化定时时间,分 MOV SEC,#00 ;秒MOVEXT,#24 ;24秒倒计时MOVDATA_1,#LCDBUF ;第一行显示Period:(小节数)MOVCOUNT2,#7 MOVCMD_1,#10000001BMOV DPTR, #TAB5 ;装入查表地址LCALL DISPLAYLCD ;调用显示子程序JMP2DIS:JBP1.4,JMP2DIS1 ;按键p1.4则进行24秒复位JN

18、BP1.4,$MOVEXT,#24JMP2DIS1:LCALLMOVBUF1 ;数据处理MOVDATA_1,#LEDBUF ;第一行第八九个空显示节数MOVCOUNT2,#2MOVCMD_1,#10001000BMOV DPTR, #TAB ;装入查表地址LCALL DISPLAYLCD ;调用显示子程序MOVDATA_1,#LEDBUF+3;第二行从第一个空开始显示分秒数MOVCOUNT2,#5MOVCMD_1,#11000001BMOV DPTR, #TAB ;装入查表地址LCALL DISPLAYLCD ;调用显示子程序MOVDATA_1,#LEDBUF+8;第二行第十十一个空显示24秒

19、倒计时MOVCOUNT2,#2MOVCMD_1,#11001010BMOV DPTR, #TAB ;装入查表地址LCALL DISPLAYLCD ;调用显示子程序JBTR0,JMP2DIS ;计时已开始则返回循环显示JBP1.3,$ ;计时开始按键等待LCALLBUZZERSETBTR0 ;启动计时 LJMP JMP2DISFOOT: MOV MIN,#00 MOV SEC,#00MOVEXT,#00MOVA,HOU;判断上下半场CJNEA,#1,XIAMOVDATA_1,#LCDBUF;是上半场则第一行显示First halfMOVCOUNT2,#10MOVCMD_1,#10000001BM

20、OV DPTR, #TAB6 ;装入查表地址LCALL DISPLAYLCD ;调用显示子程序AJMPextraXIA: MOVDATA_1,#LCDBUF;是下半场则第一行显示Second halfMOVCOUNT2,#11MOVCMD_1,#10000001BMOV DPTR, #TAB7 ;装入查表地址LCALL DISPLAYLCD ;调用显示子程序 extra:MOVDATA_1,#LCDBUF;第二行第八个空开始显示extra:(加时时间)MOVCOUNT2,#6MOVCMD_1,#11001000BMOV DPTR, #TAB8 ;装入查表地址LCALL DISPLAYLCD ;

21、调用显示子程序FOOT1:JBP1.7,JIAN;加时时间设置,P1.6减1,P1.7加1JNBP1.7,$INCEXT JIAN:JBP1.6,FOOT2 JNBP1.6,$ DECEXTFOOT2:LCALLMOVBUF1;数据处理MOVDATA_1,#LEDBUF+3;显示分秒计时MOVCOUNT2,#5MOVCMD_1,#11000001BMOV DPTR, #TAB ;装入查表地址LCALL DISPLAYLCD ;调用显示子程序MOVDATA_1,#LEDBUF+8;显示24秒计时MOVCOUNT2,#2MOVCMD_1,#11001110BMOV DPTR, #TAB ;装入查表

22、地址LCALL DISPLAYLCD ;调用显示子程序JBTR0,FOOT1JBP1.3,$ACALLBUZZERSETBTR0 ;启动计时LJMPFOOT1BUZZER:CLRP3.5 ;蜂鸣器子程序LCALLT100MSDSETBP3.5RETMOVBUF1: ;数据处理子程序PUSHACC MOV A,HOU MOV B,#10DIV ABMOV LEDBUF,AMOV LEDBUF+1,B MOV A,MIN MOV B,#10DIV ABMOV LEDBUF+3,AMOV LEDBUF+4,B MOV A,SEC MOV B,#10DIV ABMOV LEDBUF+6,AMOV LE

23、DBUF+7,BMOVA,EXTMOVB,#10DIVABMOVLEDBUF+8,AMOVLEDBUF+9,BPOPACCRET;-定时器T0中断服务子程序-STIME: MOV TH0,#HIGH(COUNT) ;重新装入高4位初始值 MOV TL0,#LOW(COUNT) ;重新装入低4位初始值 DJNZ SECCOUN,TIMEEND3 ;判断是否够1秒(20*50us=1S) MOV SECCOUN,#COUNT1 ;重新装入20 PUSH ACC ;堆栈JNB BA_FO,FOOTSECSEC1CHA:MOVA,EXTDECAMOVEXT,ACJNEA,#-1,SECCHAMOVEX

24、T,#24SECCHA: MOV A,SEC ;秒处理 DECA MOV SEC,A CJNE A,#-1,TIMEEND2 ;判断是否够60秒 MOV SEC,#59 ;够60秒后,秒位清0MINCHA: MOV A,MIN ;分处理 DECA MOV MIN,A CJNE A,#-1,TIMEEND2 HOUCHA: MOVA,HOUINCAMOVHOU,AAJMPSTOP0 ;节数有进位则表示一小节节数,暂停。TIMEEND2:POP ACCTIMEEND3:JNBP1.2,STOP ;判断是否按下P1.2,按下则暂停RETIFOOTSEC:INCSECMOVA,SEC CJNE A,#

25、60,TIMEEND1 ;判断是否够60秒 MOV SEC,#00 ;够60秒后,秒位清0FOOTMIN:INCMINMOVA,MIN CJNE A,#45,EXTR ;计时45+EXT分钟MOVA,EXTCJNEA,#0,TIMEEND1SJMPFOOTHOUEXTR:JCTIMEEND1DECEXTCJNEA,#0,FOOTHOUSJMPTIMEEND1FOOTHOU:MOVA,HOU ;上半场结束,HOU加1,INCAMOVHOU,ALCALLMOVBUF1 ;显示当前时间,否则时间停留在上一个显示59秒,非00秒MOVDATA_1,#LEDBUF+3MOVCOUNT2,#5MOVCMD

26、_1,#11000001BMOV DPTR, #TAB ;装入查表地址LCALL DISPLAYLCD ;调用显示子程序MOVMIN,#00AJMPSTOP0TIMEEND1:POP ACC ;弹出堆栈TIMEEND:JNBP1.2,STOP ;按下P1.2则暂停RETI;-计时停止子程序-STOP0:CLRTR0 LCALLBUZZERLCALLT500MSDLCALLBUZZERLCALLT500MSDLCALLBUZZERLCALLT500MSDSTOP:LCALLBUZZERSTOP1:JNBBA_FO,STOP2 ;足球赛,不执行下面程序JBP1.4,STOP2 ;篮球赛复位24秒计

27、时MOVEXT,#24 STOP2: JBP1.3,STOP1 ;P1.3按下则暂停结束,开始计时LCALLBUZZERRETI;-LCD1602显示子程序-DISPLAYLCD: MOV R0,DATA_1 ;显示首地址 MOV R1,COUNT2 MOV R2,CMD_1 ;发送第一行DDRAM地址设置指令 MOV A,R2 ACALL W_CMD LOOP1: MOV A, R0 MOVC A, A+DPTR ;查表 ACALL W_DATA ;调用LCD显示字子程序 INC R0 ;显示下一个字 JNB PSW.5,TG TG: DJNZ R1,LOOP1 CLR PSW.5 LOOP

28、: MOV A, #00001100B ;发送显示开/关控制 ACALL W_CMD ;指令,无光标,无闪烁 LJMP EXIT ;跳出LCD1602显示子程序 WAIT: MOV LCD, #0FFH ;令P2作输入口使用CLR RSSETB RWCLR ENOPSETB EJB BF, WAIT ;判断LCD忙标志RET W_CMD: ;入口参数A ACALL WAITMOV LCD, ACLR RSCLR RWSETB ENOPCLR ERETW_DATA: ;入口参数A ACALL WAITMOV LCD, A SETB RSCLR RWSETB ENOPCLR ERET EXIT:

29、RET;-LCD1602显示子程序结束-DELAY: MOV R6,#00H ;延时子程序 MOV R7,#00HDELAY1: NOP DJNZ R7,DELAY1 DJNZ R6,DELAY1 RET;*;*延时子程序*;*T10MSD:SETB RS0MOV R4, #12 TM:MOV R3, #128TM6:DJNZ R3, TM6DJNZ R4, TMCLR RS0RETT100MSD:MOV R3, #200D11:MOV R4, #125D12:DJNZ R4, D12DJNZ R3, D11RETT500MSD:LCALL T100MSDLCALL T100MSDLCALL

30、T100MSDLCALL T100MSDLCALL T100MSDNOPRETTAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,3AHTAB1:DB 77H,65H,6cH,63H,6fH,6dH,65H,20H,74H,6fH,20H,75H,73H,65H,20H,20H ;Welcome to useTAB2:DB 53H,65H,6cH,65H,63H,74H,20H,6dH,6fH,64H,65H,20H,20H,20H,20H,20H;Select mode TAB5:DB 50H,65H,72H,69H,6fH,64H,3AH;Period:TAB6:DB 46H,69H,72H,73H,74H,20H,68H,61H,6cH,66H;First halfTAB7:DB 53H,65H,63H,6fH,6eH,64H,20H,68H,61H,6cH,66H;Second halfTAB8:DB 65H,78H,74H,72H,61H,3AH;extra:END

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!