LED动态扫描显示实验

合集下载

.两个LED灯通过动态扫描显示0到99

.两个LED灯通过动态扫描显示0到99
2.用串行数据通信线连接计算机与仿真器,然后将仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上
3.打开Keil uVision4仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。
4.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。
5.观察实验结果并记录结果,进行分析。
单片机实验报告3
1、实验目的:
1.掌握数字、字符转换成显示段码的软件译码方法
2.动态显示的原理和相关程序的编写
3.两个LED灯通过动态扫描显示0到99.
2、实验工具
单片机最小应用系统、THKL-C51仿真器、单片机实验箱
3、实验步骤
单片机P0输出段码,P1口输出位控码,输出2个字符。
1.单片机最小应用系统的P0口JD1F接段码口a~H(JD1I),P1口JD2F接位码口S1~S2(JD2I)。
{
uchar i; //定义变量
uchar j; //定义变量
delay(20);
P1=0xff; //P1口全置一
while(1)//进入循环
{
for(i=0;i<10;i++)
for (j=0;j<10;j++)
{
P0=0x00; //P0口清0
{
P1=weima[1];
P0=duanma[i];//第二个位码显示当时的断码
delay(5);//延时5ms
P1=weima[0];
P0= duanma[j];/ /第一个位码显示当时的断码
delay(5); //延时5ms
P0=0x00; //重复上述过程,为了更加清楚的看到试验箱上效果,P0口清0

单线LED动态扫描显示屏

单线LED动态扫描显示屏

摘要本设计利用高速旋转中控制LED的亮灭,进行字符或图形的显示,控制器采用廉价的89C51单片机,完成显示内容的传输、字库的转换、显示等功能。

显示的内容给人一种漂浮的感觉,并且是360°全方位的显示,可以用于很多的场合,比如广告牌、家庭装饰、记分牌、娱乐显示等。

关键词:单片机,LED显示器,旋转显示一、设计目的与设计要求 (3)二、设计思路 (3)1、总体设计思路 (3)2、结构设计思路 (3)三、方案论证与比较 (4)1、显示电路的设计与比较 (4)2、升压电路的设计与比较 (4)3、相位检测电路的设计与比较 (5)4、电机的论证与选择 (5)四、系统理论分析与计算 (5)1.总体构成 (5)2.部分单元电路的设计 (6)(1)显示电路 (6)(2)单片机供电电路 (7)(3)升压电路 (8)(4)相位检测电路 (8)3.系统的软件设计 (9)四、设计制作过程中问题的解决 (10)五、小结 (10)一、设计目的与设计要求旋转显示屏是通过一个旋转的支架,支架上排列的LED受单片机控制在特定的位置亮或灭,从而显示出特定的字符或图形。

本作品主要是根据人的视觉暂留原理设计的。

人眼的视觉暂留时间是0.02S,如果采用3000转/S的高速电动机,带动LED高速旋转时,从视觉效果上就会产生一种柱状的LED显示屏的状态。

显示的字符或图形看起来是漂浮在空中的,不仅美观,而且新颖。

二、设计思路1、总体设计思路本显示屏应由机械旋转部分、显示电路、通信电路等几部分构成。

总体构成如下图所示:图1 总体构成图2、结构设计思路驱动电路板由直流电机带动其转动,在其上安装一显示屏。

显示屏的主体为17个白发红高亮发光二极管,由电动机通过中心轴带动框架进行高速旋转。

主体框架如下图所示:图2 框架设计图三、方案论证与比较1、显示电路的设计与比较方案一:采用普通发光二极管构成的显示屏。

普通发光二极管的亮度低,当电机转起来的时候,很难识别LED所形成的效果。

动态显示学号

动态显示学号

实验五学号的显示一、实验目的利用数码管动态扫描显示的原理编写程序,实现自己的学号的显示。

二、实验原理和内容实验内容:1在SmartSOPC实验箱上完成了LED数码管的动态显示“40710840”八个数字。

2放慢扫描速度演示动态显示的原理过程。

实验原理:数码管的八个段:a,b,c,d,e,f,g,h(h是小数点)都分别连接到SEG0-SEG7,8个数码管分别由八个选通信号DIG0-DIG7来选择,被选通的数码管显示数据,其余关闭。

三、实验步骤1启动QuartusⅡ建立一个空白工程,然后命名为dled.qpf。

2新建Verilog HDL源程序文件scan_led.v,输入程序代码并保存,进行综合编译知道成功为止。

3从设计文件创建模块,有scan_led.v生成名为scan_led.bsf 的模块符号文件。

4将光盘中EDA_Component目录下的int_div.bsf和int_div.v 拷贝到工程目录。

5添加常量兆功能模块。

6新建图形设计文件(顶层模块)命名为dled.bdf并保存。

7选择目标器件并对相应的引脚进行锁定。

8将dled.bdf设置为顶层实体。

对该工程文件进行全程编译处理,直到编译成功为止。

9连接硬件,下载程序。

10观察LED数码管上的数字是否为“40710840”;然后修改分频模块的参数为:F_DIV为24000000,F_DIV_WIDTH为25,再重新编译下载,观察这次LED数码管上显示的数据是否动起来了。

四、程序代码:module dec17s(clk,dig,seg);inputclk;output[7:0]seg;output[7:0]dig;reg [7:0]seg;reg [7:0]dig;reg[3:0]m;always@(posedgeclk)beginif (m==4'hf)m<=0;else m<=m+1;case(m)4'h0:begin dig<=8'b11111110; seg<=8'h99;end4'h1:begin dig<=8'b11111101; seg<=8'hc0;end4'h2:begin dig<=8'b11111011; seg<=8'hf8;end4'h3:begin dig<=8'b11110111; seg<=8'hf9;end4'h4:begin dig<=8'b11101111; seg<=8'hc0;end4'h5:begin dig<=8'b11011111; seg<=8'hf9;end4'h6:begin dig<=8'b10111111; seg<=8'ha4;end4'h7:begin dig<=8'b01111111; seg<=8'hf9;end default:seg<=8'hc0;endcaseendendmodule五、实验数据与结果通过同学跟老师的指导,再经过几次的调试,终于在数码管上显示出了自己的学号:40710121六、实验总结通过数码管编译显示自己的学号后8位,学会数码管动显示的原理,以及如何编写程序来实现数码管的静态与动态显。

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

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

实验三准时器和中止实验一、实验目的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数据线与数码管管脚连结关系段码是指在数码管显示某一数字或字符时,在数码管各段所对应的引脚上所加的高低电平按次序摆列所构成的一个数字,它与数码管的种类(共阴、共阳)和与数据线的连结次序相关。

对应数据线D7D6D5D4D3D2D1D0对应显示段e f DP g c d b a显示数字段码00CFH11001111103H0000001125DH0101110135BH01011011493H1001001150DAH1101101060DEH11011110743H0100001180DFH1101111190DBH11011011( 2)位码位码也叫位选,用于选中某一位数码管。

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

位码与段码相同和硬件连结相关。

LED显示器动态扫描驱动电路要点

LED显示器动态扫描驱动电路要点

LED显示器动态扫描驱动电路要点1.动态扫描的原理LED显示器的动态扫描技术是利用人眼感觉特性,在屏幕上频繁地切换显示不同的图像,以达到连续的视觉效果。

在动态扫描中,将LED屏幕分为多个行,每个行被分为多个点,利用复用技术来使得每个点都能够被控制。

将一些点组成一个亮区,用一个行码来表示,一个屏幕由多个亮区组成。

2.动态扫描的控制动态扫描的控制需要一个控制器,控制器的主要功能是将输入的图像数据转化为亮区数据,以及控制LED的亮度和颜色等参数。

控制器需要一个时钟信号作为基准,根据时钟信号的不同周期来控制LED的刷新率。

控制器包含以下几个模块:2.1 扫描模块扫描模块控制着对每一行的扫描。

在刷新屏幕时,先要将行选通信号送到扫描模块中,然后才能对这一行的每一个点进行控制。

扫描模块的基本功能是对行信号进行解码,产生选中特定行的控制信号。

2.2 显示数据存储模块动态扫描需要在一个很短的时间内完成LED所有的控制,所以,对于LED屏幕的显示数据,需要先通过存储方式存起来,然后再逐行依次刷出。

每一行对应一个存储单元,在扫描过程中,将显示数据依次放入每个存储单元中,然后逐个进行控制亮度,以达到显示效果。

2.3 控制电路控制电路主要是用来进行控制亮度的模块,通过对电流进行控制来实现亮度可调的情况。

此外,还需要通过驱动电路对LED进行电流控制,保证LED的稳定工作。

3.动态扫描中的电路要点动态扫描技术的实现过程中,需要注意以下几个电路要点:3.1 驱动电流为了控制LED的亮度,需要对其进行电流控制。

对于LED亮度的选择,需要考虑整个屏幕的亮度,并根据使用环境进行相应的设置。

同时,LED的工作电流也要在一定范围内进行选择,以保证其正常工作。

3.2 驱动管的选择驱动管的选择需要考虑不同的传导损失,以及驱动管的最大工作电压、最大工作电流等参数。

为了保证管子的寿命,需要尽可能减少管子工作时开关的次数。

3.3 时序控制时序控制是整个动态扫描驱动电路的关键部分,对于不同的场合,需要根据具体要求对其进行选择。

简述七段数码管动态扫描显示原理

简述七段数码管动态扫描显示原理

简述七段数码管动态扫描显示原理
七段数码管动态扫描显示原理是指通过对七段数码管的各段进行逐个刷新,以实现数字、字母和符号等信息的显示。

七段数码管由7个LED灯组成,分别代表数字0~9和字母A~F等,可以通过控制各个LED的亮灭状态来显示不同的字符。

动态扫描显示原理是通过快速地在各个数码管之间切换显示内容,使得人眼无法察觉到切换的过程,从而产生连续的显示效果。

具体实现过程如下:
1. 将需要显示的数字或字符转换为相应的LED点亮状态,通过控制各个数码管的引脚来实现。

2. 通过控制锁存器的输入使得数据在锁存器中存储。

3. 通过控制锁存器的输出使得数据从锁存器输出到数码管的控制引脚上。

4. 通过控制位选锁存器的输出,选择显示的数码管。

5. 通过控制位选锁存器的使能引脚,控制数码管的亮灭状态。

6. 循环执行上述步骤,不断刷新各个数码管的显示内容,使得整个显示效果连续而流畅。

7. 根据需要的显示速度和亮度,可以调整刷新频率和亮灭时间的设置。

通过这种动态扫描的方式,只需要控制一部分引脚,就能够实现多
个七段数码管的显示,从而减少了所需的引脚数量和控制复杂度,提高了显示的效率和可靠性。

4led 动态扫描显示及按键实验感想

4led 动态扫描显示及按键实验感想

4led 动态扫描显示及按键实验感想
在完成4LED动态扫描显示及按键实验后,我深深感受到了科技的实际应用与电路设计的美妙结合。

这不仅是一次对于理论知识的学习和巩固,更是一次将知识转化为实践的宝贵体验。

实验中,我们通过编程控制4个LED灯的亮灭,使其按照特定的模式进行动态扫描。

这其中涉及到了数字信号处理、逻辑门电路、微控制器等多个知识点。

每一个LED灯的亮与灭,都代表着一串代码的执行,每一次的动态扫描,都是程序在控制板上跑动的轨迹。

在实验过程中,我深刻体会到了编程的魅力。

通过编写程序,我可以精确地控制每一个LED灯的亮灭时间,甚至可以创造出复杂的扫描效果。

而按键的部分更是增添了实验的趣味性。

通过按键,我可以随时改变LED的扫描模式,每一次按键,都像是给程序注入了一个新的灵魂,使其焕发出不同的光彩。

当然,实验过程中也遇到了不少困难。

例如,如何确保4个LED 灯能够均匀地亮起与熄灭,如何处理按键抖动问题等。

但正是这些问题的存在,使得整个实验更加具有挑战性。

通过不断地尝试、调试,我最终克服了这些困难,也更加深入地理解了相关知识。

这次实验让我认识到,理论知识的学习固然重要,但只有将其应用于实践中,才能真正体会到知识的价值。

同时,实验中的每一个细节、每一个问题,都是对自身能力的锻炼与提升。

通过不断地实践与
尝试,我相信自己能够更好地掌握知识,更好地将理论知识与实践相结合。

未来,我计划进一步深入学习微控制器编程、电路设计等相关知识,希望能够为未来的科技应用做出更大的贡献。

同时,我也希望能够将这次实验的经验分享给更多的同学,共同探索科技的奥秘。

电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化(EDA)_数字时钟程序模块(LED数码管显示)_实验报告

电子设计自动化(EDA)—数字时钟LED数码管显示二、实验内容和实验目的1. 6个数码管动态扫描显示驱动2. 按键模式选择(时\分\秒)与闹钟(时\分)调整控制,3. 用硬件描述语言(或混合原理图)设计时、分、秒计数器模块、闹钟模块、按键控制状态机模块、动态扫描显示驱动模块、顶层模块。

要求使用实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒;要求模式按键和调整按键信号都取自经过防抖处理后的按键跳线插孔。

实验目的: 1)学会看硬件原理图, 2)掌握FPGA硬件开发的基本技能3)培养EDA综合分析、综合设计的能力三、实验步骤、实现方法(或设计思想)及实验结果主要设备: 1)PC机, 2)硬件实验箱, 3)Quartus II软件开发平台。

