实验六 动态扫描数码显示实验

合集下载

数码管动态扫描显示考试(08级)

数码管动态扫描显示考试(08级)

数码管动态扫描显示---实验名电子钟数码管显示一、实验目的:1. 进一步掌握定时器的使用和编程方法。

2. 了解七段数码显示数字的原理。

掌握用一个段锁存器和一个位锁存器同时显示多位数字的技术。

二、实验设备: EL-MUT-III型单片机实验箱、8051CPU模块三、实验原理:数码管的显示常采用静态锁存和动态扫描两种原理,采用显示的电路结构也因显示原理不同而不同。

本试验采用动态显示。

动态显示就是一位一位地轮流点亮显示器的各个位(扫描)。

将8031CPU的P1口当作一个锁存器使用,提供动态显示的位码,74LS273作为段锁存器,提供动态显示的段码。

四、实验题目利用定时器1定时中断,控制电子钟走时,利用实验箱上的六个数码管显示分、秒,做成一个电子钟。

显示格式为:分秒定时时间常数计算方法为:定时器1工作于方式1,晶振频率为6MHZ,故预置值Tx为:(2+16-Tx)x12x1/(6x10+6)=0.1sTx=15535D=3CAFH,故TH1=3CH,TL1=AFH五、实验电路:图4-- 80C51通过273和P0口与8个LED链接的动态显示电路原理图六、实验接线:本实验用P1口和锁存器74L273组成。

将P1口的P1.0~P1.5与数码管的输入LED6~LED1数位选择相连,74LS273的O0~O7与LEDA~LED Dp的段码相连,片选信号CS273与CS0相连(口地址:CFA0H)。

去掉短路子连接。

七、程序流程图:T9.ASM图4-- 电子时钟流程图电子钟实验程序:NAME T9。

Asm ;数码显示实验PORT EQU 0CFA0H ;74LS273的地址BUF EQU 23H ;存放计数值SBF EQU 22H ;存放秒值MBF EQU 21H ;存放分值CSEG AT 0000HLJMP STARTCSEG AT 401BH ;定时器0的中断矢量LJMP CLOCKCSEG AT 4100HSTART: MOV R0,#40H ;40H-45H是显示缓冲区,依次存放MOV A,#00H ;分高位、分低位,0A,0A(横线) MOV @R0,A ;以及秒高位、秒底位INC R0MOV @R0,AINC R0MOV A,#0AHMOV @R0,AINC R0MOV @R0,AINC R0MOV A,#00HMOV @R0,AINC R0MOV @R0,AMOV TMOD,#10H ;定时器1初始化为方式1MOV TH1,#38H ;置时间常数,延时0.1秒MOV TL1,#00HMOV BUF,#00H ;置0MOV SBF,#00HMOV MBF,#00HSETB ET1 ;中断设置初始化SETB EASETB TR1DS1: MOV R0,#40H ;置显示缓冲区首址MOV R2,#01H ;R2置扫描初值,点亮最左边的LED6 DS2: MOV DPTR,#PORTMOV A,@R0 ;得到的段显码输出到段数据口ACALL TABLEMOVX @DPTR,AMOV A,R2 ;向位数据口P1输出位显码CPL AMOV P1,AMOV R3,#0FFH ;延时一小段时间DEL: NOPDJNZ R3,DELINC R0 ;显示缓冲字节加一CLR CMOV A,R2RLC A ;显码右移一位MOV R2,A ;最末一位是否显示完毕?,如无则JNZ DS2 ;继续往下显示MOV R0,#45HMOV A,SBF ;把秒值分别放于44H,45H中ACALL GETDEC R0 ;跳过负责显示"-"的两个字节DEC R0MOV A,MBF ;把分值分别放入40H,41H中ACALL GETSJMP DS1 ;转DS1从头显示起TABLE: INC A ;取与数字对应的段码MOVC A,@A+PCRETDB 3FH,06H,5BH,4FH,66H,6DH,7DH, 07H, 7FH,6FH, 40H ;子程序GET: MOV R1,A ;把从分或秒字节中取来的值的高ANL A,#0FH ;位屏蔽掉,并送入缓冲区MOV @R0,ADEC R0MOV A,R1 ;把从分或秒字节中取来的值的低SWAP A ;位屏蔽掉,并送入缓冲区ANL A,#0FHMOV @R0,ADEC R0 ;R0指针下移一位RET;========中断服务程序================================= CLOCK: MOV TL1,#0AFH ;置时间常数MOV TH1,#3CHPUSH PSWPUSH ACCINC BUF ;0.1秒计数加一MOV A,BUF ;计到10否?没有则转到QUIT退出中断CJNE A,#0AH,QUITMOV BUF,#00H ;置初值MOV A,SBFINC A ;秒值加一,经十进制调整后放入DA A ;秒字节MOV SBF,ACJNE A,#60H,QUIT ;计到60否?没有则转到QUIT退出中断MOV SBF,#00H ;是,秒字节清零MOV A,MBFINC A ;分值加一,经十进制调整后放入DA A ;分字节MOV MBF,ACJNE A,#60H,QUIT ;分值为60否?不是则退出中断MOV MBF,#00H ;是,清零QUIT: POP ACCPOP PSWRETI ;中断返回END准备:1)用P1或P3 作为键盘的输入口和8个按键连接。

实验六 数码管的动态扫描显示--演示文稿

