简易LED跑马灯设计
跑马灯设计 说明

基于VHDL的跑马灯设计说明1.设计思路:通过给定系统一个时钟,来控制8个LED灯的亮暗,灯亮暗的快慢可以通过改变给定的系统时钟频率。
2.功能分析:通过一个中间变量flag的状态来改变灯亮暗的方式,此次设计灯亮暗的方式总共有3种:(1)灯从左到右依次点亮,然后再从右到左依次熄灭;(2)灯从中间2个开始向两边亮,然后再从两边向中间熄灭;(3)灯按照7…4,3…0亮,其中最初7和3 亮,然后6和2亮…..以此类推,最后全部熄灭,进入下一轮循环。
3.模式选择:选择的为模式5。
4. 引脚锁定如下:灯对应实验板上从左到右为:light7,light6,……light0;Clk1对应实验板上clock05. 程序说明:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity light isport(clk1: in std_logic; --系统给的时钟light: buffer std_logic_vector(7 downto 0));end light;architecture behv of light isconstant len: integer:=7; --定义一个常量signal banner: std_logic:='0'; --中间信号signal clk,clk2: std_logic;beginclk<=(clk1 and banner) or (clk2 and not banner);process(clk1)beginif clk1'event and clk1='1' then --clk1是上升沿时,clk2取反clk2<=not clk2;end if;end process;process(clk)variable flag: bit_vector(2 downto 0):="000";--定义一个状态变量flag;beginif clk'event and clk='1' then --clk是上升沿if flag="000" then --flag为000时,从左到右点亮light<='1' & light(len downto 1); --并置成8位if light(1)='1' then --状态变量flag改变flag:="001";end if;elsif flag="001" then -- flag为001时,从右到左熄灭light<=light(len-1 downto 0) & '0';if light(6)='0' thenflag:="010";end if;elsif flag="010" then -- flag为010时,从中间向两边点亮light(len downto 4)<=light(len-1 downto 4)&'1';light(len-4 downto 0)<='1'&light(len-4 downto 1);if light(1)='1' thenflag:="011";end if;elsif flag="011" then -- flag为011时,从两边向中间熄灭light(len downto 4)<='0'&light(len downto 5);light(len-4 downto 0)<=light(len-5 downto 0)&'0';if light(2)='0' thenflag:="100";end if;elsif flag="100" then -- flag为100时,按7,3先亮,6,2再亮…..light(len downto 4)<='1'&light(len downto 5);light(len-4 downto 0)<='1'&light(len-4 downto 1);if light(1)='1' thenflag:="101";end if;elsif flag="101" then -- flag为101时,全部熄灭light<="00000000";flag:="110";elsif flag="110" then --进入下一轮循环banner<=not banner;flag:="000";end if;end if;end process;end behv;注:以上是自己通过看书和向同学请教后对程序的理解,可能有不当之处,望老师可以进行指出,十分感谢。
简易LED跑马灯设计

简易LED跑马灯设计摘要随着微电子技术的飞速发展,集成电路的集成度和性能提高、价格下降,特别是单片微处理器的出现,对现代社会的进步起到了巨大推进作用,也从各个方面改变了人们的生活,比如目前国内国外都大量使用的霓虹灯广告牌、交通显示信号灯,以及各种车辆、家用电器等普遍使用的指示信号灯,给人们的生活提供了便利。
本文针对广告牌等显示器件中起到至关重要的作用的数字控制信号LED灯显示(跑马灯)进行一个简易的模拟设计。
此实验项目中,使用8255芯片实现16位数码管显示,制作成一个简易的跑马灯,其中要运用386[pc]汇编语言编写相应代码,并且要针对8255的特点设计实验连线图,是对本科接口课程中学习到的软件以及硬件知识的一个综合运用,通过实际上机实验操作,编译设计不同的跑马灯效果。
通过最后的综合实验调试,成功实现了简易跑马灯的效果显示,这是对跑马灯实际应用的一次有益接触,也是对该应用原理的一次初步实践。
【关键词】接口跑马灯 8255芯片 LED灯汇编语言1 LED的应用领域以及LED跑马灯的研究意义▪1.1 LED的应用领域LED的应用领域非常广,包括通讯、消费性电子、汽车、照明、信号灯等,可大体区分为背光源、电子设备与照明、显示屏、汽车交通等五大领域。
◆汽车交通:以汽车內装使用包括了仪表板、音箱等指示灯,及汽车外部(第三刹车灯、左右尾灯、方向灯等),另外还包括交通标志灯。
◆背光源:主要是手机背光光源方面,是SMD型产品应用的最大市场。
◆显示屏: LED显示屏作为一种新兴的显示媒体,随着大规模集成电路和计算机技术的高速发展,得到了飞速发展,它与传统的显示媒体―多彩霓虹灯、象素管电视墙、四色磁翻板相比较,以其亮度高、动态影像显示效果好、故障低、能耗少、使用寿命长、显示内容多样、显示方式丰富、性能价格比高等优势,已广泛应用于各行各业。
◆电子设备与照明:LED以其功耗低,体积小,寿命长的特点,已成为各种电子设备指示灯的首选,目前几乎所有的电子设备都有LED的身影。
简易走马灯的制作方法

