数码管显示设计

合集下载

02实验二数码管动态显示程序设计

02实验二数码管动态显示程序设计

02实验二数码管动态显示程序设计数码管是一种常见的数字显示器件,通常由七段LED组成。

通过控制不同的LED亮灭状态,可以显示出0到9的数字和一些字母。

数码管通常被广泛应用于计时器、温度显示器等设备中,用于显示数字和一些特定的符号。

数码管的动态显示是指通过快速切换数码管显示的内容,从而实现多个数码管连续显示不同的数字。

这种显示方式使得数字的显示看起来像是连续变化的,给人一种流动的感觉。

在进行数码管动态显示的程序设计时,需要考虑以下几个方面:1.数码管的接口:数码管通常使用共阴极或共阳极的接口方式,需要根据实际的硬件接口进行相应的程序设计。

2.显示内容的切换:数码管需要显示不同的数字,需要通过程序控制数码管的显示内容。

可以通过数组或者其他数据结构来存储需要显示的数字,并通过循环,依次将不同的数字输出到数码管上。

3.显示周期的控制:数码管动态显示的关键是控制显示的刷新速度。

数码管的刷新速度通常以帧率进行表示,即每秒显示的帧数。

常见的数码管帧率为50Hz或60Hz,即每秒刷新50次或60次。

程序需要根据帧率来控制数码管显示的频率。

4.数码管的亮度控制:数码管的亮度通常通过PWM(脉宽调制)来控制,即快速开关数码管的亮灭状态,通过调整开关的占空比来控制数码管的亮度。

程序需要实现相应的PWM控制函数,可以通过改变PWM的占空比来控制数码管的亮度。

下面是一个简单的数码管动态显示的程序设计示例:```c++#include <arduino.h>//数码管引脚定义const int digitPins[] = {2, 3, 4, 5};const int segmentPins[] = {6, 7, 8, 9, 10, 11, 12}; //数码管显示的数字const int numbers[] =// abcdefg};//数码管显示的当前数字int currentNumber = 0;// 数码管显示的刷新速度,单位为msconst int refreshRate = 10;void setu//设置数码管引脚的模式for (int i = 0; i < 4; ++i)pinMode(digitPins[i], OUTPUT);}for (int i = 0; i < 7; ++i)pinMode(segmentPins[i], OUTPUT);}void loo//刷新数码管显示refreshDisplay(;//数码管显示的数字切换currentNumber = (currentNumber + 1) % 10; //延时delay(refreshRate);//刷新数码管显示的函数void refreshDispla//显示当前数字for (int i = 0; i < 4; ++i)digitalWrite(digitPins[i], LOW); setSegments(numbers[currentNumber]); delayMicroseconds(500);digitalWrite(digitPins[i], HIGH);}//设置数码管的段void setSegments(int segments)for (int i = 0; i < 7; ++i)digitalWrite(segmentPins[i], (segments >> i) & 1);}```该程序通过设置数码管引脚的模式来控制数码管的显示。

数电实验报告数码管显示控制电路设计

数电实验报告数码管显示控制电路设计

数电实验报告数码管显示控制电路设计实验目的:设计一个数码管显示控制电路,实现对数码管的显示控制。

实验器材:数码管、集成电路、电阻、开关、电源等。

实验原理:数码管是一种用它们来显示数字和字母的一种装置。

它由几个独立的发光二极管组成,每个数字由不同的发光二极管的组合表示。

对数码管的显示控制通常使用多路复用技术实现,即通过控制数码管的分段和共阴极或共阳极来实现不同数字的显示。

实验步骤:1.确定数码管的类型和接线方式。

本实验中使用共阳数码管,数码管共阳极通过电阻连接到正极电源。

2.选取适当的集成电路作为显示控制电路。

本实验中选择CD4511作为显示控制芯片,它可以实现对4位共阳数码管的显示控制。

3.连接电路。

将4位共阳数码管的阳极分别连接到CD4511芯片的A、B、C和D端口,共阴极连接到电源正极。

将CD4511芯片的输入端口IN1、IN2、IN3和IN4连接到微控制器的输出端口,控制微控制器输出的电平来选通不同的数码管。

