实验报告 - - 实验七 - 八段数码管显示实验

合集下载

8位共阴数码管实验报告

8位共阴数码管实验报告

8位共阴数码管实验报告一、引言数码管是一种常见的数字显示器件,广泛应用于各种电子设备中。

8位共阴数码管是一种常见的数码管类型,本实验旨在通过实际操作,了解8位共阴数码管的原理和使用方法,并通过编程控制,实现数字的显示。

二、实验原理1. 共阴数码管原理共阴数码管是一种常见的数码管类型,它由8个LED发光二极管组成。

在共阴数码管中,所有的LED的阴极都是连接在一起的,而阳极则分别连接到控制芯片的不同引脚上。

当某个LED的阳极接通时,与之对应的数字就会在数码管上显示出来。

2. 数码管的控制为了控制数码管显示不同的数字,我们需要通过控制芯片的引脚电平来控制数码管的阳极。

具体来说,我们可以通过将某个引脚拉低,使得与之相连的数码管的阳极接通,从而显示对应的数字。

三、实验材料和器件•Arduino开发板•8位共阴数码管•杜邦线四、实验步骤1. 连接电路将Arduino开发板和8位共阴数码管通过杜邦线连接起来。

具体的连接方式如下:- 将数码管的共阴极连接到Arduino开发板的GND引脚。

- 将数码管的8个阳极分别连接到Arduino开发板的数字引脚2-9。

2. 编写程序打开Arduino开发环境,编写以下程序代码:int digitPins[] = {2, 3, 4, 5, 6, 7, 8, 9};int digits[10][7] = {{1, 1, 1, 1, 1, 1, 0}, // 数字0的显示编码{0, 1, 1, 0, 0, 0, 0}, // 数字1的显示编码{1, 1, 0, 1, 1, 0, 1}, // 数字2的显示编码{1, 1, 1, 1, 0, 0, 1}, // 数字3的显示编码{0, 1, 1, 0, 0, 1, 1}, // 数字4的显示编码{1, 0, 1, 1, 0, 1, 1}, // 数字5的显示编码{1, 0, 1, 1, 1, 1, 1}, // 数字6的显示编码{1, 1, 1, 0, 0, 0, 0}, // 数字7的显示编码{1, 1, 1, 1, 1, 1, 1}, // 数字8的显示编码{1, 1, 1, 1, 0, 1, 1} // 数字9的显示编码};void setup() {for (int i = 0; i < 8; i++) {pinMode(digitPins[i], OUTPUT);}}void loop() {for (int i = 0; i < 10; i++) {displayNumber(i);delay(1000);}}void displayNumber(int number) {int *digit = digits[number];for (int i = 0; i < 7; i++) {digitalWrite(digitPins[i], digit[i]);}}3. 烧录程序将编写好的程序通过USB线烧录到Arduino开发板中。

七段数码管显示实验报告

七段数码管显示实验报告

七段数码管显示实验报告实验目的:本实验的目的是通过控制7段数码管的亮灭状态来显示不同的数字和字母。

实验原理:7段数码管常用于显示数字和字母,每个数码管由7个LED灯组成,分别表示A、B、C、D、E、F、G等7个段。

通过控制这些LED灯的亮灭状态,就可以显示不同的数字和字母。

在实际应用中,通常需要使用一个译码器来根据输入的数字或字母输出相应的控制信号。

常用的译码器有7447、DM9368等。

这些译码器通常都是BCD码到7段数码管的译码器。

在本实验中,我们将使用7447译码器来控制7段数码管的亮灭状态。

7447译码器具有4个输入线和7个输出线,每个输入线上的BCD码可以转换成相应的控制信号,用于控制数码管的7个LED 灯。

实验材料:1.7段数码管2.7447译码器3.电路板4.电压源5.连接线实验步骤:1.将7447译码器插入电路板上相应的插槽中,并将数码管连接到电路板上。

2.将电压源连接到电路板上,并调节电压和电流值。

3.根据所需显示的数字或字母,设置相应的BCD码输入信号。

4.打开电源,观察数码管是否能够正确显示。

实验结果:通过本实验,我们可以成功控制7段数码管的亮灭状态,实现了数字和字母的显示。

同时,我们也了解了7447译码器的原理和使用方法。

实验小结:本实验是电子技术的基础实验之一,通过实验我们深入了解了7段数码管和7447译码器的原理和应用,同时也锻炼了我们的动手能力和实验技能。

在实际应用中,7段数码管和译码器常常被用于数字显示、计数器、时钟、温度计等电子设备中,具有广泛的应用前景。

七段数码显示器显示实验报告

七段数码显示器显示实验报告

七段数码显示器显示实验报告单片机原理及接口技术实验报告实验项目:姓名:专业:班级:学号:一、实验名称七段数码显示器显示实验(SPI通信方式)二、实验设备PC机1台,CEPARK畅学系列实验装置1套三、实验目的1.熟悉I/O口作为数字量输出的初始化;2.熟悉共阳极与共阴极两种数码管的工作原理;3.学会软硬件的设计和调试方法;4.根据七段数码管的特性,对应出每个数字引脚输出的16进制码,然后编写程序。

四、实验要求1.将0-9这十个数字按顺序依次在数码管上显示出来,时间间隔为0.5S;2.熟悉延时函数的使用(可用for循环自己写一个延时函数);3.掌握PIC16F877A芯片及电子元件的使用方法;4.实现单片机软件与硬件的结合,将理论知识应用于实践。

五、理论原理1.LED七段数码显示器由8个发光二极管组成显示字段,根据内部发光二极管的连接形式不同,LED有共阴极和共阳极两种(原理图如下图1所示)。

(实验板采用的LED为共阳极的连接方式)图1.单个共阳极数码管原理图2.接口说明:接口编号为JP44,需要一个8位端口(A~G、DP)去控制,因此提供给LED的字形码也是8位的。

数码管各段编号如下图2所示:图2.数码管各段编号3.LED七段数码显示器各字段与控制端口位的对应关系如下表1所示:表1. 七段数码显示器各字段与控制端口位的对应关系控制端口位D7 D6 D5 D4 D3 D2 D1 D0 字段名dp g f e d c b a 4.共阳极LED七段数码显示器字形代码如下表2所示:字形显示编码字形显示编码0 C0H 9 90H1 F9H A 88H2 A4H b 83H3 B0H C C6H4 99H d A1H5 92H E 86H6 82H F 8EH7 F8H .(小数点)7FH8 80H -(负号)BFH六、实验内容步骤1.接线说明核心板RD口接底板JP15,具体为:RD0-A,RD1-B,RD2-C,RD3-D,RD4-E,RD5-F,RD6-G,RD7-DP2.创建项目打开MPLAB IDE v8.90 →选择Project,进入Project Wizard,进入下面的界面,单击下一步。

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)