简易走马灯的制作方法走马灯,也叫做跑马灯、旋转灯。
它是一种视觉效果非常棒的灯光设备,利用马达驱动其灯带或灯泡进行快速旋转,形成一个移动的幻影,营造出精彩的视觉效果,受到广大的欢迎。
下面是关于简易走马灯的制作方法,供大家参考。
材料准备:1.电机2.电子元器件:电容器、电阻器、三极管、LED灯,细铜线3.铁皮盘4.其它:钳子、螺丝刀、电烙铁、风筝布制作步骤:1、装配电机和LED灯首先,我们需要将电机固定于一个小的平底盒中,并连接好基本的指示灯和控制面板电路。
电机安装要求比较严格,因为马达的转速和转向将决定整个走马灯的灯组如何旋转。
确保电路连接正确,灯组能够随电装旋转并发出漂亮的光芒。
2、用铁皮制作灯罩接下来,我们需要用铁皮制作一个圆锥形的灯罩,因为只有这样才能给予灯组足够的空间进行旋转。
钳子可用来把铁皮弯曲,并使其形成合适的圆锥形状。
最后,用螺丝固定好灯罩,然后用电烙铁焊接好灯罩的盖子。
为了使灯组旋转,我们需要将其与电机搭配。
把铁网切成相应的大小,然后用铁线将其固定在电机上。
接下来,将每个LED灯泡用铜线与电路板连接起来,然后吸附在胶贴上,并贴在铁网上,电路板中的电容器、电阻器和三极管,分别负责使LED灯泡发出不同的亮光。
最后,将铁网上的灯泡连好电线,插上电插头,松紧开关。
4、包裹灯罩需要把灯罩包裹在一块风筝布上,这将有助于储存灯组的所有部件。
建议直接用锡线将它们连在一起。
用锡线贴好灯罩,然后将所有的连接线摆放好,使其均匀分布,并通过铁网连接到灯组上。
将电插头插入插座,松紧开关开关,走马灯即可运行。
最后,如果需要进行任何其他的修饰,请随时按自己的心意加以操作。
在制作走马灯时,最好的方式就是与所有的细小零件的组合进行实验,并不断修改样式和大小,直达最终期望的模样为止。
需要注意的一点是,对走马灯的各个细节进行有效的整体设计,可谓是关键所在。
彩色LED组跑马灯的设计与实现

