项目四 定时器与数码管动态显示

合集下载

实验四 LED数码管显示实验报告

实验四 LED数码管显示实验报告

实验名称 LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。

实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。

利用末位数码管循环显示数字0-F,显示切换频率为1Hz。

2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。

二、设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。

定时采用软件查询工作方式,利用JNB TF0, HERE实现。

置P0.6和P0.7端口为0,位选信号选定末位数码管。

通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。

寄存器R0自增1,并赋给A以取出下一个显示段码数据。

为减短代码长度,利用CJNE指令实现循环结构。

当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。

2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。

三、资源分配1.基础部分P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首 2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据 R5:存放十位显示数据 R6:存放百位显示数据 P1:输出段码数据DPTR: 指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename: test.asm;Decription: 末位数码管循环显示数字0-F,显示切换频率为1Hz。

定时器实现时钟送数码管显示+独立键盘设置时间

定时器实现时钟送数码管显示+独立键盘设置时间

定时器实现时钟送数码管显示+独立键盘设置时间前言 (2)任务书······················································································································3·1.方案选择1.1.键盘设计 (4)1.2.门电路设计 (5)1.3.显示电路 (5)2.硬件电路及参考程序2.1基于proteus仿真的硬件电路 (7)2.2参考程序 (8)3试验调试3.1 硬件电路的连接 (14)3.2.硬件电路的调试 (14)4试验结论 (14)5心得体会 (15)6参考文献及元器件引脚图6.1参考文献 (20)6.2 元器件引脚图 (21)6.3AT89C51的若干时序 (23)6.4硬件电路图 (24)6.5元器件清单 (26)前言随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。

实验四 数码管显示控制

实验四 数码管显示控制

实验四数码管显示控制一、实验目的1、熟悉Keil uVision2软件的使用;2、掌握LED数码管显示接口技术;3、理解单片机定时器、中断技术。

二、实验设备及仪器Keil μVision2软件;单片机开发板;PC机一台三、实验原理及内容1、开发板上使用的LED 数码管是四位八段共阴数码管(将公共端COM接地GND),其内部结构原理图,如图4.1所示。

图4.1共阴四位八段LED数码管的原理图图4.1表明共阴四位八段数码管的“位选端”低电平有效,“段选端”高电平有效,即当数码管的位为低电平,且数码管的段为高电平时,相应的段才会被点亮。

实验开发板中LED数码管模块的电路原理图,如图4.2所示。

SP1a~hP0.4~P0.7SP2P0.0~P0.3图4.2 LED数码管模块电路原理图图中,当P1.0“段控制”有效时,P0.0~P0.7分别对应到数码管的a~h段。

当P1.1“位控制”有效时,P0.0~P0.7分别对应到DIG1~DIG8。

训练内容一:轮流点亮数码管来检测数码管是否正常。

参考程序:ORG 00HAJMP MAINMAIN:SETB P1.2;LED流水灯模块锁存器的控制位MOV P0,#0FFH;关闭LED灯CLR P1.2SETB P1.3 ;点阵模块的行控制锁存器MOV P0,#0 ;关闭点阵行CLR P1.3MOV A,#11111110B;数码管“位选信号”初值,低电平有效LOOP:SETB P1.1;数码管位控制锁存器有效MOV P0,ACLR P1.1RL A ;形成新的“位选信号”,为选择下一位数码管做准备SETB P1.0;数码管段控制锁存器有效MOV P0,#0FFH ;数码管的所有段点亮,显示“8”CLR P1.0CALL DELAYSJMP LOOPDELAY:MOV R5,#0;延时子程序D1: MOV R6,#0D2:NOPDJNZ R6,D2DJNZ R5,D1RETEND训练内容二:静态显示,0~9计数。

数码管动态显示实验

数码管动态显示实验

数码管动态显示实验一该实验采用proteus 7.5 sp3进行的仿真,仿真原理图如下图所示,其中采用的元器件有AT89C51单片机,74HC573锁存器,共阳极数码管。

单片机的P0口用与输出数码管要显示的段码,P2口用于选通要点亮的数码管。

数码管通过动态扫描显示HELLO,HELLO循环左移,左移一位LED灯亮下。

实验程序如下:/*********************************************************************** 程序名; 数码管动态显示实验* 功能:数码管通过动态扫描显示HELLO,HELLO循环左移,左移一位LED灯* 亮下。

* 编程者:ZPZ* 编程时间:2009/8/4**********************************************************************/#include<reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit P1_7=P1^7;uchar num;uchar code table2[]={0x89,0x86,0xc7,0xc7,0xc0,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0x86,0xc7,0xc7,0xc0,0xbf};void delay(uint);void main(){unsigned long b=0;uint a;uint l=0,k=6;P1_7=0;while(1){b++;a=0x01;if(b<80){for(num=l;num<k;num++){P2=a;a=a<<1;if(a==0x40)a=0x01;P0=table2[num];delay(2);}}else{ b=0;l++;k++;P1_7=!P1_7;if(l==12){l=0;k=6;}}}}void delay(uint z){uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}数码管动态显示实验二该实验如同实验一,不同之处在于,该实验是将预先设定的一个百位数,通过动态扫描使其在数码管的后三位显示。

简述数码管动态显示的工作原理及特点

简述数码管动态显示的工作原理及特点

简述数码管动态显示的工作原理及特点研究了这么久数码管动态显示的工作原理及特点,总算发现了一些门道。