4.设置微控制器的输出。

通过编程或手动设置微控制器的输出端口来控制数字的显示。

根据需要显示的数字,将相应的输出端口设置为高电平,其余端口设置为低电平。

通过适当的延时控制,便可以实现数字的连续显示。

实验结果与分析:经过上述步骤完成电路搭建后,我们可以通过改变微控制器的输出端口来控制数码管的显示。

当我们设置不同的输出端口为高电平时,相应的数码管会显示对应的数字。

通过适当的延时控制,我们可以实现数字的连续显示,从而实现对数码管的显示控制。

实验结论:通过本次实验,我们成功地设计并实现了一个数码管显示控制电路。

通过对微控制器输出端口的控制,我们可以实现对数码管的数字显示控制。

这对于数字显示系统的设计和开发具有重要意义。

实验心得:通过本次实验,我对数码管的显示控制有了更深入的了解。

数码管作为一种常见的数字显示装置,广泛应用于各种电子设备中。

掌握其显示控制原理和方法对于电子技术爱好者来说至关重要。

通过实际操作,我对数码管显示控制电路的设计和实现有了更深入的认识,同时也提高了我对数字显示系统的理解和设计能力。

《FPGA设计与应用》数码管显示实验

《FPGA设计与应用》数码管显示实验

《FPGA设计与应用》数码管显示实验一、实验目的1.学习动态数码管的工作原理;2.实现对EGO1开发板四位动态数码管的控制;二、实验内容实现对EGO1开发板四位动态数码管的控制,使其能够正常工作;三、实验要求在EGO1开发板上显示想要的数字。

四、实验背景知识1.LED数码管基础知识在数码管上显示数字就是将相应的段位点亮组成要显示的数字,共阴数码管的码值表如下所示,‘1’代表相应的管脚输出高电平,点亮相应段位,‘0’代表相应的管脚输出低电平,不点亮相应段位。

2.动态数码管原理EGO1 开发板上使用的是共阴极动态数码管,这种数码管有四个共阴极分别选通对应的每位数码管,四位数码管的八个段码脚连接在一起。

动态数码管显示的原理是:每次选通其中一位,送出这位要显示的内容,然后一段时间后选通下一位送出对应数据,4 个数码管这样依次选通并送出相应的数据,结束后再重复进行。

这样只要选通时间选取的合适,由于人眼的视觉暂留,数码管看起来就是连续显示的。