实验六 数码管的动态扫描显示--演示文稿
12
管脚排列示意图
1 2 3 4 5 6
四、实验平台
实验控制板: 21CONTROL 公司出品(广州康革科技生 产)以EP2C20Q240C8N为核心芯片的FPGA 产)以EP2C20Q240C8N为核心芯片的FPGA 开发板 注意:1 注意:1、编译未完成前不要给实验板上电; 2、下载前确认对未使用管脚配置为 “As input tri-stated”。 tri-stated”
三、实验原理
优点:节省大量的I/O端口,而且功耗更低。 优点:节省大量的I/O端口,而且功耗更低。 (静态显示则是每个数码管同时显示,每 个需要8 个需要8条引出端线。) 动态显示驱动电路:是将所有数码管的8 动态显示驱动电路:是将所有数码管的8个 显示笔划“ 显示笔划“a、b、c、d、e、f、g、dp”的同 dp” 名端连在一起,另外为每个数码管的公共 极增加位选通控制电路,位选通由各自独 立的I/O线控制 立的I/O线控制 。
四选 模块
同步的数 值信号
50M时钟 时钟
数码管译 码模块
数码管的 段选
五、实验编程方式
下载模式:JTAG; 下载模式:JTAG; 下载端口:LPT1(连到实验板JTAG口) 下载端口:LPT1(连到实验板JTAG口) 管教绑定说明 #Setup.tcl # Setup pin setting set_global_assignment -name RESERVE_ALL_UNUSED_PINS "As input tri-stated" triset_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF set_location_assignment PIN_116 -to rst set_location_assignment PIN_154 -to clk50M set_location_assignment PIN_6 -to led1 set_location_assignment PIN_7 -to led2

LED动态扫描显示实验

LED动态扫描显示实验

51单片机实验报告二名称:LED动态扫描显示目的:掌握数码LED的动态扫描显示原理;学习延时子程序的编写和使用。

原理:为了节省输出端口数,数码LED显示一般采用动态扫描的方法,将所有数码LED的共阴极接在一个位型输出口上,将所有数码管的相同段接在一起作为字型口,软件控制每个数码LED轮流显示,任一时刻只一个数码亮,但扫描速度足够快时,视觉效果是8个数码LED同时亮。

电路图:流程图:汇编程序:ORG 0000HAJMP MAINORG 0080HMAIN:CLR P2.0 ;选中第一个数码管MOV P0, #3FH ;显示0LCALL DELAY ;调用延时MOV P0, #0FFH ;关显示SETB P2.0CLR P2.1 ;选中第二个数码管MOV P0, #06H ;显示1LCALL DELAYMOV P0, #0FFHSETB P2.1CLR P2.2 ;选中第三个数码管MOV P0, #5BH ;显示2LCALL DELAYMOV P0, #0FFHSETB P2.2CLR P2.3 ;选中第四个数码管MOV P0, #4FH ;显示3LCALL DELAYMOV P0, #0FFHSETB P2.3CLR P2.4 ;选中第五个数码管MOV P0, #66H ;显示4LCALL DELAYMOV P0, #0FFHSETB P2.4CLR P2.5 ;选中第六个数码管MOV P0, #6DH ;显示5LCALL DELAYMOV P0, #0FFHSETB P2.5CLR P2.6 ;选中第七个数码管MOV P0, #7DH ; 显示6LCALL DELAYMOV P0, #0FFHSETB P2.6CLR P2.7 ;选中第八个数码管MOV P0, #07H ; 显示7LCALL DELAYSETB P2.7MOV P0, #0FFHAJMP MAIN ;重新开始DELAY: ;延时子程序MOV R7 ,#2D1: MOV R6, #25D2: DJNZ R6, D2DJNZ R7, D1RETEND现象及结论:8只数码管循环滚动显示单个数字0—7。

EDA设计课程实验报告数码管动态显示实验报告

EDA设计课程实验报告数码管动态显示实验报告

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)引脚图五、实验感想通过这次实验,让我学习动态扫描显示的原理;利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。

数码管扫描显示控制器实验报告

数码管扫描显示控制器实验报告

实验四数码管扫描显示控制器设计与实现2011211208班2011211055 4 于圣泽一、实验目的1.掌握VHDL语言的语法规范, 掌握时序电路描述方法;2.掌握多个数码管动态扫描显示的原理及设计方法。

二、实验原理三、多个数码管动态扫描显示, 是将所有数码管的相同段并联在一起, 通过选通信号分时控制各个数码管的公共端, 循环依次点亮多个数码管, 利用人眼的视觉暂留现象, 只要扫描的频率大于50Hz, 将看不到闪烁现象。

一个数码管要稳定显示要求显示频率大于50Hz, 那么6个数码管则需要50×6=300Hz以上才能看到持续稳定点亮的现象。

四、cat1~cat6是数码管选通控制信号, 分别对应于6个共阴极数码管的公共端, 当catn=‘0’时, 其对应的数码管被点亮。

因此, 通过控制cat1~cat6, 就可以控制6个数码管循环依次点亮。

五、实验内容1.用VHDL语言设计并实现六个数码管串行扫描电路, 要求同时显示0、1.2.3.4.5这6个不同的数字图形到6个数码管上, 仿真验证其功能, 并下载到实验板测试。

2.用VHDL语言设计并实现六个数码管滚动显示电路六、循环左滚动, 始终点亮6个数码管, 左出右进。

状态为: 012345→123450→234501→3450123→450123→501234→012345七、向左滚动, 用全灭的数码管填充右边, 直至全部变灭, 然后再依次从右边一个一个地点亮。