(VHDL实验报告)数码管显示(一位数码管显示0-9,八位数码管显示学号后八位)
七段码管位选输入信号 七段码管位选输RTUSII 软件,新建一个工程。 2、建完工程之后,再新建一个VHDL File,打开VHDL 编辑器对话框。 3、按照实验原理和自己的想法,在VHDL 编辑窗口编写VHDL 程序。其 程序如下所示:
(1)一位数码管显示0-9:
电子科技大学成都学院学院
标准实验报告
(实验)课程名称 数字电路 EDA 设计与应用
姓名 乱弹的枇杷 学号 专业 指导教师
一、 实验名称 数码管显示(一位数码管显示 0-9,八位数码管显示学号
后八位)
二、 实验目的 1、了解数码管的工作原理。 2、学习七段数码管显示译码器的设计。 3、掌握 VHDL 的 CASE 语句及多层次设计方法。
信号名称 7SEG-A 7SEG-B 7SEG-C 7SEG-D 7SEG-E 7SEG-F 7SEG-G 7SEG-DP 7SEG-SEL0 7SEG-SEL1 7SEG-SEL2
对应 FPGA 管脚名
F13 F14 F15 E15 F16 F17 E18 F18 G18 G17 G16
说明 七段码管 A 段输入信号 七段码管 B 段输入信号 七段码管 C 段输入信号 七段码管 D 段输入信号 七段码管 E 段输入信号 七段码管 F 段输入信号 七段码管 G 段输入信号 七段码管 dp 段输入信号
7、分配完成后,再进行一次全编译,以使管脚分配生效。 8、新建波形文件,对程序进行仿真,其仿真波形如下所示:
(1)一位数码管显示0-9:
(2)八位数码管显示学号后八位:
9、用下载电缆通过JTAG 口将对应的sof 文件加载到FPGA 中。观察实验 结果是否与自己的编程思想一致。
六、实验现象及结果 以设计的参考示例为例,当设计文件加载到目标器件后,将数字

8个数码管动态显示

8个数码管动态显示

8个数码管动态显示南昌大学实验报告学生姓名:王崇伙学号:6103413026专业班级:生医131实验类型:□验证□综合设计□创新实验日期:2022/10/9实验成绩:实验二、8个数码管动态显示1~8一、实验目的1、掌握汇编查表法实现动态数码管显示。

2、熟练使用proteu仿真工具。

二、实验工具1、PC机2、keil程序编辑工具3、proteu仿真工具三、实验原理八路七段数码管动态显示原理其实和一个数码管显示0~F原理相同,不同在于显示数字的数码管有一个一次变成八个显示0~8,P0控制段选,P1控制位选,由本次实验使用八路共阴极数码管(如下图),当P0=0某7F(8)时,位码P1=0某fe既选通第八个数码管其余位选高电平不导通,结果就为第八个数码管显示8,依次P0段选‘1’时P1位选第一个数码管结果就为第一个数码管显示‘1’,延时0.2再依次循环输入1~8位选依次选一~八达到八位数码管循环显示1~8。

四、实验程序框图开始初始化端口设置断码表、位码表设定i=0,i++N显示i指向的内容Yi<8五、实验程序#include#include#include#defineucharunignedcharbitP_HC595_SER=P0^0;bitP_HC595_RCLK=P 2^4;bitP_HC595_SRCLK=P0^3;ucharcodeSEG7[]={0某3F,0某06,0某5B,0某4F,0某66,0某6D,0某7D,0某07,0某7F,0某6F,0某77,0某7C,0某39,0某5E,0某79,0某71,0某00};ucharcodeScon_bit[]={0某fe,0某fd,0某fb,0某f7,0某ef,0某df,0某bf,0某7f};uchardataDi_buf[]={16,16,16,16,16,16,16,0};voidDelay1m(){ unignedchari,j;_nop_();_nop_();_nop_();i=11;j=190;do{while(--j);}while(--i);}voidF_Send_595(uchar某){uchari;for(i=0;i<8;i++){某=某<<1;P_HC595_SER=CY;P_HC595_SRCLK=1;P_HC595_SRCLK=0;}}voiddiplay(void){uchari;for(i=0;i<8;i++){F_Send_595(Scon_bit[i]);F_Send_595(SEG7[Di_buf[i]]);P_HC595_RCLK=1;P_HC595_RCLK=0;De lay1m();}}六、实验结果六、实验总结延时0.2S,8个数码管动态显示1~8通过本次实验让我加深了对数码管显示功能的理解,并进一步也掌握了使用proteu仿真。

数码管显示实验 实验报告

数码管显示实验 实验报告

数码管显示实验实验报告一、实验目的本次数码管显示实验的主要目的是深入了解数码管的工作原理和显示控制方式,通过实际操作掌握数码管与微控制器的接口技术,并能够编写相应的程序实现各种数字和字符的显示。

二、实验原理数码管是一种由多个发光二极管组成的显示器件,常见的有共阴数码管和共阳数码管两种类型。

