实验四、数码管动态扫描显示实验

时间:2024.3.20

实验四、数码管动态扫描显示实验

一、实验目的

1.学习和理解数码管动态扫描的工作原理

2.学习和掌握数码管动态扫描的电路接口设计及程序编写

二、实验设备

1.仿真器

2.单片机最小系统教学实验模块

3.动态数码管显示模块

三、实验要求

    使8位数码管显示“0 1 2 3 4 5 6 7”字样。

四、实验原理

4.1  8段数码管显示原理

数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。对于“共阳极”的数码管,内部每个发光二极管的阳极被接在一起,成为该各段的公共选通线;发光二极管的阴极则成为段选线。对于“共阴极”数码管,则正好相反,内部发光二极管的阴极接在一起,阳极成为段选线。这两种数码管的驱动方式是不同的。当需要点亮“共阳极”数码管的一段时,公共段需接高电平(即写逻辑1)、该段的段选线接低电平(即写逻辑0),从而该段被点亮。当需要点亮“共阴极”数码管的一段时,公共段需接低电平(即写逻辑0)、该段的段选线接高电平(即写逻辑1),该段被点亮。

数码管的段位顺序如右图所示:

一般来说在一个字节中按照abcdefg dp的顺序放置字型码,比如在一个“共阴极”数码管上要显示“1”,则b、c段需被点亮,因此在段选线中写入60H。例如使用P0口接段选线,则使用下面的语句即可点亮数码管:      MOV   P0,#06H

对应规则:

a----->D7

b----->D6

c----->D5

d----->D4

e----->D3

f----->D2

g----->D1

dp---->D0

4.2 多位数码管的显示

在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个单片机的8位I/O口控制,形成段选线的多路复用。而各位数码管的共阳极或共阴极分别由单片机独立的I/O口线控制,顺序循环地点亮每位数码管,这样的数码管驱动方式就称为“动态扫描”。在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的“视觉残留”,只要延时时间设置恰当,便会感觉到多位数码管同时被点亮了。

8位8段LED动态显示器电原理图如图2-1所示。

                      图2-1  8位8段LED动态显示器电原理图

图2-1所示为一个8位8段LED动态显示器电路原理图。其中段选线占用一个8位I/O口,位选线占用一个8位I/O口,由于各位的段选线并联,段线码的输出对各位来说都是相同的。因此,同一时刻,如果各位位选线都处于选通状态的话,8位LED将显示相同的字符。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一位的位选线处于选通状态时,其它各位的位选线处于关闭状态,这样,8位LED中只有选通的那一位显示出字符,而其它位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他的位选线处于关闭状态。如此循环下去,就可以使各位“同时”显示出将要显示的字符。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则可造成多位同时亮的假象,达到显示的目的。

五、实验步骤

8位共阳极数码管动态扫描显示的单片机电路连线如图2-2所示,图中的三角形符号是加在位选线上的驱动,即74HC245,这一举措使得数码管能够得到合适的亮度。

图2-2  扫描8位LED动态显示器

1按照图2-2的电路原理,用导线正确连接动态扫描方式实验模块和单片机最小系统模块。

2示例程序如下:

ORG  0000H

START: MOV R1,#01h

       MOV R0,#00H

       MOV R2,#08H

DISP:  MOV DPTR,#TAB

       MOV A,R0

       MOVC A,@A+DPTR

       MOV P0,A

       MOV A,R1

       MOV P1,A

       ACALL DL10MS

       INC R0

       MOV A,R1

       RL A

       MOV R1,A

       DJNZ R2,DISP

       AJMP START

DL10MS:MOV R7,#01H

DL0:   MOV R6,#0FH

DL1:   nop

       nop

       DJNZ R6,DL1

       DJNZ R7,DL0

       RET

tab:   db 03h,09FH,25h,0Dh,099h,49h,41h,01Fh,01h,09h,0BFH

END               ; 0 1 2 3 4 5 6 7的字型码 

将程序调入仿真器进行调试,直至达到实验要求。

六、实验报告

1. 画出实验电路原理图,并简要分析电路的执行过程。

2. 画出单片机程序的流程图,给出程序清单,并给予适当注释。

3. 电路中74HC245的作用是什么?

4. 如果将数码管换成共阳极,电路中要做那些修改?程序中要做哪些修改,给出共阳极数码管动态扫描显示的电路和程序清单。

5.实验过程中遇到哪些问题,是如何解决的?