先说说这工作原理吧。

你看啊,数码管动态显示呢,就是让多个数码管逐个快速闪亮,但是速度特别快,咱们的眼睛就感觉它们是同时亮着的。

比如说,就好像有一排小灯,其实每次只亮一个,但是飞快地轮流点亮,咱们看起来就觉得这一排小灯都一直亮着呢。

这是为啥呢?其实就是利用了咱眼睛的视觉暂留特性。

就像看电影,电影其实是一张张照片快速播放,咱们眼睛就觉得画面是连续的,数码管动态显示也是这个道理。

它的原理还有一个关键就是利用了扫描的方式,就像扫地一样,从第一个数码管开始,然后快速地扫到下一个,再下一个,这样轮着来。

那它的特点呢?首先就是节省硬件资源。

你想啊,如果不用动态显示,每个数码管都单独弄线路来控制亮灭那些的,那得多复杂,要好多好多线啊。

打个比方,就像你有好多个玩具娃娃,每个娃娃都要单独弄一套衣服,那得费多少布料。

但是用动态显示,就像几个娃娃穿同一套衣服,轮流穿,只需要一套就行了,这就节省了很多资源。

再一个特点呢,它显示的效果其实还挺好的,虽然是这种快速轮流闪亮的方式,但看起来就跟同时亮着差不多。

不过呢,这里头也有我不太理解的地方。

比如说这个速度到底怎样才是最合适的呢?要是太快了,会不会对数码管本身有啥不好的影响啊?我之前还以为只要能让眼睛看着是同时亮就可以了,但是后来发现可能没那么简单。

这个速度可能还得根据数码管的类型啊,使用的环境啊,甚至是电源供应的稳定性啥的来调整呢。

我还发现啊,数码管动态显示还有个特点就是编写程序的时候稍微有点复杂。

跟静态显示比起来,就像一个是走直路,一个是走弯路。

因为你得把那个扫描顺序啊,每个数码管显示的时间间隔啊这些东西都得安排好,要是安排不好,显示就可能出错。

就像穿珠子似的,珠子的顺序要是穿错了,那最后的项链就不好看了,甚至做不出来是个项链了。

不过呢,复杂归复杂,掌握了其中的窍门,也就能运用自如了。

数码管动态显示及实现方法

