实验2 数码管显示及其编程练习

合集下载

LED显示程序设计实验

LED显示程序设计实验

实验二LED数码管驱动显示程序实验一、实验目的1、初步学习和了解VHDL语言编程方式2、学习和掌握七段数码显示译码器的设计方法3、学习和掌握VHDL的多层设计方法二、实验要求1、根据硬件设计的思维方式,编制LED七段码的显示程序2、要求是一位LED以定位方式显示3、完成LED七段码波形分析的显示功能4、在EDA实验箱上按要求显示三、实验设备1、计算机一台2、EDA——Ⅳ实验箱一台四、实验原理1、七段码是用一种纯组合的逻辑电路,通常是用小型专用的IC门电路组成,数字输入与输出表达均未16进制,处理一般较复杂,而用FPGA/CPLD来实现较为简单。

2、七段码输入与输出的原理与真值表关系。

(a)输入:七段码输入为四个输入信号,用来表示为“0000”到“1111”,即表示为十六进制的“0”到“F”。

(b)输出:七段码输出为七个输出信号,分别用“A、B、C、D、E、F、G”七个符号来表示。

一般规定,输出信号为“1”时,它所控制的发光二极管为点亮状态,输出信号为“0”时,它所控制的发光二极管为熄灭状。

本实验使用的七段数码管为共阴极组,其电路如图2.1所示。

图2.1 共阴极数码管及其电路(c)输入与输关系为四位二进制代码组成十六进制代码,将其代码显示,其对应关系如表2.1所示。

(d)显示方式是通过选位的方式进行,是将FPGA/CPLD的三位二进制的信号输出,通过外部三——八译码器硬件电路,选中一路LED信号为输出,故选择一位LED数码管显示,本实验是采取选相应的一个指定位置进行LED显示。

3、输入是通过外部的四个按键操作而组成一位十六进制。

其连接到FPGA/CPLD的对应的引脚上,需进行引脚分配。

4、编写译码程序,生成底层组件,组合成底层文件。