五、实验方案及实现1、数码管显示的设计共分3个模块:(1)数码管封装模块(2)数码管设计模块(3)顶层模块数码管封装模块代码:module smg_ip_model(clk,data,sm_wei,sm_duan);input clk;input [15:0] data;output [3:0] sm_wei;output [7:0] sm_duan;integer clk_cnt;reg clk_400Hz;always @(posedge clk)if(clk_cnt==32'd100000)begin clk_cnt <= 1'b0; clk_400Hz <= ~clk_400Hz;endelseclk_cnt <= clk_cnt + 1'b1;reg [3:0]wei_ctrl=4'b1110;always @(posedge clk_400Hz)wei_ctrl <= {wei_ctrl[2:0],wei_ctrl[3]}; reg [3:0]duan_ctrl;always @(wei_ctrl)case(wei_ctrl)4'b1110:duan_ctrl=data[3:0];4'b1101:duan_ctrl=data[7:4];4'b1011:duan_ctrl=data[11:8];4'b0111:duan_ctrl=data[15:12];default:duan_ctrl=4'hf;endcasereg [7:0]duan;always @(duan_ctrl)case(duan_ctrl)4'h0:duan=8'b0011_1111;4'h1:duan=8'b0000_0110;4'h2:duan=8'b0101_1011;4'h3:duan=8'b0100_1111;4'h4:duan=8'b0110_0110;4'h5:duan=8'b0110_1101;4'h6:duan=8'b0111_1101;4'h7:duan=8'b0000_0111;4'h8:duan=8'b0111_1111;4'h9:duan=8'b0110_1111;4'ha:duan=8'b0111_0111;4'hb:duan=8'b0111_1100;4'hc:duan=8'b0011_1001;4'hd:duan=8'b0101_1110;4'he:duan=8'b0111_1000;4'hf:duan=8'b0111_0001;数码管设计模块module test(clk,data);input clk;output [15:0]data;reg clk_1Hz;integer clk_1Hz_cnt;always @(posedge clk)if(clk_1Hz_cnt==32'd2*******-1)begin clk_1Hz_cnt <= 1'b0; clk_1Hz <= ~clk_1Hz;end elseclk_1Hz_cnt <= clk_1Hz_cnt + 1'b1;reg [39:0]disp=40'h1234567890;reg [15:0]data;always @(posedge clk_1Hz)begindisp <= {disp[35:0],disp[39:36]};data <= disp[39:24];endEndmodule顶层模块module smg_ip(clk,sm_wei,sm_duan);input clk;output [3:0]sm_wei;output [7:0]sm_duan;wire [15:0]data;wire [3:0]sm_wei;wire [7:0]sm_duan;test U0 (.clk(clk),.data(data));smg_ip_model U1(.clk(clk),.data(data),.sm_wei(sm_wei),.sm_duan(sm_duan)); endmodule六、实验结果Vivado仿真:上实验板实操:七、实验心得次实验主要学习了利用vivado软件实现数码管的显示,利用编程来实现,并且还对动态数码管的原理进行了一定的学习,包括上次实验学习到的模块化设计,方便程序的调试,程序运行过程中并不顺利,一直没有创建出pin文件夹,最后还是在老师的帮助下完成了pin文件夹的创建,导入到板子后完成了本次实验的设计。

plcled数码管显示课程设计

plcled数码管显示课程设计

plcled数码管显示课程设计一、教学目标本课程旨在让学生了解和掌握PLC编程和LED数码管显示的原理和应用,通过学习,学生应达到以下目标:1.知识目标:了解PLC的基本原理和结构,掌握PLC编程语言,了解LED数码管的工作原理和显示方式。

2.技能目标:能够使用PLC编程软件进行简单的程序设计,能够对LED数码管进行简单的显示控制。

3.情感态度价值观目标:培养学生对自动化技术的兴趣和认识,提高学生解决问题的能力,培养学生的创新精神和团队合作意识。

二、教学内容本课程的教学内容主要包括以下几个部分:1.PLC的基本原理和结构:PLC的工作原理,PLC的硬件组成和功能,PLC的编程语言。

2.PLC编程:PLC编程软件的使用,PLC程序的设计和调试。

3.LED数码管的基本原理和控制:LED数码管的工作原理,LED数码管的控制电路和编程。

4.实践操作:PLC和LED数码管的连接和调试,PLC编程实践。

三、教学方法为了提高教学效果,我们将采用多种教学方法,包括:1.讲授法:用于讲解PLC的基本原理和结构,PLC编程的基本概念和方法。

2.讨论法:用于探讨PLC编程的技巧和问题解决方法。

3.实验法:用于PLC编程实践和LED数码管的控制操作。

四、教学资源为了支持教学,我们将准备以下教学资源:1.教材:选用合适的教材,提供全面系统的理论知识。

2.多媒体资料:提供相关的视频和动画,帮助学生更好地理解PLC和LED数码管的工作原理。

3.实验设备:准备PLC和LED数码管的实验设备,供学生进行实践操作。

五、教学评估为了全面、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过课堂参与、提问、小组讨论等评估学生的学习态度和积极性。

2.作业:布置相关的编程练习和实验报告,评估学生的理解和应用能力。

3.考试:进行期中和期末考试,评估学生对知识的掌握和运用能力。

六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保每个章节都有足够的时间进行讲解和实践。

实验二 数码管动态显示模块设计2

