实验10数码管显示电路原理图绘制(精)
- 格式:pdf
- 大小:591.81 KB
- 文档页数:7
动态显示1.掌握LED数码管显示及其一般电路结构;2.掌握LED动态显示程序的一般设计方法。
一、实验内容动态显示,也称为扫描显示。
显示器由6个共阴极LED数码管构成。
单片机的P0口输出显示段码,由一片74LS245输出给LED管;由P1口输出位码,经74LS04输出给LED显示。
二、实验步骤1、打开Proteus ISIS编辑环境,按下表所列的元件清单添加元件。
图1 动态显示实验电路原理图2、按实验要求在KeilC中创建项目,编辑、编译程序。
3、将编译生成的目标码文件(后缀为.Hex)传入Proteus的实验电路中。
4、在Proteus ISIS仿真环境中运行程序,观察实验运行结果并记录。
三、实验要求1.编写一显示程序显示201071;2.显示特殊字符good;3.调整软件延时子程序的循环初值,逐渐加大每一位LED点亮的时间,观察程序运行结果。
四、参考程序dbuf equ 30h ;置存储区首址temp equ 40h ;置缓冲区首址org 00hmov 30h,#2 ;存入数据mov 31h,#0mov 32h,#1mov 33h,#0mov 34h,#7mov 35h,#1mov r0,#dbufmov r1,#tempmov r2,#6 ;六位显示器mov dptr,#segtab ;段码表首地址dp00: mov a,@r0 ;取要显示的数据movc a,@a+dptr ;查表取段码mov @r1,a ;段码暂存inc r1inc r0djnz r2,dp00disp0: mov r0,#temp ;显示子程序mov r1,#6 ;扫描6次mov r2,#01h ;从第一位开始dp01: mov a,@r0mov p0,a ;段码输出mov a,r2 ;取位码mov p1,a ;位码输出acall delay ;调用延时mov a,r2rl amov r2,ainc r0djnz r1,dp01sjmp disp0segtab: db 3fh,06h,5bh,4fh,66hdb 6dh,7dh,07h,7fh,6fhdelay: mov r4,#03h ;延时子程序aa1: mov r5,0ffhaa: djnz r5,aadjnz r4,aa1retend实验原理MCS-51单片机内设置了两个可编程的16位定时器T0和T1,通过编程,可以设定为定时器和外部计数方式。
1317408051 张福超13通信工程数码管显示电路实验报告一·方案选择数码管显示实验二·原理分析74LS48引脚原理图和真值表如下74LS192的功能表74LS192是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如下所示:图5-4 74LS192的引脚排列及逻辑符号(a)引脚排列(b) 逻辑符号图中:为置数端,为加计数端,为减计数端,为非同步进位输出端,为非同步借位输出端,P0、P1、P2、P3为计数器输入端,为清除端,Q0、Q1、Q2、Q3为数据输出端。
其功能表如下:输入输出MR P3 P2 P1 P0 Q3 Q2 Q1 Q01 ×××××××0 0 0 00 0 ×× d c b a d c b a××××加计数0 110 1 1 ××××减计数根据74LS192的功能表可以看出MR保持低电平时开始技术,高电平时清除计数重新开始,为高电平时为低电平时为加计数器,11引脚默认接低电平,每次来一个高电平信号时加计数器加一,11再次变为低电平时,输出上次所加计数得到的数由Q3~Q0输出相应的二进制数值。
74LS192D输出的二进制数值给74LS48D模块后,自动转换为数码管可是别的七个高低电平,并以十进制的形式显示。
数码管采用共阴极,根据以上要求可以画出如下电路仿真图。
经过实验仿真验证,可以达到如下要求:加上电源后数码管显示数值0,J1开关每次按下数码管都会自动加1,一旦J2开关按下,数码管又会马上复位为0,重新开始。
电阻R2为防止电流过大损坏电路。
三·安装调试焊接结束后进行通电调试,随着开关按键次数的增加,显示器的数字从1至9,当清0键按下,数字变为0,测试结果与理论相符。
数码管显示设计数码管是非常常见的东西,他能显示数字,以及字母,应用非常的广泛,本文我来和大家谈谈如何用单片机来驱动数码管数码管的结构数码管由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端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
EDA设计课程实验报告实验题目:数码管动态显示实验学院名称:专业:电子信息工程班级:姓名:高胜学号小组成员:指导教师:一、实验目的学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。
二、设计任务及要求1、在SmartSOPC实验箱上完成数码管动态显示自己学号的后八个数字。
2、放慢扫描速度演示动态显示的原理过程。
三、系统设计1、整体设计方案数码管的八个段a,b,c,d,e,f,g,h(h是小数点)都分别连接到SEG0~SEG7,8个数码管分别由八个选通信号DIG0~DIG7来选择,被选通的数码管显示数据,其余关闭。
如果希望8个数码管显示希望的数据,就必须使得8个选通信号DIG0~DIG7分别被单独选通,并在此同时,在段信号输入口SEG0~SEG7加上该对应数码管上显示的数据,于是随着选通信号的扫描就能实现动态扫描显示的目的。
虽然每次只有1个数码管显示,但只要扫描显示速率足够快,利用人眼的视觉余辉效应,我们仍会感觉所有的数码管都在同时显示。
2、功能模块电路设(1)输入输出模块框图(见图1)图1(2)模块逻辑表达(见表1)表1(数码管显示真值表)clk_1k dig seg↑01111111 C0↑10111111 F9注:数码管显示为01180121(3)算法流程图(见图2)(4)Verilog源代码module scan_led(clk_1k,d,dig,seg); //模块名scan_ledinput clk_1k; //输入时钟input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚output[7:0] seg; //数码管段输出引脚reg[7:0] seg_r; //定义数码管输出寄存器reg[7:0] dig_r; //定义数码管选择输出寄存器reg[3:0] disp_dat; //定义显示数据寄存器reg[2:0]count; //定义计数寄存器assign dig = dig_r; //输出数码管选择assign seg = seg_r; //输出数码管译码结果always @(posedge clk_1k) //定义上升沿触发进程begincount <= count + 1'b1;endalways @(posedge clk_1k)begincase(count) //选择扫描显示数据3'd0:disp_dat = d[31:28]; //第一个数码管3'd1:disp_dat = d[27:24]; //第二个数码管3'd2:disp_dat = d[23:20]; //第三个数码管3'd3:disp_dat = d[19:16]; //第四个数码管3'd4:disp_dat = d[15:12]; //第五个数码管3'd5:disp_dat = d[11:8]; //第六个数码管3'd6:disp_dat = d[7:4]; //第七个数码管3'd7:disp_dat = d[3:0]; //第八个数码管endcasecase(count) //选择数码管显示位3'd0:dig_r = 8'b01111111; //选择第一个数码管显示3'd1:dig_r = 8'b10111111; //选择第二个数码管显示3'd2:dig_r = 8'b11011111; //选择第三个数码管显示3'd3:dig_r = 8'b11101111; //选择第四个数码管显示3'd4:dig_r = 8'b11110111; //选择第五个数码管显示3'd5:dig_r = 8'b11111011; //选择第六个数码管显示3'd6:dig_r = 8'b11111101; //选择第七个数码管显示3'd7:dig_r = 8'b11111110; //选择第八个数码管显示endcaseendalways @(disp_dat)begincase(disp_dat) //七段译码4'h0:seg_r = 8'hc0; //显示04'h1:seg_r = 8'hf9; //显示14'h2:seg_r = 8'ha4; //显示24'h3:seg_r = 8'hb0; //显示34'h4:seg_r = 8'h99; //显示44'h5:seg_r = 8'h92; //显示54'h6:seg_r = 8'h82; //显示64'h7:seg_r = 8'hf8; //显示74'h8:seg_r = 8'h80; //显示84'h9:seg_r = 8'h90; //显示94'ha:seg_r = 8'h88; //显示a4'hb:seg_r = 8'h83; //显示b4'hc:seg_r = 8'hc6; //显示c4'hd:seg_r = 8'ha1; //显示d4'he:seg_r = 8'h86; //显示e4'hf:seg_r = 8'h8e; //显示fendcaseendendmodule四、系统调试(1)仿真代码`timescale 1ns/1nsmodule scan_ledfz;reg clk_1k;reg[31:0] d;wire[7:0] dig;wire[7:0] seg;parameter dely=100;scan_led u1(clk_1k,d,dig,seg);always #(dely/2)clk_1k=~clk_1k;initial beginclk_1k=0;d=32'h01180134;#dely ;#dely ;#dely ;#dely ;#dely ;#(dely*20);#dely $finish;endinitial $monitor($time,,,"%b,%d,%h,%h",clk_1k,d,dig,seg); endmodulemodule scan_led(clk_1k,d,dig,seg); //模块名scan_ledinput clk_1k; //输入时钟input[31:0] d; //输入要显示的数据output[7:0] dig; //数码管选择输出引脚output[7:0] seg; //数码管段输出引脚reg[7:0] seg_r; //定义数码管输出寄存器reg[7:0] dig_r; //定义数码管选择输出寄存器reg[3:0] disp_dat; //定义显示数据寄存器reg[2:0] count=3'b000; //定义计数寄存器assign dig = dig_r; //输出数码管选择assign seg = seg_r; //输出数码管译码结果always @(posedge clk_1k) //定义上升沿触发进程begincount <= count + 1'b1;endalways @(posedge clk_1k)begincase(count) //选择扫描显示数据3'd0:disp_dat = d[31:28]; //第一个数码管3'd1:disp_dat = d[27:24]; //第二个数码管3'd2:disp_dat = d[23:20]; //第三个数码管3'd3:disp_dat = d[19:16]; //第四个数码管3'd4:disp_dat = d[15:12]; //第五个数码管3'd5:disp_dat = d[11:8]; //第六个数码管3'd6:disp_dat = d[7:4]; //第七个数码管3'd7:disp_dat = d[3:0]; //第八个数码管endcasecase(count) //选择数码管显示位3'd0:dig_r = 8'b01111111; //选择第一个数码管显示3'd1:dig_r = 8'b10111111; //选择第二个数码管显示3'd2:dig_r = 8'b11011111; //选择第三个数码管显示3'd3:dig_r = 8'b11101111; //选择第四个数码管显示3'd4:dig_r = 8'b11110111; //选择第五个数码管显示3'd5:dig_r = 8'b11111011; //选择第六个数码管显示3'd6:dig_r = 8'b11111101; //选择第七个数码管显示3'd7:dig_r = 8'b11111110; //选择第八个数码管显示endcaseendalways @(disp_dat)begincase(disp_dat) //七段译码4'h0:seg_r = 8'hc0; //显示04'h1:seg_r = 8'hf9; //显示14'h2:seg_r = 8'ha4; //显示24'h3:seg_r = 8'hb0; //显示34'h4:seg_r = 8'h99; //显示44'h5:seg_r = 8'h92; //显示54'h6:seg_r = 8'h82; //显示64'h7:seg_r = 8'hf8; //显示74'h8:seg_r = 8'h80; //显示84'h9:seg_r = 8'h90; //显示94'ha:seg_r = 8'h88; //显示a4'hb:seg_r = 8'h83; //显示b4'hc:seg_r = 8'hc6; //显示c4'hd:seg_r = 8'ha1; //显示d4'he:seg_r = 8'h86; //显示e4'hf:seg_r = 8'h8e; //显示fendcaseendendmodule位码代码仿真代码`timescale 1ns/1nsmodule smg_tp; //测试模块的名字reg [2:0] c; //测试输入信号定义为reg型wire[7:0] dig; //测试输出信号定义为wire型parameter DEL Y=100; //延时100秒wei u1(c,dig); //调用测试对象initial begin //激励波形设定c=3'b0;#DEL Y c=3'b001 ;#DEL Y c=3'b010 ;#DEL Y c=3'b100 ;#DEL Y c=3'b101 ;#DEL Y c=3'b110 ;#DEL Y c=3'b111 ;#DEL Y $finish;endinitial $monitor($time,,,"dig=%d,c=%b ",dig,c); //输出格式i定义endmodulemodule wei(c,dig); //命名模块名字input[2:0] c;output[7:0] dig; //定义输入与输出reg[7:0] dig_r;reg[2:0] c_r; // 定义dig_r与c_r2个reg型数据assign dig=dig_r; //将reg型数据转化为wire型数据always @(*) //检测c_r的数据是否变化begin c_r=c;case (c_r)3'b000:dig_r=8'b11111110; //c_r的数据变化而dig_r对于的数据变化3'b001:dig_r=8'b11111101;3'b010:dig_r=8'b11111011;3'b011:dig_r=8'b11110111;3'b100:dig_r=8'b11101111;3'b101:dig_r=8'b11011111;3'b110:dig_r=8'b10111111;3'b111:dig_r=8'b01111111;default: dig_r=8'b11111111;endcase //结束case语句end //结束always语句endmodule //结束程序译码器代码仿真代码`timescale 1ns/1nsmodule duan_tp; //测试模块的名字reg[3:0] a; //测试输入信号定义为reg型wire[7:0] seg; //测试输出信号定义为wire型parameter DEL Y=100; //延时100秒duan u1(a,seg); //调用测试对象initial begin //激励波形设定a=4'b0;#DELY a=4'b0001;#DELY a=4'b0010;#DELY a=4'b0011;#DELY a=4'b0100;#DELY a=4'b0101;#DELY a=4'b0110;#DELY a=4'b0111;#DELY a=4'b1000;#DELY a=4'b1001;#DELY a=4'b1010;#DELY a=4'b1011;#DELY a=4'b1100;#DELY a=4'b1101;#DELY a=4'b1110;#DELY a=4'b1111;#DELY $finish;endinitial $monitor($time,,,"seg=%d,a=%b",seg,a); //输出格式i定义endmodulemodule duan(a,seg); //命名模块名字input[3:0] a;output[7:0] seg; //定义输入与输出reg[7:0] seg_r;reg[3:0] a_r; // 定义seg_r与a_r2个reg型数据assign seg=seg_r; //将reg型数据转化为wire型数据always @(*) //检测c_r的数据是否变化begin a_r=a;case(a_r) //七段译码4'b0000:seg_r = 8'hc0; //显示04'b0001:seg_r = 8'hf9; //显示14'b0010:seg_r = 8'ha4; //显示24'b0011:seg_r = 8'hb0; //显示34'b0100:seg_r = 8'h99; //显示44'b0101:seg_r = 8'h92; //显示54'b0110:seg_r = 8'h82; //显示64'b0111:seg_r = 8'hf8; //显示74'b1000:seg_r = 8'h80; ///显示84'b1001:seg_r = 8'h90; //显示94'b1010:seg_r = 8'h88; //显示a4'b1011:seg_r = 8'h83; //显示b4'b1100:seg_r = 8'hc6; //显示c4'b1101:seg_r = 8'ha1; //显示d4'b1110:seg_r = 8'h86; //显示e4'b1111:seg_r = 8'h8e; ///显示f endcase //结束case语句end //结束always语句endmodule //结束程序(2)仿真波形图(3)引脚图五、实验感想通过这次实验,让我学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。
数码管的工作原理数码管是一种用于显示数字和一些简单字符的电子显示装置。
它由多个发光二极管组成,每个发光二极管可以显示一个数字或字符。
数码管的工作原理简单而有效,下面将详细介绍。
数码管的基本构造是由七段发光二极管组成,这些发光二极管分别标记为a、b、c、d、e、f和g段。
每个段都可以发出红色、绿色或蓝色的光。
通过控制每个段的亮灭状态,可以显示不同的数字和字符。
数码管通常由两个部分组成,一个是控制电路,另一个是显示单元。
控制电路负责接收输入信号并将其转换为适当的电压和电流,以控制每个段的亮灭状态。
显示单元则是由多个发光二极管组成,每个发光二极管都代表一个数字或字符。
当需要显示一个数字或字符时,控制电路会根据输入信号的不同,控制相应的发光二极管亮起或熄灭。
例如,要显示数字1,控制电路会使b和c段发光二极管亮起,其他段则熄灭。
通过控制不同的发光二极管亮灭状态,可以显示任意数字和字符。
数码管的控制电路通常采用多路复用技术。
多路复用是一种通过时间分割的方式,在有限的时间内依次控制多个发光二极管亮灭。
具体来说,控制电路会快速地在不同的发光二极管之间切换,每个发光二极管只亮一小段时间,然后迅速切换到下一个发光二极管。
由于人眼对光的暂留效应,我们看到的是所有发光二极管都在同时亮起,而不是一个一个地闪烁。
除了数字和字符的显示,数码管还可以显示一些简单的图形和特殊符号。
例如,通过控制不同组合的发光二极管亮灭状态,可以显示一些基本的几何图形,如圆、矩形和三角形。
此外,还可以显示一些常见的符号,如加号、减号和等号等。
总结一下,数码管是一种用于显示数字和字符的电子装置,它通过控制发光二极管的亮灭状态来显示不同的内容。
数码管的工作原理是通过多路复用技术,快速地在不同的发光二极管之间切换,利用人眼的暂留效应实现同时显示多个发光二极管的效果。
数码管在各种电子设备中广泛应用,如计算器、时钟、电子秤等。
它简单而有效的工作原理使其成为一种常见的显示装置。
实验三数码管显示实验一、实验目的1、了解数码管的显示原理;2、掌握数码管显示的编程方法。
二、实验内容1、编写数码管显示程序,循环显示0-F字符三、实验设备1、硬件:JX44B0实验板;PC机;JTAG仿真器;2、软件:PC机操作系统(WINDOWS 2000); ARM Developer Suite v1.2;Multi-ICE V2.2.5(Build1319);四、基础知识1、掌握在ADS集成开发环境中编写和调试程序的基本过程。
2、了解ARM应用程序的框架结构;ARM 应用程序的框架结构;3、了解数码管的显示原理;五、实验说明1、LED显示原理发光二极管数码显示器简称LED显示器。
LED显示器具有耗电低、成本低、配置简单灵活、安装方便、耐震动、寿命长等优点,目前广泛应用于各类电子设备之中。
7段LED由7个发光二极管按“日”字排列。
所有发光二极管的阳极连接在一起称共阳极接法,阴极连接在一起称为共阴极接法。
一般共阴极可以不需要外接电阻。
其中各二极管的排列如上图在共阳极接法中,如果显示数字“5”,需要在a、c、d、f、g端加上高电压,其它加低电压。
这样如果按照h、g、f、e、d、c、b、a的顺序排列的话对应的码段是:6DH。
其它的字符同理可以得到。
2、数码管显示驱动、数码管显示驱动数码管的显示一般有动态显示和静态显示两大类,另外按照驱动方式又分串行驱动和并行驱动两种方式。
行驱动两种方式。
串行驱动主要是提供串-并转换,串行驱动主要是提供串-并转换,串行驱动主要是提供串-并转换,减少控制线数量;减少控制线数量;减少控制线数量;并行驱动对每一个段并行驱动对每一个段提供单独的驱动,电路相对简单。
这方面参看数字电路相关内容。
提供单独的驱动,电路相对简单。
这方面参看数字电路相关内容。
下面主要介绍静态显示和动态显示: 1)静态显示:)静态显示: LED 数码管采用静态接口时,共阴极或共阳极节点连接在一起地或者接高电平。
电子工艺实验报告第1篇:电子工艺实验报告实验一 multisim10界面设置及原理图绘制(2学时,验*型)实验目的:1。
熟悉multisim10软件基本界面。
2。
学习原理图绘制的基本*作。
3。
学习multisim10元件库的*作方法。
实验内容:1。
绘制单管放大电路:电管放大功能,可通过示波器观察波形变化,还可通过multisim 分析出其静态工作点等数据。
2。
绘制发光二极管驱动电路,并验*电路功能:当有时间脉冲时,两个与非门会交替产生高电平,从而使得两个小灯泡交替点亮。
3。
绘制光柱显示电路,并验*电路功能:如果通过电压大于一个灯的截止频率,第一个灯亮起,如果大于两倍的截止频率第二个灯亮起,以此类推。
4。
绘制四位加法器电路,并验*电路功能:当j1接高电平时,加法器有效。
j2的开关相当于一个时间脉冲,同时传递到4个元件上。
当所有灯都亮起时,j1接低电平,j2由j2由低电平接到高电平,灯x1、x2、x3、x4,依次每次熄灭一个。
实现清零。
5.总线绘制练习,并用字信号发生器对74ls138进行输入,观察数码管的变化:通过字信号发生器产生一个由111到001循环的二进制数。
通过3 线-8 线译码器译码之后传到数码管上,每产生一个二进制数,数码管相对应的一段就亮起。
思考题:1。
multisim*软件的优点是什么?未完,继续阅读 >第2篇:电子工艺实验报告书电子息信学院验实告报书课程 :名电子产题:目电子品工产流程实验艺电路(设、刻板制计、焊作、接调试实验类别)班学级姓号: 名::[综]合评语学习态度: 设计件文完整* 测结果问试题探究书写范规* (□极;积(□完;整( 正确□;(□深;入( □规范□,般;一□ 较差□)本完基整;□完不整) □基本正确;□部分确) □ 较正深;入□未答 ) 作基本□合要符,求不符合□求要)d□绩:成□ □ab c□指导教: 师阅批时: 年间月日艺验报实告-1-一、验内实电子产品工艺容程流验实:成一完稳款印刷压电板的电路路设,计板制作刻、品样焊、接调试的整个过程并,编制必的工要艺文。
单片机数码管动态显示实验报告单片机数码管动态显示实验程序(汇编)单片机数码管动态显示实验程序org 00hajmp headorg 0030hhead:mov sp,#0070hnum equ p0 ;p0口连接数码管reset:mov dptr ,#tabmov r0,#4sh:acall show_tabcall dptr_adddjnz r0,shmov r0 ,#4sjmp resetdptr_add:inc dptrinc dptrinc dptrinc dptrrettab :db0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH;;;;;;;;;;;;;;;;;;;;; 函数的功能是用来动态显示dptr上的四个数据 ;;;;;;;;;;;;;;;;;;;;;; show_tab:clr amov r2,#0mov r3,#148mov p2,#238loop:movc a,@a+dptrmov num ,aacall delay_5msinc r2mov a,r2;调用片选函数前注意A的变化acall select_movcjne r2,#4,loopmov r2,#0clr adjnz R3,loopret;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;select_mov:;p2的初值238push 0e0hmov a,p2rl amov p2,apop 0e0hretdelay_5ms:mov r6,#5signed_5ms:call delay_1msdjnz r6,signed_5msret篇二:单片机动态数码显示设计实验报告微机原理与接口技术实验报告实验题目:指导老师:班级:计算机科学与技术系姓名:动态数码显示设计2014年 12月3日实验十三动态数码显示设计一、实验目的1.掌握动态数码显示技术的设计方法。
实验二数码管显示本实验的目的是掌握数码管的工作原理与使用,实现数码管的静、动态显示。
静态数码管我们先看看什么是数码管,上图就是各种长相各种样子的数码管了,肯定很眼熟了吧。
不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。
数码管内部电路如下图所示,从右图可看出,一位数码管的引脚是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. 掌握数码管的结构、工作原理及驱动方式;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篇一、实验背景数码管是一种常用的显示器件,它可以将数字、字母或其他符号显示出来。
数码管广泛应用于各种电子设备中,如计算器、电子钟、电子秤等。
本实验旨在通过实践操作,让学生了解数码管的工作原理,掌握数码管的驱动方法,以及数码管在电子系统中的应用。
二、实验原理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. 了解数码管的工作原理和驱动方式。
数字电子技术实验报告实验五:数码管显示控制电路设计一、设计任务与要求:能自动循环显示数字0、1、2、3、4、1、3、0、2、4。
二、实验设备:1、数字电路实验箱;2、函数信号发生器;3、8421译码器;4、74LS00、74LS10、74LS90。
三、实验原理图和实验结果:1、逻辑电路设计及实验原理推导:将0、1、2、3、4、1、3、0、2、4用8421码表示出来,如下表:表一用8421码表示设想用5421码来实现8421码表示的0、1、2、3、4、1、3、0、2、4,故将0、1、2、3、4、5、6、7、8、9用5421码表示出来以与上表做对比:表二用5421码表示:观察表一,首先可得到最高位全为0,故译码器的“8”直接接低电平即可;对比表一和表二得,“4”位上的数字两表表示的数字是一样的,故“4”直接与5421码的“4”输出相连即可,即译码器的“4”连74LS90的“Q 3”端;表一的“2”位上的数字前五行与表二的“2”位上的数字前五行显示的一样,此时表二的“5”位上的数字均为0,表一的“2”位上的数字后五行与表二的“1”位上的数字后五行一样,此时表二上的“5”位上的数字均为1,故译码器的“2”要接的是实现函数表达式为1020Q Q Q Q +的电路;最后一位上没有明显的规律,可用卡诺图求得逻辑表达式,也即译码器的“1”要连接的是实现函数表达式为230130Q Q Q Q Q Q +的电路。
至此,实验原理图即可画出了。
2、 实验原理图:3、实验结果:编码器上依次显示0、1、2、3、4、1、3、0、2、4。
实验结果图如下:四、实验结果分析:实验结果为编码器上依次显示0、1、2、3、4、1、3、0、2、4,满足实验设计要求。
五、实验心得:在这次实验前,我认真的分析了实验原理并设计了电路,并用仿真软件得出了符合实验设计要求的结果,可是在实验过程中我遇到了问题,电路连了好几遍显示的结果都不完全对,第一次做的过程中没能顺利排除故障;但我在第二次做的过程中很顺利,因为实验原理已烂熟于心,所以很快完成了实验,一次成功。
第3讲数码管显示第3讲数码管显示一、数码管显示原理我们最常用的是七段式和八段式LED数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起。
其原理图如下。
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。
可以看出两个编码的各位正好相反。
如下图。
二、点亮一个数码管下面以七段共阴数码管为例讲述如何点亮一个数码管。
l 51系列单片机的P0口没有上拉电阻(其他端口有),所以如果直接接数码管的段选线,那么不能将其点亮。
我们需要为其加上220欧姆的上拉电阻,注意,上拉电阻阻值不能过大。
实验原理图如下。
其中,7SEG-COM-CAT-GRN为七段共阴数码管,显示为绿色。
RES为电阻。
查找电阻时,需要选中下面的Resistors,如下图。
右击选中图中的电阻再左击,弹出的窗口中可改变它的阻值。
如下图。
那七个电阻看上去很乱,其实他们可以用一个排阻(RESPACK-7)代替。
如下图。
到这里原理图就画完了,我们开始写源程序。
让数码管显示字符“0”。
#includevoid main(){P0 = 0x3f; //P0口送字符…0‟的编码}显示效果如下。
设计实例12:
数码管驱动电路
一、设计目的
通过汽车尾灯电路设计,使学生掌握组合逻辑电路的工作原理、电路构成和设计方法,训练学生的动手能力,培养独立解决问题的能力,为今后电路设计和电类后续课程的学习奠定基础。
二、设计内容
设计一数码管驱动电路,实现如下功能:10个输入端。
当按下控制按键0后,数码管显示0,按下1时,数码管显示1……每次按键的键号与数码管的显示相同,没有按键时显示0。
三、工作原理
如图1所示,电路由与非门74LS00、数码管驱动芯片74LS247组成。
10个按键组成输入电路,经过与非门电路编码后,输入数码管驱动芯片,驱动数码管显示相应的按键号。
图1 电路原理图
设计按键编码电路时,先写出真值表,由真值表可写出下式:
为了使电源电压不超过数码管承受电压范围,电源串联4个二极管后,加到数码管上,这样做,可以节省元件。
四、元件清单
五、实物图
按照原理图和元件清单,在电路板上焊接好元件后,实物图如图2所示。
图2 实物样板
调试的时候,先调试数码管显示电路,观察显示数字是否正常,再调试按键输入电路。
试验四数码管动态显示试验一一、试验要求1.在Proteus软件中画好51单片机最小关键电路, 包含复位电路和晶振电路2.在电路中增加四个7段数码管(共阳/共阴自选),将P1口作数据输出口与7段数码管数据引脚相连 , P2.0~P2.3引脚输出选控制信号3.在Keil软件中编写程序,采取动态显示法,实现数码管分别显示数字1, 2, 3, 4二、试验目1.巩固Proteus软件和Keil软件使用方法2.学习端口输入输出高级应用3.掌握7段数码管连接方法和动态显示法4.掌握查表程序和延时等子程序设计三.试验说明本试验是将单片机P1口做为输出口, 将四个数码管七段引脚分别接到P1.0至P1.7。
因为电路中采取共阳极数码管, 所以当P1端口对应引脚为0时, 对应数码管段点亮。
程序中预设了数字0-9段码。
因为是让四个数码管显示不一样数值, 所以要用扫描方法来实现。
所以定义了scan函数, 接到单片机p2.0至p2.3在试验中, 预设数字段码表存放在数组TAB中, 因为段码表是固定, 所以存放类型可设为code。
在Proteus软件中根据要求画出电路, 再利用Keil软件按需要实现功效编写c程序, 生成Hex文件, 把Hex文件导到Proteus软件中进行仿真。
为了能够愈加好验证试验要求, 在编写程序时需要延时0.5s, 能让人眼愈加好分辨; 89C51一个机器周期包含12个时钟脉冲, 而我们采取是12MHz晶振, 每一个时钟脉冲时间是1/12us, 所以一个机器周期为1us。
在keil程序中, 子函数实现是用void delay_ms(int x), 其中x为1时是代表1ms。
四、硬件原理图及程序设计(一)硬件原理图设计电路中P1.0到P1.7为数码管七段端口控制口, 排阻RP1阻值为220Ω, p2.0到p2.3为数码管扫描信号。
AT89c51单片机9脚(RST)为复位引脚, 当RST为高电平时间达成2个机器周期时系统就会被复位; 31引脚(EA)为存取外部存放器使能引脚, 当EA为高电平是使用单片机内部存放器, 当EA为低电平时单片机则使用外部存放器。
课题二十进制数的动态显示电路设计、仿真与实验学习目标:熟悉常用MSI组合逻辑器件的功能和应用,掌握时序逻辑电路的一般设计方法;学会利用EDA软件(Proteus)对十进制数的动态显示电路进行仿真;掌握动态显示电路的安装及调试方法。
一、任务与要求设计由JK触发器、数据选择器、译码器和LED数码管构成的动态显示电路,研究十进制数的动态显示方法,学会MSI器件的应用设计;用Proteus软件仿真;实验测试逻辑功能。
具体要求如下:(1)用一个显示译码器驱动4个LED数码管,轮流显示4位十进制数。
(2)每位十进制数以8421BCD码形式输入。
(3)写出设计步骤,画出设计的逻辑电路图。
(4)对设计的电路进行仿真、修改,使仿真结果达到设计要求。
(5)安装并测试电路的逻辑功能。
二、课题分析及设计思路(1)动态显示电路的设计思路分析以上设计任务与要求,动态显示电路的实现框图如下:图1 动态显示电路的实现框图(2)控制电路的设计思路控制电路的主要功能是在CP 脉冲的作用下,控制“数据选择电路”依次输出4位8421BCD 码,并同时控制对应LED 数码管的阴极,使其接地而正常显示。
因此,控制电路的设计框图如下:图2 控制电路的实现框图图2中,2位二进制计数器的输出状态依次为00、01、10、11,作为“数据选择电路”的控制信号;同时也作为2位二进制译码器的输入信号,使其四个输出端依次为低电平。
有关“2位二进制计数器”的设计详见理论课教材。
三、集成电路及元件选择“数据选择电路”部分采用两片数据选择器74LS153,“显示译码电路”部分采用74LS48或CD4511,“控制电路”部分采用集成JK 触发器74LS76构成计数器,2位二进制译码器采用74LS139。
此外,LED 数码管采用共阴极数码管。
四、原理图绘制与电路仿真用proteus 软件绘制出该电路的原理图,对所设计的电路进行仿真实验。
在仿真实验过程中,要求能够实时改变4位十进制数,并验证电路的逻辑功能是否达到设计要求。
实验报告(十)
实验10 数码管显示电路原理图绘制(一)复习:
原理图编辑的操作界面设置
图纸设置:图纸尺寸、图纸方向、图纸颜色
栅格(Grids)设置
一.实验目的
1.了解元器件查找及放置
2.了解导线放置模式
3.熟悉元件属性编辑及放置
二.实验设备
计算机;altiumdesigner软件。
三.实验内容
1.调用原理图模板,准备绘制数码管显示电路。
2.数码管显示电路如下图
3.数码管的元器件属性见下表
实验报告(十)
4.添加libraris集成库。
5.搜索元器件并放置元器件。
6.用总线连接数码管与排阻及74LS49。
7.保存电路。
8.检查电路。
四.实验步骤
1.原理图图纸模板文件的调用
调用B5理图图纸模板。
(1)在主菜单中执行File→New→Schematic命令,新建一个空白原理图文件。
注意:在调用新的原理图图纸模板之前,首先要删除旧的原理图图纸模板。
(2)在主菜单中执行Design→General Template→Choose Another File命令,弹出“打开文件”对话框,选择上面创建的原理图图纸模板文件B5_Template.SchDot,单击“打开”按钮,弹出Update Template对话框,如图所示。
图1 Update Template对话框
该对话框中的Choose Document Scope有三个选项,用来设置操作对象的范围,其中: Just this document表示仅仅对当前原理图文件进行操作,即衣橱当前原理图文件模板,调用新的原理图图纸模板。
All schematic documents in the current project表示将对当前原理图文件所在工程中的所有原理图文件进行操作,即移除当前原理图文件所在工程中所有的原理图文件模板,调用新的原理图图纸模板。
All open schematic documents 表示将对当前所有已经打开的原理图文件进行操作,即衣橱当前打开的所有原理图文件模板,调用新的原理图图纸模板。
该对话框中的Choose Parameter Actions 有三个选项,用于设置对参数的操作,其中: Do not update any parameters表示不更新任何参数。
Add new all parameters that exist in the template only表示将原理图图纸模板中新定义的参数添加到调用原理图图纸模板的文件中。
Replace all matching parameters表示用原理图图纸模板中的参数替换当前的文件对应参数。
(3)在Update Template对话框中选中Just this document和Add new all parameters that exist in the template only单选按钮,单击OK按钮,弹出如图所示的Information对话框,要求用户确认在一个原理图文档中调用新的原理图模板。
图2 Information对话框
(4)单击Information对话框中的OK按钮,即调用了原理图图纸模板,如图下所示。
图3 调用的原理图图纸模板
(5)调用的原理图图纸模板与前面建立的标题栏的格式完全相同,知识标题栏里的参数于要用户根据实际的原理图进行设置;注意日期这一栏的内容是计算机内的系统日期。
2.加载元器件库
将官方网上下载的元器件库libraries文件夹复制到安装目录的libraries的文件夹下。
3.搜索元器件
首先来查找型号为74LS49元件。
(1)单击Libraries标签,在Libraries面板中按下Search按钮,或选择Tools →Find Component,将打开Libraries Search对话。
(3)对上例必须确认Scope设置中,Search in选择为Components(对于库搜索存在不同的情况,使用不同的选项)。
必须确保Scope设置中,选择Libraries on Path 单选按钮,并且Path包含了正确的连接到库的路径。
如果用户接受安装过程中的默认目录,路径中会显示
实验报告(十)
C:\Documents and Settings\All Users\Documents\Altium\AD13\Library\可以通过单击文件浏览按钮来改变库文件夹的路径。
还需要确保已经选中Include Subdirectories复选框。
(4)查找所有与74LS49有关的元件,所以在Filters的Field列的第1行选Name,Operator列选Contains,Value列输入74LS49,如下图所示。
(5)单击Search按钮开始查找。
搜索启动后,搜索结果如下图所示。
实验报告(十)
(6)鼠标左击Place SN74LS49D按钮,弹出Confirm对话框如下图,确认是否安装元件SN74LS49D所在的库文件TI Interface Display Driver.IntLib,按
Yes按钮,即安装该库文件。
(7)用以上方法查找“MAX1487E”元件。
4.放置元件
按照前面介绍的方法放置元件。
下表给出了该电路中每个元件样本、元件标号、元件名称(型号规格)、所在元器件库等数据。
注意在放置元件的时候,一定要注意该元件的封装要与实物相符。
5.放置好的元器件数码管显示电路如下
实验报告(十)
6.修改元器件属性并统一编号
选择tool annotate schematic…则弹出下面的对话框。
按照要求设置并编号。
五.实验总结
通过练习熟练的调用了原理图的设计模板,快速加载了原理图元件库,并能根据实际的要求搜索元器件,能快速放置并编辑元器件属性达到设计要求。
实验作业:
写出实验报告。