状态为:012345→12345X→2345XX→345XXX→45XXXX→5XXXXX→XXXXXX→XXXXX0→XXXX01→XXX012→XX0123→X01234→012345,其中‘X’表示数码管不显示。

八、设计思路和过程对50MHz时钟进行5000分频, 得到10kHZ时钟scanclk。

把scanclk作为6进制计数器的时钟, 对计数器的状态进行译码, 得到cat(5 downto 0)的选通脉冲。

单片机数码管动态扫描显示课件

单片机数码管动态扫描显示课件
选择
在选择数码管时,需要根据实际需求选择合适的型号和规格,如显示位数、尺寸、亮度等。
为了控制数码管显示不同的数字或字母,需要将相应的二进制编码信号输入到数码管的各个LED段上。
编码方式
常见的数码管编码方式有BCD码、2421码、5421码等,不同的编码方式对应不同的编码表。
编码表
03
CHAPTER
总结词
数码管的亮度过高或过低都会影响显示的清晰度。如果亮度过高,会导致显示过于刺眼;如果亮度过低,则会导致显示不清晰。
详细描述
根据实际情况调整数码管的亮度,使其达到合适的显示效果。
解决方案
总结词
单片机资源占用过多可能会导致系统运行缓慢或崩溃。
THANKS
感谢您的观看。
开发环境
数据处理
将需要显示的数据(如数字、字母等)转换为数码管显示的编码,常用的编码方式有7段数码管编码和点阵编码。
数据传输
通过单片机的I/O口将处理后的数据显示到数码管上,根据数码管的连接方式和单片机型号选择合适的I/O口和传输方式。
05
CHAPTER
实际应用案例分析
VS
该设计通过单片机控制LCD显示屏,实现文字、图像等多种信息的显示。
单片机具有体积小、重量轻、价格低廉、可靠性高等优点,因此在自动化控制、智能仪表、家用电器等领域得到广泛应用。
特点
定义
单片机可以用于各种工业控制系统中,如自动化生产线、智能仪表等。
工业控制
智能家居
通信领域
单片机可以用于智能家居系统中,实现家电的远程控制、智能调节等功能。
单片机可以用于通信设备中,如调制解调器、路由器等。
单片机数码管动态扫描显示课件
目录
单片机基础知识数码管显示原理单片机数码管动态扫描显示原理单片机数码管动态扫描显示程序编写实际应用案例分析常见问题与解决方案

数码管的动态扫描显示

数码管的动态扫描显示

*/
/***************************************************************************/
/*********************************包含头文件********************************/
上图中上面三条就是所谓的位选信号线,下面八条就是所谓的段选信号线。 下图是四位共阳数码管显示原理实验的电路图:
基于以上电路图我们来了解一下什么是数码管的动态扫描显示: 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8 个显示笔划
"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM 增加位选通控制电路,位选通由各自独立 的I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形, 取决于单片机对位选通COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形, 没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM 端,就使各个数码管轮流受控显示,这就是动 态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应, 尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪 烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O 端口,而且功耗更低。
根据这些说明可以总结出数码管动态扫描显示驱动程序的书写流程如下: 1、 送位选信号,选通其中的一位数码管。 2、 送段选信号,让选通的这位数码管显示一个数字。 3、 延时1-2ms。
4、 送另一个位选信号,选通另外一位数码管。

动态扫描数码显示实验

动态扫描数码显示实验

实验六一、实验目的动态扫描数码显示实验1.掌握数字、字符转换成显示段码的软件译码方法 2.动态显示的原理和相关程序的编写 二、实验说明 动态显示,也称扫描显示。

显示器由 6 个共阴极 LED 数码管构成。

单片机的 P1 口输出 显示段码,经由一片 74LS245 驱动输出给 LED 管,由 P0 口输出位码,经由 74LS06 输出给 LED 管。

三、实验电路图 本实验用到 80C51 MCU 模块(C 区) ,动态数码显示模块(A5 区) 。

80C51 MCU 模块电路 原理参考附录三,动态数码显示电路原理参考图 9.1。

图 9.1 动态数码显示电路 四、实验步骤 1.用 8P 数据线分别连接 80C51 MCU 模块的 JD0C(P0 口) 、JD1C(P1 口)到动态数码显 示模块的 JD2A5、JD1A5。

2.用串行数据通信线连接计算机与仿真器, 把仿真器插到 80C51 MCU 模块的 40P 锁紧插 座中,请注意仿真器的方向:缺口朝上。

3.将 80C51 MCU 模块的电源扭子开关 S1C 拨到上端,将动态数码显示模块的电源短路帽 J1A5 打在上端。

将直流稳压电源模块的直流控制开关 S1G1 打到 ON, 本实验所用到的相关模 块的电源指示灯 VCC 亮。

4.打开 Keil uVision2 仿真软件,首先建立本实验的项目文件,接着添加“TH9_动态显 示.ASM”源程序,进行编译,编译无误后,全速运行程序。

5.实验现象:动态数码显示模块显示“168168” 。

6.也可以把源程序编译成可执行文件, 把可执行文件用 ISP 烧录器烧录到 89S52 芯片中 运行(注意:芯片缺口朝上)(ISP 烧录器的使用查看附录二) 。

