嵌入式软件开发基础实验报告 数码管显示

时间:2024.4.13

上海电力学院

嵌入式软件开发基础实验报告

电力学院新校标

题目:    ARM 实验4.6】数码管显示实验            

专业:  电子科学与技术

年级: 

姓名: 

学号: 

一、实验目的

    (1)通过实验掌握 LED 的显示控制方法;

(2)巩固实验 4.1 中所掌握的对存储区进行访问的方法;

二、 实验设备

  硬件:Embest EduKit-III 实验平台,Embest ARM 标准/增强型仿真器套件,PC 机

软件:Embest IDE Pro ARM 集成开发环境,Windows 98/2000/NT/XP

三、 实验内容

编写程序使实验板上八段数码管循环显示 0 到 9 字符

四、 实验原理

嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电

压低、寿命长的特点,因此使用非常广泛。

(1)结构

八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点

形的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母

(2)工作原理

以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,

当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。电平信号按照dp,g,e…a 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表

(3)显示方式

八段数码管的显示方式有两种,分别是静态显示和动态显示。静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约 1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。

五、实验步骤

1. 准备实验环境

使用 Embest 仿真器连接目标板,使用 Embest EduKit-III 实验板附带的串口线,连接实验 板上的 UART0 和 PC 机的串口。

2.  串口接收设置

在 PC 机上运行 windows 自带的超级终端串口通信程序(波特率 115200、1 位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。

3. 打开实验例程

 1)拷贝光盘 CD1\Software\EduKit44b0 文件夹到 EmbestIDE\Examples\Samsung\ 目录下;

2)  使用 Embest   IDE  通过 Embest   JTAG  仿真器连接实验板,打开实验例程目4.6_8led_test 子目录下的 8led_test.pjf 例程,编译链接工程成功;

3) 点击 IDE  的 Debug 菜单,选择 Remote Connect 项或 F8 键,远程连接目标板;

4)  点击 IDE  的 Debug 菜单,选择 Download 下载调试代码到目标系统的 RAM 中;

5) 点击 Debug 菜单的 Go 或 F5 键运行程序。

 4. 观察实验结果

1).在 PC 机上观察超级终端程序主窗口,可以看到如下界面:

boot success...

8-segment Digit LED Test Example (Please look at LED)

2). 实验系统八段数码管循环显示 0 ~ 9 字符。

六、实验小结

这次ARM实验课的实验比较容易,只需打开现有程序即可实现,唯一的困难就是在于setting比较困难。我觉得实验在于最困难的地方还是在于没有提前预习,给实验造成了很大的困难,进程缓慢。这是我以后实验仍需注意的地方。


第二篇:实验报告 实验七 八段数码管显示实验


EDA实验报告       之

  实验七  八段数码管显示实验

1、实验目的

1)了解数码管动态显示的原理。

2)了解用总线方式控制数码管显示

2、实验要求:利用实验仪提供的显示电路, 动态显示一行数据.

             提示:把显示缓冲区(例如可为60H~65H作为缓冲区)的内容显示出来,当修改显示缓冲区的内容时,可显示修改后的内容(为键盘扫描、显示实验做准备)。

3、实验说明

本实验仪提供了6 位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。显示共有6位,用动态方式显示。8位段码、6位位码是由两片74LS374输出。位码经MC1413或ULN2003倒相驱动后,选择相应显示位。

本实验仪中 8位段码输出地址为0X004H,位码输出地址为0X002H。此处X是由KEY/LED CS 决定,参见地址译码。

做键盘和LED实验时,需将KEY/LED CS 接到相应的地址译码上。以便用相应的地址来访问。例如,将KEY/LED CS接到CS0上,则段码地址为08004H,位码地址为08002H。

七段数码管的字型代码表如下表:

a

-----

f|     |b

|     |

-----

|  g  |

e|     |c

-----

d   。h

显示字形  g  f  e  d  c  b  a  段码

0         0  1  1  1  1  1  1  3fh

1         0  0  0  0  1  1  0  06h

2         1  0  1  1  0  1  1  5bh

3         1  0  0  1  1  1  1  4fh

4         1  1  0  0  1  1  0  66h

5         1  1  0  1  1  0  1  6dh

6         1  1  1  1  1  0  1  7dh

7         0  0  0  0  1  1  1  07h

8         1  1  1  1  1  1  1  7fh

9         1  1  0  1  1  1  1  6fh

A         1  1  1  0  1  1  1  77h

b         1  1  1  1  1  0  0  7ch

C         0  1  1  1  0  0  1  39h