长沙理工大学《硬件综合》课程设计报告吴梦升学 院 计通学院 专 业 网络工程 班 级 网络1101班 学 号 201158080111 学生姓名 吴梦升 指导老师 陈沅涛 课程成绩 完成日期 2014年1月10日课程设计任务书计算机与通信工程学院网络工程专业课程设计成绩评定学院计通学院专业网络工程班级网络1101班学号201158080111 学生姓名吴梦升指导教师陈沅涛完成日期2014年1月10日指导教师对学生在课程设计中的评价指导教师对课程设计的评定意见彩色LED组跑马灯的设计与实现学生姓名:吴梦升指导老师:陈沅涛摘要: 本设计是基于VHDL设计的一个彩色LED组跑马灯,学习利用CPLD控制彩色LED跑马灯,本次设计基于EDA使用VHDL语言设计和实现彩色LED组跑马灯,彩色LED组跑马灯具有多种工作模式,并对与不同工作模式,播放不同的音乐。
通过时钟信号来设定工作模式,从而运行特定的彩灯效果,采用自顶向下的模块化设计。
这次设计以VHDL语言和MAX+PLUS II为工具,实现地铁自动售票系统。
系统分模块进行分析和设计,系统给出相应的设计原理图和VHDL源程序,通过仿真实现预定功能。
关键词:彩色LED组跑马灯;EDA;VHDL;MAX +plusⅡ;Design and Implementation color LED Marquee GroupStudent Name: Wu MengSheng Supervisor: Chen YuantaoAbstract: This design is based on a set of colored LED Marquee VHDL design, learn to use CPLD to control color LED marquee, this design is based on the use of VHDLlanguage EDA design and implementation group color LED marquee, color LEDmarquee group with multiple operating modes , and with different modes, differentmusic playback. By clock signals to set the operating mode, which runs a specificlantern effect, using top-down, modular design. The design of VHDL and MAX +PLUS II as a tool to achieve Metro automatic ticketing system. System analysisand design of the module, the system gives the corresponding design schematicsand VHDL source code, to achieve the intended function through simulation.Key words: Color LED marquee group; EDA; VHDL; MAX +plus Ⅱ;目录1 引言 (3)1.1 课题背景及意义 (3)1.2 设计目的 (4)1.3 设计意义 (4)2 设计的依据 (4)2.1 EDA技术介绍 (5)2.2 VHDL语言介绍 (5)2.2.1 VHDL的简介 (5)2.2.2 VHDL语言的特点 (6)2.3 MAX+plusⅡ软件 (6)3 设计步骤 (7)3.1设计功能及分析 (7)3.2 系统总体框架结构 (8)3.3 MAX+plus II应用与程序调试 (8)4硬件电路的设计与软件设计 (11)4.1集成分频器模块 (11)4.1.1功能说明和设计 (11)4.1.2 分频器VHDL程序编写 (11)4.1.3 仿真结果 (11)4.2 32进制计数器模块 (12)4.2.1 功能说明和设计 (12)4.2.2 32进制计数器VHDL程序编写 (13)4.2.3 仿真结果 (13)4.3彩灯控制模块 (13)4.3.1 功能说明和设计 (13)4.3.2 彩灯控制模块VHDL程序编写 (14)4.3.3 仿真结果 (14)4.4 4选1选择器模块 (14)4.4.1 功能说明和设计 (14)4.4.2 4选1选择器模块VHDL程序编写 (15)4.4.3 仿真结果 (15)4.5 4进制计数器模块 (15)4.5.1 功能说明和设计 (15)4.5.2 4进制计数器模块VHDL程序编写 (16)4.5.3仿真结果 (16)5 系统结构及仿真 (16)5.1 系统模块建立 (16)5.2 波形输入建立 (18)5.3 波形仿真 (19)6 结束语 (22)参考文献 (24)附录 (25)附录一集成分频模块VHDL代码 (25)附录二32进制计数器模块VHDL代码 (26)附录三彩灯控制模块VHDL代码 (26)附录四4选1选择器模块VHDL代码 (28)附录五4进制计数器模块VHDL代码 (28)1 引言人类社会已进入到高度发达的信息化社会。
跑马灯控制电路设计