1.打开Quartus II , 连接实验箱上的相关硬件资源, 如下图1所示。

2.建立新文件, 选择文本类型或原理图类型。

3. 编写程序。

4.编译5. 仿真, 加载程序到芯片, 观察硬件输出结果(数码管显示)6.结果正确则完成。

若结果不正确, 则修改程序, 再编译, 直到正确。

模24计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count24 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count24;ARCHITECTURE arc OF count24 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk,en)BEGINhh<=a;hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0010" AND b="0011") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;IF(a="0010" AND b="0010") THENcout<='1';ELSE cout<='0';END IF;END IF;END IF;END PROCESS;END arc;模60计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY count60 ISPORT(clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END count60;ARCHITECTURE arc OF count60 ISSIGNAL a,b:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL sout:STD_LOGIC;BEGINPROCESS(clk)BEGINhh<=a; hl<=b;IF(clk'EVENT AND clk='1') THENIF(en='1') THENIF(a="0101" AND b="1001") THENa<="0000";b<="0000";ELSE IF(b="1001") THENa<=a+'1';b<="0000";ELSE b<=b+'1';END IF;END IF;END IF;END IF;END PROCESS;sout<='1' WHEN a="0101" AND b="1001" ELSE '0';cout<=sout AND en;END arc;4-7显示译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY segment4to7 ISPORT(s:IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g:OUT STD_LOGIC);END segment4to7;ARCHITECTURE arc OF segment4to7 IS SIGNAL y:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGINa<= y(6);b<= y(5);c<= y(4);d<= y(3);e<= y(2); f<= y(1);g<= y(0);PROCESS(s)BEGINCASE s ISWHEN "0000"=>y<="1111110"; WHEN "0001"=>y<="0110000"; WHEN "0010"=>y<="1101101"; WHEN "0011"=>y<="1111001"; WHEN "0100"=>y<="0110011"; WHEN "0101"=>y<="1011011"; WHEN "0110"=>y<="1011111"; WHEN "0111"=>y<="1110000"; WHEN "1000"=>y<="1111111"; WHEN "1001"=>y<="1111011"; WHEN OTHERS=>y<="0000000"; END CASE;END PROCESS;END arc;带闹钟控制模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mode_adjust_with_alarm ISPORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END mode_adjust_with_alarm;ARCHITECTURE arc OF mode_adjust_with_alarm ISTYPE mystate IS (s0,s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS (c_state)BEGINCASE c_state ISWHEN s0=> next_state <= s1; clkh<=clk1hz; clkm<=clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="000";WHEN s1=> next_state <= s2; clkh<=adjust; clkm<= '0'; clks<='0';enh<='1'; enm<='0';enha<='0'; clkh_a<= '0';clkm_a<= '0'; mode_ss <="001";WHEN s2=> next_state <= s3; clkh<= '0'; clkm<=adjust; clks <= '0';enh<='0';enm<='1';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="010";WHEN s3=> next_state <= s4; clkh<= '0'; clkm<= '0'; clks<=adjust;enh<='0'; enm<='0';enha<='0'; clkh_a<= '0'; clkm_a<= '0'; mode_ss <="011";WHEN s4=> next_state <= s5; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0';enm<='0';enha<='1'; clkh_a<=adjust; clkm_a<= '0'; mode_ss <="100";WHEN s5=> next_state <= s0; clkh<= clk1hz; clkm<= clk1hz; clks<=clk1hz;enh<='0'; enm<='0'; enha<='0'; clkh_a<= '0'; clkm_a<=adjust; mode_ss <="101";END CASE;END PROCESS;PROCESS (mode)BEGINIF (mode'EVENT AND mode='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scan ISPORT(clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END scan;ARCHITECTURE arc OF scan ISTYPE mystate IS (s0, s1,s2,s3,s4,s5);SIGNAL c_state,next_state: mystate;BEGINPROCESS ( c_state )BEGINCASE c_state ISWHEN s0=> next_state <=s1; ss<="010";WHEN s1=> next_state <=s2; ss<="011";WHEN s2=> next_state <=s3; ss<="100";WHEN s3=> next_state <=s4; ss<="101";WHEN s4=> next_state <=s5; ss<="110";WHEN s5=> next_state <=s0; ss<="111";END CASE;END PROCESS;PROCESS (clk256hz)BEGINIF (clk256hz'EVENT AND clk256hz='1') THENc_state<=next_state ;END IF;END PROCESS;END arc;复用模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux ISPORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END mux;ARCHITECTURE arc OF mux ISSIGNAL a,hhtmp,hltmp,mhtmp,mltmp,shtmp,sltmp:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(mode_ss)BEGINCASE mode_ss ISWHEN "000"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "001"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "010"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "011"=>hhtmp<=hh; hltmp<=hl; mhtmp<=mh; mltmp<=ml; shtmp<=sh; sltmp<=sl;WHEN "100"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN "101"=> hhtmp<=hha; hltmp<=hla; mhtmp<=mha; mltmp<=mla; shtmp<=sh; sltmp<=sl;WHEN OTHERS=>hhtmp<="0000";hltmp<="0000";mhtmp<="0000";mltmp<="0000";shtmp<="0000";sltmp<="0000"; END CASE;END PROCESS;PROCESS(ss)BEGINCASE ss ISWHEN "010"=> a <=hhtmp;WHEN "011"=> a <=hltmp;WHEN "100"=> a <=mhtmp;WHEN "101"=> a <=mltmp;WHEN "110"=> a <=shtmp;WHEN "111"=> a <=sltmp;WHEN OTHERS => a <="0000";END CASE;y<=a;END PROCESS;alarm<='1' WHEN ((hh=hha)AND(hl=hla)AND(mh=mha)AND(ml=mla)) ELSE '0';END arc;闪烁模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY blink_control ISPORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END blink_control;ARCHITECTURE arc OF blink_control ISBEGINPROCESS (ss,mode_ss)BEGINIF(ss="010" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="001") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="010") THEN blink_en<='1';ELSIF(ss="110" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="111" AND mode_ss="011") THEN blink_en<='1';ELSIF(ss="010" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="011" AND mode_ss="100") THEN blink_en<='1';ELSIF(ss="100" AND mode_ss="101") THEN blink_en<='1';ELSIF(ss="101" AND mode_ss="101") THEN blink_en<='1';ELSE blink_en<='0';END IF;END PROCESS;END arc;Top文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY design3 ISPORT (mode,adjust,clk1hz,clk2hz,clk256hz,clk1khz:IN STD_LOGIC;alarm,a,b,c,d,e,f,g:OUT STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END design3;ARCHITECTURE arc OF design3 ISCOMPONENT mode_adjust_with_alarm PORT (adjust,mode,clk1hz: IN STD_LOGIC;clkh,enh,clkm,enm,clks,enha: OUT STD_LOGIC;clkh_a,clkm_a:OUT STD_LOGIC;mode_ss: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT scan PORT (clk256hz:IN STD_LOGIC;ss:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END COMPONENT;COMPONENT segment4to7 PORT (s: IN STD_LOGIC_VECTOR(3 DOWNTO 0);a,b,c,d,e,f,g: OUT STD_LOGIC);END COMPONENT;COMPONENT mux PORT(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla:IN STD_LOGIC_VECTOR(3 DOWNTO 0);ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);y:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);alarm:OUT STD_LOGIC);END COMPONENT;COMPONENT blink_control PORT(ss,mode_ss:IN STD_LOGIC_VECTOR(2 DOWNTO 0);blink_en:OUT STD_LOGIC);END COMPONENT;COMPONENT count24 PORT (clk,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;COMPONENT count60 PORT (clk ,en:IN STD_LOGIC;cout:OUT STD_LOGIC;hh,hl:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END COMPONENT;SIGNALclkh,enh,clkm,enm,clks,clkh_a,clkm_a,coutm,couts,coutm_en,couts_en,cout,vcc,coutma_en,coutma,alarm1,bli nk_en,blink_tmp,enha: STD_LOGIC;SIGNAL mode_ss,ss1:STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,y,i:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINvcc<='1';coutm_en <= enh OR coutm;couts_en <= enm OR couts;coutma_en<= enha OR coutma;blink_tmp<=blink_en and clk2hz;i(3)<=y(3) OR blink_tmp;i(2)<=y(2) OR blink_tmp;i(1)<=y(1) OR blink_tmp;i(0)<=y(0) OR blink_tmp;ss<=ss1;alarm<=alarm1 AND clk1khz;u1:mode_adjust_with_alarmPORT MAP( adjust,mode,clk1hz,clkh,enh,clkm,enm,clks,enha,clkh_a,clkm_a,mode_ss);u2:count24 PORT MAP(clkh,coutm_en,cout,hh,hl);u3:count60 PORT MAP(clkm,couts_en,coutm,mh,ml);u4:count60 PORT MAP(clks,vcc,couts,sh,sl);u5:count24 PORT MAP(clkh_a,coutma_en,cout,hha,hla);u6:count60 PORT MAP(clkm_a,vcc,coutma,mha,mla);u7:mux PORT MAP(hh,hl,mh,ml,sh,sl,hha,hla,mha,mla,ss1,mode_ss,y,alarm1);u8:scan PORT MAP(clk256hz,ss1);u9:blink_control PORT MAP(ss1,mode_ss,blink_en);u10:segment4to7 PORT MAP(i,a,b,c,d,e,f,g);END arc;实验结果:数字钟包括正常的时分秒计时, 实验箱左下角的6个动态数码管(DS6 A~DS1A)显示时、分、秒。