共阴数码管是将所有发光二极管的阴极连接在一起,当阳极接高电平时,相应的二极管发光;共阳数码管则是将所有发光二极管的阳极连接在一起,当阴极接低电平时,相应的二极管发光。

在控制数码管显示时,通常采用动态扫描的方式,即依次快速地给每个数码管的段选端送入相应的字形码,同时使位选端选通对应的数码管,利用人眼的视觉暂留效应,使人看起来好像所有数码管同时在显示。

三、实验设备与材料1、实验开发板2、数码管模块3、杜邦线若干4、电脑5、编程软件四、实验步骤1、硬件连接将数码管模块与实验开发板进行连接,确定好段选和位选引脚的连接。

检查连接是否牢固,确保电路无短路或断路现象。

2、软件编程打开编程软件,选择相应的开发板型号和编程语言。

定义数码管的段选和位选引脚。

编写控制程序,实现数字 0 到 9 的循环显示。

3、编译与下载对编写好的程序进行编译,检查是否有语法错误。

将编译成功的程序下载到实验开发板上。

4、观察实验现象接通实验开发板的电源,观察数码管的显示情况。

检查显示的数字是否正确,显示的亮度和稳定性是否符合要求。

五、实验结果与分析1、实验结果数码管能够正常显示数字 0 到 9,并且能够按照设定的频率循环显示。

显示的数字清晰、稳定,没有出现闪烁或模糊的现象。

2、结果分析程序编写正确,能够准确地控制数码管的段选和位选信号,实现数字的显示。

动态扫描的频率设置合理,既保证了显示的稳定性,又不会出现明显的闪烁。

六、实验中遇到的问题及解决方法1、问题数码管显示出现闪烁现象。

解决方法调整动态扫描的频率,增加扫描的速度,减少每个数码管的点亮时间,从而减轻闪烁现象。

八段数码管显示实验总结

八段数码管显示实验总结

八段数码管显示实验总结以下是一篇关于八段数码管显示实验总结的文章,旨在详细介绍实验的步骤和结果。

引言:在现代电子技术领域中,七段数码管是一种常见的数字显示装置,常用于计时器、电子表、计数器等设备中。

而八段数码管则是七段数码管的进化版,它增加了一个小数点显示位,可以显示更多的数码和字符。

本篇文章将围绕八段数码管显示实验展开,介绍实验过程及实验结果。

第一步:材料准备进行八段数码管显示实验前,需要准备以下材料:1. 八段数码管:这是实验中的核心组件,用于显示数字和字符。

2. 转接板:用于连接八段数码管和单片机,实现电路的连接。

3. 单片机:本实验中我们选择XXXX型号的单片机,它具备足够的输入输出引脚,方便实验开展。

4. 面包板:用于搭建电路,连接各个组件。

5. 连接线:用于连接数码管、转接板和单片机。

第二步:电路连接1. 将转接板插入面包板中心位置,确保其稳固。

2. 将八段数码管插入转接板对应位置,并通过连接线将其与转接板上的引脚相连。

3. 将单片机插入转接板上的插槽,并通过连接线将其与转接板上的引脚相连。

4. 连接线的连接需要按照电路连接图进行,确保连线正确无误。

第三步:程序编写1. 打开XXXX软件,创建一个新的工程。

2. 在新的工程中,编写程序代码来控制八段数码管显示。

可以根据自己的需求,编写数字、字符等不同的显示内容。

3. 在程序代码中,通过设置不同的数位选择引脚和段选引脚的高低电平来实现不同位上的显示。

第四步:烧录程序1. 将单片机与电脑通过USB线连接。

2. 打开软件,选择对应的单片机型号和烧录方式。

3. 将程序烧录至单片机中,确保烧录成功。

第五步:实验结果在将程序烧录到单片机后,即可观察八段数码管的显示结果。

根据实验编写的程序,数码管将会显示相应的数字和字符。

可以通过改变程序代码中的内容,实现不同的显示效果。

比如,可以设置不同的数值、字符以及使用动态显示等功能。

结论:通过本次实验,我们成功地搭建了一个八段数码管的显示电路,并利用单片机编写了相应的程序进行控制。

七段数码管显示实验

七段数码管显示实验

单片机实验报告实验九七段数码管显示实验一、实验目的1.学习七段数码管的工作原理;2.学习数码管与8051单片机的接口方法;3.掌握动态扫描显示技术。

二、实验原理如图4.9-1所示,LED数码管由7个发光二极管组成,此外,还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。

通过七段发光二极管亮暗共阴极接法共阳极接法图4.9-1的不同组合,可以显示多种数字、字母以及其它符号。

LED数码管中的发光二极管共有两种连接方法:1)共阴极接法:把发光二极管的阴极连在一起构成公共阴极。

使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。

实验中使用的LED显示器为共阴极接法2)共阳极接法:把发光二极管的阳极连在一起构成公共阳极。

使用时公共阳极接+5V。

这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。

为了显示数字或符号,要为LED显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。

七段发光二极管,再加上一个小数点位,共计八段。

因此提供给LED显示器的字形代码正好一个字节。

若a、b、c、d、e、f、g、dp 8个显示段依次对应一个字节的低位到高位,即D0、D1、D2、D3、D4、D5、D6、D7,则用共阴极LED数码管显示十六进制数时所需的字形代码如表4.9-1所示。

表4.9-1 共阴极LED数码管字形代码字型 共阴极字形代码字型 共阴极字形代码字型 共阴极字形代码0 3FH 6 7DH C 39H 1 06H 7 07H d 5EH 2 5BH 8 7FH E 79H 3 4FH 9 6FH F 71H 4 66H A 77H 灭 00H 56DHb7CH2、动态显示按图4.9-2(b )连接线路,通过交替选中LED1和LED0循环显示两位十进制数。