数码管动态显示及实现方法
{ TH0 = ( 6 5 5 3 6 — 2 5 0 0 0 ) / 2 5 6 ; a a + + ; ,
值 ,使数码管显示相应 的数值 ,然后 再把锁存
数 码 管 由于价 格便 宜,使 用 简单 ,在 电 器特 别是 家电领 域 ( 比如空调、热水器和冰箱 等 )得 到了极为广泛的应用。在高校 电子信息 类专 业单 片机的教学过程中,数码管动态显示 及 实现方 法是学生普遍反映较难掌握的 内容 。 鉴 于此 ,本 文通 过实际案例详细阐述 了数码管 的动态 显示特 点及 实现方法 。 器 U4的锁 存端 L E设置 为低 电平 ,这 时候段 选和位选都赋上值 了,数码管就 亮了,并且 显
这一 位的数码 管亮 了以后,然后 把锁存端 L E
设为低 电平 ,锁存器 的数据输 出端 的位选就保
பைடு நூலகம்
【 关键词 】动 态显 示 数码管 锁存 器
持住 了,然 后再把控制 段选 的锁存器 U4的锁 存端L E设置为 高 电平 ,然 后通 过 P O口送数
v o i d t i me c a l c u l a t e O ( ) i n t e r r u p t 1, / 中断
速度加快;将数码管显示速度进一步加快 ,通
过修改程 序让数 码管 中的数值依 次每隔 5 0毫 秒显示 ,观察数码管的变化效果 ,可 以看到 数 码管显示 速度加快 ,6个数值在 数码管上 隐约 全部显示 出来 ;再让数码管 中的数值依次每 隔 5毫秒显 示,看看数码管 的变 化效果 ,可 以看 到 1 2 3 4 5 6这 六个数在 数码管 上完全 清晰地 显 示 出来 了。
示相 应的数值 。这就是 用一个 P O 端 口通过 两
个锁存器 U3和 U 4控 制六位 数码 管。 要在第一个 数码 管上显示数字 1 ,可以这 样操 作:将 锁存器 U3的锁存 端 L E设为高 电 平 ,通过 P 0口送数 O x f e ,然后再将锁存端 L E 设为 低电平,这时在锁 存器 U3的右端就保 持

(单片机实验教学资料)5.数码管动态显示

(单片机实验教学资料)5.数码管动态显示
实验效果与注意事项
实验效果上,学生能够通过实际操作掌握数码管动态显示 的方法,提高对单片机的应用能力。在实验过程中,需要 注意避免数码管亮度过高导致视觉疲劳,以及保证程序的 稳定性,避免出现闪烁或乱码现象。
展望
技术发展与新应用
教学改进与新方法
个人能力提升与拓展
随着技术的不断发展,数码管动态显 示技术将会有更多的应用领域。例如 ,在智能家居、物联网等领域中,数 码管动态显示可以作为人机交互界面 ,实现更加直观、高效的信息展示。
或字符。
数码管内部通常有8个LED段, 分别表示数字0-9和字母A-F。
当给某个LED段加上正向电压时, 该段点亮;反之,则熄灭。
动态显示与静态显示的区别
静态显示
每个数码管在某一时刻只显示一 个字符,需要使用多路复用技术 来控制多个数码管。
动态显示
通过轮流点亮不同的数码管,使 多个数码管同时显示不同的字符 ,实现多位显示。
实验结果展示
结果1
数码管成功显示数字或字母,无闪烁 或错位现象。
结果2
数码管显示效果不理想,存在闪烁或 错位现象。
结果分析
分析1
程序编写正确,数码管连接无误,因此数码管能够正确显示数字或字母。
分析2
程序中存在延时函数设置不当或数码管连接存在问题,导致数码管显示效果不 理想。
05
总结与展望
总结
发送控制信号
02
根据需要显示的内容,编写程序代码以向数码管发送相应的控
制信号。
刷新显示
03
在需要动态显示的情况下,编写程序代码以实现数码管的刷新
显示。
数码管驱动程序的编写
确定驱动程序功能
根据实际需求,确定驱动程序应具备的功能,如显示数字、字母 或自定义字符等。

数码管动态显示原理

数码管动态显示原理

数码管动态显示原理数码管是一种常见的数字显示元件,广泛应用于各种计数器、时钟、温度计等电子设备中。

它通过LED(发光二极管)的组合来显示数字,具有显示清晰、功耗低、寿命长等优点,因此备受青睐。

本文将介绍数码管的动态显示原理,帮助读者更好地理解其工作原理。

首先,我们来了解一下数码管的基本结构。

数码管由7段LED组成,分别代表数字的每一段,再加上一个小数点。

每一段LED都可以发出红、绿、蓝三种颜色的光,通过不同的组合可以显示0~9的数字以及一些字母。

数码管的每一段LED都有一个控制端,通过控制这些端口的高低电平,来控制LED的亮灭状态,从而实现数字的显示。

接下来,我们来介绍数码管的动态显示原理。

在实际应用中,为了显示多位数字或者进行数字的滚动显示,需要采用动态扫描的方式。

动态扫描的基本原理是通过依次控制每个数码管的控制端,使得每个数码管在很短的时间内依次显示需要显示的数字,由于人眼的视觉暂留效应,就可以看到连续的数字显示。

具体来说,首先将所有数码管的控制端连接到一个共阳或共阴的极性,然后再通过一个译码器来控制每个数码管的通断。

通过控制译码器的输入信号,可以实现对每个数码管的控制。

接着,通过依次控制每个数码管的译码器输入信号,就可以实现数字的动态显示。

在每个数码管显示的瞬间,只有这个数码管被点亮,其他数码管都处于熄灭状态,由于切换速度非常快,人眼就会认为所有数码管都在同时显示数字。

除了动态扫描外,还可以通过PWM(脉宽调制)的方式来实现数码管的动态显示。

通过控制LED的亮度,可以实现数字的平滑变化和渐变效果。

这种方法在一些需要显示动态变化的场合非常有用,比如音频频谱分析仪、心率监测仪等。

总之,数码管的动态显示原理是通过动态扫描或PWM控制来实现数字的连续显示,通过合理的电路设计和控制算法,可以实现各种各样的数字显示效果。

希望本文能帮助读者更好地理解数码管的工作原理,为相关电子设备的设计和应用提供参考。

(完整word版)实验六使用单片机定时器的数码管动态显示驱动实验

(完整word版)实验六使用单片机定时器的数码管动态显示驱动实验

实验六使用单片机定时器的数码管动态显示驱动实验一、实验目的●掌握数码管动态驱动方式的工作原理;●掌握单片机定时器中断服务程序的编写方法;●掌握基于单片机定时器中断调度方式的数码管动态显示驱动程序的编写方法。

二、实验要求●单片机通过P1 端口连接数码管组的字型码(段码)控制端;●单片机通过P0 端口连接数码管组的位置码(位码)控制端;●根据电路连接方式和数码管驱动方式,设计显示0~9,A~F 的字型码;●设置8 个字节的显示缓冲区,通过数码管动态显示驱动的方法,将显示缓冲区内容显示在8 位数码管上。

三、实验设备●硬件:PC 机,nKDE-51 单片机实验教学系统;●软件:Keil C51 集成开发环境,FlashMagic 单片机程序烧写软件。

四、实验原理1. MCS-51 定时器/计数器的结构及功能MCS-51 单片机内部提供两个16 位定时器/计数器,分别是定时器/计数器0(T0)和定时器/计数器1(T1)。

虽然它们被称为定时器/计数器,但本质上它们都计数器。

当选择单片机的机器周期作为计数对象时,由于机器周期出现的频率和晶振频率之间的关系是固定的,对固定频率的信号进行计数实际上就是定时器;当对通过T0 引脚(P3.4)或T1 引脚(P3.5)引入的外部脉冲作为计数对象时,它们是计数器。

图6-1 MCS-51 单片机定时器/计数器0、1 结构框图定时器/计数器的基本结构如图6-1 所示。

它是由6 个特殊功能寄存器组成的。

其中,定时器T0 由TH0 和TL0 两个8 位计数器组成;定时器T1 由TH1 和TL1 两个8 位计数器组成。

当它们用做定时器时,其计数脉冲来源于晶振时钟输出信号的12 分频,即每个机器周期使计数器加1,所以说定时器本质上是针对机器周期的计数器,一旦单片机的晶振频率选定,机器周期也就随之确定,从而使对机器周期的计数转换为对确定时间的计数。

例如,当单片机晶振频率选择为12MHz 时,一个机器周期就是1μs,即计数器对机器周期每计数一次,就是1μs,具体的定时时长可通过简单的换算变换成相应的计数值。

数码管动态显示原理

数码管动态显示原理

数码管动态显示原理数码管是一种常见的显示装置,广泛应用于各种计数、计时、测量等领域。

它通过控制LED的亮灭来显示数字、字母和符号等信息。

数码管的动态显示原理是指通过快速切换不同的LED灯,使得人眼产生视觉残留,从而实现数字的显示。

本文将从数码管的基本结构、工作原理和动态显示过程等方面进行介绍。

首先,我们来看一下数码管的基本结构。

数码管通常由七段共阴或共阳LED 组成,每一段LED可以显示数字0-9和一些字母以及特殊符号。

数码管的结构简单,但可以实现多种显示效果,因此被广泛应用于各种场合。

其次,数码管的工作原理是通过控制每一段LED的亮灭来显示相应的数字或字符。

在共阴数码管中,当某一段LED接通时,该段LED对应的数字或字符显示出来;而在共阳数码管中,当某一段LED断开时,该段LED对应的数字或字符显示出来。

通过对不同的LED进行控制,可以实现不同数字、字母和符号的显示。

接下来,我们来介绍数码管的动态显示过程。

数码管的动态显示是通过快速切换不同的LED来实现的。

以共阴数码管为例,当要显示一个多位数时,每一段LED都会以一定的频率进行亮灭,由于人眼的视觉残留效应,使得多个LED的亮灭在视觉上形成了一个完整的数字显示。

这种动态显示方式不仅可以减少LED的使用数量,还可以减小功耗,提高显示效果。

在实际应用中,数码管的动态显示原理可以通过微处理器或者专门的驱动芯片来实现。

通过控制驱动芯片的工作方式和频率,可以实现不同的动态显示效果,如数码管的扫描显示、闪烁显示等。

这种动态显示方式不仅可以提高显示效果,还可以减小功耗,延长数码管的使用寿命。

总结一下,数码管的动态显示原理是通过快速切换不同的LED来实现数字、字母和符号的显示。

它的工作原理简单、可靠,而且可以通过微处理器或者专门的驱动芯片来实现各种动态显示效果。

数码管作为一种常见的显示装置,将继续在各种计数、计时、测量等领域发挥重要作用。

数码管静态显示及定时器和中断应用

数码管静态显示及定时器和中断应用

随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点: 分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率; 实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强; 可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。
共阴数码管码表
静态显示方式
A
LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
03
TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。
0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d ,
7 8 9 A B
0x7d , 0x07 , 0x7f , 0x6f , 0x77 , 0x7c ,
0x39 , 0x5e , 0x79 , 0x71 , 0x00
C D E F 无显示
TF0(TCON.5),定时/计数器T0溢出中断请求标志位。
8
TF1(TCON.7),定时/计数器T1溢出中断请求标志位。
9
SCON的中断标志
RI(SCON.0),串行口接收中断标志位。当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。注意,RI必须由软件清除。

动态数码管显示课程设计

动态数码管显示课程设计

动态数码管显示课程设计一、课程目标知识目标:1. 理解动态数码管显示原理,掌握其基本结构和工作方式;2. 学会使用编程语言控制动态数码管显示,并能正确编写程序代码;3. 了解动态数码管在不同应用场景中的使用方法。

技能目标:1. 培养学生动手实践能力,能够独立完成动态数码管的硬件连接和程序编写;2. 提高学生问题解决能力,能够运用所学知识解决动态数码管显示过程中遇到的问题;3. 培养学生团队协作能力,通过小组合作完成课程项目。

情感态度价值观目标:1. 培养学生对电子技术的兴趣和热情,激发学生主动探索的精神;2. 培养学生严谨的科学态度,注重实验过程和结果的分析;3. 增强学生的环保意识,认识到电子废弃物对环境的影响,提倡绿色环保。

课程性质分析:本课程为电子技术相关课程,以实践操作为主,注重理论知识与实际应用相结合。

学生特点分析:学生年级为初中或高中,对电子技术有一定了解,具备基本的编程能力和动手能力。

教学要求:结合课程性质和学生特点,将课程目标分解为具体的学习成果,以便教学设计和评估。

在教学过程中,注重理论与实践相结合,充分调动学生的主观能动性,培养其创新思维和实际操作能力。

二、教学内容1. 动态数码管基本概念:介绍动态数码管的结构、工作原理及分类;2. 动态数码管硬件连接:讲解动态数码管的引脚功能,指导学生完成硬件电路的搭建;3. 动态数码管编程控制:结合课本知识,教授如何使用编程语言(如Arduino、Micro:bit等)控制动态数码管显示;4. 动态数码管显示实例:分析并实践动态数码管在不同场景下的应用,如计时器、温度计等;5. 课程项目:分组进行项目实践,要求学生自主设计并实现一个具有实际应用价值的动态数码管显示系统。

教学大纲安排:第一课时:动态数码管基本概念及硬件连接;第二课时:动态数码管编程控制基础;第三课时:动态数码管显示实例分析;第四课时:课程项目实践及成果展示。

教学内容关联教材章节:第一章:电子元件基础;第二章:数字电路基础;第三章:编程基础;第四章:电子项目实践。

课题四 数码管显示

课题四  数码管显示

图4-1 数码管显示实物图
任务一
LED数码管的静态显示
本任务就是将单片机与数码管接成图 4-2所示静态显示方式,编程实现数码管 每隔0.5s的0-9数字显示。
图4-2
数码管显示电路图
一、任务分析
所谓静态显示,就是当单片机某一端口输出 一组显示数据之后,该端口一直保持该数据输出, 维持数码管的显示数字,直到端口数据改变,又 保持显示下一数据的显示方式。 在具体电路连接上,将单片机一个端口的八 个端子接在一只数码管的八个引脚上(h端为小数 点),控制数码管的七段LED的亮或熄,显示器 出数字,这种显示控制方式就是静态显示。静态 显示电路连接特点是单片机端口的每一位与数码 管的一个端相连接,相当于单片机的一个引脚外 接一只发光二极管。
unsigned char dispcount; void delay02s(void) { unsigned char i,j,k; for(i=10;i>0;i--) for(j=200;j>0;j--) for(k=248;k>0;k--);} void main(void) { while(1) {for(dispcount=0;dispcount<8;dispcount++) { P0=tablewe[dispcount]; P1=tabledu[dispcount]; delay02s(); } } }
数码管段码表
表4-1 共阴数码管显示数字的段码表
段名称 dp g f e d c b a 对应段码
对应引脚
数字0 数字1 数字2 数字3 数字4 数字5 数字6 数字7 数字8
P1.7
0 0 0 0 0 0 0 0 0
P1.6
0 0 1 1 1 1 1 0 1

《数码管动态显示》实验报告

《数码管动态显示》实验报告
延时函数:数码管显示动态扫描时,用到延时程序,这里使用延迟10us的程序,此程序会反复调用,除数码管动态扫描外,数码管的闪烁提示也用到延时函数。
显示函数:在显示前先对小时和分钟的十位和个位进行判断,小时数除以10,得到的整数为小时的十位,对小时数取余,得到小时的个位,分钟数除以10,得到分钟数的十位,对分钟数取余,得到分钟数的个位,4个数码管轮流进行显示,分别延时10us,达到数码管显示时钟的效果。
《单片机原理与应用》实验报告
姓名:
学 号:
实验名称:
数码管动态显示
班级:
电信二班
一、实验工具、器材
Proteus仿真软件,Keil程序编写软件,四个共阳数码管,AT89C51单片机
二、实验原理
a)四个七段LED数码管,通过与单片机P2接口连接实现显示功能,用延时程序和循环程序产生一秒的定时,达到时、分、秒的计时。
b)动态显示:所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度合适,字符才不闪烁。本实验要求显示的时间为时,分,并且都用两个一位数码管来实现显示,此处调用显示函数计算显示。
三、硬件电路说明
本实验使用共阳型数码管,通常的数码管分为8段,即8个LED显示段, 其中dp代表小数点。数码管显示方法可分为静态显示和动态显示两种,这里采用动态显示方式,用P2.0~P2.7口来控制LED数码管的段控线。四位共阳LED数码管,其标号分别为HourH,HourL,MinL,MinH,低电平选通,且任何时候仅有一位输出低电平,显示时对各显示器进行动态扫描,显示器分时轮流工作。虽然每次只有一个显示器显示,但是由于人的视觉暂留现象我们仍会感觉所有的显示器都在同时显示。P2.0~P2.7口作为输出口控制8个发光二极管的亮灭,控制数码管的显示。因此,可以实现4个LED在我们看来同时亮,显示时间。