PLC实现LED数码管动态扫描数据显示

PLC实现LED数码管动态扫描数据显示

PLC实现LED数码管动态扫描数据显示PLC的数据显示功能一直是困扰PLC使用的难题。

在PLC的应用中,经常要监测一些重要数据,但PLC的数据显示通常是使用外部显示设备,如显示屏或触摸屏,而这些显示设备的价格一般比较昂贵,对一些小型系统来说更浪费。

因此,如何显示PLC的数据,并尽可能做到高效率、高稳定性、抗干扰能力强、硬件投资少,是许多设计中需要考虑的问题。

笔者使用的西门子S7-200PLC中有专门的指令控制LED数码管显示,SEGIN,OUT指令就是将IN端输入字节的低4位确定的16进制数自动转换为相对应的7段LED数码管各段的代码,并送到输出字节OUT端显示。

若采用静态LED数码显示,PLC显示一位十进制数据需要7个输出点予以控制,如果要显示n位数据,则需要7n个输出点。

所以,使用这种方式对于显示数据的位数较多时,需要大量的输出点,而PLC的价格是以输入输出点数来计算的,这直接导致硬件成本的上升,鉴于此种原因,寻找一种廉价的显示技术就显得尤为必要。

提出借鉴单片机的LED数码管动态扫捕显示原理,结合PLC周期性扫捕的特点,采用PLC直接输出数字量驱动数码管,将PLC开关量输出分为两部分,一部分用作数据输出,另一部分用作控制数码管公共端信号的输出。