d         1  0  1  1  1  1  0  5eh

E         1  1  1  1  0  0  1  79h

F         1  1  1  0  0  0  1  71h

4、原理图及连线

5、实验内容

1)         使用仪器、仪表,开发平台型号

本实验用到了WAVE 6000软件平台,电脑一台,LAB6000实验箱,示波器,若干连线,串行数据线。

2)         性能指标、技术要求、思路方案、流程图

5.1   性能指标、技术要求见实验目的和实验要求。

5.2   思路方案:将数据放入显示缓冲区60—65H单元,通过位选信号,段选信号控制数码管显示相应的内容,其中,段选信号由查表得到。为了动态显示富有变化,每一轮显示完毕后,需要改变数据单元的内容。为了数码管显示不抖动,还需要对每一轮数据显示一定的次数,具体见代码。

5.3   流程图:(见下页)

流程图:

3)         源程序(为了程序看起来更规范和容易理解,最好将各部分功能分离,在主程序中以子程序调用的形式调用相应的子程序)

ORG              0000H

LJMP             BEGIN

ORG              0030H

BEGIN:

LCALL            INITIALIZE        ;设置60H--65H单元的初值                                      

DIS:

LCALL            DISPLAY             ;显示缓冲区单元的数据

LCALL        CHANGE           ;改变缓冲区单元的数据

LCALL         DELAY           ;为了两轮显示间时间间隔久一些

DJNZ             R5,DIS               ;是否显示完一遍0-F,是则重新开始

SJMP         BEGIN                ;重新开始

SJMP             $

[番茄花园1] 

;==============

DISPLAY:[番茄花园2] 

;===

MOV             R6,#40               ;设置每一轮显示的次数

BEGIN0:

MOV             A,#01H              ;位选通信号

MOV             R2,#6                 ;显示缓冲区只有6个字节单元

MOV             R0,#60H            ;显示缓冲区单元数据地址

;***

LOOP:

MOV             DPTR,#8002H  ;位选输出地址

MOVX           @DPTR,A

RL                           A                         ;修改位信号

PUSH             A

MOV             DPTR,#8004H  ;数据输出地址

MOV             A,@R0

LCALL            CHECK               ;查表

MOVX           @DPTR,A

LCALL        DELAY                ;显示一个数后稍等一会

;***

INC                R0

POP               A

DJNZ             R2,LOOP           ;这一轮是否显示完

DJNZ             R6,BEGIN0       ;总轮数显示40次,是否显示完

RET

;==============

initialize:[番茄花园3] 

mov     60h,#00h

mov     61h,#01h

mov     62h,#02h

mov     63h,#03h

mov     64h,#04h

mov     65h,#05h

MOV     R5,#11                 ;为了显示0---F,需要调用change子函数11次

RET

;==============

DELAY:[番茄花园4] 

MOV           R7,#03H

MOV          R3,#0FFH

LOOPP:

DJNZ           R3,$

DJNZ           R7,LOOPP

RET

;==============

CHANGE:[番茄花园5] 

MOV             R2,#6                 ;6次

MOV             R0,#60H            ;数据地址

LOOP1:

INC          @R0

INC          R0

DJNZ        R2,LOOP1

RET

;==============

CHECK:[番茄花园6] 

INC                A

MOVC           A,@A+PC

RET

;==============

TABLE:[番茄花园7] 

DB                 3FH,06H,5BH,4FH,66H

DB                 6DH,7DH,07H,7FH,6FH

DB                 77H,7CH,39H,5EH,79H

DB                 71H

4)         实验步骤,完成情况

4.1   在WAVE 6000中新建文件,并将代码写入文件中,保存为EXPERIMENT7.ASM;

4.2   在WAVE 6000中新建项目,并在模块文件中包含上述EXPERIMENT7.ASM文件,最后保存为EXPERIMENT7.PRG。

4.3   编译程序,按照提示改正错误的地方,直到没有语法错误为止。

4.4   完成上一步后,检查是否有逻辑错误。

4.5   按连线图连好线,经师兄确认后打开电源。

4.6   观察数码管的输出是否正确。如果错误,检查连线,源程序,并修改错误的地方,直到调试出正确的波形为止。

4.7   结果正确后,等师兄检查完毕。然后收拾实验仪器,包括电源线、导线、串口线,示波器等,收拾桌面和凳子。

6、本实验遇到问题及解决方案

6.1   第一次做这个实验的时候,由于没有找到能用的电脑,和实验箱,以至于一直只能处于模拟调试的阶段,所以没有什么进展。