C单片机定时器及数码管控制实验报告

C单片机定时器及数码管控制实验报告

C单片机定时器及数码管控制实验报告一、实验目的:1.理解单片机的定时器的工作原理和使用方法;2.掌握单片机控制数码管显示的方法;3.综合运用单片机定时器和数码管控制来实现对时间的计时功能。

二、实验器材:1.STC89C52单片机开发板;2.4位数码管;3.相关电源电缆;4.相关串口连接线;5.PC机。

三、实验原理:1.定时器的工作原理:定时器是单片机中的一个重要模块,它可以用来产生一定时间间隔的定时中断。

在STC89C52单片机中,有两个可编程定时器,分别是Timer0和Timer1、定时器的工作方式有两种:定时器工作模式和计数器工作模式。

通过设定定时器的工作模式、预分频系数以及计数初值,可以实现定时中断。

2.数码管的控制原理:数码管是一种常见的数码显示器材,一般由多个LED组成,通过对LED的开关控制来实现不同数字的显示。

使用单片机控制数码管可以实现数字的动态显示。

通常使用行扫描和列驱动两种方法来控制数码管的显示。

在本实验中,我们使用列驱动的方法来控制数码管的显示。

3.单片机定时器和数码管控制实验的原理流程:(1)初始化定时器设置,包括设定工作模式、预分频系数和计数初值。