利用人眼的余辉效应,循环点亮每个数码管,本方法操作简单、成本低廉。

1设计实现所谓动态扫描就是利用PLC周期性扫描的特点,在编程时要做到每个周期只有一个数码管能够形成通电回路,从而得电点亮,因为一个扫描周期的时间过短,只有几十ms,所以人眼感觉每个数码管都是均匀通电亮着的,同时没有拖尾现象。

1.1硬件设计设计方法的硬件电路实现是一个起动按钮SB1和一个停止按钮SB2,两个数码管的a、b、c、d、e、f、g段分别连在一起,再与PLC的输出端Q0.0~Q0.7通过限流电阻连接,两个数码管的公共端com1和com2分别通过三极管由PLC的输出端Q1.0和Q1.1控制,其接线原理如图1所示。

实验5 LED数码管动态显示电路的设计与仿真

实验5  LED数码管动态显示电路的设计与仿真

实验项目五 LED数码管动态显示电路的设计与仿真[实验目的]1.掌握LED数码管的动态显示原理2.掌握LED数码管动态显示电路的设计3.掌握对LED数码管动态显示的控制方法[实验原理]动态扫描显示原理:动态显示方式是指逐位轮流点亮每位显示器(称为扫描),即每个数码管的位选被轮流选中,多个数码管公用一组段选。