七段数码管段码连接不变,位码驱动输入端S1、S0接8255A C 口的PC1、PC0,通过C 口的这两位交替输出1和0,以便交替选中LED1和LED0,从而实现两位十进制数的交替显示。

七段数码管显示实验

七段数码管显示实验

实验一七段数码管显示实验(1)实验目的学习7段数码显示译码器设计;学习VHDL的CASE语句应用及多层次设计方法。

(2)实验原理7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是 16进制的,为了满足16进制的译码显示,最方便的方法就是利用译码程序在 FPGA/CPLD中来实现。

7段译码器输出信号 LED7S的7位分别接如图数码管的 7个段,高为在左,低位在右。

如LED7S 输出为“1101101 ”时,数码管的7个段:g、f、e d、c、b、a分别接1、1、0、1、1、0、 1;接有高电平的段发亮,于是数码管显示“ 5”。

(3)实验内容说明下面源代码中各语句的含义,以及该程序的整体功能。

在Quartusll上对该程序进行编辑、编译、综合、适配、仿真,给出起所有信号的时序仿真波形。

提示:用输入总线的方式给出输入信号的仿真数据,仿真波形示例图如图:源代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECL7S ISPORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END;ARCHITECTURE one OF DECL7S ISBEGINPROCESS( A )BEGINCASE A ISWHEN "0000" => LED7S <= "0111111";WHEN "0001" => LED7S <= "0000110";WHEN "0010" => LED7S <= "1011011";WHEN "0011" => LED7S <= "1001111";WHEN "0100" => LED7S <= "1100110";WHEN "0101" => LED7S <= "1101101";WHEN "0110" => LED7S <= "1111101";WHEN "0111" => LED7S <= "0000111";WHEN "1000" => LED7S <= "1111111";WHEN "1001" => LED7S <= "1101111";WHEN "1010" => LED7S <= "1110111";WHEN "1011" => LED7S <= "1111100";WHEN "1100" => LED7S <= "0111001";WHEN "1101" => LED7S <= "1011110";WHEN "1110" => LED7S <= "1111001";WHEN "1111" => LED7S <= "1110001";END CASE;END PROCESS;END;编译得到模块DECL7S:程序运行后可以看到 7段数码管以每秒一次的跳变速度往上自加,到“F”后归“0”。

数码管显示实验报告

数码管显示实验报告

三、数码管显示实验
一、实验目的及要求
理解8段数码管的基本原理,理解8段数码管的显示和编程方法,理解4连排共阴极8段数码管J3641AS通过DP1668与CPU的接线图。

理解8段数码管原理,运行与理解各子程序,编制一个4连排8段数码管程序,CPU的P2口接左、右两个DP1668的控制引脚,各DP1668接LED的数据线hgfedcba,在4
连排8段数码管显示编程的日期。

熟悉结构后,自行编程左边四个数码管,显示分钟和秒,当计时达到一个小时,就重新从00:00开始计时。

另外,指定计时的开始值。

二、实验原理(图)
8段数码管一般由8个发光二极管(Llight-emitting diode,LED)组成,每一个位段就是一个发光二极管。

一个8段数码管分别由a、b、c、d、e、f、g位段,外加上一个小数点的位段h(或记为dp)组成。

根据公共端所接电平的高低,可分为共阳极和共阴极两种。

三、实验设备(环境):
1、电脑一台
2、STC-ISP()烧写应用程序
3、Keil应用程序
四、实验内容(算法、程序、步骤和方法):
#include<>。

实验报告 - - 实验七 - 八段数码管显示实验

实验报告 -  - 实验七 - 八段数码管显示实验

实验报告 - - 实验七 - 八段数码管显示实验EDA实验报告之实验七八段数码管显示实验1、实验目的1)了解数码管动态显示的原理。

2)了解用总线方式控制数码管显示2、实验要求:利用实验仪提供的显示电路, 动态显示一行数据.提示:把显示缓冲区(例如可为60H~65H作为缓冲区)的内容显示出来,当修改显示缓冲区的内容时,可显示修改后的内容(为键盘扫描、显示实验做准备)。

3、实验说明本实验仪提供了6 位8段码LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。

显示共有6位,用动态方式显示。

8位段码、6位位码是由两片74LS374输出。

位码经MC1413或ULN2021倒相驱动后,选择相应显示位。

本实验仪中 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 10 0 0 0 1 1 0 06h 2 1 0 1 1 0 1 1 5bh 3 1 0 01 1 1 1 4fh 4 1 1 0 0 1 1 0 66h 5 1 1 0 1 1 01 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 7fh9 1 1 0 1 1 1 1 6fh A 1 1 1 0 1 1 1 77h b1 1 1 1 1 0 0 7ch C 0 1 1 1 0 0 1 39h d 1 0 11 1 1 0 5eh E 1 1 1 1 0 0 1 79h F 1 1 1 0 0 0 1 71h4、原理图及连线5、实验内容1) 使用仪器、仪表,开发平台型号本实验用到了WAVE 6000软件平台,电脑一台,LAB6000实验箱,示波器,若干连线,串行数据线。

数码显示控制实训报告

数码显示控制实训报告

一、实验目的1. 掌握数码显示模块的基本原理和结构;2. 熟悉数码显示模块的驱动电路及接口技术;3. 学会编写数码显示控制程序,实现数字的实时显示;4. 提高动手实践能力和编程能力。

二、实验器材1. 实验平台:PC机、数码显示模块、实验箱、连接线等;2. 软件环境:C语言编译器、仿真软件等。

三、实验原理数码显示模块是一种常用的显示器件,它可以将数字信号转换为可视的数字显示。

常见的数码显示模块有七段数码管和液晶显示模块。

本实验以七段数码管为例,介绍数码显示控制的基本原理。

七段数码管由七个LED灯组成,分别对应数码管的七个段,即A、B、C、D、E、F、G。