实验二 数码管动态显示模块设计2
图4-9定时器应用程序流程图
6、单片机中断系统结构及工作原理
标准51单片机的中断系统有五个中断源。分别为:
中断源入口地址优先级别(同级)
外部中断00003H最高
定时器0溢出000BH
外部中断10013H
定时器1溢出001BH
串行口中断0023H最低
使用中断之前,必须对中断允许寄存器IE进行设置,将中断允许标志EA和对应中断位置1,以将中断打开。中断控制结构如图4-10所示。
实验内容
1、在数码管上显示学号的后8位
2、设计一个以学号后两位加10秒的倒计时程序
实验步骤及现象
打开万利仿真机,接好单片机开发板,新建工程,下载安装程序。我们这次实验的程序如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
图4-10 MSC51中断结构图
CPU中断的过程为:当有中断源发生中断信号时,首先对IE中对应的中断位判断;如打开,则进行EA判断;如EA=1,将根据中断优先级IP的设置情况进行优先级判别;如该中断优先级较高,在硬件控制下,先将程序计数器PC的内容压入堆栈,同时把被响应的中断服务程序的入口地址装入PC中,以执行中断服务程序。中断服务程序的最后一条指令必须是中断返回指令RETI。CPU执行完这条指令后,将从堆栈中弹出两个字节内容(断点地址)装入PC中,从而执行被中断的程序。
图4-7定时器模式控制字格式
TCON寄存器用于定时器的计数控制和中断标志。如图4-8所示。
图4-8定时控制寄存器数据格式
编写程序控制这两个寄存器就可以控制定时器的运行方式。
单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。

组合电路——7段数码管显示驱动电路设计报告

组合电路——7段数码管显示驱动电路设计报告

实验一、组合电路——7段数码管显示驱动电路设计一、实验目的了解EDA实验箱7位八段数码管显示模块的工作原理,设计标准扫描驱动电路模块,以备后面实验用。

二、硬件要求主芯片为Cyclone V E,型号为EP4CE22F17C8,7位八段数码管显示器,四位拨码开关。

三、实验内容用四位拨码开关产生8421BCD码,用CPLD分别产生7段数码管扫描驱动电路,然后进行仿真,观察波形,正确后编程下载实验测试。

四、实验原理1、72、动信号a,b,c,d,e,f,g。

通过调节四位拨码开关的状态,数码管应显示与之对应的字符。

五、实验连线输入:将芯片管角a0~a3分别接4个拨码开关;输出:将芯片管角led7s0~7分别接到数码管7段驱动信号a、b、c、d、e、f、g上。

六、实验源程序:decl7s.vhdlibrary 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"; when others => null;end case;end process;end;七、波形仿真结果。

两位数码管显示设计

两位数码管显示设计

两位数码管显示设计摘要:本设计旨在设计一套能够在两位数码管上显示不同数字的电路。

通过使用逻辑门、计数器和驱动器等组合电路,以及基本的数字逻辑知识,通过编写Verilog代码实现数字的显示和计数。

关键词:两位数码管、逻辑门、计数器、驱动器、Verilog代码一、引言数码管(Digital Display)是一种用于显示数字和字母的设备,它将输入的信号转换为相应的数字或字符,并在屏幕上显示出来。

本设计中,我们使用两位数码管,通过设计适当的电路和使用相应的逻辑门、计数器和驱动器等组合电路,以及编写Verilog代码,实现数字的显示和计数。

二、设计思路1.利用计数器设计模块来实现数字的计数功能。

通过适当的控制信号,将从0计数到9,并在10时重新计数。

计数器的输出作为数码管的输入。

2.设计一个驱动器模块,将计数器模块的输出转换为适合于数码管显示的控制信号。

通过逻辑门的组合,将每个数码管的数码按照不同的段(段是数码管上的一个小灯,用于显示数字的每个部分)进行控制。

3. 编写Verilog代码,将计数器模块和驱动器模块进行组合。

通过适当的端口和输入/输出信号,将两个模块连接在一起,实现数字的显示和计数。

