6位7段LED数码管显示实验

6位7段LED数码管显示实验
【实验要求】1)初始化时,使6位LED均显示8,显示时间为1s。

2)从第一个LED开始,从0显示到9,0.5s刷新一次。

直到最后一个LED。

【实验目的】1)熟悉并进一步掌握定时器中断的使用和时基信号的使用。

2)进一步巩固I/O口的使用方法。

3)了解6位7段LED数码管的使用。

【实验设备】1)装有u’nsp IDE仿真环境的PC机一台。

2)μ’nSP?十六位单片机实验箱一个。

【实验原理】通过对I/O口的控制,初始化时点亮所有的数码管,即6位LED数码管均显示8。

1s 后,从第一位数码管开始从0显示到9,刷新时间为0.5s。

直到最后一个数码管。

1s的时间使用定时器A (FIQ);0.5s的时间使用2HZ的时基信号(IRQ5)。

【硬件连接图】A0—A6 接A---G A8—A13 接CS1—CS6 B0—B7 接KEY
【实验步骤】⑴按硬件电路原理图进行连接。

⑵画程序流程图。

⑶编写程序。

⑷调试程序。

⑸结合硬件调试,实现最终功能。

【主程序流程图】
广告灯设计(利用取表方式)
桂林电子工业学院孙安青
1.实验任务
利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。

2.电路原理图
3.系统板上硬件连线
把“单片机系统”区域中的P1.0-P1.7用8芯排线连接到“八路发光二极管指示模块”区域中的L 1-L8端口上,要求:P1.0对应着L1,P1.1对应着L2,……,P1.7对应着L8。