当需要显示某个数字时,通过控制相应的LED灯亮灭,即可显示出该数字。

例如,显示数字“1”时,只需让A、B、C三个LED灯亮,D、E、F、G四个LED灯灭即可。

数码显示模块的驱动电路通常采用共阳极或共阴极方式。

本实验采用共阳极方式,即数码管的阴极连接在一起,通过向对应的阳极发送高电平信号来点亮LED灯。

四、实验内容1. 熟悉数码显示模块的结构和引脚功能;2. 设计并搭建数码显示模块的驱动电路;3. 编写数码显示控制程序,实现数字的实时显示;4. 测试程序,验证程序的正确性。

五、实验步骤1. 搭建数码显示模块的驱动电路,连接PC机、数码显示模块和实验箱;2. 在PC机上编写数码显示控制程序,包括初始化程序、显示程序和定时器中断程序;3. 编译并下载程序到实验箱;4. 打开实验箱,观察数码显示模块的显示效果;5. 调整程序参数,实现数字的实时显示。

六、实验结果与分析1. 搭建了数码显示模块的驱动电路,并连接了PC机、数码显示模块和实验箱;2. 编写了数码显示控制程序,实现了数字的实时显示;3. 测试了程序,验证了程序的正确性。

实验结果表明,通过编写数码显示控制程序,成功实现了数字的实时显示。

在实验过程中,遇到了以下问题:(1)数码显示模块的驱动电路设计不合理,导致数码管显示不正常。

八段数码管显示实验

八段数码管显示实验

实验一 八段数码管显示实验一、实验目的:1、了解数码管动态显示的原理。

2、了解74LS164扩展端口的方法。

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

三、实验电路:这里只是显示草图,详细原理参见第一章的1.1.15 “8155键显模块”。

四、实验说明:1、本实验仪提供了8段码数码管LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。

显示共有6位,采用动态方式显示。

8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。

6位位码由8155的PA0口输出,经uA2003反向驱动后,选择相应显示位。

74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。

写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,向显示位选通地址输出高电平就可以点亮相应的显示位。

本实验仪中数据位输出地址为0e102H ,时钟位输出地址为0e102H ,位选通输出地址为 0e101H 。

本实验涉及到了8155 I0/RAM 扩展芯片的工作原理以及74LS164器件的工作原理。

2六、实验步骤:1、将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。

2、进入KEIL软件界面,点击项目/打开项目在C:\KEIL\UV2\次1配套实验例程中选择实验一,内有ASM和C51两种程序,进入ASM 文件夹打开LED项目文件进入如图所示界面点击“调试/启动/停止调试”,进入调试界面,点击“调试/运行”可看到8段数码管交替显示0—F七、实验程序:OUTBIT equ 0e101h ; 位控制口CLK164 equ 0e102h ; 段控制口(接164时钟位)DAT164 equ 0e102h ; 段控制口(接164数据位)IN equ 0e103h ; 键盘读入口LEDBuf equ 60h ; 显示缓冲Num equ 70h ; 显示的数据DelayT equ 75h ;org 0000hljmp StartLEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07hdb 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ; 延时子程序mov r7, #0DelayLoop:djnz r7, DelayLoopdjnz r6, DelayLoopretDisplayLED:mov r0, #LEDBufmov r1, #6 ; 共6个八段管mov r2, #00100000b ; 从左边开始显示Loop:mov dptr, #OUTBITmov a, #00hmovx @dptr, a ; 关所有八段管mov a, @r0mov B, #8 ; 送164DLP:rlc amov r3, amov acc.0, cANL A, #0FDHmov dptr, #DAT164movx @dptr, amov dptr, #CLK164orl a,#02hmovx @dptr, aanl a,#0fDhmovx @dptr, amov a, r3djnz B, DLPmov dptr, #OUTBITmov a, r2movx @dptr, a ; 显示一位八段管mov r6, #1call Delaymov a, r2 ; 显示下一位rr amov r2, ainc r0djnz r1, Loopmov dptr, #OUTBITmov a, #0movx @dptr, a ; 关所有八段管retStart: mov dptr,#0e100hmov a,#03hmovx @dptr,amov sp, #40hmov Num, #0MLoop:inc Nummov a, Nummov b, amov r0, #LEDBufFillBuf:mov a, banl a, #0fhmov dptr, #LEDMapmovc a, @a+dptr ; 数字转换成显示码mov @r0,a ; 显示在码填入显示缓冲 inc r0inc bcjne r0, #LEDBuf+6, FillBuf mov DelayT,#30 DispAgain:call DisplayLED ; 显示djnz DelayT,DispAgainljmp MLoopEND。

数码管实验报告实验原理(3篇)

数码管实验报告实验原理(3篇)

第1篇一、实验背景数码管是一种常用的显示器件,它可以将数字、字母或其他符号显示出来。

数码管广泛应用于各种电子设备中,如计算器、电子钟、电子秤等。

本实验旨在通过实践操作,让学生了解数码管的工作原理,掌握数码管的驱动方法,以及数码管在电子系统中的应用。

二、实验原理1. 数码管类型数码管分为两种类型:七段数码管和液晶数码管。

本实验主要介绍七段数码管。

七段数码管由七个发光二极管(LED)组成,分别代表七个笔画。

当七个LED中的某个或某几个LED点亮时,就可以显示出相应的数字或符号。

根据发光二极管的连接方式,七段数码管可分为共阳极和共阴极两种类型。

2. 数码管驱动方式(1)静态驱动静态驱动是指每个数码管独立驱动,每个数码管都连接到单片机的I/O端口。

这种方式下,数码管显示的数字或符号不会闪烁,但需要较多的I/O端口资源。

(2)动态驱动动态驱动是指多个数码管共用一组I/O端口,通过控制每个数码管的扫描时间来实现动态显示。

这种方式可以节省I/O端口资源,但显示的数字或符号会有闪烁现象。