对于每一位显示器来说,每隔一段时间点亮一次。

显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。

调整电流和时间参数,可实现亮度较高较稳定的显示。

若显示器的位数不大于8位,则控制显示器公共极电位只需8位口(称为扫描口),控制各位显示器所显示的字形也需一个8位口(成为段数据口)。

[实验仪器]PC机一台[Proteus用到器件的关键词]单片机(AT89C52)、六位一体数码管(7SEG-6MPX6-CC-BLUE)[实验内容与步骤]1.用Proteus软件设计出六位一体LED数码管动态显示电路原理图。

2.用Keil编写程序。

首先通过单片机的P3口逐个选通数码管的位选端,再通过单片机的P2口送出要显示的字符,最后调整每个数码管点亮时间,最终便可以看到动态显示的效果。

3.将HEX文件装载到AT89C52中,单击Start按钮开始动态仿真。

[实验数据记录];******六位一体数码管动态显示程序*******;ORG 0000HLJMP MAINORG 0050HMAIN: MOV DPH,#02HAGAIN: MOV R2,#00H ;段选端指针计数器MOV R3,#50H ;位选端指针计数器LP: MOV DPL,R3MOVC A,@A+DPTRMOV P3,AINC R3CLR AMOV DPL,R2MOVC A,@A+DPTRMOV P2,AMOV R2,DPLINC R2CLR ALCALL DELAYMOV P3,#0FFH ;为了去掉余辉,在下一次显示之前关掉位选端CJNE R2,#6,LPAJMP AGAINDELAY: MOV R0,#01FHDL1: MOV R1,#01FHDL2: NOPNOPDJNZ R1,DL2DJNZ R0,DL1RETORG 0200HTAB1: DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;段选代码,对应0123456789 ORG 0250HTAB2: DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH ;位选代码,分别选通第1,第2,第3,第4,;第5,第6个数码管END[实验数据处理] [实验结果及讨论]。

七段LED数码管字形扫描动态显示技术

七段LED数码管字形扫描动态显示技术

收稿日期:2008-03-25作者简介:鄢积分(1963-),女,江西南昌人,江西蓝天学院,工程师。

研究方向:机电一体化。

朱洪涛(1962-),男,江西南昌人,南昌大学,教授,博导。

研究方向:精密仪器及机械。

七段LE D 数码管字形扫描动态显示技术鄢积分1朱洪涛2(1、江西蓝天学院机电所江西南昌330098;2、南昌大学机电学院江西南昌330031) 摘要:在综合叙述和分析单片机控制系统中常用的七段LE D 数码管显示接口技术的设计思路与性能差异的基础上,介绍一种特别适合于需要同时驱动较多位数数码管的场合使用的字形扫描动态显示新技术,其硬件接口电路与软件接口编程均比较简单,同时又能很好地保证显示的亮度。

通过提供实例,已经获得工程应用。

关键词:单片机七段LE D 数码管字形扫描中图分类号:TP39文献标识码:B 文章编号:123(2008增)-029-030 引言微型计算机,尤其是单片机控制系统中,七段LE D 数码管以其简单直观、主动发光、布置灵活、经济性好等特点,成为首选的显示输出设备。

数码管显示接口常用的有静态与动态显示二种不同方式,二者在硬件开销(包括接口资源、PCB 板面积等)与软件开销(包括数据维护、显示码计算等)各有所长,均获得广泛的应用。

其中,显示位数较少时常采用静态显示方式以追求软件的最大简化,显示位数较多时则常采用动态显示方式以追求硬件的最大简化。

1 动态显示技术分析动态显示接口电路以字位扫描方式工作的最为常见,一般的单片机教科书中均予以详细介绍[1][2][3][4]。

其主要工作原理为:各数码管按位分时扫描显示。

在该动态显示接口硬件电路中,有一个8位的字段驱动器(译码方式时还包括一个译码器),各数码管的同名字段(包括小数点字段)并联后,接在相应的字段驱动线上。

同时有若干位(与数码管位数相当)的位驱动器,各位数码管的公共端各自接不同的位扫描线。

动态扫描信号加载在位扫描线上,所需输出的显示码与扫描信号配合加载在字段驱动线上,各数码管按一定的时间间隔轮流使用字段驱动器。

LED实验报告

LED实验报告

实验室开放项目实验报告实验项目名称:基于单片机的LED点阵显示屏的设计与实现实验室名称:电工电子实验教学中心实验人员:黄建伟 B08051128谢寒冰B08051130王跃超B08051108指导老师:张腾飞目录第一章前言第二章实验目的、内容及要求2.1 实验目的2.2 实验内容2.3 实验要求第三章背景信息第四章 LED屏幕介绍4.1 LED点阵介绍4.2 LED点阵模块介绍4.3 LED显字大屏介绍第五章 51单片机介绍5.1单片机概述5.2 89C52单片机介绍第六章开发环境keil简介6.1.系统概述6.2使用简介第七章下载软件STC_ISP简介7.1概述7.2.使用简介第八章更换汉字流程8.1.提取字模8.2码字(byte)高低位交换(使用VC6.0)8.3 编译、链接、运行、下载。