HDL数字系统课程设计报告书目录一、设计目的2二、设计思路2三、设计过程23.1、系统方案论证23.2、程序代码设计3四、系统调试与结果5五、主要元器件与设备9六、课程设计体会与建议96.1、设计体会96.2、设计建议9七、参考文献10论文摘要:共16个LED灯,连成一排,实现几种灯的组合显示。
通过这次对跑马灯控制电路的设计与制作,了解了设计电路的程序,也了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。
此外,本实验也可通过EDA软件Quartus6.0和modelSim SE 6.0实现。
关键词: HDL数字系统跑马灯设计一、设计目的1、熟悉Verilog HDL程序编程。
2、掌握Altera公司ACEXTM系列EPEK30QC208-2芯片的使用方法。
3、熟悉Quartus II 6.0和Modesim SE 6.0软件的使用。
4、了解16个数码管的显示原理和方法。
二、设计思路1、编写跑马灯设计程序。
2、定义LED灯引脚分配。
3、设计状态控制。
4、下载到EPEK30QC208-2芯片上显示。
三、设计过程3.1、系统方案论证16位LED跑马灯设计框图如图1所示:图1 LED跑马灯设计框图3.2、程序代码设计module paomadeng(rst,clk,sel,led); //端口定义,参数列表input rst,clk; //rst复位,clk为4Hz的时钟信号input[1:0] sel; //sel 状态选择端口output[15:0] led; //led 跑马灯显示reg[15:0] led;reg[15:0] led_r,led_r1;reg t1,dir; //t1控制状态2 led灯的亮次数reg[3:0] t2; //t2控制状态2 led灯的亮次数reg[2:0] t3; //t3控制状态2 led灯的亮次数always(posedge clk)beginif(rst) begin t1<=0;t2<=0;t3<=0;dir<=0;endelsecase(sel)// LED按奇数,偶数依次显示2'b00:beginled_r=16'b0101010101010101;if(t1==0)led<=led_r;else led<=led_r<<1;t1<=t1+1;end// LED顺序依次显示,顺序依次熄灭2'b01:beginif(!dir)beginif(t2==0) begin led_r=16'b0000000000000001;led<=led_r;end else begin led<=(led<<1)+led_r;endif(t2==15) begin dir<=~dir;endt2<=t2+1;endelsebeginif(t2==0) begin led_r=16'b1111111111111110;led<=led_r;endelse begin led<=led<<1; endif(t2==15) begin dir<=~dir;endt2<=t2+1;endend// LED由两侧向中间依次显示,由中间向两侧依次熄灭2'b11:beginif(!dir)beginif(t3==0) beginled_r=16'b0000000000000001;led_r1=16'b1000000000000000;endelsebegin led_r=(led_r<<1)|led_r;led_r1=(led_r1>>1)|led_r1;endled<=led_r|led_r1;if(t3==7)begin dir<=~dir;endt3<=t3+1;endelsebeginif(t3==0) begin led_r=16'b1111111111111110;led_r1=16'b0111111111111111;endelsebegin led_r=led_r<<1;led_r1=led_r1>>1;endled<=led_r&led_r1;if(t3==7)begin dir<=~dir;endt3<=t3+1;endenddefault: ;endcaseendendmodule引脚分配:to,locationrst, pin_47 //复位引脚clk, pin_79//时钟控制引脚sel[0], pin_45 //状态控制引脚sel[1], pin_46//状态控制引脚led[0], pin_19//0—15个LED灯显示引脚led[1], pin_24led[2], pin_25led[3], pin_26led[4], pin_27led[5], pin_28led[6], pin_29led[7], pin_30led[8], pin_31led[9], pin_36led[10], pin_37led[11], pin_38led[12], pin_39led[13], pin_40led[14], pin_41led[15], pin_44四、系统调试与结果1、LED灯和波形结果显示结果如图2,3,4,5,6,7所示图2、先奇数灯亮,即第1、3、5、7、9、11、13、15灯亮图3、偶数灯亮,即第2、4、6、8、10、12、14、16灯亮图4、按照1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16的顺序依次点亮图5、按照1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16的顺序依次熄灭所有灯图6按照1/16、2/15、3/14、4/13、5/12、6/11、7/10、8/9的顺序依次点亮图7、按照1/16、2/15、3/14、4/13、5/12、6/11、7/10、8/9的顺序依次熄灭灯波形显示:图8、LED灯按先奇数,偶数灯亮图9、LED灯依次按顺次亮,顺次熄灭图10,LED灯依次从两边向中间亮,两边向中间熄灭五、主要元器件与设备EDA技术试验箱,EDA软件QuartusⅡ6.0,ModelSim SE 6.0分频芯片:SN74HC04N—2,SN74LS393N—4片LED灯16个LED灯,电脑一台六、课程设计体会与建议6.1、设计体会通过这次对跑马灯控制电路的设计与制作,让我了解了设计电路的程序,也让我了解了关于跑马灯工作的基本原理与设计理念,首先要将一个程序分成几个模块,分别调试每一个模块,当每个模块均能正常工作时,其次再将其都组合在一起再次调试与仿真,最后将程序下载到Altera公司ACEXTM系列EPEK30QC208-2芯片,观察程序是否能控制硬件的实现。
跑马灯课程设计

