您好,欢迎访问三七文档
一.设计要求:(1)任务设计并制作一个可以完成足球、篮球比赛及其他用处途的多用计时装置。(2)设计要求1)基本要求①LED数码管显示计时结果;②适用于足球、篮球各种倒计时要求;③根据比赛要求设置相应的按键;④电源由外部提供,+5V;⑤计时时间到报警。2)发挥要求①改用LCD显示;②增加其他计时功能;③由6V电池供电(稳压电源提供);④时间到乐曲报警;⑤整体电路效率60%;⑥计时精度1s/h。二.系统实现:本系统由软件与硬件仿真电路两部分组成,通过keil与protues联调实现足球、篮球计时的各种要求。系统由LCD1602显示,七个按键控制开始暂停选择等功能。2.1硬件仿真电路图2.2系统设计程序总流程图开始初始化篮球赛?足球赛?篮球赛计时界面Y开始?YN功能选择界面HOU=1?LCD显示上半场LCD显示下半场开始?计时并显示计时并显示NYY24秒复位?EXT=24暂停?开始?24秒复位?EXT=24时间到?HOU+1时间到?HOU+1暂停开始?暂停开始?YYYYY暂停?开始?YYYYYYYYNNNNNNNNNNNNN三.主要硬件部分设计与选型3.1LCD1602显示器为了获得更好的效果本设计并没有采用常见的LED,而是采用了型号为LM016L的LCD。LCD有LED数码显示更好的更的直观效果,也更加经久耐用。液晶显示模块体积小功耗低、显示内容丰富,现在字符型液晶显示模块已经是单片机应用设计中最常用的信息显示器件之一了。本LCD是2行16列液晶可显示2行16列英文字符,有8位数据总线D0-D7,RS,R/W,EN三个控制端口(共14线),工作电压为5V。没背光,和常用的1602B功能和引脚一样(除了调背光的二个线脚).该模块也可以只用D4-D7作为四位数据分两次传送。这样的话可以节省MCU的I/O口资源。引脚说明:VDD:电源正极,4.5-5.5V,通常使用5V电压。VL:LCD对比度调节端,电压调节范围为0-5V。接正电源时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地。RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平。R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据。E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0-D7:8位数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4-D7接口传送数据。BLA:LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右。BLK:LED背光地端。1602液晶模块内部的控制器共有11条控制指令,如表3.2所示:序号指令RSR/WD7D6D5D4D3D2D1D01清显示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,光标复位到地址00H位置。指令2:光标复位,光标返回到地址00H。指令3:光标和显示模式设置I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:控制光标的开与关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令5:光标或显示移位S/C:高电平时移动显示的文字,低电平时移动光标。指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示F:低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:读忙信号和光标地址BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据。指令11:读数据。与HD44780相兼容的芯片时序表如下:读状态输入RS=L,R/W=H,E=H输出D0—D7=状态字写指令输入RS=L,R/W=L,D0—D7=指令码,E=高脉冲输出无读数据输入RS=H,R/W=H,E=H输出D0—D7=数据写数据输入RS=H,R/W=L,D0—D7=数据,E=高脉冲输出无表3.3:基本操作时序表对于温度显示模块的编写也要了解其时序图,通过时序图,编写相关的驱动程序,实现其相关读写操作,此外,要想要让其显示正确的命令,还要注意其内部相关控制指令。在本设计中主要用的是写入指令的子程序。LCD1602的读写时序图四、主要功能模块程序设计这里只介绍LCD1602显示程序本系统使用LCD1602实现显示,只要参照LCD1602的使用手册进行初始化和程序编写就可以显示,即在程序编写中添加LCD1602的驱动程序。这里的驱动程序主要包括:初始化函数、设置显示坐标、写字符函数及写字符串函数。LCD1602的部分读写控制时序程序如下所示:(1)写命令函数:向寄存器写入控制字参数:A--控制字W_CMD:ACALLWAIT;//侧忙碌状态CLRRW;//写命令时,R/W为低电平CLRRS;//写入指令。RS为低电平SETBE;//置高使能线.MOVLCD,A;//接收命令字并送到数据总线上CLRE://在使能线的下降沿写入数据RET(2)写数据函数:向寄存器写入数据参数:A--待要显示数据W_DATA:ACALLWAIT//侧忙碌状态SETBRS//写数据时,RS为高电平CLRRW//写入数据。RW为低电平SETBE//置高使能线MOVLCD,A//接收数据并送到数据总线上CLRE//在使能线的下降沿写入数据RET五、功能演示1、开始界面,此时通过按键选择功能,有篮球赛计时和足球赛计时2、选择篮球赛后出现下面界面,篮球赛是倒计时。Period:01表示第一小节,12:00表示本节剩余分秒时间,10表示24秒计时时间3、按下开始按键。开始倒计时,计时时可以随时暂停,计时和暂停过程中都可以进行24秒复位。4、第一小节时间结束,时间停止,并且蜂鸣器发出报警声音5、再按下开始按钮,则进行第二小节计时,第一行小节标志换为026、选择足球赛计时功能后显示下面界面,足球赛是正计时。第一行显示比赛是上半场还是下半场,第二行比赛进行的时间,由于足球赛具有伤停补时时间,而且时间不确定,所以设计extra:0x。比赛工程中可用按键extra+extra-进行调节。7、按下开始键后开始计时。中间可以暂停开始8、加时0分钟,45分钟时自动暂停。加时1分钟,46分钟时自动暂停。并报警9、按开始键进行下半场计时。第一行显示Secondhalf六、程序实现RSEQUP3.0;写入数据(1)或指令(0)选择端RWEQUP3.1;读(1)写(0)控制EEQUP3.2;;使能LCDEQUP2;LCD数据口BFEQUP2.7;忙标志BA_FOBIT30H;选择功能标志位,1为篮球赛,0为足球赛EXTEQU31H;加时赛储存地址HOUEQU34H;节数,上下半场储存地址MINEQU35H;分钟储存地址SECEQU36H;秒储存地址COUNTEQU3CB0H;T0初值COUNT1EQU20;20*50Ms=1SCOUNT2EQU37HDATA_1EQU38H;写数据数据首地址CMD_1EQU39H;写指令指令首地址SECCOUNEQU10H;存放20的地址LEDBUFEQU40H;显示数据(数字)首地址LCDBUFEQU4AH;显示数据(字符)首地址ORG0000HLJMPMAINORG000BH;T0中断入口LJMPSTIME;调用定时器T0中断服务子程序MAIN:MOVSP,#60H;装入固定点显示字母或符号MOVLCDBUF+0,#0MOVLCDBUF+1,#1MOVLCDBUF+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初始化-------------------MOVA,#00000001B;发送清屏操作指令;CALLW_CMD;调写入指令子程序MOVA,#00001100B;发送显示开/关控制ACALLW_CMD;指令,无光标,无闪烁MOVA,#00011100B;发送光标移动指令ACALLW_CMD;光标和字一起移动,光标自动右移MOVA,#00111100B;发送功能设置指令CALLW_CMD;8位DB,双行,5x7字符MOVA,HOU;判断第几小节(上下半场CJNEA,#01,LOP;非01跳转lop判断hou为00还是别的LOP:JNCDINGSHI;进位标志为1说明HOU1比赛小节结束,不显示功能选择界面MOVHOU,#01;进位标志为0说明HOU01,为00,比赛刚开始HOU=1并显示功能选择界面;---------LCD1602初始化结束---------------------HUAN:MOVDATA_1,#LCDBUFMOVCOUNT2,#16;显示字符数为16个MOVCMD_1,#10000001B;显示从第一行第一个开始MOVDPTR,#TAB1;装入查表地址,LCALLDISPLAYLCD;调用显示子程序MOVDATA_1,#LCDBUFMOVCOUNT2,#16MOVCMD_1,#11000001BMOVDPTR,#TAB2;装入查表地址LCALLDISPLAYLCD;调用显示子程序CE:JNBP1.0,BA;功能选择判断,P1.0按下为低电平,选择篮球赛计时JNBP1.1,FO;功能选择判断,P1.1按下为低电平,选择足球计时SJMPCEBA:SETBBA_FO;选择的篮球赛标志位置1SJMPDINGSHIFO:CLRBA_FO;选择的足球赛标志位置0;---------T0定时初始化--------------------------DINGSHI:MOVA,#00000001B;清屏CALLW_CMDMOVLEDBUF+5,#10MOVTMOD,#01H;设置T0定时,模式1MOVTH0,#HIGH(COUNT);装入高4位初始值MOVTL0,#LOW(COUNT);装入低4位初始值SETBEA;开中断SETBET0;开T0中断允许位,此时没有启动中断,MOVSECCOUN,#COUNT1;把数值20放到10H单元中;---------T0定时初始化结束------------------------JNBBA_FO,FOOT;查看标志位,选择功能显示BASKE:;篮球赛计时显示MOVMIN,#12;初始化定时时间,分MOVSEC,#00;秒MOVEXT,#24;24秒倒计时MOVDATA_1,#LCDBUF;第一行显示Period:(小节数)MOVCOUNT2,#7MOVCMD_1,#10000001BMOVDPTR,#TAB5;装入查表地址LCALLDISPLAYLCD;调用显示子程序JMP2DIS
本文标题:多功能计时器的设计
链接地址:https://www.777doc.com/doc-2545965 .html