表2-1 七段字符显示真值表五、实验步骤1、 在D 盘建立自己的文件目录,D: \ EX \ Z04** \ you*\ex*;2、 在Max+Pluse Ⅱ的界面下,自己的文件目录下,建立项目文件 File \ Project \ 文件名A ;3、 在自己的文件目录下,建立文本文件 File \ New \ 文件名B.vhd ;4、 保存此文件并划归到项目文件内, File \ Project \ Set Project current File ,其中文本文件名B 必须和实体名一致;5、 输入程序,保存文件“文件名B.vhd ”,File \ Save As “文件名B.vhd ”(注意后缀,如保存默认文件名时,其后缀通常为“*.tdf ”文件,必须删除后缀为“*.tdf ”文件名;6、 单击编译器快捷方式按钮,对文本文件进行编译,观察是否有原则错误;7、 如有修改则修改程序中错误,若无错误则可做以下工作; 8、 建立底层器件的封装,File \ Create Default Symbol ;9、 建立图形文件,File \ New \ 文件名C.gdf 并化归到项目内。

实验二 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显示器显示接口按驱动方式的示是指数码管显示某一字符时, 概念 静态显示是指数码管显示某一字符时, 相应的发光二极管恒定导通或恒定截止。 相应的发光二极管恒定导通或恒定截止。

实验二数码管显示

实验二数码管显示

实验二数码管显示本实验的目的是掌握数码管的工作原理与使用,实现数码管的静、动态显示。

静态数码管我们先看看什么是数码管,上图就是各种长相各种样子的数码管了,肯定很眼熟了吧。

不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。

数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。

而它们的公共端又可分为共阳极和共阴极,中间图为共阴极内部原理图,右图为共阳极内部原理图。

上图展出了常用的两种数码管的引脚排列和内部结构。

总所周知,点亮发光二极管就是要给予它足够大的正向压降。

所以点亮数码管其实也就是给它内部相应的发光二极管正向压降。

如上图左(一共a、b、c、d、e、f、g、DP 八段),如果要显示“1”则要点亮b、c 两段LED;显示“A”则点亮a、b、c、e、f、g 这六段LED;我们还知道,既然LED 加载的是正向压降,它的两端电压必然会有高低之分:如果八段LED 电压高的一端为公共端,我们称之为共阳极数码管(如上图中);如果八段LED 电压低的一段为公共端,则称之为共阴极数码管(上图右)。

所以,要点亮共阳极数码管,则要在公共端给予高于非公共端的电平;反之点亮共阴极数码管,则要在非公共端给予较高电平。

对共阴极数码来说,其8个发光二极管的阴极在数码管内部全部连接在一起,所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。

当我们给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点亮了。

如果想要显示出一个8字,并且把右下角的小数点也点亮的话,可以给8个阳极全部送高电平,如果想让它显示出一个0字,那么我们可以除了给第“g, dp”这两位送低电平外,其余引脚全部都送高电平,这样它就显示出0字了。

数码管显示数值实训报告

数码管显示数值实训报告

一、实训目的本次实训旨在通过实践操作,使学生掌握数码管的基本原理、驱动方式以及如何利用单片机控制数码管显示数值。

通过实训,学生能够加深对数码管应用电路的理解,提高动手能力和实际编程能力。

二、实训器材1. 51单片机开发板2. 数码管(共阴极或共阳极)3. 电阻、电容等电子元件4. 连接线5. 编程器6. 电源7. 示波器(可选)三、实训原理数码管是一种由发光二极管(LED)组成的显示器件,常用于显示数字、字母或其他符号。

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

1. 共阴极数码管:所有LED的阴极连接在一起,公共端为正极。

2. 共阳极数码管:所有LED的阳极连接在一起,公共端为负极。

数码管的显示原理是通过控制LED的点亮和熄灭来显示不同的字符。

每个数码管由7个LED组成,分别对应数码管的7个笔画(A、B、C、D、E、F、G),通过控制这7个LED的点亮和熄灭,可以显示0-9的数字以及部分字母。

四、实训步骤1. 搭建电路:根据实训要求,搭建数码管显示电路。

电路连接包括单片机的P0口或P2口与数码管的段选线连接,单片机的某个引脚与数码管的位选线连接,以及数码管的公共端与电源连接。

2. 编写程序:使用C语言编写程序,通过单片机控制数码管的显示。

程序主要包括以下内容:- 初始化单片机P0口或P2口为输出模式,用于控制数码管的段选线。

- 初始化单片机控制位选线的引脚为输出模式。

- 编写延时函数,用于实现数码管的动态显示效果。

- 编写显示函数,用于控制数码管显示特定的数字或字母。

3. 编译程序:使用Keil uVision等编程软件编译程序,生成可执行的HEX文件。

4. 烧录程序:将编译好的HEX文件烧录到单片机中。

5. 测试电路:给单片机供电,观察数码管是否能够按照预期显示数值。

五、实训结果与分析1. 显示单个数字:程序成功控制数码管显示单个数字,如0、1、2等。

2. 显示多位数字:程序能够控制数码管依次显示多位数字,如123、456等。

实验二编码、译码、显示电路

实验二编码、译码、显示电路

实验二 编码、译码、显示电路一、实验目的1. 学习编码器原理及基本电路。

2. 熟悉七段译码器的逻辑功能和使用。

3. 掌握七段显示器的使用方法。

4. 进一步学习组合电路的应用。

二、实验用元器件编码器74LS148×2 全加器74LS283×1 显示译码器4511×2 四2输入与非门74LS00×2编码、译码、显示电路是由编码、译码器和显示器三部分电路组成的逻辑电路。

下面分别加以介绍。

1. 编码器实验中选用被广泛使用的74LS148集成8-3优先编码器。

常用于优先中断系统、键盘编码等,引脚图如图2-1。

共有9个输入引脚,一个使能端和8个编码输入,均为低电平有效,即输入“0”表示有输入,0~7输入的优先级由低到高排列,优先级高的输入有效时,优先级低的输入不起作用。

输出为反码,如输入0号端有效时,如输出原码为“000”,实际输出“111”。

功能见表2-1。

可以将多片编码器扩展成更多二进制码,通过高位使能输出去控制低位编码器的使能输入,实现芯片之间的优先级,再将输出作相应处理,CS 是工作状态标志,如图2-2所示。

图2-1 74LS148的引脚图表2-1 74LS148优先编码器的功能表图2-2 优先编码器的扩展2.全加器实验中建议使用74LS283全加器,它将A0A1A2A3和B0B1B2B3相加,和由S0S1S2S3输出,C-1为进位输入,Co为进位输出。

引脚图见图2-3。

图 2-3 74LS283全加器引脚图 图2-4 4511译码器 3. 译码器这里所说的译码器是将二进制码译成十进制数字符的器件。

实验中选用的CD4511是一个BCD 码七段译码器,并兼有驱动功能,内部没有限流电阻,与数码管相连接时,需要在每段输出接上限流电阻,引脚排列见图2-4。

表2—2是CD4511功能表,CD4511只能对0~9的数字译码,超出范围将无显示。

表3-2 CD4511功能表4. LED 数码显示器数码显示器采用八段发光二极管显示器,它可直接显示出译码器输出的十进制数。

数码管显示及其编程练习

数码管显示及其编程练习

单片机课程实验 2011.10.17 电本0801-3统一要求双面打印,若程序有漏洞可直接在报告上修改! 实验2 数码管显示与编程练习一、实验目的掌握共阴极和共阳极数码管外围功能引脚特点;理解数码管动态显示原理; 熟悉单片机显示接口 电路;掌握数码管显示编程特点。

二、设计要求编写显示程序,点亮最右侧两位数码管;上电从00开始数值逐个递增,增至30后再重新从00开始循环。

三、显示接口电路电路说明:1. 要求P1口接显示电路,低4位为数值表示位,4位数值为BCD 码,与七段译码器CD4543相连。

2. P1.5 - P1.7高3位为位选通,与74LS138译码器相连,最高位无意义【16位显示则需要最高位】。

四、程序清单ORG 00H; MAIN:MOV 30H,#00H; MOV 31H,#00H; LOOP:MOV R2,#250; TT1:LCALL DISPLAY; DJNZ R2,TT1; LCALL UPDAT; AJMP LOOP; DISPLAY:MOV A,31H; ADD A,#10H; MOV P1,A; LCALL DELAY; MOV A,30H; MOV P1,A; LCALL DELAY; RET; UPDA T:INC 30H; MOV A,30H; CJNE A,#10,EXIT1; MOV 30H,#00H; INC 31H; EXIT1:MOV A,30H;CJNE A,#1,EXIT2;MOV A,31H;CJNE A,#3,EXIT2;MOV 30H,#00H;MOV 31H,#00H; EXIT2:RET; DELAY:MOV R7,#02; D10:MOV R6,#248; DJNZ R6,$;DJNZ R7,D10;RET;END;。

实验二 数码管显示实验

实验二  数码管显示实验

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;}五、体会讨论。