(2)P1口的P1.0~P1.7引脚(1~8脚):8位通用输入/输出端口。
(3)P2口的P2.0~P2.7引脚(28~21脚):8位通用输入/输出端口和片外高8位地址总线端口。
(4)P3口的P3.0~P3.7引脚(10~17脚):8位通用输入/输出端口,具有第二功能。
(3)RST/VPD(9脚):复位信号输入端。在该引脚上输入一定时间(约两个机器周期)的高电平将使单片机复位。该引脚的第二功能是VPD,即备用电源输入端。当主电源发生故障,降低到低电平规定值时,可将+5V备用电源自动接入VPD端,以保护片内RAM中的信息不丢失,使复电后能继续正常运行。
(4) /VPP(31脚):访问程序存储器控制信号/编程电源输入。当 保持高电平时,访问内部程序存储器,访问地址范围在0~4KB内;当PC(程序计数器)值超过0FFFH,即访问地址超出4KB时,将自动转向执行外部程序存储器内的程序;当 保持低电平时,不管单片机内部是否有程序存储器,则只访问外部程序存储器(从0000H地址开始)。由此可见,对片内有可用程序存储器的单片机而言, 端应接高电平,而对片内无程序存储器的单片机,可将 接地。
在AT89C51芯片内部有一个高增益反相放大器,用于构成振荡器。反相放大器的输入端为引脚XTAL1,输出端为引脚XTAL2,在芯片的外部通过这两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,可构成稳定的自激振荡器,振荡频率通常是1.2~12MHz。若晶体振荡器频率高,则系统的时钟频率也高,单片机的运行速度也就快
学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料。本课题将以发光二极管作为发光器件,用单片机自动控制,实现一个简易的跑马灯设计。
走马灯简易制作方法

走马灯简易制作方法
走马灯是一种通过连续旋转的灯泡或发光diodes(LEDs)来创建动态图像或文字显示的装置。
以下是一种简单的走马灯制作方法:
材料所需:
1. 大纸张(可以是白色纸或者颜色纸)
2. 铅笔和直尺
3. 彩色铅笔或者马克笔
4. 剪刀
5. 胶水或者胶带
6. 打孔机
7. 自转批(比如乐高自转批)
步骤:
1. 在大纸张上用铅笔和直尺画出一个矩形,作为走马灯的底部。
根据需要,可以确定走马灯的大小。
2. 在底部矩形的下方,做一个矩形的“把手”,以便抓住并旋转走马灯。
这个矩形的大小可以根据需要来确定。
3. 在底部矩形的顶部,从左到右开始,在每一个小矩形中绘制一张图片或写下一句文字。
这些图片或文字将以连续运动的方式显示在走马灯上。
可以使用彩色铅笔或者马克笔来彩绘。
4. 使用剪刀剪下每一个小矩形,使其成为单独的图片或文字。
5. 将每一个小矩形黏贴到自转批上。
确保每个小矩形之间的间距相等,这样旋转时才会显示出平滑的动画效果。
可以使用胶水或者胶带将小矩形固定到自转批上。
6. 使用打孔机在走马灯的底部和顶部分别打一个孔,以便将自转批与底部矩形连接起来。
自转批将通过这两个孔旋转。
7. 将自转批插入底部矩形的把手中。
8. 确保自转批能自由旋转,并根据需要微调位置。
完成后,你可以旋转走马灯,看到图片或文字在走马灯上连续显示的效果。
你可以尝试不同的图片或文字,并在走马灯上添加更多的小矩形,以创造更多的动画效果。
EDA综合实践-跑马灯