第二篇:数码管动态扫描实验实验报告及程序


实验七 数码管动态扫描实验

姓名 专业 学号 2010412381 成绩

一、实验目的

1. 掌握Keil C51软件与protues软件联合仿真调试的方法;

2. 掌握单片机对数码管的动态显示控制方式;

3. 掌握定时器的基本使用及编程方法。

二、实验仪器与设备

1.微机1台 2.Keil C51集成开发环境 3.Proteus仿真软件

三、实验内容

1. 用Proteus设计一8位数码管动态扫描显示电路。要求利用P0口 做数码管的段选线,P1.0~P1.2与74LS138译码器的3个输入端相连,其译码输出Y0~Y7作为数码管的位选线。参考电路见后面实验报告。

2. 编写程序,将数字1~8分别显示在8个数码管上,要求显示无闪烁。

3. 延长每个数码管选通的时间(如500ms),观察动态扫描过程。

4. 编写程序,利用Proteus中的“激励源/DCLOCK/数字类型/时钟”产生频率为1HZ的方波输出,并利用定时/计数器T1统计脉冲的个数,将统计结果动态实时的显示在数码管上。

5. 提高时钟频率(如100KHZ),观察显示情况。

四、实验原理

1. 动态扫描法:

1) 动态扫描法是对各数码管循环扫描、轮流显示的方法。由于一次只能让一个数码管显示,因此,要显示8位的数据,必须让数码管一个一个轮流显示才可以,同时每个数码管显示的时间大约在1ms到4ms之间,所以为了保证正确显示,每隔1ms,就得刷新一个数码管。当扫描显示频率较高时,利用人眼的视觉暂留特性,看不出闪烁现象,这种显示需要一个接口完成字型码的输出(段选),另一接口完成各数码管的轮流点亮(位选)。

2) 在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,每个显示缓冲区装有显示的不同数据即可。

3) 对于显示的字型码数据采用查表方法来完成。

2. P0口

P0口作为地址/数据总线使用时是一个真正的双向端口;而作通用I/O口时,只是一个准双向口,由于其内部漏极开路,应外接10KΩ的上拉电阻,否则无法输出高电平。

3. 74LS138:3线—8线译码器

引脚排列:

1

真值表:

五、实验步骤

1.用Proteus设计数码管动态扫描显示电路;

2.在Keil C51中编写键盘识别程序,编译通过后,与Proteus联合调试; 3.启动仿真,观察数码管显示是否正确;

4.用Proteus设计脉冲计数电路,仿真调试、运行程序并查看结果。 六、电路设计、调试及程序

1) 实验电路:

数码管动态扫描实验实验报告及程序

数码管动态扫描实验实验报告及程序

数码管动态扫描实验实验报告及程序

2

2) 实验程序: ‘1’~‘8’显示:

#include<reg51.h>

#define uchar unsigned char #define uint unsigned int uchar code

table[]={0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F}; uchar code

address[]={0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff}; void delay(uint m) {

while(m--); }

void main() {

uchar m=0; while(1) {

if(m==8){ m=0;} P1=address[m]; P0=table[m++]; delay(500); } }

利用T1统计脉冲个数: #include<reg51.h>

#define uchar unsigned char #define uint unsigned int uchar code

table[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6f}; uchar code

address[]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8};

uchar data dis_buf[8]; uchar i,j; uint count;

unsigned long int num;

void delay(uint m) {

while(m--);

}

void display() {

while(1) {

num=count*65536+TH1*256+TL1; for(j=0;j<8;j++) {

dis_buf[j]=num%10, num=num/10; }

for(i=0;i<8;i++) {

P1=address[i];

P0=table[dis_buf[i]]; delay(500); }

if(num>99999999) {

num=0;count=0;delay(500); } } }

void main() {

TMOD=0x50; TH1=0x00; TL1=0x00; EA=1; ET1=1; TR1=1;

display(); }

void time1(void) interrupt 3 {

TH1=0x00; TL1=0x00; count++; }

3

3) 调试过程及结果分析

分别对两个实验内容进行仿真调试,调整延时时间与时钟频率,观察两个实验内容的变化。内容一中数字1~8分别无闪烁的显示在了数码管上,延长扫描时间后,观察到数字从左到右循环扫描;内容二中脉冲个数以数字时钟的周期间隔显示在数码管上,提高时钟频率后,速度相应加快。

七、实验问题、解决及总结