基础实验(数码管显示)含代码

基础实验(数码管显示)含代码

实验一基础实验(数码管显示)一、实验内容使用MCS-51汇编语言编写程序,完成如下功能:1. 使用三个数码管显示十进制数值(001~999,可任意设置);2. 每隔1秒,该数值自动减一,直到归零;3. 归零后的下一秒,显示一个新的十进制数值(001~999,可任意设置);4. 每隔1秒,新数值继续自动减一,直到再次归零;5. 重新执行步骤1,循环往复。

6. 当开关S1按下时,暂停计数;S1松开时,恢复计数。

二、数码管显示原理如图所示,三段式数码管由三片74HC164级联控制三个数码管的显示,其中使用单片机P4.5作为模拟串口数据,使用P4.4模拟串口时钟,CLR端接高电平。

使用上一个74HC164的Q7作为下一个74HC164的输入端。

要想输出一个字形码,就需要从高位到低位依次向移位寄存器输出8个比特。

移位寄存器的数据线和时钟线分别接到单片机的P4.5和P4.4管脚,可以使用MCS-51里面的位操作指令进行输出。

连续输出3个字形,24个bit之后,欲显示的字形将稳定地显示在数码管上,程序可以转而执行其他工作。

三、实验流程图1.主程序流程图开始初始化定义计数器R6,R5,R4定义码表TAB 0-9根据R6偏移从TAB取数送到算术寄存器A中调用SHOW子程序根据R5偏移从TAB取数送入算术寄存器A中调用SHOW子程序根据R4偏移从TAB取数送入算术寄存器A中调用SHOW子程序调用延时子程序S1按下?是循环延时否R6减一即个位减一R6为-1?是R5减一即十位减一重新初始化R6否R5为-1?否是R4减一即百位减一重新初始化R5R4为-1?重新初始化R4否2.显示子程序SHOW 流程图3.延时子程序DELAY 流程图子程序SHOW 开始R0初始化计数时钟置0右移AC 标志位送入DATA时钟置1,上跳R0=0?是RET否子程序DELAY 开始RI 初始化为80R3减一R3为0?是R2减一R2为0?是R1减一是R1为0?否R2初始化为200R3初始化为250否否是四、程序源代码 0000H2.LJMP START 0050H4.START:5.P4 EQU 0C0H6.P4SW EQU 0BBH7.CLK EQU P4.48.DAT EQU P4.59.SW EQU P3.610.MOV P4SW, #70H11.LP:12. MOV R6, #913. MOV R5, #914. MOV R4, #915.LOOP:16. MOV DPTR, #TAB17. MOV A,R618. MOV DPTR,#TAB19. MOVC A,@A+DPTR20. LCALL SHOW21.22. MOV A,R523. MOV DPTR,#TAB24. MOVC A,@A+DPTR25. LCALL SHOW26.27. MOV A,R428. MOV DPTR,#TAB29. MOVC A,@A+DPTR30. LCALL SHOW31. LCALL DELAY32.33.PAUSE:34. NOP35. JNB SW,PAUSE36. DEC R637. CJNE R6,#-1,LOOP38.39. DEC R540. MOV R6,#941. CJNE R5,#-1,LOOP42. DEC R443. MOV R5,#944. CJNE R4,#-1,LOOP45. MOV R4,#946. LJMP LOOP47.48.SHOW:49. MOV R0,#850.SLP:51. CLR CLK52. RLC A53. MOV DAT,C54. SETB CLK55. DJNZ R0,SLP56. RET57.58.DELAY:59. MOV R1,#8060.SD:61. MOV R2,#20062.SD1:63. MOV R3,#25064.SD2:65. DJNZ R3,SD266. DJNZ R2,SD167. DJNZ R1,SD68.RET69.70.TAB:71. DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H72.73.74.END75.TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H五、思考题1.MCS51中有哪些可存取的单元,存取方式如何?它们之间的区别和联系有哪些?答:MCS51单片机中,包含程序存储器ROM、数据存储器RAM和特殊功能寄存器(SFRs),其中数据存储器还包含内部RAM,内部扩展RAM和片外RAM。