(2)初始化数码管连接引脚,并将引脚置为输出状态。

(3)在定时器中断中,通过改变数码管显示的值来实现时间的动态显示。

四、实验步骤:1.硬件连线将STC89C52单片机开发板上的P0口连接到4位数码管的输入口,共7根线。

其中6根线对应4位数码管的6个段输入,另外1根线连接到4位数码管的控制端,用于控制数码管的选通位。

2.软件编程(1)定义头文件和端口变量#include <reg52.h>#define uint unsigned int#define uchar unsigned charsbit DIG1=P0^0; // 数码管第1位sbit DIG2=P0^1; // 数码管第2位sbit DIG3=P0^2; // 数码管第3位sbit DIG4=P0^3; // 数码管第4位sbit DULA=P0^4; // 数码管段选sbit WELA=P0^5; // 数码管位选uchar code ledData[16]={ // 共阳数码管动态显示数值表,共16个字符0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};(2)初始化函数void Init_Timer0(void) // 初始化定时器0TMOD,=0x01;//设定为定时器模式,工作模式1TH0=0xfc; // 给定初值,定时1msTL0=0x18;ET0=1;//打开定时器0中断TR0=1;//启动定时器0void Init_Timer1(void) // 初始化定时器1TMOD,=0x10;//设定为定时器模式,工作模式1TH1=0xf8; // 给定初值,定时10msTL1=0xcc;ET1=1;//打开定时器1中断TR1=1;//启动定时器1(3)定时器中断函数void Timer0Interrupt( interrupt 1 // 计时定时器中断函数static uchar count=0;TH0=0xfc;TL0=0x18;count++;if(count>=1000) // 1秒到count=0;LED_Place=0; // 置位数码管位置Digit_Index++; // 下一个要显示的数字if(Digit_Index>=8)Digit_Index=0;}if(LED_Place==1) // 第2位数码管LEDX=ledData[N%10];DIG2=0;DIG1=1;//第2位数码管显示}else if(LED_Place==2) // 第3位数码管LEDX=ledData[N/10%10];DIG3=0;DIG2=1;//第3位数码管显示}else if(LED_Place==3) // 第4位数码管LEDX=ledData[N/100%10];DIG4=0;DIG3=1;//第4位数码管显示}else // 第1位数码管LEDX=ledData[N/1000%10];DIG1=0;DIG4=1;//第1位数码管显示}}(4)主函数void mainInit_Timer0(; // 初始化定时器0Init_Timer1(; // 初始化定时器1EA=1;//全局中断使能while(1)//主函数其他处理}五、实验效果:经过上述步骤的硬件连接和软件编程,当单片机开始运行后,数码管将开始显示时间。