五、实验源程序 DBUF EQU 30HTEMP ORG ORGEQU 40H 0000H 0100HLJMP DISP DISP: MOV 30H,#8 MOV 31H,#6 MOV 32H,#1 MOV 33H,#8 MOV 34H,#6 MOV 35H,#1 MOV R0, #DBUF MOV R1, MOV R2, #TEMP #6MOV DPTR, #SEGTAB DP00: MOV A,@R0 MOVC A, @ A+DPTR MOV @R1, INC R1 INC R0 DJNZ R2, DP00 DISP0: MOV R0,#TEMP MOV R1,#6 MOV R2,#1 DP01: MOV A,@R0 MOV MOV MOV ACALL MOV RL MOV INC A R2,A R0 P1, A A,R2 P0,A DELAY A,R2 ADJNZ R1,DP01 SJMP DISP0 SEGTAB:DB 3FH,06H,5BH DB 4FH,66H,6DH DB 7DH,07H,7FH DB 6FH,77H,7CH DB 58H,5EH,7BH DB 71H,00H,40H DELAY: MOV AA1: AA: MOV NOP R4,#03H R5,#0FFH ; 0,1,2 ; 3,4,5 ; 6,7,8, ; 9,A,B ; C,D,E ; F, ,-NOP DJNZ DJNZ RET END 六、思考题 1.如何修改程序,实现六位 LED 数码管只显示其中的两位? R5,AA R4,AA1仿真实验二 题目 : 编写汇编程序实现单片机控制的 题目 : 编写汇编程序实现单片机控制的 停止,接着单片机控制 的黄色 以 次停止。

汇编数码显示及键盘实验实验报告

汇编数码显示及键盘实验实验报告

数码显示及键盘实验【实验内容】1、数码管显示0-72、独立按键识别【需要了解的知识】1、GPIO设定2、数码管动态扫描显示原理,键盘扫描工作原理,输入与输出及其处理【实验预习】仔细预读实验指导电子文档的实验六、七及其前面的实验流程【实验设备】Keil C51软件、ICE52 仿真驱动、MEFlash编程软件、USB驱动程序【实验过程】实验一数码管显示0-7实验任务:1)先将“0-7”数码管的段码值写入存储器中,使8位数码管从右至左显示0-7.实验步骤:1)首先在硬盘上建立一个文件夹;2)启动Keil C51软件;3)执行Keil C51软件的菜单“Project|New Project……”,弹出一个名为“Create New Project”的对话框。

输入工程文件名,选择保存路径uv2后缀,点击“保存”按钮;4)紧接着弹出“Options for Target‘Target 1’”,为刚才的项目选择ATMEL的AT89S52的CPU。

选择之后,点击“确定”按钮;5)接下来弹出一个对话框提示你是否要把标准8051的启动代码添加项目中去,此时,点击“否”按钮;6)执行菜单“File|New……”,出现一个名为“Text1”的文档。

接着执行菜单“File|Save”弹出一个名为“Save As”的对话框,将文件名改为“.asm”后缀,然后保存;7)添加源程序文件到工程中,一个空的源程序文件建成。

单击Keil C51软件左边项目工作窗口“Target1”上的“+”,将其展开。

然后右击“Source Group1”文件夹弹出下拉菜单,单击其中的“Add Files to Group‘Source Group1’”项;8)在弹出的对话框中先选择文件类型为“Asm Source file(*.s*;*.src;*.a*)”,这时对话框内创建的空的源程序文件已经出现在项目工作窗口的“Source Group1”文件夹中;输入源程序代码;9)点击工具栏“Options for target”按钮,弹出一个对话框,定义“Xtal”为11.0592.下面依序是存储模式、程序空间大小等设置,均用默认值即可。

数码显示实验 - 单片机原理及应用实验报告

数码显示实验 - 单片机原理及应用实验报告

计算机与信息工程学院设计性实验报告一、实验目的:1、进一步掌握定时器的使用和编程方法。

2、了解七段数码显示数字的原理。

3、掌握用一个段锁存器,一个位锁存器同时显示多位数字的技术。

二、实验设备:EL-8051-III型单片机实验箱三、实验原理:本试验采用动态显示。

动态显示就是一位一位地轮流点亮显示器的各个位(扫描)。

将8031CPU的P1口当作一个锁存器使用,74LS273作为段锁存器。

四、实验题目利用定时器1定时中断,控制电子钟走时,利用实验箱上的六个数码管显示分、秒,做成一个电子钟。

显示格式为:分秒定时时间常数计算方法为:定时器1工作于方式1,晶振频率为6MHZ,故预置值Tx为:(2e+16-Tx)x12x1/(6x10e+6)=0.1sTx=15535D=3CAFH,故TH1=3CH,TL1=AFH五、实验电路:六、实验接线:将P1口的P1.0~P1.5与数码管的输入LED6~LED1相连,74LS273的O0~O7与LEDA~LEDDp相连,片选信号CS273与CS0相连。

去掉短路子连接。

七、程序框图:T9.ASM八、参考程序:T9.ASM;将P1口的P1.0~P1.5与LED8~LED3相连,74LS273的SO0~SO7与A~Dp相连,片选信号;CS273与CS0相连。

去掉短路子连接。

