数码管显示设计与实现
- 格式:pdf
- 大小:1.83 MB
- 文档页数:35
一、实验目的1. 掌握数码管动态扫描显示的原理和编程实现方法;2. 熟悉单片机与数码管之间的接口连接;3. 学会使用定时器中断控制数码管的动态显示;4. 培养动手能力和问题解决能力。
二、实验原理数码管动态显示是通过单片机控制多个数码管同时显示不同的数字或字符,利用人眼的视觉暂留效应,实现快速切换显示内容,从而在有限的引脚数下显示更多的信息。
实验中,我们采用动态扫描的方式,依次点亮数码管,通过定时器中断控制扫描速度。
三、实验器材1. 单片机开发板(如51单片机、AVR单片机等);2. 数码管(共阳/共阴自选);3. 连接线;4. 电阻;5. 实验台;6. 编译器(如Keil、IAR等)。
四、实验步骤1. 设计电路图:根据实验要求,设计单片机与数码管的连接电路图,包括数码管的段码、位选信号、电源等。
2. 编写程序:使用C语言或汇编语言编写程序,实现数码管的动态显示功能。
(1)初始化:设置单片机的工作模式、定时器模式、端口方向等。
(2)显示函数:编写显示函数,实现数码管的点亮和熄灭。
(3)定时器中断服务程序:设置定时器中断,实现数码管的动态扫描。
3. 编译程序:将编写的程序编译成机器码。
4. 烧录程序:将编译后的程序烧录到单片机中。
5. 连接电路:将单片机与数码管连接好,包括数码管的段码、位选信号、电源等。
6. 运行实验:打开电源,观察数码管的显示效果。
五、实验结果与分析1. 实验结果:数码管按照预期实现了动态显示功能,依次点亮每位数码管,并显示出不同的数字或字符。
2. 分析:(1)通过调整定时器中断的周期,可以改变数码管的扫描速度,从而控制显示效果。
(2)在编写显示函数时,要考虑到数码管的共阳/共阴特性,选择合适的点亮和熄灭方式。
(3)在实际应用中,可以根据需要添加其他功能,如显示时间、温度等。
六、实验总结1. 通过本次实验,掌握了数码管动态显示的原理和编程实现方法。
2. 熟悉了单片机与数码管之间的接口连接,提高了动手能力。
数电实验报告数码管显示控制电路设计实验目的:设计一个数码管显示控制电路,实现对数码管的显示控制。
实验器材:数码管、集成电路、电阻、开关、电源等。
实验原理:数码管是一种用它们来显示数字和字母的一种装置。
它由几个独立的发光二极管组成,每个数字由不同的发光二极管的组合表示。
对数码管的显示控制通常使用多路复用技术实现,即通过控制数码管的分段和共阴极或共阳极来实现不同数字的显示。
实验步骤:1.确定数码管的类型和接线方式。
本实验中使用共阳数码管,数码管共阳极通过电阻连接到正极电源。
2.选取适当的集成电路作为显示控制电路。
本实验中选择CD4511作为显示控制芯片,它可以实现对4位共阳数码管的显示控制。
3.连接电路。
将4位共阳数码管的阳极分别连接到CD4511芯片的A、B、C和D端口,共阴极连接到电源正极。
将CD4511芯片的输入端口IN1、IN2、IN3和IN4连接到微控制器的输出端口,控制微控制器输出的电平来选通不同的数码管。
4.设置微控制器的输出。
通过编程或手动设置微控制器的输出端口来控制数字的显示。
根据需要显示的数字,将相应的输出端口设置为高电平,其余端口设置为低电平。
通过适当的延时控制,便可以实现数字的连续显示。
实验结果与分析:经过上述步骤完成电路搭建后,我们可以通过改变微控制器的输出端口来控制数码管的显示。
当我们设置不同的输出端口为高电平时,相应的数码管会显示对应的数字。
通过适当的延时控制,我们可以实现数字的连续显示,从而实现对数码管的显示控制。
实验结论:通过本次实验,我们成功地设计并实现了一个数码管显示控制电路。
通过对微控制器输出端口的控制,我们可以实现对数码管的数字显示控制。
这对于数字显示系统的设计和开发具有重要意义。
实验心得:通过本次实验,我对数码管的显示控制有了更深入的了解。
数码管作为一种常见的数字显示装置,广泛应用于各种电子设备中。
掌握其显示控制原理和方法对于电子技术爱好者来说至关重要。
通过实际操作,我对数码管显示控制电路的设计和实现有了更深入的认识,同时也提高了我对数字显示系统的理解和设计能力。
《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文件夹的创建,导入到板子后完成了本次实验的设计。
《FPGA设计与应用》数码管显示实验一、实验目的和要求
1.学习动态数码管的工作原理;
2.实现对EGO1开发板四位动态数码管的控制;
二、实验内容
实现对EGO1开发板四位动态数码管的控制,使其能够正常工作;
三、实验要求
在EGO1开发板上显示想要的数字。
四、操作方法与实验步骤
1、八段数码管的动态显示原理:
2、数码管显示的设计共分3个模块:
(1)数码管封装模块
(2)数码管设计模块
(3)顶层模块
数码管动态显示的MODULE实现:
模块顶层设计——显示4个(位)十进制数
逻辑实现:
确定当前显示的位
确定当前“位”需要显示的“数”:
将“数”翻译成相应的“段码”
仿真测试台代码编写与仿真测试定义时间标尺:
定义测试Moudle
实例化被测Moudle
定义激励信号与响应信号
构造激励信号:
五、实验数据记录和处理实验代码如下:
设计文件:(部分)
仿真文件:
约束文件:
六、实验结果与分析网表结构:
仿真图像:
实物图:
七、讨论和心得
通过这次实验,我学会了数码管的动态显示,每一个数码管共用一套电路,显示时只需控制哪一个数码管进行显示。
虽然一次只能控制单独一个数码管进行显示,但可以快速切换数码管显示,利用人眼的”视觉暂留"来“同步”进行显示。
最后我明白了我们不要遇到一点困难就退缩,就去向老师同学寻求帮助,自己是自己最好的老师,只有我们靠自己的不断修改出正确结果,才会对这个知识掌握的更加透彻。
一、实验目的1. 了解数字显示器的基本原理和分类。
2. 掌握数字显示器的设计方法和应用。
3. 学会使用数码管和LCD显示器进行数字显示。
4. 提高动手实践能力和问题解决能力。
二、实验内容1. 数码管显示实验2. LCD显示器显示实验三、实验原理1. 数码管显示原理:数码管是一种半导体发光器件,由若干个发光二极管(LED)组成,每个LED代表一个数码管的笔画。
通过控制LED的亮灭,可以显示不同的数字和字符。
2. LCD显示器显示原理:LCD显示器是一种液晶显示器,通过液晶分子的旋转控制光的透过与阻挡,实现图像的显示。
LCD显示器主要由液晶面板、背光源、偏振片、驱动电路等组成。
四、实验步骤1. 数码管显示实验(1)搭建电路:将数码管与AT89C51单片机连接,连接方式包括共阴极和共阳极两种。
(2)编写程序:使用C语言编写程序,实现数码管显示数字和字符。
(3)调试程序:使用Keil软件对程序进行编译和调试,观察数码管显示效果。
2. LCD显示器显示实验(1)搭建电路:将LCD显示器与AT89C51单片机连接,连接方式包括并行和串行两种。
(2)编写程序:使用C语言编写程序,实现LCD显示器显示数字和字符。
(3)调试程序:使用Keil软件对程序进行编译和调试,观察LCD显示器显示效果。
五、实验结果与分析1. 数码管显示实验结果:通过编写程序,数码管能够显示数字和字符,实现了实验目的。
2. LCD显示器显示实验结果:通过编写程序,LCD显示器能够显示数字和字符,实现了实验目的。
3. 分析:(1)数码管显示实验:在实验过程中,发现数码管的共阴极和共阳极连接方式不同,需要根据实际连接方式编写程序。
此外,为了提高显示效果,需要对数码管进行动态扫描显示。
(2)LCD显示器显示实验:在实验过程中,发现LCD显示器的并行和串行连接方式不同,需要根据实际连接方式编写程序。
此外,为了提高显示效果,需要对LCD显示器进行初始化和设置显示模式。
数电实验报告数码管显示控制电路设计一、实验目的1.学习数码管介绍和使用;2.熟悉数码管控制电路设计思路和方法;3.掌握数码管显示控制电路的实验过程和步骤。
二、实验原理数码管是数字显示器件,具有低功耗、体积小、寿命长等优点。
常见的数码管有共阳极和共阴极两种。
共阳极数码管的阳极端口是一个共用的端口,通过将不同的阴极端口接地来控制数码管的发光情况。
共阴极数码管的阴极端口是一个共用的端口,通过将不同的阳极端口接地来控制数码管的发光情况。
数码管的控制电路可以使用逻辑门电路或微控制器来实现。
本实验采用逻辑门电路来设计数码管显示控制电路。
三、实验器材和器件1.实验板一块;2.74LS47数码管译码器一颗;3.共阴极数码管四个;4.逻辑门IC:7404、7408、7432各一个;5.杜邦线若干。
四、实验步骤1.将74LS47数码管译码器插入实验板上的相应位置,并用杜邦线连接74LS47和逻辑门IC的引脚:1)将74LS47的A、B、C和D引脚依次连接到7408的输入端;2)将74LS47的LE引脚连接到VCC(高电平,表示使能有效);3)将74LS47的BI/RBO引脚连接到GND(低电平,表示译码输出);4)将7408的输出端依次连接到7432的输入端;5)将7432的输出端依次连接到数码管的阴极端口。
2.将四个数码管的阳极端口分别连接到4个控制开关上,并将开关接地。
3.将实验电路接入电源,调整电压和电流,观察数码管的显示情况。
五、实验结果和分析实验结果显示,控制开关的状态可以控制数码管的显示内容。
当其中一控制开关接地时,对应的数码管会显示相应的数字。
通过调整开关的状态,可以实现不同数字的显示。
六、实验总结通过这次实验,我学会了数码管的基本使用方法和控制电路的设计思路。
数码管作为一种数字显示元件,广泛应用于各种电子产品中,掌握其控制方法对于电子工程师来说非常重要。
在今后的学习和工作中,我将继续深入研究数码管的相关知识和应用,提高自己的技术水平。
数码管显示实验实验报告一、实验目的本次数码管显示实验的主要目的是深入了解数码管的工作原理和显示控制方式,通过实际操作掌握数码管与微控制器的接口技术,并能够编写相应的程序实现各种数字和字符的显示。
二、实验原理数码管是一种由多个发光二极管组成的显示器件,常见的有共阴数码管和共阳数码管两种类型。
共阴数码管是将所有发光二极管的阴极连接在一起,当阳极接高电平时,相应的二极管发光;共阳数码管则是将所有发光二极管的阳极连接在一起,当阴极接低电平时,相应的二极管发光。
在控制数码管显示时,通常采用动态扫描的方式,即依次快速地给每个数码管的段选端送入相应的字形码,同时使位选端选通对应的数码管,利用人眼的视觉暂留效应,使人看起来好像所有数码管同时在显示。
三、实验设备与材料1、实验开发板2、数码管模块3、杜邦线若干4、电脑5、编程软件四、实验步骤1、硬件连接将数码管模块与实验开发板进行连接,确定好段选和位选引脚的连接。
检查连接是否牢固,确保电路无短路或断路现象。
2、软件编程打开编程软件,选择相应的开发板型号和编程语言。
定义数码管的段选和位选引脚。
编写控制程序,实现数字 0 到 9 的循环显示。
3、编译与下载对编写好的程序进行编译,检查是否有语法错误。
将编译成功的程序下载到实验开发板上。
4、观察实验现象接通实验开发板的电源,观察数码管的显示情况。
检查显示的数字是否正确,显示的亮度和稳定性是否符合要求。
五、实验结果与分析1、实验结果数码管能够正常显示数字 0 到 9,并且能够按照设定的频率循环显示。
显示的数字清晰、稳定,没有出现闪烁或模糊的现象。
2、结果分析程序编写正确,能够准确地控制数码管的段选和位选信号,实现数字的显示。
动态扫描的频率设置合理,既保证了显示的稳定性,又不会出现明显的闪烁。
六、实验中遇到的问题及解决方法1、问题数码管显示出现闪烁现象。
解决方法调整动态扫描的频率,增加扫描的速度,减少每个数码管的点亮时间,从而减轻闪烁现象。
一、实验目的1、在之前单键实验和中断控制数码管“静态”显示实验的基础上,把单键判断、数码管显示和中断结合起来编写中断程序实现单键控制一位数码管;2、在实现控制一位数码管显示的基础上用单键控制两位数码管显示。
二、实验所需器材与软件硬件:电脑、传输线、AT89S52单片机软件:编程软件Keil uVision3;读写软件MePro V5.02三、实验程序的及其分析:1、单键控制一位数码管显示主要设计思路:在中断主程序后加入单键判断键按下情况判断语句,把数码管显示程序放在中断子程序中。
当有键按下且有中断请求时,重新给数码管显示偏移地址赋值,从而改变显示内容。
程序:ORG 0000HAJMP MAIN ;转向主程序ORG 001BH ;中断矢量地址AJMP T_INT ;转向中断服务程序MAIN: ;主程序标号MOV R3,#0 ;表偏移地址MOV DPTR,#TAB ;把表头地址赋值给寄存器DPTRMOV TMOD,#10H ;设定定时器工作于模式1MOV TH1,#0FEH ;定时器赋初值MOV TL1,#0EHSETB ET1 ;开中断SETB EASETB TR1 ;启动定时器LOOP1:JNB P1.4, LOOP4AJMP LOOP1LOOP4:ACALL DELAYJNB P1.4, LOOP_ADD 单键按下判断程序LOOP_ADD:INC R3CJNE R3,#10,LOOP8MOV R3,#0LOOP8: AJMP LOOP1T_INT: MOV TH1,#0FEHMOV TL1,#0EHMOV A,R3 中断程序内嵌的数码管显示程序MOVC A,@A+DPTRMOV P0,AMOV P2,#11111110BRETITAB:DB 0C0H,0F9H,0A4H,0B0H ,99H,92H,82H,0F8H ;表内容DB 80H,90HDELAY:MOV R5,#64HLOOP5:MOV R7,#0FFHLOOP6:NOPNOP 用于单键按下防抖动的延时程序DJNZ R7,LOOP6DJNZ R5,LOOP5RET2、单键控制两位数码管显示设计思路:用两个寄存器分别存放数码管显示的个位和十位,并且在数码管显示程序中用移位指令对数码管的位码进行移位,使每次执行中断程序时显示一位数,循环两次中断程序后“静态”显示两位数字。
两位数码管显示设计摘要:本设计旨在设计一套能够在两位数码管上显示不同数字的电路。
通过使用逻辑门、计数器和驱动器等组合电路,以及基本的数字逻辑知识,通过编写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四、实验结果与分析通过连接计数器和驱动器模块,使用相同的时钟信号,即可实现数字计数和显示的功能。
实验二数码管显示本实验的目的是掌握数码管的工作原理与使用,实现数码管的静、动态显示。
静态数码管我们先看看什么是数码管,上图就是各种长相各种样子的数码管了,肯定很眼熟了吧。
不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。
数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是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字了。