三、设计实现1.计数器模块设计module counterinput clk, // 时钟信号output reg[3:0] count // 计数器的输出beginif (count == 4'b1001) // 9时重新计数count <= 4'b0000;elsecount <= count + 1; // 计数器自增endendmodule2.驱动器模块设计module decoderinput reg[3:0] count, // 指示要显示的数字output reg a, b, c, d, e, f, g // 段待显示数字begincase(count)4'b0000 : begin a = 1; b = 1; c = 1; d = 1; e = 1; f = 1; g = 0; end // 数字04'b0001 : begin a = 0; b = 1; c = 1; d = 0; e = 0; f = 0; g = 0; end // 数字14'b0010 : begin a = 1; b = 1; c = 0; d = 1; e = 1; f = 0; g = 1; end // 数字24'b0011 : begin a = 1; b = 1; c = 1; d = 1; e = 0; f = 0; g = 1; end // 数字34'b0100 : begin a = 0; b = 1; c = 1; d = 0; e = 0; f = 1; g = 1; end // 数字44'b0101 : begin a = 1; b = 0; c = 1; d = 1; e = 0; f = 1; g = 1; end // 数字54'b0110 : begin a = 1; b = 0; c = 1; d = 1; e = 1; f = 1; g = 1; end // 数字64'b0111 : begin a = 1; b = 1; c = 1; d = 0; e = 0; f = 0; g = 0; end // 数字74'b1000 : begin a = 1; b = 1; c = 1; d = 1; e = 1; f = 1; g = 1; end // 数字84'b1001 : begin a = 1; b = 1; c = 1; d = 1; e = 0; f = 1; g = 1; end // 数字9default : begin a = 0; b = 0; c = 0; d = 0; e = 0; f = 0; g = 0; end // 默认显示为空白endcaseendendmodule3.组合计数器和驱动器模块module displayinput clk, // 时钟信号output reg[3:0] count, // 计数器模块的输出output reg a, b, c, d, e, f, g // 驱动器模块的输出counter counter_inst(.clk(clk), .count(count)); // 实例化计数器模块decoderdecoder_inst(.count(count), .a(a), .b(b), .c(c), .d(d), .e(e), . f(f), .g(g)); // 实例化驱动器模块endmodule四、实验结果与分析通过连接计数器和驱动器模块,使用相同的时钟信号,即可实现数字计数和显示的功能。

西工大数电实验八-数码管显示控制电路设计

西工大数电实验八-数码管显示控制电路设计

实验八:数码管显示控制电路设计一、设计任务与要求:能自动循环显示数字0、1、2、3、4、0、3、0、3、4。

二、实验设备:1、数字电路实验箱;2、函数信号发生器;3、8421数码管;4、74LS00、74LS90。

三、实验原理图和实验结果:1、逻辑电路设计及实验原理推导:将0、1、2、3、4、0、3、0、3、4用8421码表示出来,如下表:表一用8421码表示设想用5421码来实现8421码表示的0、1、2、3、4、0、3、0、3、4,故将0、1、2、3、4、5、6、7、8、9用5421码表示出来以与上表做对比:表二 用5421码表示:观察表一,首先可得到最高位全为0,故译码器的“8”直接接低电平即可;对比表一和表二得,“4”位上的数字两表表示的数字是一样的,故“4”直接与5421码的“4”输出相连即可,即译码器的“4”连74LS90的“Q 3”端;数码管的“2”对应的无明显规律,列卡诺图如下:可得F2=1020Q Q Q Q ;最后一位与5421的“1”相同,故74LS90的Q1直接接数码管的“1”。

至此,实验原理图即可画出了.2、实验原理图:3、实验结果:编码器上依次显示0、1、2、3、4、0、3、0、3、4。

四、实验结果分析:实验结果为编码器上依次显示0、1、2、3、4、0、3、0、3、4,满足实验设计要求。

五、实验心得:在实验之前我用仿真软件,使用同样的实验器件仿真了序列0、1、2、3、4、1、3、0、2、4,已经把利用74LS90产生序列的原理掌握了,所以在实验时老师布置了本次的实验目的之后,我很快的设计出了如何连接电路,但是实验过程却没有想象的那么简单,实验电路板和仿真软件毕竟不同,实验中可能出现插线不紧或者松动的现象,函数发生器的相关参数的设置,偏移量的设置等等问题都会出现。