XI ’AN UNIVERSITY OF TECHNOLOGYEDA 综合实践跑马灯设计一.设计要求:1、控制16个led进行显示2、模式1:依次点亮led;模式2:从中间向两边依次点亮led;模式3:按顺序依次点亮4led,循环显示,就是说,16个led中只有4个led亮。
3、三种模式在按键的控制下,可循环切换。
二..设计跑马灯原理其原理框图如下:由原理图上可以清楚的看到,首先选择时钟输入。
选择50M的时钟输入,再经由分频器分成1Hz的频率作为状态机的时钟输入。
题目要求用键盘控制,故用clink键盘输入,并加上复位键作为整体的复位控制。
由于led灯的状态有十六种,故而需要按键clink的频率为输入1Hz时钟信号的16倍(波形仿真中已有)。
其次是状态机控制四种状态:st0,st1,st2,st3。
经由4选一数据选择器输出接入16个led灯显示。
三、源程序module wer(clk50M,reset,clink,z);input clk50M;input reset;input clink;//键盘输入output reg[15:0] z;reg[4:0] state0,state1,state2,state3;reg[15:0] st0,st1,st2,st3;reg [2:0] mode;reg[64:0] count;wire clk1hz;parameters0='d0,s1='d1,s2='d2,s3='d3,s4='d4,s5='d5,s6='d6,s7='d7,s8='d8,s9='d9,s10='d10,s11='d11,s12='d 12,s13='d13,s14='d14,s15='d15,s16='d16;always @(posedge clk50M)//把50M的时钟分频begin if (count==50000000 ) count<=0;else count<=count+1;endassign clk1hz=count[64];//得到1Hz的时钟信号always @(posedge clink or negedge reset)//四选一模块进行选择begin if (!reset) mode<=0;elseif (mode>3) mode<=0;elsemode<=mode+1;endalways@(*)case (mode)0:z=st0;1:z=st1;2:z=st2;3:z=st3;endcasealways @(posedge clk1hz)beginstate0=state0+1;endalways @(state0)//模式一begin case(state0)s0:st0<=16'b0000000000000000;s1:st0<=16'b1000000000000000;s2:st0<=16'b1100000000000000;s3:st0<=16'b1110000000000000;s4:st0<=16'b1111000000000000;s5:st0<=16'b1111100000000000;s6:st0<=16'b1111110000000000;s7:st0<=16'b1111111000000000;s8:st0<=16'b1111111100000000;s9:st0<=16'b1111111110000000;s10:st0<=16'b1111111111000000;s11:st0<=16'b1111111111100000;s12:st0<=16'b1111111111110000;s13:st0<=16'b1111111111111000;s14:st0<=16'b1111111111111100;s15:st0<=16'b1111111111111110;s16:st0<=16'b1111111111111111;default:st0<=16'b0000000000000000; endcaseendalways @(state1)//模式二begin case(state1)s0:st1<=16'b0000000000000000;s1:st1<=16'b0000000110000000;s2:st1<=16'b0000001111000000;s3:st1<=16'b0000011111100000;s4:st1<=16'b0000111111110000;s5:st1<=16'b0001111111111000;s6:st1<=16'b0011111111111100;s7:st1<=16'b0111111111111111;s8:st1<=16'b1111111111111111; default:st1<=16'b0000000000000000; endcaseendalways @(state2)//模式三begin case(state2)s0:st2<=16'b0000000000000000;s1:st2<=16'b1000000000000001;s2:st2<=16'b1100000000000011;s3:st2<=16'b1110000000000111;s4:st2<=16'b1111000000001111;s5:st2<=16'b1111100000011111;s6:st2<=16'b1111110000111111;s7:st2<=16'b1111111001111111;s8:st3<=16'b1111111111111111;default:st2<=16'b0000000000000000;endcaseendalways @(state3)//模式四begin case(state3)s0:st3<=16'b1000100010001000;s1:st3<=16'b0100010001000100;s2:st3<=16'b0010001000100010;s3:st3<=16'b0001000100010001;default:st3<=16'b0000000000000000;endcaseendendmodule四、编译和仿真波形图1: 跑马灯设计仿真图:五、仿真分析及结论由仿真波形图可以看出,16种状态需要按键频率为时钟频率的16分之1.复位从第一次按键下触发。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简易LED跑马灯设计摘要随着微电子技术的飞速发展,集成电路的集成度和性能提高、价格下降,特别是单片微处理器的出现,对现代社会的进步起到了巨大推进作用,也从各个方面改变了人们的生活,比如目前国内国外都大量使用的霓虹灯广告牌、交通显示信号灯,以及各种车辆、家用电器等普遍使用的指示信号灯,给人们的生活提供了便利。
本文针对广告牌等显示器件中起到至关重要的作用的数字控制信号LED灯显示(跑马灯)进行一个简易的模拟设计。
此实验项目中,使用8255芯片实现16位数码管显示,制作成一个简易的跑马灯,其中要运用386[pc]汇编语言编写相应代码,并且要针对8255的特点设计实验连线图,是对本科接口课程中学习到的软件以及硬件知识的一个综合运用,通过实际上机实验操作,编译设计不同的跑马灯效果。
通过最后的综合实验调试,成功实现了简易跑马灯的效果显示,这是对跑马灯实际应用的一次有益接触,也是对该应用原理的一次初步实践。
【关键词】接口跑马灯 8255芯片 LED灯汇编语言1 LED的应用领域以及LED跑马灯的研究意义▪1.1 LED的应用领域LED的应用领域非常广,包括通讯、消费性电子、汽车、照明、信号灯等,可大体区分为背光源、电子设备与照明、显示屏、汽车交通等五大领域。
◆汽车交通:以汽车內装使用包括了仪表板、音箱等指示灯,及汽车外部(第三刹车灯、左右尾灯、方向灯等),另外还包括交通标志灯。
◆背光源:主要是手机背光光源方面,是SMD型产品应用的最大市场。
◆显示屏: LED显示屏作为一种新兴的显示媒体,随着大规模集成电路和计算机技术的高速发展,得到了飞速发展,它与传统的显示媒体―多彩霓虹灯、象素管电视墙、四色磁翻板相比较,以其亮度高、动态影像显示效果好、故障低、能耗少、使用寿命长、显示内容多样、显示方式丰富、性能价格比高等优势,已广泛应用于各行各业。
◆电子设备与照明:LED以其功耗低,体积小,寿命长的特点,已成为各种电子设备指示灯的首选,目前几乎所有的电子设备都有LED的身影。
▪1.2 LED跑马灯的研究意义本文主要是对LED显示屏应用的一个初步研究,跑马灯是对LED显示屏功能的基础模拟,通过对跑马灯形式的LED显示进行实验模拟,可以对LED的大型应用奠定基础,是将来完成完整LED效果显示设计的初级实践。
LED跑马灯设计正好和本科接口基础设计课程相衔接,运用到了课程中学习到的相关接口知识,是对该课程知识的一个综合运用,有助于加强基础知识的掌握,提升个人实践能力。
2 相关实验芯片及原理的介绍本实验需要器材:8255芯片一块,PC机一台,TD-PIT/TD-PIT-B实验箱一台。
▪2.1 LED灯管的发光以及驱动原理图2.1 发光二极管结构图LED灯管LED(Light Emitting Diode,图2.1),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。
LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。
半导体晶片由三部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子,中间通常是1至5个周期的量子阱。
当电流通过导线作用于这个晶片的时候,电子和空穴就会被推向量子阱,在量子阱内电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。
而光的波长也就是光的颜色,是由形成P-N结的材料决定的。
在接口试验中通常会用到单色LED灯作信号显示,给LED灯输入数字信号,LED灯会根据信号的不同而显示亮或者灭。
(a)(b)图2.2 LED的两种驱动方式LED灯管有两种不同的驱动方式:(1)阳极接+5V电源,阴极接适当大小的电阻(要求用5V点亮某LED时,则LED必须串接一个电阻,防止过流烧坏),然后接入数字信号,如图2.2(a)输入数字信号0时LED灯亮,输入1时LED灯灭;(2)阴极接地,接适当大小的电阻,然后阳极接入数字信号,如图2.2(b)输入数字信号1时LED灯亮,输入0时LED灯灭[1]。
我们试验用的试验箱中封装的LED电路默认为驱动方式(1),即0输入灯亮。
▪2.2 8255芯片的主要功能特性介绍INTEL8255是一种通用的可编程并行I/O接口芯片(图2.3),是专为INTEL公司的微处理器设计的,也可用于其它系列的微型机系统中。
利用8086汇编指令系统,编制初始化程序,可以变更8255 的工作方式,通用性强,使用灵活。
8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。
可与外设并行进行数据交换。
A口和B口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。
该芯片提供三种工作方式,满足本实验对芯片的功能要求[2]。
图2.3 8255内部引脚及结构8255芯片的一些详细特性:(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。
(2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口。
它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C 口(低4位,PC0~PC3)。
A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定。
8255引脚功能RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输。
RD:读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU 执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
A0,A1:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。
当A0=0,A1=0时,PA口被选择;当A0=0,A1=1时,PB口被选择;当A0=1,A1=0时,PC口被选择;当A0=1,A1=1时,控制寄存器被选择。
(a)工作方式控制字 (b)C口按位置位/复位控制字图2.4 工作方式控制字图示8255接口实验中端口地址如下表2.1所示:表2.1 8255接口实验中端口地址表3 具体的实验操作步骤▪3.1 初步确定跑马灯显示方案,针对相应显示方案,使用汇编语言编写跑马灯程序跑马灯显示效果是:一排16位数据管,第一次亮起的是第一位和最后一位,第二次亮起的是第二位和倒数第二位,以此规律类推,总体效果就是一排数据灯从两端向中间滚动显示。
代码如下:MY8255_A EQU 0e060HMY8255_B EQU 0e061HMY8255_C EQU 0e062HMY8255_MODE EQU 0e063H ;此处为端口地址设置,A、B、C口编址分别为60H、61H、62H,控制寄存器编址为63HDATA SEGMENTLA DB ?LB DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA ;8255芯片有A、B、C三口,其中A、B两口分别接8个数据管,对应就分为A、B两组数据管,两组数据管分开独立显示,但是表示出来的效果依然连续START: MOV AX,DATAMOV DS,AXMOV DX,MY8255_MODEMOV AL,80H ;设8255方式字10000000,AB均为工作方式0,A口位输出,B口位输出OUT DX,ALMOV DX,MY8255_AMOV AL,FFHOUT DX,AL ;把初态设置为全关,即A组所有灯初态为熄灭MOV AL,7FH ;7FH换成二进制就是0111 1111B,也就是表示A口初始状态是最左边一个灯亮,A组其他7个灯处于熄灭状态OUT DX,ALMOV LA,AL ;给A口赋值后保存在LA中MOV DX,MY8255_BMOV AL,FFHOUT DX,AL ;把初态设置为全关,即B组所有灯初态为熄灭MOV AL,0FEH ;0FEH换算为二进制即为1111 1110B,这与A口初始状态刚好相反,即B组数据灯初始状态是最右边的一个灯亮,其他7个灯保持熄灭状态OUT DX,ALMOV LB,AL ;给B口赋值后保存在LB中CALL DALLYA1: MOV AL,LAROR AL,1 ;对原来保存的A口初始值进行向右移位操作MOV LA,AL ;移位操作后保存MOV DX,MY8255_AOUT DX,AL ;输出显示,A组数码管右移一位灯亮MOV AL,LBROL AL,1 ;对原来保存的B口初始值进行向左移位操作MOV LB,AL ;移位后进行保存MOV DX,MY8255_BOUT DX,AL ;输出显示,B组数码管左移一位灯亮CALL DALLY ;延时控制CALL BREAKJMP A1DALLY: MOV CX,3FFH ;延时控制语句D1: MOV AX,0FFFFHD2: DEC AXJNZ D2LOOP D1RET ;延时控制是通过PC机做3FFH*0FFFFH次自减操作,这个操作的持续时间就是数据管维持上一个状态的时间长度,如果这个时间太短,则肉眼无法判断数据管的亮灭,时间太长则没有跑马灯的滚动效果BREAK PROC NEAR ;调用PC监控程序,软中断,按任意键退出程序MOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START[3]编辑完成后保存为文件8255.ASM。
▪3.2 在PC端运用相关编译软件生成可执行程序在这个环节,使用编译软件TDDEBUG.EXE,通过界面提示导入编写好的程序文件8255.ASM,生成8255.OBJ,最终生成可执行程序文件8255.EXE[4]。