NAME T9 ;数码显示实验PORT EQU 0CFA0HBUF EQU 23H ;存放计数值SBF EQU 22H ;存放秒值MBF EQU 21H ;存放分值CSEG AT 0000HLJMP STARTCSEG AT 401BHLJMP CLOCKCSEG AT 4100HSTART: MOV R0,#40H ;40H-45H是显示缓冲区,依次存放MOV A,#00H ;分高位、分低位,0A,0A(横线)MOV @R0,A ;以及秒高位、秒底位INC R0MOV @R0,AINC R0MOV A,#0AHMOV @R0,AINC R0MOV @R0,AINC R0MOV A,#00HMOV @R0,AINC R0MOV @R0,AMOV TMOD,#10H ;定时器1初始化为方式1MOV TH1,#38H ;置时间常数,延时0.1秒MOV TL1,#00HMOV BUF,#00H ;置0MOV SBF,#00HMOV MBF,#00HSETB ET1SETB EASETB TR1DS1: MOV R0,#40H ;置显示缓冲区首址MOV R2,#20H ;置扫描初值,点亮最左边的LED6DS2: MOV DPTR,#PORTMOV A,@R0 ;得到的段显码输出到段数据口ACALL TABLEMOVX @DPTR,AMOV A,R2 ;向位数据口P1输出位显码CPL AMOV P1,AMOV R3,#0FFH ;延时一小段时间DEL: NOPDJNZ R3,DELINC R0 ;显示缓冲字节加一CLR CMOV A,R2RRC A ;显码右移一位MOV R2,A ;最末一位是否显示完毕?,如无则JNZ DS2 ;继续往下显示MOV R0,#45HMOV A,SBF ;把秒值分别放于44H,45H中ACALL GETDEC R0 ;跳过负责显示"-"的两个字节DEC R0MOV A,MBF ;把分值分别放入40H,41H中ACALL GETSJMP DS1 ;转DS1从头显示起TABLE: INC A ;取与数字对应的段码MOVC A,@A+PCRETDB 3FH,06H,5BH,4FH,66H,6DH,7DH, 07H, 7FH,6FH, 40H GET: MOV R1,A ;把从分或秒字节中取来的值的高ANL A,#0FH ;位屏蔽掉,并送入缓冲区MOV @R0,ADEC R0MOV A,R1 ;把从分或秒字节中取来的值的低SWAP A ;位屏蔽掉,并送入缓冲区ANL A,#0FHMOV @R0,ADEC R0 ;R0指针下移一位RETCLOCK: MOV TL1,#0AFH ;置时间常数MOV TH1,#3CHPUSH PSWPUSH ACCINC BUF ;计数加一MOV A,BUF ;计到10否?没有则转到QUIT退出中断CJNE A,#0AH,QUITMOV BUF,#00H ;置初值MOV A,SBFINC A ;秒值加一,经十进制调整后放入DA A ;秒字节MOV SBF,ACJNE A,#60H,QUIT ;计到60否?没有则转到QUIT退出中断MOV SBF,#00H ;是,秒字节清零MOV A,MBFINC A ;分值加一,经十进制调整后放入DA A ;分字节MOV MBF,ACJNE A,#60H,QUIT ;分值为60否?不是则退出中断MOV MBF,#00H ;是,清零QUIT: POP ACCPOP PSWRETI ;中断返回END教师签名:年月日。

io控制数码管动态扫描实验总结

io控制数码管动态扫描实验总结

io控制数码管动态扫描实验总结一、实验介绍•定义:io控制数码管动态扫描是一种通过控制io接口来实现数码管动态显示的方法。

•目的:通过实验的方式,掌握io控制数码管动态扫描的原理、方法和过程,加深对io控制的理解。

•实验设备:数码管、单片机、电路板等。

•实验原理:通过快速改变数码管的段选信号和位选信号,从而控制数码管的显示。

二、实验步骤1.连接电路:首先将数码管连接到单片机的io接口,并通过电路板连接相应的电源,确保电路正常工作。

2.编写程序:根据单片机的型号选择相应的编程软件,并编写相应的程序,实现数码管的动态扫描。

3.烧录程序:将编写好的程序通过烧录器烧录到单片机中,确保程序正确运行。

4.调试程序:连接电源,启动单片机,通过调试工具或串口助手查看程序运行情况,如有问题及时调试。

三、实验结果•经过上述步骤后,实验结果如下:1.数码管正常工作,能够按照预定的程序动态显示不同的数字或字符。

2.程序能够正确控制数码管的亮灭和显示内容,无闪烁和错位现象。

3.实验数据与预期结果相符。

四、实验思考1.实验中是否遇到任何问题?如果有,请列举并分析原因。

2.在实验过程中,是否有什么可以改进的地方?4.1 实验中的问题及原因分析•问题1:数码管显示不正常。

–原因分析:可能是数码管连接不正确,导致段选信号或位选信号无法控制。

–解决方法:检查数码管的连接,确保连接正确。

4.2 实验改进的地方1.加入按键控制:可将按键与单片机相连,通过按键来控制数码管的显示内容,增加实验的交互性。

2.加入计时功能:通过编写程序,实现数码管的计时功能,提高实验的实用性和趣味性。

五、经验总结1.通过本次实验,我深入理解了io控制数码管动态扫描的原理和方法。

2.实验中需要注意数码管的连接方式和编写程序的准确性,否则会导致实验结果不符预期。

3.实验过程中遇到问题要耐心分析原因,并及时采取相应的解决方法。

六、实验应用•io控制数码管动态扫描在实际工程中有广泛的应用,例如:1.电子时钟:可以通过io控制数码管动态扫描,实现时钟的显示功能。

数码管实验报告实验原理(3篇)

数码管实验报告实验原理(3篇)

第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. 了解数码管的工作原理和驱动方式。

数码管动态扫描显示实验综述

数码管动态扫描显示实验综述

实验三定时器和中断实验一、实验目的1、学习51单片机内部定时器的使用方法。

2、掌握中断处理程序的方法。

3、掌握数码管与单片机的连接方法和简单显示编程方法。

4、学习和理解数码管动态扫描的工作原理。

二、实验内容1、使用定时器T0,定时1秒,控制P1口发光管循环点亮。