3. 数码管显示原理(1)共阳极数码管共阳极数码管的特点是七个LED的阳极连接在一起,形成公共阳极。

当要显示数字时,将对应的LED阴极接地,其他LED阴极接高电平,即可显示出相应的数字。

(2)共阴极数码管共阴极数码管的特点是七个LED的阴极连接在一起,形成公共阴极。

当要显示数字时,将对应的LED阳极接地,其他LED阳极接高电平,即可显示出相应的数字。

4. 数码管驱动电路(1)BCD码译码驱动器BCD码译码驱动器是一种将BCD码转换为七段数码管所需段码的电路。

常用的BCD码译码驱动器有CD4511、CD4518等。

(2)74HC595移位寄存器74HC595是一种8位串行输入、并行输出的移位寄存器,常用于数码管的动态驱动。

它可以将单片机输出的串行信号转换为并行信号,驱动数码管显示。

三、实验目的1. 了解数码管的工作原理和驱动方式。

实验报告数码管

实验报告数码管

一、实验目的1. 熟悉数码管的结构和原理。

2. 掌握数码管显示的控制方法。

3. 培养动手实践能力和团队协作精神。

二、实验原理数码管是一种用于显示数字、字母、符号等信息的电子元件。

根据发光原理,数码管可分为七段数码管和十六段数码管。

本实验以七段数码管为例,介绍其结构、原理及控制方法。

七段数码管由七个LED(发光二极管)组成,分别称为A、B、C、D、E、F、G七个段。

当某一LED点亮时,对应数码管的某一位就会显示出相应的数字或符号。

通过控制不同LED的点亮状态,可以实现数字、字母、符号等信息的显示。

三、实验仪器与材料1. 7段数码管1个2. 驱动电路板1块3. 电阻若干4. 电源1块5. 连接线若干6. 实验平台1个四、实验步骤1. 数码管与驱动电路板的连接(1)将数码管的共阳极引脚(COM)与驱动电路板的共阳极引脚连接。

(2)将数码管的A、B、C、D、E、F、G七个段分别与驱动电路板对应的引脚连接。

(3)将驱动电路板的电源引脚与电源连接。

2. 数码管显示数字“1”的控制(1)在驱动电路板上,将A、B、C、D、E、F、G七个引脚分别连接到微控制器的相应引脚。

(2)编写程序,使微控制器输出高电平到A、B、C、D、E、F、G引脚,实现数字“1”的显示。

(3)将微控制器程序下载到实验平台上,观察数码管显示效果。

3. 数码管显示数字“2”的控制(1)修改程序,使微控制器输出高电平到A、B、C、D、E、G引脚,实现数字“2”的显示。

(2)将修改后的程序下载到实验平台上,观察数码管显示效果。

4. 数码管显示数字“3”的控制(1)修改程序,使微控制器输出高电平到A、B、C、D、F、G引脚,实现数字“3”的显示。

(2)将修改后的程序下载到实验平台上,观察数码管显示效果。

5. 数码管显示数字“4”的控制(1)修改程序,使微控制器输出高电平到B、C、D、F、G引脚,实现数字“4”的显示。

(2)将修改后的程序下载到实验平台上,观察数码管显示效果。

八段数码管显示

八段数码管显示

实验一八段数码管显示1、实验目的:(1)了解数码管动态显示的原理。

(2)了解74LS164扩展端口的方法。

2、实验要求:利用实验仪提供的显示电路,动态显示一行数据.3、实验电路图LED1LED2LED3LED4LED5LED64、实验器材:(1)超想-3000TB综合实验仪 1 台(2)超想3000仿真器 1 台(3)计算机 1 台5、实验连线无 6、实验说明:(1)本实验仪提供了8段码LED 显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。

显示共有6位,用动态方式显示。

8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。

6位位码由8155的PA0口输出,经Ua2003反向驱动后,选择相应显示位。

74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。

写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,并且实现移位。

向显示位选通地址输出高电平就可以点亮相应的显示位。

本实验仪中数据位输出地址为0e102H ,时钟位输出地址为0e102H ,位选通输出地址为 0e101H 。

本实验涉及到了8155 I0/RAM 扩展芯片的工作原理以及74LS164器件的工作原理。

(2)七段数码管的字型代码表显示字形g f e d c b a 段码 0 0 1 1 1 1 1 1 3fh 1 0 0 0 0 1 1 0 06h2 1 0 1 1 0 1 1 6bh3 1 0 0 1 1 1 1 4fh4 1 1 0 0 1 1 0 66h5 1 1 0 1 1 0 1 6dh6 1 1 1 1 1 0 1 7dh7 0 0 0 0 1 1 1 07h8 1 1 1 1 1 1 1 7fh9 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 F1111 71hab c def g dp7、程序框图8、实验步骤1.将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。

实验七八 七段数码管

实验七八 七段数码管

课程实验报告学年学期2013-2014学年第1学期课程名称微机原理实验名称实验七七段数码管专业年级电气113班学生姓名屈巧鸽学生学号2011011976提交时间2013,12.成绩任课教师朱晓群,谭亲跃实验七七段数码管2.4.1实验目的(1)掌握8255的基本工作原理及编程方法。

(2)掌握数码管显示数字的原理。

2.4.2实验内容(1)实验电路如图2-17所示,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

编程从8255C口输入数据,再从A口输出。

实验程序流程图如图2-18所示。

(2)实验电路如图2-19所示,按图3连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。

编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。

注:实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

编程从8255C口输入数据,再从A口输出。

实验程序流程图如图2-20所示。