(使用keil、STC-ISP)第九章系统程序分析第十章Proteus 的使用介绍10.1 Proteus 6 Professional界面简介10.2操作简介第十一章仿真实现11.1 仿真用程序11.2 仿真结果实物开发附件:烧录LED程序第一章前言根据《南京邮电大学实验室开放管理办法》,为了充分发挥我校实验室的资源优势,进一步提高实验室利用率,促进实验教学改革,创造有利于培养具有国际竞争能力的高素质创新型人才的良好育人环境,为学生提供自主发展和实践锻炼的空间,激发学生的创新热情和创新意识,全面培养学生的科学作风、创新思维、创业能力和实践动手能力,促进社会服务,组织了实验室开放项目的申报、评审工作。

在结合自身情况,对选题进行调查和了解后,我选择并参与了基于单片机的LED点阵显示屏的设计与实现的实验项目。

现在我们以实验报告的形式来阐述我们的设计思想。

第二章实验目的、内容及要求实验目的:通过大学生实验创新环节来巩固和加深对嵌入式单片机系统的理解,熟练掌握LED点阵显示屏的设计和控制方法,具备嵌入式单片机控制系统软硬件调试和系统设计的开发技能。

实验2LED数码管动态和静态显示实验

实验2LED数码管动态和静态显示实验

广东海洋大学学生实验报告书实验名称实验2 LED数码管动态和静态显示课程名称计算机控制技术系自动化系专业自动化班级1132 学生姓名袁明星/201311632223 实验地点科技楼403实验日期王波成绩指导教师一、设计目的:LED数码管动态和静态显示二、设计任务:1.LED数码管动态显示,动态扫描时间间隔可调;2.LED数码管静态显示,显示动态扫描时间间隔;三、操作流图:步骤:1.上排的三个数码管用静态扫描方式,显示动态扫描时间间隔;2.下排的6用数码管用动态扫描方式,显示时钟;3.一个独立的按键,每按一次,可增加动态扫描时间间隔四、实验要求:1、态度严谨,独立完成,勤于思考,善于总结;2、认真完成实验报告。

ORG 0000HAJMP STARTORG 0003HAJMP INT_0ORG 000BHAJMP INT_T0ORG 0030H START:MOV 30H,#0 ;秒MOV 31H,#0 ;分MOV 32H,#0 ;时MOV 33H,#1MOV SP,#40HSETB IT0MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HMOV IE,#83HSETB TR0MOV R0,#20V1: MOV A,33HMOV B,#100DIV ABMOV DPTR,#TABMOVC A,@A+DPTRMOV P3,#4FHMOV P2,AMOV A,BMOV B,#10DIV ABMOV DPTR,#TABMOVC A,@A+DPTRMOV P3,#2FHMOV P2,AMOV A,BMOV DPTR,#TABMOVC A,@A+DPTRMOV P3,#1FHMOV P2,AMOV A,30HMOV B,#10DIV ABMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#02H MOV P0,AACALL DELAY MOV A,BMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#01H MOV P0,AACALL DELAYMOV A,31HMOV B,#10DIV ABMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#08H MOV P0,AACALL DELAY MOV A,BMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#04H MOV P0,AACALL DELAYMOV A,32HMOV B,#10DIV ABMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#20H MOV P0,AACALL DELAY MOV A,BMOV DPTR,#TAB MOVC A,@A+DPTR MOV P1,#10H MOV P0,AACALL DELAYAJMP V1INT_T0:PUSH ACCDJNZ R0,NEXTMOV A,30HINC ACJNE A,#60,NEXT1MOV 30H,#0MOV A,31HINC ACJNE A,#60,NEXT2MOV 31H,#0MOV A,32HINC ACJNE A,#24,NEXT3MOV 32H,#0AJMP NEXT4NEXT1: MOV 30H,AAJMP NEXT4NEXT2: MOV 31H,AAJMP NEXT4NEXT3: MOV 32H,ANEXT4: MOV R0,#20 NEXT: MOV TH0,#3CHMOV TL0,#0B0HPOP ACCRETIINT_0: PUSH ACCMOV A,33HCJNE A,#100,NEXT01MOV 33H,#1AJMP NEXT0NEXT01:MOV B,#10MUL ABMOV 33H,ANEXT0: POP ACCRETIDELAY:MOV R7,33HDEL1: MOV R6,#4NOPDEL2: MOV R5,#123DEL3: DJNZ R5,DEL3DJNZ R6,DEL2DJNZ R7,DEL1RETTAB: DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H END六、实验心得:通过实验,让我对这门课程有了更深入的了解。

16x16 LED点阵实验

16x16 LED点阵实验

实验名称:16x16 LED点阵实验实验目的:利用单片机I/O口实现LED点阵的行扫描动态显示。

实验原理:1、LED显示器的基本结构:七段显示器:将发光二极管封装成数码显示的形式。

共阳七段显示器:共阴七段显示器:点阵式显示器:发光二极管封装成点阵形式,构成不同的字符甚至汉字、图形。

发光二极管排列成矩阵,由亮与暗来产生字符或图形。

每一行的阳极连在一起,每一列的阴极连在一起。

2、点阵显示的原理:点阵显示器每一列的阴极连在一起,对每一列而言相当于一个共阴显示器。

同时每一行的阳极连在一起,相当于七段显示器的笔划。

这样,可以把5X7的发光二极管点阵看作一个五位显示器。

可采用动态显示电路,以笔划锁存器控制行信号,以位锁存器控制列信号。

3、实验原理图使用两片8位输出锁存移位寄存器74HC595(三态输出、串入并出),将单片机I/O口发出的串行数据转换为并行数据LD_QA~LD_QP,作为16×16 LED点阵显示器的行线,使用另外两片8位74HC595作为 16×16 LED点阵显示器的列线LD_1~LD_16。