2、使用定时器T0,定时1秒,控制1个数码管循环显示数字0~9,每秒钟数字加一。

3、使用软件定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。

4、使用定时器T0,定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。

三、实验电路图四、实验说明1、数码管的基本概念(1)段码数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。

本次实验使用的是共阴数码管,公共端是1、6,公共端置0,则某段选线置1相应的段就亮。

公共端1控制左面的数码管;公共端6控制右面的数码管。

正面看数码管的引脚、段选线和数据线的对应关系为:图1 数码管封装图图2 数据线与数码管管脚连接关系段码是指在数码管显示某一数字或字符时,在数码管各段所对应的引脚上所加的高低电平按顺序排列所组成的一个数字,它与数码管的类型(共阴、共阳)(2)位码位码也叫位选,用于选中某一位数码管。

在实验图中要使第一个数码管显示数据,应在公共端1上加低电平,即使P2.7口为0,而公共端6上加高电平,即使P2.6口为1。

位码与段码一样和硬件连接有关。

(3)拉电流与灌电流单片机的I/O 口与其他电路连接时,I/O 电流的流向有两种情况:一种是当该I/O 口为高电平时,电流从单片机往外流,称作拉电流;另一种是该I/O 口为低电平时,电流往单片机内流,称为灌电流。

一般I/O 的灌电流负载能力远大于拉电流负载能力,对于一般的51 单片机而言,拉电流最大4mA,灌电流为20mA。

一般在数码管显示电路中采用灌电流方式(用共阳数码管),可以得到更高的亮度。

本实验电路中采用拉电流方式(用共阴数码管)。

数码管动态显示的三种实验

数码管动态显示的三种实验