解决方案:俗话说,早起的鸟儿有虫吃,所以呢,以后实验课得早点去,呵呵。

6.2   实验中遇到一个问题:数码管显示的数据很是奇妙,非常诡异,而且复位后显示缓冲区的数据也被改得乱七八糟,着实让人头大。

解决方案:经过仔细(几乎是单步调试了)后,发现,原来是R3在两个不同的地方被误用了,改正后程序就没问题了。这也给我一个教训:用了什么寄存器单元资源,应该做到心中有数。

6.3   数码管显示的时候感觉总是有抖动。

解决方案:这是程序中delay的延时没有设置适当导致的,经过尝试几个不同的延时数值后,终于得到比较好的显示效果。一点经验:实践是检验真理的唯一标准,做硬件实验更是如此。呵呵。

7、对本实验的改进建议和疑难问题:

7.1   改进建议:

为了增大难度,可以将显示缓冲区改为外部数据存储单元,还可以将显示数据单元的内容增大一些。

7.1   疑难问题:

如何将数码管的显示抖动去除得更好,这是一个问题。除了实验过程中采用的尝试的方法以外,有没有什么科学的计算推理方法呢?这值得思考。

20##-5-6


 [番茄花园1]这部分是主程序

 [番茄花园2]显示子程序

 [番茄花园3]初始化显示缓冲区数据单元

 [番茄花园4]延时子程序

 [番茄花园5]改变缓冲区数据单元的子程序

 [番茄花园6]查表子程序

 [番茄花园7]表格

更多相关推荐:
单片机c语言版数码管动态显示实验报告

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

数码管动态显示实验报告

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

数码管显示实验报告

HUNANUNIVERSITY课程实验报告实验名称学生姓名学生学号专业班级指导老师数码管显示实验20xx1217实验三数码管显示实验一实验目的1学习按键扫描的原理及电路接法2掌握利用8255完成按键扫描及显示二...

实验四 七段数码管显示实验报告

实验四七段数码管显示实验一实验目的掌握数码管显示数字的原理二实验内容1静态显示数码管为共阴极通过BCD码译码驱动器CD4511驱动其输入端AD输入4位BCD码位码输入低电平选中按图41连接好电路将8255的A口...

实验一_用七段数码管显示简单字符--译码器及其使用 实验报告

用七段数码管显示简单字符译码器及其应用实验报告专业班级20xx级计算机1班学号1137030姓名赵艺湾实验地点理工楼901实验时间20xx926实验一用七段数码管显示简单字符译码器及其应用一实验目的1了解显示译...

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

实验七数码管动态扫描实验姓名专业学号20xx412381成绩一实验目的1掌握KeilC51软件与protues软件联合仿真调试的方法2掌握单片机对数码管的动态显示控制方式3掌握定时器的基本使用及编程方法二实验仪...

数码管扫描显示控制器设计与实现实验报告

实验报告实验名称数码管扫描显示控制器设计与实现学院信息与通信工程学院班级姓名数字电路与逻辑设计实验报告学号日期索引一实验目的4二实验所用仪器及元器件4三实验任务要求4四实验设计思路及过程51实验原理52设计思路...

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

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

实验八 数码管显示实验 - 天津电子信息职业技术学院——精品课

实验八数码管显示实验一实验目的1熟悉共阴共阳数码管的使用2掌握数码管的驱动方法二实验原理在数字测量仪表和各种数字系统中都需要将数字量直观的显示出来一方面供人们直接读取测量和运算的结果另一方面用于监视数字系统的工...

西南交大 7段数码管显示译码器实验报告

实验四7段LED数码管显示译码器设计西南交大计算机组成原理实验代码实验要求本实验要求实现16位的二进制数的7段LED数码管显示译码电路采用动态扫描显示可以实现计数值或固定值实验原理动态扫描由38译码器的输出来决...

单片机应用实验报告 2键盘、LED 数码管显示实验

西华大学实验报告西华大学实验报告理工类开课学院及实验室机械工程与自动化学院计算机机房实验时间20xx年5月20日一实验目的二实验内容三实验电路1西华大学实验报告四实验程序includeltreg52hgtsbi...

数码管随机模拟显示乘法口诀实验报告

宁波工程学院课题题学院名专学生姓名指导教设计与讨论课程设计报告目称电子与信息工程学院业师目录第一章技术指标11整体功能要求12系统结构要求13设计条件第二章整体方案设计1整体方框图及原理第三章单元电路设计31数...

数码管显示实验报告(32篇)