当行输出高电平、列输出低电平时,可以点亮点阵。

74HC595:LD-QA~LD-QP:点阵行控制信号LD-1~LD-16:点阵列控制信号SER(14脚):串行数据输入端-SCLR(10脚):低电平时将移位寄存器的数据清零。

通常将它接Vcc。

SCK(11脚):上升沿时将串行数据移入移位寄存器。

RCK(12脚):上升沿时移位寄存器的数据锁存入数据寄存器。

-G(13脚): 高电平时禁止输出(高阻态)时序图:实验内容:在16×16LED点阵上分别用静态方式和滚屏方式显示自己的姓(行扫描)。

实验步骤:使用导线将A2区的P10~P14与C3区的L_DAT_H 、L_DAT_L、L_CLK、L_OE 、 L_STR实验设计:电路图:(修改后加上了74HC595输出端口与LED点阵相连的端口名称)1、静态方式:流程图:代码及注释:HL EQU 70H ;行信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0口连行信号输入端LD EQU P1.1 ;P1.1口连列信号输入端SCK EQU P1.2 ;P1.2口连移位寄存器OE EQU P1.3 ;P1.3口连使能端RCK EQU P1.4 ;P1.4口连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00H ;字模表起始地址偏移量MOV HL,#01H ;行扫描信号的初值0001HMOV HL+1,#00HLOOP:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存入内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列高位数据,存入内存地址中LCALL SENDD ;调用传输数据的程序LCALL DELAY ;调用延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移行扫描信号低8位MOV HL,AMOV A,HL+1RLC A ;左移行扫描信号高8位MOV HL+1,AINC R1CJNE R1,#20H,LOOP ;判断一轮扫描是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号高八位地址MOV R4,HL+1 ;行信号高八位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK ;判断高8位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低8位地址MOV R4,HL ;行信号低8位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK1 ;判断低8位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序MOV R7,#50DELAY1:MOV R6,#10DELAY2:DJNZ R6,$DJNZ R7,DELAY1RETDISPLAY:DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END2、滚屏方式流程图:代码及注释:HL EQU 70H ;行信号低位内存地址LL EQU 72H ;列信号低位内存地址HD EQU P1.0 ;p1.0口连行信号输入端LD EQU P1.1 ;P1.1口连列信号输入端SCK EQU P1.2 ;P1.2口连移位寄存器OE EQU P1.3 ;P1.3口连使能端RCK EQU P1.4 ;P1.4口连锁存器ORG 8000H ;硬件仿真程序LJMP MAINORG 8100H ;硬件仿真程序MAIN:MOV DPTR,#DISPLAY ;字模表地址MOV R1,#00HMOV R7,#00H ;R7用来表示字模表起始位置偏移量LOOP:MOV R5,#20 ;R5用来表示延时,改变R5的值可改变滚屏速度LOOP1:MOV R6,#10H ;R6用来判断是否扫描完一轮MOV A,R7 ;将R7的值赋值给R1MOV R1,AMOV HL,#01H ;行扫描信号的初值0001HMOV HL+1,#00HLOOP2:MOV A,R1MOVC A,@A+DPTRMOV LL,A ;找到列低位数据,存入内存地址中INC R1MOV A,R1MOVC A,@A+DPTRMOV LL+1,A ;找到列高位数据,存入内存地址中LCALL SENDD ;调用传输数据的程序LCALL DELAY ;调用延时程序CLR C ;位处理累加器清零MOV A,HLRLC A ;左移行扫描信号低八位MOV HL,AMOV A,HL+1RLC A ;左移行扫描信号高八位MOV HL+1,AINC R1DEC R6CJNE R6,#00H,LOOP2 ;通过R6判断是否扫描完一轮,R6减为0,一轮扫描结束DJNZ R5,LOOP1 ;通过R5判断一帧的延时是否达到INC R7 ;改变字模表的偏移量INC R7 ;R7连续加2,相当于换行CJNE R7,#40H,LOOP ;判断字模表是否结束LJMP MAINSENDD:CLR OE ;使能信号低电平有效CLR RCK ;RCK信号置0MOV R2,#08HMOV R3,LL+1 ;列信号高8位地址MOV R4,HL+1 ;行信号高8位地址BACK:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK ;判断高八位信号是否传输完毕MOV R2,#08HMOV R3,LL ;列信号低八位地址MOV R4,HL ;行信号低八位地址BACK1:CLR SCK ;SCK信号置0MOV A,R3RLC AMOV R3,AMOV LD,C ;列信号逐位传输MOV A,R4RLC AMOV R4,AMOV HD,C ;行信号逐位传输SETB SCK ;SCK信号上升沿到来,将串行数据移入移位寄存器DJNZ R2,BACK1 ;判断低八位信号是否传输完毕SETB RCK ;RCK信号上升沿到来,移位寄存器的数据锁存入数据寄存器RETDELAY: ;延时子程序MOV R2,#50DELAY1:MOV R3,#10DELAY2:DJNZ R3,$DJNZ R2,DELAY1RETDISPLAY:DB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFFDB 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;预留空白DB 0xFF,0xFE,0xE0,0xEE,0xEF,0xCE,0xEF,0xF6,0xE1,0xFA,0xFD,0xFC,0xFD,0xFE,0x3D,0x80;DB 0xE0,0xFA,0xED,0xFA,0xEF,0xF6,0xEF,0xF6,0xEF,0xEE,0xEF,0x9A,0x6B,0xDC,0xF7,0xFE;"张" END实验结果与分析:1、程序正确运行后,可看到16x16 LED点阵显示屏上显示“张”,LED灯的亮暗程度有些不均匀。

数码管显示实验报告

数码管显示实验报告

一、实验目的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. 动态扫描显示技术能够有效地实现多位数码管的显示,提高了显示效率。

《数码管动态显示》实验报告