4.程序设计内容
在用表格进行程序设计的时候,要用以下的指令来完成
(1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。

(2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。

因此,只要把控制码建成一个表,而利用MOVC工,@A+DPTR做取码的操作,就可方便地处理一些复杂的控制动作,取表过程如下图所示:
5.
6.汇编源程序
ORG 0
START: MOV DPTR,#TABLE LOOP: CLR A
MOVC A,@A+DPTR
CJNE A,#01H,LOOP1
JMP START
LOOP1: MOV P1,A
MOV R3,#20
LCALL DELAY
INC DPTR
JMP LOOP
DELAY: MOV R4,#20
D1: MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
DJNZ R3,DELAY
RET
TABLE: DB 0FEH,0FDH,0FBH,0F7H DB 0EFH,0DFH,0BFH,07FH
DB 0FEH,0FDH,0FBH,0F7H
DB 0EFH,0DFH,0BFH,07FH
DB 07FH,0BFH,0DFH,0EFH
DB 0F7H,0FBH,0FDH,0FEH DB 07FH,0BFH,0DFH,0EFH DB 0F7H,0FBH,0FDH,0FEH DB 00H, 0FFH,00H, 0FFH DB 01H
END。

合集下载

实验二 LED数码管动态显示

实验二  LED数码管动态显示

特点
动态显示方式
图3
首先从段选线上送出字段码, 首先从段选线上送出字段码,再控制位选 字符就显示在指定位置上,持续一段时间, 线,字符就显示在指定位置上,持续一段时间,然 后关闭所有显示;接下来又送出新的字段码, 后关闭所有显示;接下来又送出新的字段码,按照 上述过程又显示在新的位置上, 上述过程又显示在新的位置上,直到每一位数码管 都扫描完为止,即为一个扫描周期。 都扫描完为止,即为一个扫描周期。
概念
I/O口线上 每个LED I/O口线上,每个LED的数码管的位码单独使用一 口线上, LED的数码管的位码单独使用一 I/O口线 口线, 位动态显示的LED LED数码管只需 个 I/O 口线 , 则 n 位动态显示的 LED 数码管只需 +n位I/O口线 从而大大地简化了硬件电路。 口线, 8+n位I/O口线,从而大大地简化了硬件电路。选 亮数码管采用动态扫描显示。 亮数码管采用动态扫描显示 。 所谓动态扫描显示 即轮流向各位数码管送出字形码和相应的位选, 即轮流向各位数码管送出字形码和相应的位选 , 利用发光管的余辉和人眼视觉暂留作用, 利用发光管的余辉和人眼视觉暂留作用 , 使人的 感觉好像各位数码管同时都在显示。 感觉好像各位数码管同时都在显示。 比较节省I/O口 硬件电路也较静态显示方式简单, 比较节省I/O口,硬件电路也较静态显示方式简单, I/O 但其亮度不如静态显示方式, 但其亮度不如静态显示方式 , 而且在显示位数较 多时, CPU要依次扫描 占用CPU 较多的时间。 要依次扫描, CPU较多的时间 多时 , CPU 要依次扫描 , 占用 CPU 较多的时间 。 单 片机控制系统常采用此方式。 片机控制系统常采用此方式。
3、LED显示器显示接口按驱动方式的分类 LED显示器显示接口按驱动方式的示是指数码管显示某一字符时, 概念 静态显示是指数码管显示某一字符时, 相应的发光二极管恒定导通或恒定截止。 相应的发光二极管恒定导通或恒定截止。

七段数码管显示实验报告

七段数码管显示实验报告

七段数码管显示实验报告实验目的:本实验的目的是通过控制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段数码管和译码器常常被用于数字显示、计数器、时钟、温度计等电子设备中,具有广泛的应用前景。

LED数码管显示实验报告

LED数码管显示实验报告

实验一LED 数码管显示一、实验要求:使用6位数码管显示数字,第一个数码管显示0,时间1秒,然后关闭第一个数码管,同时第二个数码管显示1,时间为1秒,然后关闭第二个数码管……直到最后一个数码管显示5,第一个数码管显示6,……,一直循环显示。

请自行设计电路、编写程序。

二、实验目的:掌握LED数码管的使用方法。

三、实验内容:LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。

这些段分别由字母a,b,c,d,e,f,g,dp来表示。

当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。

在本次实验中采用的是AT89C51和六位数码管组合而成。

四、实验程序://LED数码管显示#include<reg51.h>#define uint unsigned intvoid delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=100;y>0;y--);}void main(){P3=0x01;P1=0xc0;delay(1000);P3=0x02;P1=0xf9;delay(1000);P3=0x04;P1=0xa4;delay(1000);P3=0x08;P1=0xb0;delay(1000);P3=0x10;P1=0x99;delay(1000);P3=0x20;P1=0x92;delay(1000);P3=0x01;P1=0x82;delay(1000);P3=0x02;P1=0xf8;delay(1000);P3=0x04;P1=0x80;delay(1000);P3=0x08;P1=0x90;delay(1000);P3=0x10;P1=0x88;delay(1000);P3=0x20;P1=0x83;delay(1000);P3=0x01;P1=0xc6;delay(1000);P3=0x02;P1=0xa1;delay(1000);P3=0x04;P1=0x86;delay(1000);P3=0x08;P1=0x8e;delay(1000); }五、实验结果:图1、显示数字1图2、显示数字5。

数码管动态显示实验报告

数码管动态显示实验报告

数码管动态显示实验报告1.实验目的:本实验旨在通过使用单片机控制数码管的动态显示,了解数码管的原理和使用方法,加深对单片机控制的理解。

2.实验原理:数码管是由许多发光二极管(LED)组成的,每个数码管有7个发光二极管组成7段,再加上一个小数点(或8段数码管),通过控制每个发光二极管的亮灭状态,可以显示出数字、字母等字符。

本实验使用的是共阴极数码管,在通常情况下,数码管引脚为低电平时亮灯,为高电平时灭灯。

3.实验器材:-STC89C52单片机-共阴极数码管-电阻-面包板及连接线-电源4.实验步骤:步骤1:连接电路将数码管的7个引脚分别连接到单片机的7个I/O引脚上,并通过电阻限流。

连接电路后,确认连接无误。

步骤2:编写程序使用C语言编写程序,实现数码管的动态显示。

可以使用延时函数和位操作函数控制数码管的亮灭,通过改变每个数码管引脚的高低电平状态,实现显示不同的数字、字母。

步骤4:实验观察与分析观察数码管的显示效果,通过改变程序中的参数,可以实现不同的显示效果。

5.实验结果与分析:经过实验,我们成功实现了数码管的动态显示。

通过编写程序,我们可以实现数码管显示数字、字母等不同的字符。

调整程序中的参数,可以实现不同的动态显示效果,如流水灯、闪烁等。

数码管的动态显示是通过改变每个数码管引脚的高低电平实现的,通过快速改变引脚电平状态的时间间隔,创建了肉眼无法察觉的视觉效果,从而实现了动态显示。

此外,通过实验我们还了解到了单片机控制数码管的原理和方法,加深了对单片机控制的理解。

6.实验总结:通过本实验,我们了解到了数码管的动态显示原理和方法,并通过编写程序,成功实现了数码管的动态显示。

同时,我们还巩固了单片机控制的知识,提高了自己的动手能力和问题解决能力。

在今后的学习和工作中,我们将进一步掌握数码管的使用方法,并能够将其应用于更加复杂的应用场景中,实现更多有趣的功能。

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

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

七段数码显示器显示实验报告单片机原理及接口技术实验报告实验项目:姓名:专业:班级:学号:一、实验名称七段数码显示器显示实验(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,进入下面的界面,单击下一步。

实验二 数码管显示实验

实验二  数码管显示实验

k实验二数码显示实验一、实验内容1、选用一位数码管,编送不同码字,显示静态数据;2、轮流选择不同位数码管,编送不同码字,并做视觉残留,实现动态显示。

二、实验目的1、了解七段数码显示数字的原理。

2、掌握四个LED动态显示,即一位一位地轮流点亮显示器各个位(扫描)。

三、实验原理七段LED显示器有共阳极和共阴极两种,共阴极LED显示器是发光二极管的阴极连在一起,通常此公共阴极接地;共阳极LED显示器是发光二极管的阳极连在一起,公共阳极接正电压。

通过LED显示器中二极管的亮灭,则显示不同的字符或数字。

共阴极发光二极管内部结构图(可参考学习板89C52学习板说明书做补充说明)四、实验电路(见学习板说明书)五、连线方法(见学习板说明书)五、参考程序程序一,/*************************************************************** 功能:数码管静态显示,数码管1循环显示0-F作者:txl时间:2009-04版本:V1.0***************************************************************/ #include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit wei1=P2^0; //第一位数码管位选uchar num;uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳数码管码表void delay(uint z);void main(){while(1){for(num=0;num<16;num++){wei1=0;P0=table[num];delay(1000);}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}程序二、/*************************************************************** 功能:实现4位数码管显示"2009"这四个数字作者:txl时间:2009-04版本:V1.0***************************************************************/ #include "reg52.h"#define uchar unsigned charsbit wei1=P2^0;sbit wei2=P2^1;sbit wei3=P2^2;sbit wei4=P2^3;uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳数码管码表//函数声明void led_display(unsigned char *temp );void Delay_xuS(unsigned int x);/*-------------------------------------------------主程序-------------------------------------------------*/void main(){uchar temp[4]={2,0,0,9};while(1){led_display(temp);}}/*------------------------------------------------- 功能100uS延时子程序-------------------------------------------------*/void Delay_xuS(unsigned int x){unsigned int i,j;for( i =0;i < x;i++ ){for( j =0;j<50;j++ );}}/*------------------------------------------------- 功能:数码管显示子程序-------------------------------------------------*/void led_display(unsigned char *temp ) {wei1=0; //点亮第一个数码管P0 = table[temp[0]];Delay_xuS(5);wei1=1;wei2=0; //点亮第二个数码管P0 = table[temp[1]];Delay_xuS(5);wei2=1;wei3=0; //点亮第三个数码管P0 = table[temp[2]];Delay_xuS(5);wei3=1;wei4=0; //点亮第四个数码管P0 = table[temp[3]];Delay_xuS(5);wei4=1;}程序三、显示字母ABCD#include <AT89X52.H> //包含头文件#define shuma P0 //定义数码管数据位sbit LED_0=P2^0; //定义4个控制脚sbit LED_1=P2^1;sbit LED_2=P2^2;sbit LED_3=P2^3;void delay(unsigned int x); //声明延时函数void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned chard4);//声明显示函数/*=====0-9=====A-G=====*/unsigned char a[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳极数码管的段码0 1 2 3 4 5 6 7 8 9 A B C D E Fvoid main() //主函数开始{while(1){display(10,11,12,13); //在循环中调用显示函数}}void delay(unsigned int x) //延时函数,有效效果为数码管不闪烁{unsigned int i;for(i=0;i<x;i++);}void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4) {shuma=a[d1]; //选中第一位,发送第一位段码LED_0=0; //第一位显示delay(100); //延时显示LED_0=1; //第一位关显示shuma=a[d2]; //选中第二位,发送第二位段码,以下原理同上LED_1=0;delay(100);LED_1=1;shuma=a[d3]; //选中第三位,发送第三位段码,以下原理同上LED_2=0;delay(100);LED_2=1;shuma=a[d4]; //选中第四位,发送第四位段码,以下原理同上LED_3=0;delay(100);LED_3=1;}五、体会讨论。

七段LED数码管显示电路设计(精)

实验七七段LED数码管显示电路设计一、实验目的1.学习EDA软件的基本操作2.学习使用原理图进行设计输入3.初步掌握软件输入、编译、仿真和编程的过程4.学习实验开发系统的使用方法二、实验说明本实验通过七段LED数码管显示电路的设计,初步掌握EDA 设计方法中的设计输入、编译、综合、仿真和编程的基本过程。

七段LED数码管显示电路有四个数据输入端(D0-D3),七个数据输出端(A-G。

三、实验要求1、完成七段LED数码管显示电路的原理图输入并进行编译2、对设计的电路经行仿真验证3、编程下载并在实验开发系统上验证设计结果四、实验步骤1、新建工程2、新建Verilog HDL文件3、在文本输入窗口键入代码4、保存HDL文件5、编译文件直至没有错误6、新建波形文件7、添加观察信号8、添加输入激励,保存波形文件9、功能仿真七段LED数码管显示电路真值表:输入D3D2D1D0G F E D C B A 000000111111 100010000110 200101011011 300111001111 401001100110 501011101101 601101111101 701110001111 810001111111910011101111 A10101110111 B10111111100 C11001111001 D110111011110 E11101111001 F11111110001五、电路原理图啊Verilog代码描述:module qiduan(data_in,data_out;input [3:0]data_in;output [6:0]data_out;reg [6:0]data_out;always @(data_inbegincasex(data_in4'b0000:data_out<=7'b0111111;4'b0001:data_out<=7'b0000110; 4'b0010:data_out<=7'b1011011; 4'b0011:data_out<=7'b1001111; 4'b0100:data_out<=7'b1100110; 4'b0101:data_out<=7'b1101101; 4'b0110:data_out<=7'b1111100; 4'b0111:data_out<=7'b0000111; 4'b1000:data_out<=7'b1111111; 4'b1001:data_out<=7'b1100111; 4'b1010:data_out<=7'b1110111; 4'b1011:data_out<=7'b1111100; 4'b1100:data_out<=7'b0111001; 4'b1101:data_out<=7'b1011110; 4'b1110:data_out<=7'b1111001; 4'b1111:data_out<=7'b1110001; default:data_out<=7'b0000000; endcaseendendmodule仿真波形:六、实验体会七段LED数码管显示电路是常用的数码管之一,它有四个数据输入端(D0-D3),七个数据输出端(A-G。

数码显示控制实验报告(3篇)

第1篇一、实验目的1. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。

二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。

51单片机通过控制数码显示模块的段选和位选,实现数字的显示。

移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。

在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。

三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。

四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。

2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。

3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。

4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。

五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。

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

实验四七段数码管显示实验一、实验目的掌握数码管显示数字的原理。

二、实验内容1.静态显示:数码管为共阴极,通过BCD码译码驱动器CD4511驱动,其输入端A~D 输入4位BCD码,位码输入低电平选中。

按图4-1连接好电路,将8255的A口PA0~PA3与七段数码管LED1的BCD码驱动输入端A1~D1相连,8255的A口PA4~PA7与七段数码管LED2的BCD码驱动输入端A2~D2相连,8255的B口PB0~PB3与七段数码管LED3的BCD 码驱动输入端A3~D3相连,8255的B口PB4~PB7与七段数码管LED4的BCD码驱动输入端A4~D4相连,8255的C口PC0~PC3分别与七段数码管LED4~LED4的位驱动输入端DG1~DG4相连。

编程从键盘上每输入4个0~9数字,在七段数码管LED4~LED4上依次显示出来。

2.图4-13.动态显示:数码管为共阴极,段码采用相同驱动,输入端加高电平,选中的数码管对应段点亮,位码采用同相驱动,位码输入端低电平选中,按图4-2连接好电路,图中只画了2个数码管,实际是8个数码管,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~g相连(32TCI0模块上的J1连32LED8模块J2),8255的C口的PC0~PC7接七段数码管的段码驱动输入(32TCI0模块上的J3连32LED8模块J1),跳线器K1连2和3。

编程在8个数码管上显示“12345678”。

按任意键退出运行。

图4-2一、编程提示1. 由于DVCC 卡使用PCI 总线,所以分配的IO 地址每台微机可能都不用,编程时需要了解当前的微机使用那段IO 地址并进行处理。

2. 3. 对实验内容1,七段数码管字型代码与输入的关系如下表:二、参考流程图1.实验内容一的参考流程图图4-32.实验内容二的参考流程图图4-4三、参考程序1.内容一的参考程序源程序清单如下:data segmentioport equ 0E400h-0280hio8255a equ ioport+288hio8255b equ ioport+289hio8255c equ ioport+28ahio8255k equ ioport+28bhled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhmesg1 db 0dh,0ah,'Input a num (0--9),other key is exit:',0dh,0ah,'$' bz db ?cz db 04hdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;使8255的A口为输出方式mov ax,80hout dx,alsss0: mov si,offset bzmov cx,04hsss1: mov dx,offset mesg1 ;显示提示信息mov ah,09hint 21hmov ah,01 ;从键盘接收字符int 21hcmp al,'0' ;是否小于0jl exit ;若是则退出cmp al,'9' ;是否大于9jg exit ;若是则退出sub al,30h ;将所得字符的ASCII码减30Hmov [si],al ;存入显示缓冲区inc si ;显示缓冲区指针加1dec cx ;判断输入满4个数字吗?jnz sss1 ;不满继续mov si,offset bz ;从显示缓冲区取第一个数字的BCD码mov al,[si]and al,0fh ;屏蔽高四位暂存ALinc si ;显示缓冲区指针加1mov ah,[si] ;取第二个数字的BCD码到AHsal ah,4h ;右移4次到高四位add al,ah ;两个BCD码合并成一个字节mov bl,al ;暂存入BLinc simov al,[si] ;取第三个数字的BCD码and al,0fhinc simov ah,[si] ;取第四个数字的BCD码到AHsal ah,4hadd ah,almov al,ahmov dx,io8255a ;从8255的A口输出(后两个数字)out dx,almov al,blmov dx,io8255b ;从8255的B口输出(前两个数字)out dx,almov al,0f0hmov dx,io8255c ;从8255的C口输出位码out dx,almov dl,0ffhmov ah,06int 21hje sss0 ;有键按下则退出exit: mov ah,4ch ;返回int 21hcode endsend start实验结果:图4-52.内容二的参考程序源程序清单如下:data segmentioport equ 0C400h-0280hio8255c equ ioport+28ahio8255k equ ioport+28bhio8255a equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 01h,02h,03h,04h,05h,06h,07h,08h ;存放要显示的十位和个位con db ? ;位码data endscode segmentassume cs:code, ds:datastart: mov ax,datamov ds,axmov dx,io8255k ;将8255设为A口C口输出mov al,80hout dx,alloop2: mov al,08h ;设置数码管位计数器初值到CONmov byte ptr con,almov si,offset buffer1 ;置显示缓冲器指针SImov ah,7fh ;置位码初值disp0: mov cx,0ffffhmov bl,ds:[si] ;取显示缓冲区显示值存BXmov bh,0hpush simov dx,io8255c ;位码从C口输出mov al,ahout dx,almov dx,io8255amov si,offset led ;置led数码表偏移地址为SIadd si,bx ;求出对应的led数码mov al,byte ptr [si]out dx,al ;段码从A口输出disp1: loop disp1 ;延时mov cx,0ffffhdisp2: loop disp2ror ah,01h ;位码右移1位pop siinc si ;显示缓冲区指针加1mov al,byte ptr condec almov byte ptr con,aljnz disp0 ;数码管位计数器减1为0吗?,不为0继续mov dx,io8255a ;为0,关数码管显示mov al,0out dx,almov dl,0ffhmov ah,06int 21hje loop2 ;有键按下则退出mov ah,4ch ;返回int 21hcode endsend start实验结果:图4-7四、实验总结:通过本次试验,掌握了数码管显示的程序流程了解了动态扫描显示的程序执行过程。

七段数码管显示实验

单片机实验报告实验九七段数码管显示实验一、实验目的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 56DHb7CH*实际上试验中使用的是共阳极数码管,这里就不一一列出。

2、动态显示按图4.9-2(b )连接线路,通过交替选中LED1和LED0循环显示两位十进制数。

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档