工作报告之数码管显示实验报告

工作报告之数码管显示实验报告

数码管显示实验报告【篇一:嵌入式实验报告数码管显示实验】实验报告课程名称实验仪器实验名称系别专业班级/学号学生姓名实验日期成绩指导教师嵌入式系统编程实践清华同方辰源嵌入式系统实验箱实验四:数码管显示实验 __计算机学院_ _ 2013年10月11日___________________实验四:数码管显示实验一、实验问题回答(1)如何设置功能3,4中的循环速度?答:利用系统systick handler中断,控制循环速度void systick_handler (void){event = 1;}(2)若是想实现类似实验(三)通过键盘动态控制循环速度,考虑一下应该如何设计?答: systickperiodset(sysctlclockget() / x)//设置x的大小就可以控制循环的速度。

void reset_counter_speed(int x){systickintdisable();systickdisable();systickperiodset(sysctlclockget() / x);// 设置x,控制计数频率,值与频率成正比systickenable();systickintenable();},达到预期的效果。

二、实验目的和效果(效果即是否达到实验目的,达到的程度如何)学习、了解和掌握数码管工作原理和使用方法实验结果及检查(1)默认在在oled屏幕上分行显示自己的学号、姓名、项目序号、时间,如“2010011001”、“zhangsan”、“work4”、“2012-11-”(2)首先在屏幕上显示四个功能选单,通过键盘a-f键选择不同功能,选择后屏幕显示相关功能提示,接受键盘输入的数字键0-9并在数码管上显示。

如:开始显示:“please choose the function:” “a: ?” “b: ?” “c: ?” “d: ?”按下“a”键后,显示”now you choose function a”(3)按下键盘后,根据不同功能在数码管上显示按键字符。

项目四 定时器与数码管动态显示

项目四 定时器与数码管动态显示
项目四 定时器与数码管 动态显示
项目描述
定时器用来实现精确定时,是单片机系统的 一个重点,应用十分广泛,大家一定要完全理 解并熟练掌握定时器的应用。本项目利用定时 器设计一个实时时钟,利用六位数码管分别显 示时钟的时、分、秒等信息。
定时器
4.1.1 定时器的初步认识 学习定时器之前,我们先来了解单片机时序中的
统主频为12MHz,则各种工作方式定时器的最大定时时间为???
定时器
例:选择T1方式0用于定时,在P1.1输出周期为1ms方波,晶 振fosc=6MHz。
解:根据题意,只要使P1.1每隔500us取反一次即可得到1ms 的方波,因而T1的定时时间为500us,因定时时间不长,取方 式1即可。则M1 M0=1;因是定时器方式,所以C/T=0;在此 用软件启动T1,所以GATE=0。T0不用,方式字可任意设置, 只要不使其进入方式3即可,一般取0,故TMOD=10H。 计算500us定时T1初始值:
例如:流水线上一个包装是12盒,要求每到12盒就产生一个 动作,用单片机的工作方式0来控制,则应当预置的初值为:
TC = M C =8192 12=8180
5、定时器初值的计算
定时时间的计算公式为: T=(MTC)×T0 (或TC=MT/T0 )
其中:T——定时器的定时时间,即设计任务要求的定时时间; T0——计数器计数脉冲的周期,即单片机系统主频周期 的12倍; M——计数器的模值; TC——定时器需要预置的初值。 若设初值TC=0,则定时器定时时间为最大。若设单片机系
定时器
指令周期:执行一条指令(这里指汇编语言指令)所 需要的时间称为指令周期,指令周期是时序中的最 大单位。由于机器执行不同指令所需时间不同,因 此不同指令所包含的机器周期数也不尽相同。51系 列单片机的指令可能包括1~4个不等的机器周期。 通常,包含一个机器周期的指令称为单周期指令, 包含两个机器周期的指令称为双周期指令,等等。 指令所包含的机器周期数决定了指令的运算速度, 机器周期数越少的指令,其执行速度越快。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定时器
例:设定定时器1为定时工作方式,要求软件启动定时器1按 方式2工作。定时器0为计数方式,要求由软件启动定时器0 ,按方式1工作。怎么来实现这个要求呢? ①控制定时器1工作在定时方式或计数方式是哪个位?C/T位 (D6)是定时或计数功能选择位,当C/T=0时定时/计数器 就为定时工作方式。 ②设定定时器1按方式2工作。要使定时/计数器1工作在方式2 ,M0(D4) M1(D5)的值必须是1 0。 ③设定定时器0为计数方式。当C/T=1时,就工作在计数器方 式。 ④由软件启动定时器0,当门控位GATE=0时,定时/计数器 的启停就由软件控制。
,即低电平触发和下降沿触发。外部中断请求的这两种信号
方式,可通过设置寄存器TCON中的IT0和IT1位状态的值来 设定。定时器控制寄存器TCON各位定义如下表所示。
定时器/计数器的4种工作方式
M1 M 0 0 0 工作方式 工作方式0 功能描述 13位计数器
0 1
1 0 1 1
工作方式1
工作方式2 工作方式3
16位计数器
自动再装入8位计数器 定时器0:分成两个8位计数器, 定时器1:停止计数
定时器
MCS-51单片机的定时器/计数器共有4种工作模式,现以 T0为例加以介绍,T1与T0的工作原理相同,但在方式3下, T1停止计数。 1.工作方式0( M1M0=00 ,13位定时器/计数器) 由TH0的全部8位和TL0的低5位(TL0的高3位未用)构成13 位加1计数器,当TL0低5位计数满时直接向TH0进位,并当全 部13位计数满溢出时,溢出标志位TF0置“1”。 2.工作方式1 ( M1M0=01 ,16位定时器/计数器) 由TH0和TL0构成16位加1计数器,其他特性与工作方式0相同 。
项目四 定时器与数码管 动态显示
项目描述ቤተ መጻሕፍቲ ባይዱ
定时器用来实现精确定时,是单片机系统的
一个重点,应用十分广泛,大家一定要完全理
解并熟练掌握定时器的应用。本项目利用定时
器设计一个实时时钟,利用六位数码管分别显
示时钟的时、分、秒等信息。
定时器
4.1.1 定时器的初步认识 学习定时器之前,我们先来了解单片机时序中的 几个概念:时钟周期、机器周期和指令周期。 时钟周期:时钟周期T是时序中最小的时间单位, 具体计算的方法就是1/时钟源频率,我们KST-51单
时钟周期,也就是12/11059200秒。
定时器
指令周期:执行一条指令(这里指汇编语言指令)所 需要的时间称为指令周期,指令周期是时序中的最 大单位。由于机器执行不同指令所需时间不同,因 此不同指令所包含的机器周期数也不尽相同。51系 列单片机的指令可能包括1~4个不等的机器周期。 通常,包含一个机器周期的指令称为单周期指令, 包含两个机器周期的指令称为双周期指令,等等。 指令所包含的机器周期数决定了指令的运算速度, 机器周期数越少的指令,其执行速度越快。
特率发生器)。
定时器
4、工作方式3(M1M0=11,2个8位定时器/计数器,仅适用于 T0) TL0:8位定时器/计数器,使用T0原有控制资源TR0和 TF0,其功能和操作与方式0或方式1完全相同。 TH0:只能作为8位定时器,借用T1的控制位TR1和TF1, 只能对片内机器周期脉冲计数。 在方式3模式下,定时器/计数器0可以构成两个定时器或 者一个定时器和一个计数器。 一般,只有在T1以方式2运行(当波特率发生器用)时, 才让T0工作于方式3下。
定时器
初始化程序如下: TMOD=0x10; //定时器1方式0 TH1=0XFF; TL1=0X06; //装入时间常数 TR1=1; //启动定时器
定时器
4.1.4 定时器中断 1、中断的基本概念 中断的定义:所谓“中断”,是指CPU执行正常程序时, 系统中出现特殊请求,CPU暂时中止当前的程序,转去处理 更紧急的事件(执行中断服务程序),处理完毕(中断服务 完成)后,CPU自动返回原程序的过程。 中断后转向执行的程序叫中断服务程序或中断处理程序。 原程序被断开的位置(地址)叫作断点。 发出中断信号的设备称为中断源。中断源要求中断服务所 发出的标志信号称为中断请示或中断申请。 中断源向CPU发出中断申请,CPU经过判断认为满足条件 ,则对中断源作出答复,这叫中断响应。中断响应后就去处 理中断源的有关请求,即转去执行中断服务程序。
定时器
(3)定时器模式寄存器TMOD(地址0x89、不可位寻址)
T1
GATE C / T M1 M0 GATE C / T
T0
M1 M0
M1,M0:工作方式选择位 。 =00:13位定时器/计数器; =01:16位定时器/计数器(常用); =10:可自动重装的8位定时器/计数器(常用); =11:T0 分为2个8位定时器/计数器;仅适用于T0。 C/ T :定时方式/计数方式选择位。 = 1:选择计数器工作方式,对T0/T1引脚输入 外部事件的负脉冲计数; = 0 :选择定时器工作方式,对机器周期脉冲 计数定时。
定时器
2. 引入中断的主要优点 (1)提高CPU工作效率 (2)实现实时处理功能 (3)实现分时操作
定时器
3. STC89C52中断源 STC89C52单片机共有6个中断源。它们分别是:2个外部中
断,即 4个片内中断,即定时器T0的溢出中断、定时器T1的
溢出中断、定时器T2的溢出中断和串行口中断;这6个中断 源,可以根据需要随时向CPU发出中断申请。 (1)外部中断源 外部中断是由外部信号引起的,请求有两种信号触发方式
定时器
定时器用来进行定时。定时器内部有一个寄存器,开始计 数后,这个寄存器的值每经过一个机器周期就会自动加1, 因此,我们可以把机器周期理解为定时器的计数周期。定时 器每过一个机器周期的时间,也就是12/11059200秒,数字自 动加1。还有一个特别注意的地方,就是钟表是加到60后, 秒就自动变成0了,这种情况在单片机或计算机里我们称之 为溢出。那定时器加到多少才会溢出呢?后面会讲到定时器 有多种工作模式,分别使用不同的位宽(指使用多少个二进 制位),假如是16位的定时器,也就是2个字节,最大值就 是65535,那么加到65535后,再加1就算溢出,对于51单片机 来说,溢出后,这个值会直接变成0。从某一个初始值开始 ,经过确定的时间后溢出,这个过程就是定时的含义。
定时器
4.1.3 定时器初始化 由于定时器/计数器的功能是由软件编程确定的,所以一般 在使用前都要对其进行初始化,初始化的步骤一般如下: (1)确定工作方式(即对TMOD赋值); (2)预置定时或计数的初值(可直接将初值写入TH0、TL0 或TH1、TL1); (3)根据需要开放定时器/计数器中断(直接对IE位赋值) (4)启动定时器/计数器(若已规定用软件启动,则可把 TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需 给外引脚步加启动电平。当实现了启动要求后,定时器即按 规定的工作方式和初值开始计数或定时)。
片机开发板上用的晶振是11.0592M,那么对于我们
这个单片机系统来说,时钟周期=1/11059200秒。
定时器
机器周期:单片机完成一个操作的最短时间。机 器周期主要针对汇编语言而言,在汇编语言下程序 的每一条语句执行所使用的时间都是机器周期的整 数倍,而且语句占用的时间是可以计算出来的。51 单片机系列,在其标准架构下一个机器周期是12个
定时器
4.1.2 定时器的寄存器 标准的51单片机内部有T0和T1这两个定时器。 (1)定时值存储寄存器 下表的寄存器是存储定时器的计数值的。TH0/TL0 用于T0,TH1/TL1用于T1。
先学习如何看寄存器 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
1、先分清每一位属于哪个模块 2、查看每一位是可读、可写、可读写位的哪一种
定时器
下面介绍一下确定时时/计数器初值的具体方法。 在不同工作方式下计数器位数不同,最大计数值也不同。 现假设最大计数值为M,那么各方式下的最大值M值如下: 方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:定时器0分成两个8位计数器,所以两个M均为256。 因为定时器/计数器是作“加1”计数,并在计数满溢出时 产生中断,因此初值X可以这样计算: X=M-计数值
3、看每一位的具体功能以及在0或1时分别是什么状态
4、如何通过指令设置寄存器或者寄存器某一位的值 5、寄存器的物理地址
定时器
(2)定时器控制寄存器TCON (地址0x88、可位寻址)
TF0/TF1:T0/T1计数溢出标志位。可用于申请中断或供CPU查 询。在进入中断服务程序时会自动清零;但在查询方式时必须 软件清零。 =1 :计数溢出; =0 :计数未满。 TR0/TR1:T0/T1启停控制位。 =1 :启动计数; =0: 停止计数。 低四位IE1、IT1、IE0、IT0用于外部中断,下一章再做介绍。
定时器
⑤设定定时/计数器工作在方式1,使定时/计数器0 工作在方式1,M0(D0) M1(D1)的值必须是0 1。 从上面的分析我们可以知道,只要将TMOD的各位 ,按规定的要求设置好后,定时器/计数器就会按我 们预定的要求工作。我们分析的这个例子最后各位的 情况如下: D7 D6 D5 D4 D3 D2 D1 D0 0 0 1 0 0 1 0 1 二进制数00100101b=十六进制数25H。所以执行 TMOD = 0x25(或者用汇编语言MOV TMOD,#25H)这 条指令就可以实现上述要求。
定时器
3.工作方式2(M1M0=10,自动重装计数初值的8位
定时器/计数器) 16位定时器/计数器被拆成两个8位寄存器TH0和 TL0,CPU在对它们初始化时必须装入相同的定时器/ 计数器初值。以TL0作计数器,而TH0作为预置寄存
器。当计数满溢出时,TF0置“1”,同时TH0将计数
初值以硬件方法自动装入TL0。这种工作方式很适合 于那些重复计数的应用场合(如串行数据通信的波
相关文档
最新文档