数码管显示程序(汇编语言)

数码管显示程序(汇编语言)

实验三数码显示一、实验目的了解LED数码管动态显示的工作原理及编程方法。

二、实验内容编制程序,使数码管显示“DJ--88”字样。

三、实验程序框图四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S6.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。

(2)数码管显示“DJ--88”字样。

脱机模式:1、在P.态下,按SCAL键,输入2DF0,按EXEC键。

2、数码管显示“DJ--88”字样。

五、实验程序清单CODE SEGMENT ;S6.ASM display "DJ--88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1CON1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0DHMOV BUF+1,19HMOV BUF+2,17HMOV BUF+3,17HMOV BUF+4,08HMOV BUF+5,08HRETCODE ENDSEND START。

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

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

实验2:8255七段数码管静动态显示北京科技大学机械专业微机原理实验报告~用到的带走哦!微机实验报告书学号:姓名:班级:同组名单:实验日期:20XX年.12.21实验题目:七段数码管的静态显示实验目标:掌握数码管显示数字的原理(功能:键盘输入一位十进制数字(0~9),用七段数码管显示。

)解题思路:1. 静态显示:按图10(a)连接好电路,将8255的A口PA0-PA6分别与七段数码管的断码驱动输入端a-g项链,位码驱动输入端S1接+5V,S0、dp接地。

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