图2-17 8255接口电路图1 图2-18 程序流程图2.4.3 参考程序 (1)参考程序1ioport equ 0cf00h-0280hio8255a equ ioport+288h ; 8255A 口地址 io8255b equ ioport+28bh ; 8525控制端口地址 io8255c equ ioport+28ah code segment assume cs:codestart: mov dx,io8255b ;设置8255工作方式:C 口输入,A 口输出 mov al,89h out dx,alinout: mov dx,io8255c ;从C 口输入数据 in al,dxmov dx,io8255a ;将该数据从A 口输出 outdx,al图2-19 8255接口电路2 图2-20 程序流程图mov dl,0ffh ;判断是否有按键mov ah,06hint 21hjz inout ;若无,则继续自C口输入,A口输出mov ah,4ch ;否则返回DOSint 21hcode endsend start(2)参考程序2data segmentioport equ 0cf00h-0280hio8255a equ ioport+288h ;8255A口地址io8255b equ ioport+28bh ;8525控制端口地址led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0-9h):',0dh,0ah,'$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255b ;使8255的A口为输出方式mov al,89hout dx,alsss: lea dx,mesg1 ;显示提示信息mov ah,09hint 21hmov ah,1 ;从键盘接收字符int 21hcmp al,30h ;是否小于0jl exit ;若是则转exit,退出cmp al,39h ;是否大于9jg exit ;若是则转exit,退出sub al,30h ;将所得字符的ASCII码减30Hlea bx,led ;取bx为数码表的起始地址xlat ;查数码表,求出相应的段码mov dx,io8255a ;从8255的A口输出段码out dx,aljmp sss ;转sssexit: mov ah,4ch ;返回DOSint 21hcode endsend start(3)参考程序3(动态显示)data segmentioport equ 0cf00h-0280hio8255a equ ioport+28ahio8255b equ ioport+28bhio8255c equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 0,0 ;存放要显示的十位和个位bz dw ? ;位码data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,io8255b ;将8255设为A口输出mov al,80hout dx,almov di,offset buffer1 ;设di为显示缓冲区loop1: mov cx,0300h ;循环次数loop2: mov bh,02lll: mov byte ptr bz,bhpush didec diadd di, bzmov bl,[di] ;bl为要显示的数pop dimov bh,0mov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]mov dx,io8255c ;自8255A的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,alpush cxmov cx,0ffffh ;如果显示过快,可更改cx值为最大0ffffh delay: loop delay ;延时pop cxmov bh,byte ptr bzshr bh,1jnz lllloop loop2 ;循环延时mov ax,word ptr [di]cmp ah,09jnz setcmp al,09jnz setmov ax,0000mov [di],almov [di+1],ahjmp loop1set: mov ah,01int 16hjne exit ;有键按下则转exitmov ax,word ptr [di]inc alaaamov [di],al ;al为十位mov [di+1],ah ;ah中为个位jmp loop1exit: mov dx,io8255amov al,0 ;关掉数码管显示out dx,almov ah,4ch ;返回DOSint 21hcode endsend start课程实验报告学年学期2013-2014学年第1学期课程名称微机原理实验名称实验八交通灯控制实验专业年级电气113班学生姓名屈巧鸽学生学号2011011976提交时间2013,12.成绩任课教师朱晓群,谭亲跃2.5 实验八交通灯控制实验2.5.1实验目的通过8255实现十字路口交通灯的模拟控制,并进一步掌握对并行口的使用。

七段数码管显示实验报告

七段数码管显示实验报告
x1 db‘please enter the number:’0dh‘$’
data ends
code segment
assume cs:code,ds:data,ss:stack
main proc
mov ax,data
mov ds,ax
mov dx,offset x1
mov ah,9
int 21
mov dx,pd
七段数码管显示实验报告
120321班 12031112 刘岳洋
一、实验目的
掌握接口芯片的编址方法,掌握8255的初始化设置,及数码管显示原理,掌握段控及位控的概念。
二、实验内容
(1)连接地址译码器的288H~28FH与8255的 ,PA0~PA7分别连接数码管的a~g与dp.PC0与PC1分别接S0与S1。
push cx
mov dx,100
mov cx,0
wait1:loop wait1
dec dx
jne wait1
pop cx
pop dx
rde ends
end main
dpa共阴极驱动器1001开始定义字形码初始x1x2为0换成x1字形码pa输出x1字形码pc输出2延迟换成x2字形码pa输出x2字形码pc输出1延迟输入x是否输入是否回车输入是否为2位结束对准x1初始地址否是是否是否六实验截图及效果七实验程序paequ0ef00h280h28pcequ0ef00h280h28pdequ0ef00h280h28stacksegmentstack果图88h8ah8bhdw100dup0stackendsdatasegmentxdb00valdb3fh06h5bh4fh66h6dh7dh07h7fh6fhx1dbpleaseenterthenumber

实验报告_八段数码管实验

实验报告_八段数码管实验
将数码管各笔划发光元件的负极连在一起称为共阴数码管,且该共电极连接电路电源的负极,而各笔划元件的正极连接驱动电路。它适用于高电平有效的驱动电路,当某一笔划的驱动电平为高电平时,该笔划发光。
1.1解释和推导0,1,2的共阳的段码,并列举出0~9的段码。
由高到低位 dpgfedcba。因为共阳,低电平有效
4次循环,每次循环改变P0的值和改变位选并延时。
改变P0的指通过timeCtrl中4个数字,代表codeValue所对应的段码的下标,选出对应的段码赋给P0
P2位选是有4个数码管,对应p2.0,p2.1,p2.2,p2.3。循环4次就通过codeCtrl数组访问了这4个数码管,由于蜂鸣器也是P2.4控制,所以数码管位选&flag就能通过改变flag的值来控制蜂鸣器的响。
0就是abcdef为0,其余为1.所以段码11000000为C0H
1就是bc为0,其余为1,所以段码11111001为F9H
2就是abged为0,其余为1,所以段码10100100为A4H
3B0H499H592H682H7F8H880H990H
1.2 详细解释实验板上,P0口是如何进行分时复用,并和位选信号配合,实现多个数码管同时显示的。
(1)数码管高两位显示分钟数,低两位显示秒数。
(2)定时器T0工在16位定时器状态,溢出产生中断进行响应。
(3)每满一分钟,蜂鸣器响一次,进行提醒。
(4)INT0工作在边沿触发模式,每按下一次进行“开始计时”与“停止计时”之间的来回切换。每次停止之后,重新从0开始计时。
1 数码管工作原理分析
1.0什么是数码管?什么是共阴和共阳?
重 庆 理 工 大 学
实验报告
课程汇编语言程序设计
题目八段数码管实验