/****************************************************************************** ** 实验名: 动态显示数码管实验* 使用的IO : 数码管使用P0,P2.2,P2.3,P2.4键盘使用P1* 实验效果: 按矩阵键盘分别显示在数码管上面显示十六进制的0到F。

* 注意:******************************************************************************* /#include<reg51.h>//#include<intrins.h>#define GPIO_DIG P0#define GPIO_KEY P1sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;unsigned char code DIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsigned char KeyValue;//用来存放读取到的键值unsigned char KeyState; //记录按键的状态,0没有,1有unsigned char DisplayData[8];//用来存放要显示的8位数的值unsigned char Num;//用来存放中断的时候显示的第位数值void Delay50us(); //延时50usvoid KeyDown(); //检测按键函数void DigDisplay(); //动态显示函数void TimerConfiguration();//定时器初始化设置/****************************************************************************** ** 函数名: main* 函数功能: 主函数* 输入: 无* 输出: 无******************************************************************************* /void main(void){TimerConfiguration();KeyState=0; //初始化按键状态while(1){KeyDown();if(KeyState==1){DisplayData[7]=DisplayData[6];DisplayData[6]=DisplayData[5];DisplayData[5]=DisplayData[4];DisplayData[4]=DisplayData[3];DisplayData[3]=DisplayData[2];DisplayData[2]=DisplayData[1];DisplayData[1]=DisplayData[0];DisplayData[0]=DIG_CODE[KeyValue];KeyState=0;}// DigDisplay();}}/****************************************************************************** ** 函数名: TimerConfiguration* 函数功能: 定时器初始化* 输入: 无* 输出: 无******************************************************************************* /void TimerConfiguration(){TMOD=0X02;//选择为定时器0模式,工作方式2,仅用TRX打开启动。

简述数码管动态扫描过程

简述数码管动态扫描过程

简述数码管动态扫描过程
数码管动态扫描是一种常用的数字显示方法,它可以在有限的数码管引脚资源下实现多个数字的显示。

其基本原理是通过控制不同的数码管引脚的高低电平,将数字逐个显示出来。

具体过程如下:首先,将所有数码管的引脚设置为输入状态,然后选择一个数码管进行输出,将其引脚设置为输出状态。

接下来,在该数码管的对应引脚输出高电平,其他数码管引脚输出低电平,以激活该数码管的数字显示。

持续一段时间后,将该数码管的引脚设置为输入状态,然后选择下一个数码管进行输出。

这样依次循环扫描,不同的数码管在不同的时间段内被激活,从而实现多个数字的显示。

需要注意的是,在动态扫描过程中,扫描速度要与人眼的暂留效应相匹配,才能确保数字显示清晰而稳定。

- 1 -。

数码管动态扫描显示实验.

数码管动态扫描显示实验.

实验三定时器和中断实验一、实验目的1、学习51单片机内部定时器的使用方法。

2、掌握中断处理程序的方法。

3、掌握数码管与单片机的连接方法和简单显示编程方法。

4、学习和理解数码管动态扫描的工作原理。

二、实验内容1、使用定时器T0,定时1秒,控制P1口发光管循环点亮。

2、使用定时器T0,定时1秒,控制1个数码管循环显示数字0~9,每秒钟数字加一。

3、使用软件定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。

4、使用定时器T0,定时1秒,控制2个数码管循环显示秒数0~59,每秒钟数字加一。

三、实验电路图四、实验说明1、数码管的基本概念(1)段码数码管中的每一段相当于一个发光二极管,8段数码管则具有8个发光二极管。

本次实验使用的是共阴数码管,公共端是1、6,公共端置0,则某段选线置1相应的段就亮。

公共端1控制左面的数码管;公共端6控制右面的数码管。

正面看数码管的引脚、段选线和数据线的对应关系为:图1 数码管封装图图2 数据线与数码管管脚连接关系段码是指在数码管显示某一数字或字符时,在数码管各段所对应的引脚上所加的高低电平按顺序排列所组成的一个数字,它与数码管的类型(共阴、共阳)(2)位码位码也叫位选,用于选中某一位数码管。

在实验图中要使第一个数码管显示数据,应在公共端1上加低电平,即使P2.7口为0,而公共端6上加高电平,即使P2.6口为1。

位码与段码一样和硬件连接有关。

(3)拉电流与灌电流单片机的I/O 口与其他电路连接时,I/O 电流的流向有两种情况:一种是当该I/O 口为高电平时,电流从单片机往外流,称作拉电流;另一种是该I/O 口为低电平时,电流往单片机内流,称为灌电流。

一般I/O 的灌电流负载能力远大于拉电流负载能力,对于一般的51 单片机而言,拉电流最大4mA,灌电流为20mA。

一般在数码管显示电路中采用灌电流方式(用共阳数码管),可以得到更高的亮度。

本实验电路中采用拉电流方式(用共阴数码管)。

扫描数码显示器实验

扫描数码显示器实验

4.2 扫描数码显示器实验4.2.1 实验目的1. 学习状态机的原理及使用VHDL语言设计的方法;2.学习复杂数学系统的设计方法;3.掌握动态扫描数码显示器的设计方法。

4.2.2 实验设备PC微机一台,TD-EDA试验箱一台,SOPC开发板一块。

4.2.3 实验内容状态机是一类很重要的时序电路,是许多数字电路的核心部件。

根据状态机的输出方式可以分为Mealy型和Moore型两种状态机。

输出与状态有关而与输入无关的状态机类型称为Moore型状态机。

输出与状态及输入皆有关系的状态机称为Mealy型状态机。

状态机通常包含:说明部分、主控时序进程、主控组合进程、辅助进程几个部分。

利用状态机进行设计的步骤如下:1.分析设计要求,列出状态机所有可能的状态,并对每一个状态进行状态编码;2.根据状态转移关系和输出函数画出状态转移图;3.由状态转移图,用状态机语句描述状态机。

是数码管动态扫描显示的方式主要是为了节省I/O管脚和内部逻辑资源,它利用人的视觉暂留现象,将6位数数码管分别循环选通,配合传送相应的要显示的数据,只要扫描的速度足够快,就可以使人的视觉感到好像是6位数码管的同时显示。

一般扫描频率使用1KHz 就可以了。

本实验设计一个可以使6位数码管动态刷新显示的扫描电路。

分析系统的要求可知此设计需要包括6进制计数器、BCD译码器、数据选择多路开关等多个小单元模块。

实验需要设计一个模块来为6个数码块提供要显示的数据,设计一个六位数123456从左向右移动的方式,直到最高一位移出最右边数码块后,最低位6再从最左面数码块移进,从而实现循环移动。

4.2.4 实验步骤1.运行QuartusⅡ软件,建立新工程,工程名称及顶层文件名称为SCANLED。

2.选择File→New菜单,创建图形设计文件,在图形编辑器界面中选择Block Tool工具按钮,分别新建DAT、MULX、BCD_LED子模块,完成模块的定义及模块之间的连接,完成如图4-2-1所示的数码扫描显示器顶层设计电路图。

数码显示控制实训报告

数码显示控制实训报告

一、实验目的1. 掌握数码显示模块的基本原理和结构;2. 熟悉数码显示模块的驱动电路及接口技术;3. 学会编写数码显示控制程序,实现数字的实时显示;4. 提高动手实践能力和编程能力。

二、实验器材1. 实验平台:PC机、数码显示模块、实验箱、连接线等;2. 软件环境:C语言编译器、仿真软件等。

三、实验原理数码显示模块是一种常用的显示器件,它可以将数字信号转换为可视的数字显示。

常见的数码显示模块有七段数码管和液晶显示模块。

本实验以七段数码管为例,介绍数码显示控制的基本原理。

七段数码管由七个LED灯组成,分别对应数码管的七个段,即A、B、C、D、E、F、G。

当需要显示某个数字时,通过控制相应的LED灯亮灭,即可显示出该数字。

例如,显示数字“1”时,只需让A、B、C三个LED灯亮,D、E、F、G四个LED灯灭即可。

数码显示模块的驱动电路通常采用共阳极或共阴极方式。

本实验采用共阳极方式,即数码管的阴极连接在一起,通过向对应的阳极发送高电平信号来点亮LED灯。

四、实验内容1. 熟悉数码显示模块的结构和引脚功能;2. 设计并搭建数码显示模块的驱动电路;3. 编写数码显示控制程序,实现数字的实时显示;4. 测试程序,验证程序的正确性。

五、实验步骤1. 搭建数码显示模块的驱动电路,连接PC机、数码显示模块和实验箱;2. 在PC机上编写数码显示控制程序,包括初始化程序、显示程序和定时器中断程序;3. 编译并下载程序到实验箱;4. 打开实验箱,观察数码显示模块的显示效果;5. 调整程序参数,实现数字的实时显示。

六、实验结果与分析1. 搭建了数码显示模块的驱动电路,并连接了PC机、数码显示模块和实验箱;2. 编写了数码显示控制程序,实现了数字的实时显示;3. 测试了程序,验证了程序的正确性。

实验结果表明,通过编写数码显示控制程序,成功实现了数字的实时显示。

在实验过程中,遇到了以下问题:(1)数码显示模块的驱动电路设计不合理,导致数码管显示不正常。

led动态扫描

led动态扫描

LED动态扫描实验一、实验目的:1、掌握数码LED的动态扫描显示原理2、学习延时子程序的编写的使用二、实验原理:共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。

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

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

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

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

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

三、实验内容及过程:1、流程图2、实验中碰到的问题实验中我用了两排插孔来代替数码管的两排引脚焊接在实验板上,东西都焊好之后,把数码管插在插孔里,有的时候就会出现接触不好的状况,我认为,以后还是把数码管焊上去才不会出现接触的问题。

四、实验现象:在烧入程序后,数码管上的数字呈现从1开始逐个递增的显示五、程序:ORG 0000HMAIN: MOV 7AH,#00HMOV 7BH,#00HMOV 7CH,#00HMOV 7DH,#00HMOV R1,#7AHMAIN0: MOV A,7AHMAIN1: CJNE A,#0AH,BJWMOV 7FH,R1JW: MOV @R1,#00HINC R1INC @R1CJNE @R1,#0AH,MAIN2 CJNE R1,#7EH,JWMOV R1,7FHAJMP MAINMAIN2: MOV R1,7FHAJMP MAIN0BJW: ACALL YIMIAOINC AMOV 7AH,AAJMP MAIN1DIR: PUSH 0E0HMOV DPTR,#BIAOMOV R0,#7AH ;DataCacheMOV R2,#0FEHLD1: MOV A,@R0MOVC A,@A+DPTRLD1_1: MOV P0,AMOV P2,R2INC R0MOV A,R2ACALL DELAYJNB ACC.3,LD2RL AMOV R2,AJNB ACC.1,LD3 ;掃到第二位時加小數點SJMP LD1LD2: POP 0E0HRETLD3: MOV A,@R0MOVC A,@A+DPTRCLR ACC.7AJMP LD1_1BIAO: DB 0C0H,0F9H,0A4H,0B0H,99HDB 92H,82H,0F8H,80H,90HDELAY: MOV R7,#0FFHDEL1: MOV R6,#02HDJNZ R6,$DJNZ R7,DEL1RETYIMIAO: PUSH 0E0HMOV R5,#07HDELM1: MOV R4,#02HCAL: ACALL DIRDJNZ R4,CALDJNZ R5,DELM1POP 0E0HRETEND六、实验心得通过本实验,懂得如何安装kell软件以及实验仿真板,懂得KEIL C51单片机仿真软件的调试,初步了解并熟悉实验板上单片机I/O口和数码管的内部结构,能通过软件修改程序实现仿真板上数码管的动态显示,并希望通过多次试验对它有更多的了解。

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

实验六动态扫描数码显示实验
一、实验目的和要求
1. 学习THDPJ_2型实验系统的使用方法
2. 掌握数字、字符转换成显示段码的软件译码方法
3. 学习动态显示的原理和相关程序的编写
二、实验环境及设备
微机及THDPJ_2型微机实验系统
三、实验项目
(一)、实验原理
动态显示,也称扫描显示。

显示器由6个共阴极LED数码管构成。

单片机的P1口输出显示段码,经由一片74LS245驱动输出给LED管,由P0口输出位码,经由74LS06输出给LED管。

动态数码显示模块显示“168168”。

本实验用到80C51 MCU模块(C区),动态数码显示模块(A5区)。

动态数码显示电路原理如图所示。

(二)、实验步骤
1. 用8P数据线分别连接80C51 MCU模块的JD0C(P0口)、JD1C(P1口)到动态数码显示模块的JD2A5、JD1A5。

2. 用串行数据通信线连接计算机与仿真器,把仿真器插到80C51 MCU模块的40P锁紧插座中,请注意仿真器的方向:缺口朝上。

3. 将80C51 MCU模块的电源扭子开关S1C拨到上端,将动态数码显示模块的电源短路帽J1A5打在上端。

将直流稳压电源模块的直流控制开关S1G1打到ON,本实验所用到的相关模块的电源指示灯VCC亮。

4. 实验现象:动态数码显示模块显示“168168”。

四、思考题
如何修改程序,实现六位LED数码管只显示其中的三位?
实验六动态扫描数码显示实验源程序
DBUF EQU 30H
TEMP EQU 40H
ORG 0000H
LJMP DISP
ORG 0100H
DISP: MOV 30H,#8
MOV 31H,#6
MOV 32H,#1
MOV 33H,#8
MOV 34H,#6
MOV 35H,#1
MOV R0,#DBUF
MOV R1,#TEMP
MOV R2,#6
MOV DPTR,#SEGTAB
DP00: MOV A,@R0
MOVC A,@A+DPTR
MOV @R1,A
INC R1
INC R0
DJNZ R2,DP00
DISP0: MOV R0,#TEMP
MOV R1,#6
MOV R2,#1
DP01: MOV A,@R0
MOV P1,A
MOV A,R2
MOV P0,A
ACALL DELAY
MOV A,R2
RL A
MOV R2,A
INC R0
DJNZ R1,DP01
SJMP DISP0
SEGTAB:DB 3FH,06H,5BH ; 0,1,2
DB 4FH,66H,6DH ; 3,4,5
DB 7DH,07H,7FH ; 6,7,8,
DB 6FH,77H,7CH ; 9,A,B
DB 58H,5EH,7BH ; C,D,E
DB 71H,00H,40H ; F, ,-
DELAY: MOV R4,#03H
AA1: MOV R5,#0FFH
AA: NOP
NOP
DJNZ R5,AA
DJNZ R4,AA1
RET
END。

相关文档
最新文档