这就给实验的进行造成了很大的麻烦,查了几遍连线完全没有错误,但就是出不来想要的序列,最后重新安了一遍线,保证插线完好,并用了输出比较稳定的函数发生器产生序列,终于调出来了。

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

数码管显示设计
数码管是非常常见的东西,他能显示数字,以及字母,应用非常的广泛,本文我来和大家谈谈如何用单片机来驱动数码管
数码管的结构
数码管由7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极.通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理.
基本的半导体数码管是由7个条状的发光二极管(LED)按图1所示排列而成的,可实现数字"0~9"及少量字符的显示。

另外为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED组成,我们分别把这些发光二极管命名为"a,b,c,d,e,f,g,dp",排列顺序如下图1。

数码管引脚图及外形图
数码管按各发光二极管电极的连接方式分为共阳数码管和共阴数码管两种。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。

共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。

当某一字段的阳极为低电平时,相应字段就不亮。

共阴数码管内
部连接如图3所示。

共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。

当某一字段的阴极为高电平时,相应字段就不亮。

共阳数码管内部连接如图2所示
图2:共阳数码管内部连接图
数码管的显示方式
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

①动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。

通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。

在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

②静态显示驱动:静态驱动也称直流驱动。

静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。

静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

前面我们学习了数码管的基础知识,现在马上来看看S51增强型实验板的数码管吧(图4),S51实验板上有5位高亮度共阳数码管DG1~DG5,可以用来做计数器(最大计数值99999)、温度显示、电子钟等显示实验,掌握数码管的静态显示驱动和动态显示驱动。

S51增强型实验板的数码管驱动原理图如下图5所示。

图5
从原理图可以看出,S51增强型实验板中数码管的段码a,b,c,d,e,f,g,dp 分别与单片机的P0.0~P0.7相连,控制数码管中显示的字形;数码管的位选通由5个PNP三极管控制,分别接到单片机的P2.0、P2.1、P2.2、P2.3、P2.4端口上,程序中通过控制P2.0~P2.4端口的输出电平就可以控制数码管的显示与关闭。

如P2.0输出低电平时,三极管T1导通,+5V电源加到第一个数码管
的COM端,那么第一个数码管DG1就会显示出相应的数字,显示的数字由单片机P0.0~P0.7输出段码决定,当P2.0输出高电平时,三极管T1截止,数码管DG1就不显示,从而实现数码管位选通控制。

同理,当P2.1输出低电平时,则数码管DG2显示。

上面我们学习了一大堆的理论知识,对数码管已经有了较全面的认识,是否跃跃欲试了呀!马上动手编一个简单的程序验证一下理论吧,现在我们编程让实验板上的第一个数码管DG1显示数字“6”,最终的实验效果见上面图4所示。

打开一个文本编辑窗,在文本编辑窗中输入如下代码:
;**********下面是数码管显示"6"的程序**********
MAIN: CLR P0.0 ;P0.0输出低电平,点亮数码管段码"a"
SETB P0.1 ;P0.1输出高电平,熄灭数码管段码"b"
CLR P0.2 ;P0.2输出低电平,点亮数码管段码"c"
CLR P0.3 ;P0.3输出低电平,点亮数码管段码"d"
CLR P0.4 ;P0.4输出低电平,点亮数码管段码"e"
CLR P0.5 ;P0.5输出低电平,点亮数码管段码"f"
CLR P0.6 ;P0.6输出低电平,点亮数码管段码"g"
SETB P0.7 ;P0.7输出高电平,熄灭数码管小数点段码"dp"
CLR P2.0 ;P2.0输出低电平,选通数码管DG1
SETB P2.1 ;P2.1输出高电平,不选通数码管DG2
SETB P2.2 ;P2.2输出高电平,不选通数码管DG3
SETB P2.3 ;P2.3输出高电平,不选通数码管DG4
SETB P2.4 ;P2.4输出高电平,不选通数码管DG5
AJMP MAIN ;跳转到开始重新进行
END ;程序结束
注:程序中分号“;”后面的中文为每一行程序的注释,是方便我们阅读程序的,可以不输入。

相关文档
最新文档