《数码管动态显示》实验报告
延时函数:数码管显示动态扫描时,用到延时程序,这里使用延迟10us的程序,此程序会反复调用,除数码管动态扫描外,数码管的闪烁提示也用到延时函数。
显示函数:在显示前先对小时和分钟的十位和个位进行判断,小时数除以10,得到的整数为小时的十位,对小时数取余,得到小时的个位,分钟数除以10,得到分钟数的十位,对分钟数取余,得到分钟数的个位,4个数码管轮流进行显示,分别延时10us,达到数码管显示时钟的效果。
《单片机原理与应用》实验报告
姓名:
学 号:
实验名称:
数码管动态显示
班级:
电信二班
一、实验工具、器材
Proteus仿真软件,Keil程序编写软件,四个共阳数码管,AT89C51单片机
二、实验原理
a)四个七段LED数码管,通过与单片机P2接口连接实现显示功能,用延时程序和循环程序产生一秒的定时,达到时、分、秒的计时。
b)动态显示:所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度合适,字符才不闪烁。本实验要求显示的时间为时,分,并且都用两个一位数码管来实现显示,此处调用显示函数计算显示。
三、硬件电路说明
本实验使用共阳型数码管,通常的数码管分为8段,即8个LED显示段, 其中dp代表小数点。数码管显示方法可分为静态显示和动态显示两种,这里采用动态显示方式,用P2.0~P2.7口来控制LED数码管的段控线。四位共阳LED数码管,其标号分别为HourH,HourL,MinL,MinH,低电平选通,且任何时候仅有一位输出低电平,显示时对各显示器进行动态扫描,显示器分时轮流工作。虽然每次只有一个显示器显示,但是由于人的视觉暂留现象我们仍会感觉所有的显示器都在同时显示。P2.0~P2.7口作为输出口控制8个发光二极管的亮灭,控制数码管的显示。因此,可以实现4个LED在我们看来同时亮,显示时间。

毕业设计基于单片机的led显示屏的动态显示[管理资料]

毕业设计基于单片机的led显示屏的动态显示[管理资料]

目录1 绪论 (4)LED显示屏的发展背景及国内外研究现状 (4)设计目标及采取的方案 (4)本设计的目标 (4)本设计采取的方案 (5)文章的结构安排 (5)2 系统总体分析 (7)显示部分 (7)驱动电路的选择 (8)电源模块选择 (8)工作原理 (8)总体设计 (9)3 系统硬件设计 (10)AT89C51芯片的介绍 (11)时钟电路 (15)复位电路 (15)驱动电路设计 (16)2N5551与2N5401三极管的主要参数 (16)8255芯片的介绍 (17)键盘模块设计 (19) (20)LED的特点以及常用的参数 (20)LED电子显示屏 (22)LED电子显示屏显示字符原理 (23)汉字显示的原理 (25)整体电路 (30)4 系统软件设计 (32)主程序设计 (32)子程序设计 (38)5 结论 (42)6 致谢 (43)参考文献 (44)1 绪论LED显示屏的发展背景及国内外研究现状在大型商场、车站、码头、地铁站以及各类办事窗口等越来越多的场所需要用LED点阵显示图形和汉字。

LED行业已成为一个快速发展的新兴产业,市场空间巨大,前景广阔。

随着信息产业的高速发展,LED 显示作为信息传播的一种重要手段,已广泛应用于室内外需要进行服务内容和服务宗旨宣传的公众场所,例如户内外公共场所广告宣传、机场车站旅客引导信息、公交车辆报站系统、证券与银行信息显示、餐馆报价信息豆示、高速公路可变情报板、体育场馆比赛转播、楼宇灯饰、交通信号灯、景观照明等。

显然,LED显示已成为城市亮化、现代化和信息化社会的一个重要标志。

LED点阵设计主要应用于显示屏,它是利用发光二极管点阵模块或像素单元组成的平面式显示屏幕。

由于它具有发光效率高、使用寿命长、组态灵活、色彩丰富以及对室内室外环境适应能力强等优点,自20世纪80年代后期开始,随着LED制造技术的不断完善,在国外得到了广泛的应用。

在我国改革开放之后,特别是进入90年代国民经济高速增长,对公众场合发布信息的需求日益强烈,LED显示屏的出现正好适应了这一市场形势,因而在LED显示屏的设计制造技术与应用水平上都得到了迅速的提高。

实验报告——LED显示控制

实验报告——LED显示控制

实验一LED显示控制一、硬件介绍1)C28X芯片提供了56个多功能引脚,用户可以将这些引脚作为片内外设的输入输出引脚,当不使用片内外设时,也可以将他们作为数字I/O口。

本实验是将其用作GPIO口,如图1所示。

图1 GPIO口应用2)74HC164是一个8位的串并行数据转换的芯片,其时序图如图2所示。

图2 74164工作时序图由图2知,输入端A和B相与是74HC164的输出,若输入信号只有一个(A端),则可以将其中一个输入端置1(B端),则可将输入的串行信号(A端)转化成并行输出(QA--QH)。

CLEAR是低电平有效的复位信号,即CLEAR为低电平时,输出端(QA—QH)全部置0,其为高电平时芯片可正常工作。

CLOCK是上升沿有效的时钟信号,即每来一个上升沿,输入的数据就会传一位,输出端QA会输出最新的输入信号,而QB则重复前一个时钟的QA,QC则重复前一个时钟的QB,……待满8个上升沿时,一个输入的8位串行数据就被转换成8位的并行数据输出。

3)8×8 LED的显示模块如图3所示。

图3 8×8 LED的显示模块由图3可知,若要是LED正常发光,将LED的正向加高电平,负向加低电平即可。

显示图像或字可通过动态扫描得到结果。

二、硬件连接实验模块控制模块G LED DISPLAY A DSP SECTIONLED_A2(J32) SPISIMOA(J34)LED_B2(J32) SPISOMIA(J34)CLKIN2(J32) SPICLKA(J34)/CLR2(J32) SPISTEA(J34)LED_A1(J5) PWM7(J35)LED_B1(J5) PWM8(J35)/CLKIN1(J5) PWM9(J35)/CLR1(J5) PWM10(J35)除此之外,通过用跳线头短接J6(G LED DISPLAY )的VCC和U2VCC为LED DISPLAY 模块供电。

用跳线头短接J61(A DSP SECTION)的GND和1DIR以及J62(A DSP SECTION)的GND 和2DIR,将A DSP SECTION模块的缓冲设为输出。

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

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

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

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

如此循环。

相关文档
最新文档