实验内容一没有什么问题,内容二中考虑到取值范围,应将总计数脉冲数num定义为无符号长整形变量,实验时会出现计数不到99999999就返回的情况,原因是计数变量count应定义为无符号整型变量,否则计数超出范围。另外,程序将八位数字全部写出后作为table【】的未知变量显得啰嗦冗长,可用一个for循环代替,循环中令dis_buf【】=num%10;num=num/10;即可实现取出8位数字的功能。

通过本次实验,掌握了数码管的动态扫描方法,也掌握了定时器的计数功能的使用方法,并且更加熟练地将零散的程序模块组合成一个完整的程序,能更快的找到程序中的问题。

4

更多相关推荐:
数码管动态显示实验报告

实验四数码管动态显示实验一一实验要求1在Proteus软件中画好51单片机最小核心电路包括复位电路和晶振电路2在电路中增加四个7段数码管共阳共阴自选将P1口作数据输出口与7段数码管数据引脚相连P20P23引脚输...

单片机c语言版数码管动态显示实验报告

数码管动态显示实验一实验要求1在Proteus软件中画好51单片机最小核心电路包括复位电路和晶振电路2在电路中增加四个7段数码管共阳共阴自选将P1口作数据输出口与7段数码管数据引脚相连P20P23引脚输出选控制...

EDA八段动态数码管显示设计实验报告

第十周动态数码管显示设计报告姓名学号专业班级指导教师20xx年11月8日目录EDA技术及应用课程设计任务书3实验目的5设计要求5实验设备5扫描原理5设计任务6实验程序6时序仿真波形图7仿真结果8模拟电路8设计总...

七段数码管的动态扫描显示实验报告

实验四七段数码管的动态扫描显示一实验目的1进一步熟悉QuartusII软件进行FPGA设计的流程2掌握利用宏功能模块进行常用的计数器译码器的设计3学习和了解动态扫描数码管的工作原理的程序设计方法二实验原理及过程...

机器人控制-数码管动态显示-仿真实验报告

机器人控制课程总结报告机器人控制仿真实验二数码管动态显示姓名李铃年级20xx级系别信息工程学院计科师学号1111000048同组人姓名杨晨年级20xx级系别信息工程学院计科师同组人学号111100005420x...

数码管动态扫描实验报告

数码管动态扫描实验一实验目的学习计数器的设计分析合测试方法学习硬件扫描显示电路的设计方法二实验仪器1PC机2SW51PROC单片机综合实验平台三实验内容编写一段程序用单片机P0口和P2口的IO输出去控制8位的数...

实验十二 数码管动态显示实验

实验十二数码管动态显示一实验目的1掌握数码管的显示原理2掌握利用数码管显示计算数机内部信息3掌握数码管动态显示的原理及使用二实验技术准备1数码管排列图实验箱共有8个共阴极数码管段码输入端ABCDEFGDP8个数...

实验四 七段数码管的动态扫描显示

实验四七段数码管的动态扫描显示专业电子信息科学与技术姓名高晓骏学号20xx02119xx10一实验目的1进一步熟悉QuartusII软件进行FPGA设计的流程2掌握利用宏功能模块进行常用的计数器译码器的设计3学...

实验2:8255七段数码管静动态显示

微机实验报告书学号姓名班级同组名单实验日期20xx1221实验题目七段数码管的静态显示实验目标掌握数码管显示数字的原理功能键盘输入一位十进制数字09用七段数码管显示解题思路1静态显示按图10a连接好电路将825...

实验五___七段数码管动态显示实验_xs

实验五七段数码管动态显示实验一实验目的掌握数码管动态显示数字的原理二实验内容动态显示按图52连接好电路七段数码管段码连接不变位码驱动输入端S1S0接8255C口的PC1PC0编程在十位和个位两个数码管上显示56...

电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化EDA数字时钟LED数码管显示二实验内容和实验目的16个数码管动态扫描显示驱动2按键模式选择时分秒与闹钟时分调整控制3用硬件描述语言或混合原理图设计时分秒计数器模块闹钟模块按键控制状态机模块动态扫...

单片机实验2 数码管控制实验 静态显示

华南农业大学实验报告专业班次组别题目数码管控制实验静态显示姓名陈建泽日期20xx1029一实验目的1学习数码管的静态控制原理2学习动态数码管的编程方法二实验设备STC89C52单片机实验板串口下载线USB连接线...

数码管动态显示实验报告(24篇)