七段数码管实验

七段数码管实验

;段码





LOOP2: OV ADD MOV MOV OUT MOV MOV OUT PUSH MOV
BH,02 BYTE PTR BZ,BH DI DI DI, BZ BL,[DI] ;bl为要显示的数 DI BH,0 SI,OFFSET LED ;置led数码表偏移地址为SI SI,BX ;求出对应的led数码 AL,BYTE PTR [SI] DX,IO8255B ;自8255B的口输出 DX,AL AL,BYTE PTR BZ ;使相应的数码管亮 DX,IO8255A DX,AL AX AX,05

MOV


AH,01 ;从键盘接收字符 INT 21H CMP AL,'0' ;是否小于0 JL EXIT ;若是则退出 CMP AL,'9' ;是否大于9 JG EXIT ;若是则退出 SUB AL,30H ;将所得字符的ASCII码减30H MOV BX,OFFSET LED ;bx为数码表的起始地址 XLAT ;求出相应的段码 MOV DX,IO8255B ;从8255的A口输出 OUT DX,AL JMP SSS ;转SSS EXIT: MOV AH,4CH ;返回 INT 21H CODE ENDS END START
LED2.ASM

DATA SEGMENT IOPORT EQU 0A400H IO8255A EQU IOPORT+0A0H IO8255B EQU IOPORT+0A2H IO8255CON EQU IOPORT+0A6H LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH BUFFER1 DB 5,6 ;存放要显示的个位和十位 BZ DW ? ;位码 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,IO8255CON ;将8255设为B,A口输出 MOV AL,80H OUT DX,AL MOV DI,OFFSET BUFFER1 ;设di为显示缓冲区
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告 - - 实验七 - 八段数码管显示实验
EDA实验报告之实验七八段数码管显示实验
1、实验目的
1)了解数码管动态显示的原理。

2)了解用总线方式控制数码管显示
2、实验要求:利用实验仪提供的显示电路, 动态显示一行数据.
提示:把显示缓冲区(例如可为60H~65H作为缓冲区)的内容显示出来,当修改显示
缓冲区的内容时,可显示修改后的内容(为键盘扫描、显示实验做准备)。

3、实验说明
本实验仪提供了6 位8段码LED显示电路,学生只要按地址输出相应数据,就可以实
现对显示器的控制。

显示共有6位,用动态方式显示。

8位段码、6位位码是由两片
74LS374输出。

位码经MC1413或ULN2021倒相驱动后,选择相应显示位。

本实验仪中 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 流程图:(见下页)
流程图:
主程序:子程序:显示缓冲区内容DISPLAY设置每一轮数据的显示次数初始化显示缓
冲区INITIALIZE显示缓冲区内容DISPLAY设置位选信号,初始化显示字节计数器,缓冲
区数据地址是改变缓冲区内容CHANGE否延时一段时间DELAY否是否显示完0―F共16个
数据给位选信号修改位选信号并压栈否给数码管段码信号这一轮数据是否显示完是总轮数
是否显示完是返回
3) 源程序(为了程序看起来更规范和容易理解,最好将各部分功能分离,在主程序中
以子程序调用的形式调用相应的子程序)
ORG LJMP ORG
BEGIN:
LCALL DIS:
LCALL LCALL LCALL DJNZ SJMP SJMP
0000H BEGIN 0030H
INITIALIZE ;设置60H--65H单元的初值
DISPLAY ;显示缓冲区单元的数据 CHANGE ;改变缓冲区单元的数据
DELAY ;为了两轮显示间时间间隔久一些 R5,DIS ;是否显示完一遍0-F,是则重新开始 BEGIN ;重新开始 $
;============== DISPLAY: ;===
MOV R6,#40 BEGIN0:
MOV MOV MOV ;*** LOOP:
MOV MOVX
RL PUSH MOV MOV LCALL MOVX LCALL ;***
INC R0 POP A DJNZ R2,LOOP DJNZ R6,BEGIN0 RET
;============== initialize:
mov 60h,#00h mov 61h,#01h
A,#01H R2,#6 R0,#60H
;设置每一轮显示的次数 ;位选通信号
;显示缓冲区只有6个字节单元 ;显示缓冲区单元数据地址
DPTR,#8002H ;位选输出地址 @DPTR,A
A ;修改位信号 A
DPTR,#8004H ;数据输出地址 A,@R0 CHECK ;查表 @DPTR,A DELAY ;显示一个数后稍等一会
;这一轮是否显示完
;总轮数显示40次,是否显示完
mov 62h,#02h mov 63h,#03h mov 64h,#04h mov 65h,#05h
MOV R5,#11 RET
;============== DELAY:
MOV R7,#03H MOV R3,#0FFH LOOPP:
DJNZ R3,$ DJNZ R7,LOOPP RET
;============== CHANGE:
;为了显示0---F,需要调用change子函数11次
MOV R2,#6 ;6次 MOV R0,#60H ;数据地址 LOOP1:
INC @R0 INC R0
DJNZ R2,LOOP1 RET
;============== CHECK:
INC A MOVC A,@A+PC RET
;============== TABLE:
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 疑难问题:
如何将数码管的显示抖动去除得更好,这是一个问题。

除了实验过程中采用的尝试的方法以外,有没有什么科学的计算推理方法呢?这值得思考。

2021-5-6
感谢您的阅读,祝您生活愉快。

相关文档
最新文档