您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 单片机、设计数码管显示-电子时钟
单片机、设计数码管显示-电子时钟2————————————————————————————————作者:————————————————————————————————日期:目录目录.................................................................................................................................................................4第1章数码管显示.................................................................................................................................11.1.【摘要】11.2.【关键词】11.3.LED显示的原理错误!未定义书签。1.4.LED显示动态显示的原理11.5.流程图31.6.实现的功能及结果31.6.1.数码管显示结果31.6.2.程序及解释4第2章单片机时钟.................................................................................................................................52.1.【摘要】52.2.【关键词】52.3.功能要求52.4.程序设计62.4.1.主程序62.4.2.显示子程序62.4.3.定时器T0中断服务程序72.5.按键设置82.6.数码管显示结果82.7.程序92.7.1.汇编程序92.7.2.C语言程序编译14第3章两个实验总的电路图...............................................................................................................171第1章数码管显示1.1.【摘要】LED的技术进步是扩大市场需求及应用的最大推动力。最初,LED只是作为微型指示灯,在计算机、音响和录像机等高档设备中应用,随着大规模集成电路和计算机技术的不断进步,LED显示器正在迅速崛起,近年来逐渐扩展到证券行情股票机、数码相机、PDA以及手机领域。LED显示器集微电子技术、计算机技术、信息处理于一体,以其色彩鲜艳、动态范围广、亮度高、寿命长、工作稳定可靠等优点,成为最具优势的新一代显示媒体,目前,LED显示器已广泛应用于大型广场、商业广告、体育场馆、信息传播、新闻发布、证券交易等,可以满足不同环境的需要。1.2.【关键词】LED、动态显示、共阳极、位选、段选1.3.LED显示的原理数码管的每段笔画其实就是一个单独的发光二极管,内部有两种不同的连接方式,若将各二极管的阳极都连在一起引出个公共端——称共阳数码管,如图(a);若将各二极管的阴极都连在一起引出个公共端——称共阴数码管如图(b);使用时将共阴数码管公共端接低电平,若某笔画端接高电平则对应笔画点亮,共阳反之。LED的显示可分静态和动态显示。1.4.LED显示动态显示的原理动态显示,如图所示2图1-4-1六位动态显示器接口某一时刻位选先选通其中一位,如对图5-46的共阴数码管,要使最左边位能点亮,则令P3.0为1,其余位选位均为0;这时在字型口输出该位要显示的数字或字符的字型,亮1ms左右;接着位选选通另一位,其余位选关闭,字型口输出该位要显示的数字或字符的字型,虽然这时前一位位选已关闭,但基于眼睛的惰性,前一位显示的数字或字型还留在眼中,依次一位位循环显示下去,直至最后一位显示完毕,一个动态扫描显示结束。可见动态扫描显示是在执行动态扫描显示程序的。要连续显示必须反复的去执行动态扫描显示程序。一般可把动态扫描显示编成个子程序,主程序反复去调用它。人眼的惰性有一定时间,一般10ms左右,超过这一时间再去执行显示程序,它就会闪烁,所以LED的位数不能太多。首先在内部数据存储器的若干连续单元中开辟一个显示缓冲区,每个单元顺序对应一个数码管,在调用动态扫描子程序以前,主程序中先在各显示缓冲单元中写入各数码管要显示的数字和字符在字型表中离开表头位置的值,这样当动态扫描显示程序要向字型口输出字型时,只要读得该对应缓冲区内的值,通过查字型表获得输出字型。注意不是把缓冲单元的值直接输出。图1-4-2硬件系统的总体设计框架70H71H72H73H74H75H01020304050631.5.流程图1.6.实现的功能及结果六位数码管显示自己的姓名和学号(姓名为开头的英文字母)1.6.1.数码管显示结果4显示字符共阴极段选码显示字符共阴极段选码03FH56DH106H67DH25BH707H34FH87FH466H96FHT0CEHQ98H“灭”(黑)00H表1共阴极7段LED显示字型编码表1.6.2.程序及解释ORG0000HAJMPSTARTSTART:MOVR0,#01H;扫描端口初植PLAY:MOVP0,#0FFH;清原数据MOVR5,#160;滚动的速度MOVA,R0ADDA,#04HMOVR1,AMOVP2,#01HPLAY1:MOVA,R0;6位数码管显示DECA;A中的数减1MOVDPTR,#TAB;段码表表址放入数据指针MOVCA,@A+DPTR;查段码MOVP0,A;段码数据放入P0口LCALLDL512;长调用DL512MOVA,R0;A恢复1SUBBA,R1JNCPLAY2;进位位不为1,程序转至PLAY2INCR0MOVA,P2RLA;A中的数循环左移1位MOVP2,A;P2=0AHAJMPPLAY1PLAY2:DJNZR5,PLAY4;R5中的数减1不为0,程序转至PLAY4AJMPPLAY3PLAY3:MOVA,R0;使滚动SUBBA,#04H5MOVR0,ASUBBA,#010H;显示扫描数据的长度JNCSTARTLJMPPLAYPLAY4:MOVA,R0;控制滚动时间SUBBA,#05HMOVR0,AMOVP2,#01HLJMPPLAY1DL512:MOVR2,#0FFH;延时DL1:DJNZR2,DL1RETTAB:DB0FFH,0FFH,0FFH,0FFH,0FFH,0C0H,080H,0F9H,0B0H,0F9H,0C0H,0F9H,099H,0C0H,0FFH,0CEH,98H,98H,0FFH,0FFH,0FFHEND第2章单片机时钟2.1.【摘要】时钟是人类生活中必不可少的的工具,本设计从日常生活中的事物入手,通过对时钟计时器的设计,让我们认识到单片机已经深入到我们生活的每个领域,该设计不仅可以锻炼我们的动手能力,而且可以加深我们对单片机的认识和激发我们队位置科学领域的探索。利用单片机实现教学数字时钟计时的主要功能,采用独立式按键进行时间调整,其中AT89C52是核心元件同是采用数码管LED动态显示“时”,“分”,“秒”的现代计时装置。与传统机械表相比,它具有走时精确,显示直观等特点。它的计时周期为24小时,显满刻度为“23时59分59秒”。该系统同时具有硬件设计简单,工作稳定性高,价格低廉等优点。2.2.【关键词】AT89C52、LED显示2.3.功能要求1)六位数码管显示时、分、秒,以24小时运算62)可实现时分调整2.4.程序设计2.4.1.主程序设计中计时采用定时器T0中断完成。主程序循环调用显示子程序和查键,当端口有开关按下时,转入相应的功能程序。流程图如图2-4-1所示。图2-4-1主程序流程2.4.2.显示子程序显示子程序每次显示6个连续内存单元的十进制BCD码数据。由于采用7段共阳LED数码管动态扫描实现数据显示,显示十进制BCD码数据对应段码存放在ROM中。流程图如图2-4-2所示。显示时取内存地址中数据,然后查表得对应显示段码从P0口输出,P2口将为对应的数码管供电,于是数码管就会显示该地址单元的数据。7图2-4-2显示子程序2.4.3.定时器T0中断服务程序定时溢出中断周期设为50MS,中断进入后先进行定时中断初值校正,当中断累加到20次时,对秒计数单元进行加1操作。时钟最大计时值为23时59分59秒。#7FH存放“熄灭符”数据,用于时间调整时的闪烁功能。在计数单元中,采用十进制BCD码计数,满十进位。流程图如图3.3所示在程序中采用12MHZ晶振频率,精度为1MS,定时初值为50MS,用循环程序进行20次循环可到1S。当1S到时调用加1程序并判断秒、分是否为60,当秒为60时,秒清零,分加1;当分为60时,分清零。终端结束时,分时计时单元数据移入对应显示单元。8图3.3定时器T0中断服务程序2.5.按键设置采用共阳七段LED显示器,其管脚a-g,ap与单片机AT89C52的P0口相连;P0口输出段码数据;为保证其输出的电平和LED显示器所需的电平相匹配;P2.0---P2.5作为列扫描输出;P1.0,P1.1,接2个按钮开关,用于调时.2.6.数码管显示结果9图中显示的是8点19分03秒2.7.程序2.7.1.汇编程序;--------------------------------------;XAL12MHz单片机STC89C52RC。;;--------------------------------------BUZZBITP3.7;轰鸣器,整点报时KEY1BITP1.0KEY2BITP1.1DISPRAMDATA30H;显示数字的暂存HOUR_REGDATA38HMINU_REGDATA39HSECO_REGDATA3AHT0_COUNTDATA3BHDISP_COUNTDATA3CHORG0000H;主程序的入口LJMPMAINORG000BH;定时器T0中断程序入口LJMPT0_TIMEORG0030HMAIN:MOVSP,#3FH;堆栈指针设置堆栈地址存放MOVHOUR_REG,#0MOVMINU_REG,#0MOVSECO_REG,#0MOVTMOD,#11H定时中断;选择工作方式1MOVIE,#82H;EA=1,CPU开放中断ET0=1,使能定时器T0溢出中断SETBTR0;开定时计数器MAIN1:LCALLTIME2STR;调用时间数据显示MOVR0,#DISPRAMLCALLDISPLAYJBKEY1,MAIN1LCALLTIME_SETSJMPMAIN1;---------------------------------------;时间数据显示字符串功能;---------------------------------------TIME2STR:MOVR0,#DISPRAM时间数据显示MOVA,HOUR_REGMOVB,#1010DIVABMOV@R0,AMOVA,BINCR0MOV@R0,AMOVA,MINU_REGMOVB,#10DIVABINCR0MOV@R0,AMOVA,BINCR0MOV@R0,AMOVA,SECO_REGMOVB,#10DIVABINCR0MOV@R0,AMOVA,BINCR0MOV@R0,ARET;;---------------------------------------;设定的时间功能;---------------------------------------TIME_SET:CLRTR0;关定时计数器MOVSECO_REG,#0;把秒清零LCALLTIME2STRTIME_S1:MOVR0,#DISPRAMLCALLDISPLAYJNBKEY1,TIME_S1MOVR2,#2TIME_S2:MOVA,R2JZTIME_S3LCALLTIME2STRCJNER2,#2,TIME_S21ORLDISPRAM,#80HORLDISPRAM+1,#80HSJMPTIME_S22TIME_S21:ORLDISPRAM+2,#80HORLDISPRAM+3,#80H
本文标题:单片机、设计数码管显示-电子时钟
链接地址:https://www.777doc.com/doc-4131258 .html