2. 动态显示:按图10(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。

编程在两个数码管上显示“56”。

程序框图:静态显示见图11(a),动态显示见图11(b)。

北京科技大学机械专业微机原理实验报告~用到的带走哦!关键问题分析(静态显示):1、按键判断和程序结束判断按键来说,由于程序中必须输入数字,所以没有必要对是否按键进行判断,只需要判断按键是否在0-9之间即可。

用以下程序即可:cmp al,'0' jl exit ; jl,条件转移指令,即在小于时转移cmp al,'9' jg exit ;jg, 条件转移指令,即在大于时转移程序中还要用到“cmp”即比较指令,用来比较输入数与0、9的大小关系。

程序结束:如若输入的数字小于0或者大于9,必须直接跳出程序,即结束指令必须单独占用一个程序段,这样,程序顺序执行完毕也可以顺利返回DOS。

2、七段码显示。

北京科技大学机械专业微机原理实验报告~用到的带走哦!实验指导书中给出了七段码的字型代码。

这样一来,七段码的显示只需要用换码指令“XLAT”便可以轻松实现。

前提是必须将七段码字型编成数码表以字符串的形式写进程序中。

3、数字键ASCII码与数值间的转换。

因为0的ASCII码为30H,所以数字键ASCII码与数值间的转换时只需减去30H即可,可用下列语句实现:sub al,30h程序清单:静态显示:data segmentioportio8255aio8255b equ 0c800h-0280h equ ioport+288h equ ioport+28bhled 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:data mov ds,ax mov dx,io8255b ;使8255的A口为输出方式mov al,80h ;***-*****B,控制字PA以方式0输出out dx,al mov ah,09h int 21h mov ah,01 ;从键盘接收字符int 21h cmp al,'0' ;是否小于0 jl exit ;如若小于0,则跳转到exit 退出程序cmp al,'9' ;是否大于9 jg exit ; 如若大于9,则跳转到exit退出程序sub al,30h ;将所得字符的ASCII码减30H,数字键ascii码同数值转换mov bx,offset led ;bx为数码表的起始地址xlat ;求出相应的段码mov dx,io8255a ;从8255的A口输出out dx,al jmp zby ;转zby start: mov ax,data zby: mov dx,offset mesg1 ;显示提示信息exit: mov ah,4ch ;返回DOS北京科技大学机械专业微机原理实验报告~用到的带走哦!int 21hcode endsend start动态显示:data segmentioportio8255aio8255bio8255c equ 0c800h-0280h equ ioport+28ah equ ioport+28bh equ ioport+288hled db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ? ;位码data endscode segmentassume cs:code,ds:data mov ds,ax mov dx,io8255b ;将8255设为A口输出mov al,80h ;***-*****B,控制字PA以方式0输出out dx,al mov di,offset buffer1 ;设di为显示缓冲区start: movax,dataloop2: mov bh,02zby: mov byte ptr bz,bhpush di dec di add di, bz mov bl,[di] ;bl为要显示的数pop dimov al,0mov dx,io8255aout dx,almov bh,0 mov si,offset led ;置led数码表偏移地址为SI add si,bx ;求出对应的led数码mov al,byte ptr [si] mov dx,io8255c ;自8255A的口输出out dx,al mov al,byte ptr bz ;使相应的数码管亮mov dx,io8255a out dx,al mov cx,3000delay: loop delay ;延时北京科技大学机械专业微机原理实验报告~用到的带走哦!mov bh,byte ptr bz shr bh,1 jnz zby mov dx,0ffh mov ah,06 int 21h je loop2 ;有键按下则退出mov dx,io8255a mov al,0 ;关掉数码管显示out dx,al mov ah,4ch ;返回int 21h end start code ends运行结果:静态显示:在键盘上输入一个0-9的任意数字,会显示在数码管上。

实验报告2--7段数码管显示实验

实验报告2--7段数码管显示实验

SPI主机实验——7段数码显示一、实验目的1、通过本实验进一步掌握对ARM7.0软件和EasyJTAG仿真器的使用;2、进一步熟悉EasyARM2131开发板硬件结构,掌握各引脚功能和接线;3、掌握SPI主机实验,熟悉该实验程序,并能作出简单的修改并实现其功能;4、在SPI实验中,通过改变实验程序,实现7段数码管和流水灯同时运行的功能。

二、实验仪器装有ADS1.2及EasyJTAG仿真器的电脑一台;ARM7开发板一块。

三、实验原理图4.61 SPI接口控制74HC595图中已经将最高位输出(SQH)连线到LPC2131的SPI接口的MISO0,可用来读回74HC595移位输出的数据。

下图是8路LED控制电路:该实验演示在7段数码管上显示一些字符,字符的字模表存于一数组中,流程图如下图4.62所示。

图4.62 LED数码管显示实验流程图1、特性2、结构SPI总线配置及数据传输3、SPI外设描述4、基本操作5主机操作四、实验内容与结果1、实验程序如下#include "config.h"#define HC595_CS (1 << 29) // P0.29口为74HC595的片选const uint32 LEDS8 = (0xFF << 18); // P1[25:18]控制LED8~LED1,低电平点亮/************************************************************************ ******************************** 函数名称:DelayNS()** 函数功能:长软件延时** 入口参数:dly 延时参数,值越大,延时越久** 出口参数:无************************************************************************* *******************************/void DelayNS(uint32 dly){uint32 i;for(; dly>0; dly--)for(i=0; i<50000; i++);}const uint32 LED_TBL[] = {0x00, 0xFF, // 全部熄灭后,再全部点亮0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个靠拢后分开0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从两边叠加后递减};/********************************************************************************************************** 函数名称:MSPI_Init()** 函数功能:初始化SPI接口,设置为主机。

数码管显示实验报告

数码管显示实验报告

数码管显示实验报告数码管显示实验报告引言:数码管是一种常见的数字显示设备,广泛应用于各种计数、计时和显示系统中。

本实验旨在通过实际操作,了解数码管的工作原理和使用方法,并探索其在电子领域中的应用。

实验原理:数码管是由多个发光二极管组成的,每个发光二极管代表一个数字或字母。

通过控制发光二极管的亮灭来显示不同的字符。

数码管通常分为共阳极和共阴极两种类型,其差别在于亮灭控制信号的电平极性。

实验步骤:1. 准备实验材料:数码管、电路连接线、电阻、开关、电源等。

2. 按照电路图连接电路:将数码管的引脚与其他元件连接,确保电路正确无误。

3. 接通电源,观察数码管的显示效果:根据电路连接的不同,数码管将显示不同的数字或字母。

4. 通过改变电路中的元件参数,如电阻的阻值、开关的状态等,观察数码管的显示变化:可以发现数码管的亮度、显示内容等会随之改变。

实验结果与分析:经过实验,我们发现数码管的显示效果与电路连接方式、元件参数等因素密切相关。

当数码管为共阳极时,需要给对应的引脚施加高电平信号才能使其亮起;而当数码管为共阴极时,则需要给对应的引脚施加低电平信号才能使其亮起。

此外,数码管的亮度也与电阻的阻值有关。

通过改变电阻的阻值,我们可以调节数码管的亮度,使其适应不同的环境要求。

数码管还可以通过组合显示不同的字符。

例如,通过同时点亮数码管的多个发光二极管,我们可以显示出数字、字母、符号等。

这为数码管的应用提供了更多的可能性。

应用领域:数码管广泛应用于各个领域,如计时器、计数器、温度显示器、电子钟等。

在计算机硬件中,数码管也常用于显示硬盘容量、CPU温度等信息。

结论:通过本次实验,我们深入了解了数码管的工作原理和使用方法,并通过实际操作探索了其在电子领域中的应用。

数码管作为一种常见的数字显示设备,具有简单、可靠、易于控制等优点,在现代电子技术中扮演着重要的角色。

通过进一步的研究和应用,我们可以更好地利用数码管的特性,推动电子技术的发展。

数码管实验

数码管实验

题型一:①正常情况下,数码管上循环显示5、7、3;②按住K键数码管上交替显示2、6,松开K键则回到正常情况,且从停滞位置继续循环显示5、7、3。

题型二:①正常情况下,数码管上循环显示5、7、3;②按一下K键数码管上交替显示2、6,循环3次后,回到正常情况,且从停滞位置继续循环显示5、7、3。

单片机竞赛编程项目中学组数码管练习题二题型三:①正常情况下,数码管上循环显示5、7、3;②按住K键数码管上数字2闪烁显示,松开K键则回到正常情况,且从停滞位置继续循环显示5、7、3。

题型四:①正常情况下,数码管上循环显示5、7、3;②按一下K键数码管上显示2,闪动3次后回到正常情况,且从停滞位置继续循环显示5、7、3。

题型五:①正常情况下,数码管上闪动数字2;②按一下K键数码管上循环显示5、7、3,循环3次后回到正常情况。

③单片机上的数码管计按K键的次数。

②按住K1键,跑动的绿光停住,松开K1键回到正常情况,且绿光从停止位置继续跑;③按住K2键,三个灯都关闭,松开K2键回到正常情况,且绿光从停止位置继续跑。

题型四:①正常情况下,看到绿光在1、2、3号灯的黄底色上依次闪;②按住K1键,闪的绿光停住,松开K1键回到正常情况,且绿光从停止位置继续依次闪;③按住K2键,三个灯都关闭,松开K2键回到正常情况,且绿光从停止位置继续依次闪。

④单片机上的数码管计按K1键的次数。

题型六:①正常情况下,1、2、3号灯同闪红光。

②按住K1键,1号灯闪绿光,2、3号灯接着闪红光;③按住K2键,3号灯闪绿光,1、2号灯接着闪红光。

④单片机上的数码管计按K1键和K2键的总次数。

题型七:①正常情况下,看到绿光在1、2、3号灯的黄底色上跑动;②按住K1键,跑动的绿光停住,松开K1键回到正常情况,且绿光从停止位置继续跑;③按住K2键,看到绿光在白底色上跑动;松开K2键回到正常情况,且绿光从停止位置继续跑。

初中组单片机竞赛题一、数码管显示:1、在D口从1计数并显示到9,然后倒计数到0结束。

数码管显示电路实训报告

数码管显示电路实训报告

一、实训目的1. 掌握数码管的结构、工作原理及驱动方式;2. 学会使用动态扫描法驱动数码管;3. 熟悉常用数字电路元件及电路设计方法;4. 培养动手实践能力和团队合作精神。

二、实训器材1. 单片机实验箱2. 数码管(共阳极、共阴极各1个)3. 电阻、电容、二极管、三极管等数字电路元件4. 连接线、电源、示波器等辅助设备三、实训内容1. 数码管识别与测试2. 数码管静态显示电路设计3. 数码管动态显示电路设计4. 数码管显示电路应用实例四、实训步骤1. 数码管识别与测试(1)观察数码管外观,了解其结构特点,如共阳极、共阴极等;(2)使用示波器测试数码管各段位引脚的电压,判断其工作状态;(3)根据测试结果,确定数码管的驱动方式(静态或动态)。

2. 数码管静态显示电路设计(1)设计电路原理图,选择合适的驱动电路;(2)计算电阻、电容等元件参数,绘制元件布局图;(3)焊接电路,检查电路连接是否正确;(4)编写程序,实现数码管显示功能;(5)调试电路,观察数码管显示效果。

3. 数码管动态显示电路设计(1)分析动态扫描显示原理,确定扫描频率和占空比;(2)设计动态扫描控制电路,实现多位数码管的动态显示;(3)编写程序,实现动态显示功能;(4)调试电路,观察数码管显示效果。

4. 数码管显示电路应用实例(1)设计一个简单的时钟显示电路,实现时分秒的显示;(2)设计一个温度显示电路,将温度值转换为数码管显示;(3)设计一个电压显示电路,将电压值转换为数码管显示;(4)编写程序,实现上述电路的显示功能;(5)调试电路,观察数码管显示效果。

五、实训总结1. 通过本次实训,掌握了数码管的结构、工作原理及驱动方式;2. 学会了使用动态扫描法驱动数码管,提高了电路设计能力;3. 熟悉了常用数字电路元件及电路设计方法,为后续课程学习奠定了基础;4. 培养了动手实践能力和团队合作精神,提高了综合素质。

六、实训心得1. 在实训过程中,我深刻体会到理论与实践相结合的重要性。

数码管动态显示实验实验

数码管动态显示实验实验

数码管动态显示实验实验
一、实验目的
1. 熟悉Keil IDE u Vision集成开发环境软件的使用方法。

2. 熟悉51单片机仿真软件的使用方法。

3. 熟悉单片机程序设计的基本思路和方法。

4. 理解数码管动态显示的工作原理、掌握其编程方法。

二、实验内容
利用数码管动态显示方式,AT89C51外接两个共阳极数码管,P2.6和P2.7分别与三极管基极相连作位选端。

实现间隔0.5s循环流水显示数字0-9,开始显示“1 2”,0.5s后变为“2 3”,再过0.5s后变为“3 4”……
三、实验要求
1. 0.5s延时,可采用定时/计数器查询方式实现,也可采用for循环方式实现。

给定晶振为11.0592MHz。

2. 画出程序流程图,并独立编写C51程序。

3. 做好实验前预习,完成proteus仿真。

四、实验硬件电路
五、实验步骤
1. 在Keil IDE u Vision 集成开发环境下建立工程文件,编辑源文件、编译、链接并生成目标文件,仿真调试验证结果。

2. 分析本次实验的电路图,并结合控制程序,理解控制原理。

3.打开proteus仿真软件,新建工程,放置电路图所需的各类元器件。

更改各类元器件的数值和名称。

将各类元器件进行电气连接。

4. 双击AT89C51单片机,设置单片机的程序文件路径。

5. 运行proteus仿真软件,观察仿真效果。

6. 观察能否实现目标功能,如有问题查找原因,最终实现目标功能。

六、题目分析
七、程序流程图及程序清单。

单片机实验报告二-数码管显示实验

单片机实验报告二-数码管显示实验

单片机实验报告二-数码管显示实验摘要:本实验使用单片机控制数码管的显示,在实验过程中通过学习单片机的GPIO口的编程,调试程序、调节电路来达到正确的显示效果。

最终按照要求实现了单片机控制数码管的计数器。

关键词:单片机、数码管、GPIO口、计数器一、实验介绍数码管是一种介于机械仪表和液晶显示器之间的电子显示器件,广泛应用于计时器、计数器、仪表等电子产品中。

本实验旨在通过单片机控制数码管的显示来加深对GPIO口的使用和调试程序的理解,同时了解数码管的原理。

本实验主要分为两部分:数码管显示基础实验和数码管控制开关实验。

通过这两部分的实验可以了解数码管的工作原理和单片机的基本控制方式。

二、实验原理2.1 数码管的基本原理数码管显示器将数字显示为一组符号,例如“0”到“9”。

表示不同数字的符号被编码成一个数字码。

七段数码管用一个七段数码字母来表示数字,如下表所示:| 数字 | a | b | c | d | e | f | g || ---- | - | - | - | - | - | - | - || 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 || 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 || 2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 || 3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 || 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 || 5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 || 6 | 0 | 0 | 1 | 1 | 1 | 1 | 1 || 7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 || 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 || 9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |通过控制数码管的七个LED灯的亮灭,可以实现不同符号显示。

数码管动态显示实验报告

数码管动态显示实验报告

数码管动态显示实验报告数码管动态显示实验报告一、引言数码管是一种常见的电子显示器件,广泛应用于各种仪器仪表、计时器、计算器等电子设备中。

数码管动态显示实验是电子技术实验中的一项基础实验,通过控制数码管的亮灭状态,可以实现数字的显示。

本实验旨在通过实际操作,加深对数码管工作原理的理解,并掌握数码管的动态显示方法。

二、实验原理数码管是由多个发光二极管(LED)组成的,每个发光二极管代表一个数字或字符。

通过对发光二极管的亮灭状态进行控制,可以显示不同的数字或字符。

数码管一般采用共阳极或共阴极的方式接线,共阳极的数码管的阳极连接在一起,而共阴极的数码管的阴极连接在一起。

在动态显示实验中,采用的是共阳极数码管。

数码管的亮灭状态是通过控制数码管的阳极与地之间的电压差来实现的。

当某个数码管需要亮时,将其对应的阳极与地连接,电流通过发光二极管,使其发光。

当某个数码管需要灭时,将其对应的阳极与电源正极连接,断开与地的连接,发光二极管不通电,不发光。

三、实验步骤1. 准备实验所需材料:共阳极数码管、面包板、电阻、导线等。

2. 将数码管与面包板连接,确保连接正确,数码管的阳极连接到面包板的相应引脚。

3. 连接电路:将电源正极与数码管的共阳极连接,电源负极与面包板的地引脚连接。

4. 编写程序:根据控制数码管显示数字的逻辑,编写相应的程序。

5. 将程序下载到单片机中,通过单片机控制数码管的亮灭状态。

四、实验结果经过实验,我们成功实现了数码管的动态显示。

在程序的控制下,数码管可以显示不同的数字或字符,实现了数字的动态变化。

通过调整程序中的参数,可以实现不同的显示效果,如闪烁、滚动、循环等。

五、实验总结本次实验通过实际操作,加深了对数码管工作原理的理解。

通过编写程序,我们掌握了控制数码管动态显示的方法。

在实验过程中,我们遇到了一些问题,如数码管显示不正常、程序错误等,但通过仔细检查和调试,最终解决了这些问题。

通过这次实验,我们不仅学到了知识,还培养了动手实践和问题解决的能力。

数码管显示实验报告

数码管显示实验报告

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

2. 掌握51单片机控制数码管显示的基本方法。

3. 学会使用动态扫描显示技术实现多位数码管的显示。

4. 提高编程能力和实践操作能力。

二、实验原理数码管是一种常用的显示器件,它由多个发光二极管(LED)组成,可以显示数字、字母或其他符号。

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

本实验使用的是共阳极数码管。

51单片机控制数码管显示的基本原理是:通过单片机的I/O口输出高低电平信号,控制数码管的各个段(a-g)的亮灭,从而显示相应的数字或符号。

动态扫描显示技术是将多个数码管连接到单片机的I/O口,通过快速切换各个数码管的显示状态,实现多位数码管的显示。

三、实验器材1. 51单片机实验板2. 共阳极数码管3. 电阻、电容等元件4. 仿真软件(如Proteus)5. 编译器(如Keil)四、实验步骤1. 搭建电路:按照实验原理图连接51单片机、数码管和电阻等元件。

2. 编写程序:使用Keil软件编写控制数码管显示的程序。

程序主要包括以下部分:a. 初始化:设置单片机的工作状态,配置I/O口等。

b. 显示函数:根据需要显示的数字或符号,控制数码管的各个段亮灭。

c. 动态扫描函数:实现多位数码管的动态显示。

3. 编译程序:将编写好的程序编译成机器码。

4. 仿真测试:使用Proteus软件对程序进行仿真测试,观察数码管的显示效果。

5. 实验验证:将程序烧录到51单片机实验板上,进行实际测试。

五、实验结果与分析1. 实验结果:通过仿真测试和实际测试,数码管能够正确显示0-9的数字。

2. 结果分析:实验结果表明,51单片机可以成功地控制数码管显示数字。

动态扫描显示技术能够有效地实现多位数码管的显示,提高了显示效率。

六、实验总结1. 通过本次实验,我们掌握了51单片机控制数码管显示的基本方法,提高了编程能力和实践操作能力。

2. 动态扫描显示技术能够有效地实现多位数码管的显示,提高了显示效率。

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

单片机课程实验 2012.4.5电本1001
统一要求双面打印,若程序有漏洞可直接在报告上修改! 实验2 数码管显示与编程练习
班级:1001 学号: 姓名:
一、实验目的
掌握共阴极和共阳极数码管外围功能引脚特点;理解数码管动态显示原理; 熟悉单片机显示接口 电路;掌握数码管显示编程特点。

二、设计要求
编写显示程序,点亮最右侧两位数码管;上电从00开始数值逐个递增,增至30后再重新从00开始循环。

三、显示接口电路
电路说明:
1. 要求P1口接显示电路,低4位为数值表示位,4位数值为BCD 码,与七段译码器CD4543相连。

2. P1.5 - P1.7高3位为位选通,与74LS138译码器相连,最高位无意义【16位显示则需要最高位】。

四、程序清单。

相关文档
最新文档