跑马灯控制电路设计
单片机闪烁灯跑马灯控制课程设计

单片机闪烁灯跑马灯控制课程设计单片机闪烁灯跑马灯控制课程设计报告一、引言本课程设计旨在通过学习和实践单片机(MCU)编程,实现闪烁灯和跑马灯的控制。
我们将使用嵌入式C语言编程,通过了解单片机的内部结构、电路设计和编程流程,深入理解单片机的工作原理和应用。
二、系统硬件设计本课程设计选用51单片机作为主控芯片,外接8个LED灯和1个按键。
硬件电路设计如下:1.单片机:采用AT89C51,该芯片具有32K字节的Flash存储器,256字节的RAM,以及两个16位定时器/计数器。
2.LED灯:采用普通LED灯珠,与单片机引脚相连,通过编程控制LED灯的亮灭状态。
3.按键:采用机械按键,与单片机的外部中断0(EX0)相连,用于触发闪烁灯和跑马灯的切换。
三、系统软件设计1.闪烁灯模式:在此模式下,8个LED灯将按照一定的频率交替闪烁。
我们可以通过计时器和GPIO口控制LED灯的亮灭状态。
void blink_LED(void) {int i;while(1) {for(i = 0; i < 8; i++) {P1_0 = ~P1_0; // 翻转LED状态delay(500); // 延时,控制闪烁频率}}}2.跑马灯模式:在此模式下,8个LED灯将按照一定的顺序依次点亮。
我们可以通过计时器和GPIO口控制LED灯的亮灭状态。
void marquee_LED(void) {int i;int led_state[8] = {0, 1, 0, 1, 0, 1, 0, 1}; // LED状态数组,初始为交替亮灭while(1) {for(i = 0; i < 8; i++) {P1_0 = led_state[i]; // 设置LED状态delay(50); // 延时,控制跑马灯速度}}}四、按键处理程序我们通过外部中断0(EX0)接收按键信号,当按键按下时,将切换闪烁灯和跑马灯模式。
按键处理程序如下:void EX0_ISR(void) interrupt 0 { // EX0中断服务程序if (key_flag) { // 如果按键已经被按下过if (key_value == 0) { // 如果按键状态为低电平marquee_LED(); // 切换到跑马灯模式key_flag = 0; // 标记按键状态已经改变} else { // 如果按键状态为高电平blink_LED(); // 切换到闪烁灯模式key_flag = 0; // 标记按键状态已经改变}key_value = ~key_value; // 翻转按键状态值} else { // 如果按键还没有被按下过key_value = ~key_value; // 翻转按键状态值if (key_value == 0) { // 如果按键状态为低电平blink_LED(); // 切换到闪烁灯模式key_flag = 1; // 标记按键状态已经改变} else { // 如果按键状态为高电平marquee_LED(); // 切换到跑马灯模式key_flag = 1; // 标记按键状态已经改变}}}。
跑马灯电路的设计与制作[宝典]
![跑马灯电路的设计与制作[宝典]](https://img.taocdn.com/s3/m/13c30346c77da26925c5b0fb.png)
一、明确工作任务(5m)
二、知识链接
(一)555定时器的原理(10 m)
电路符号
VC C
RD
v IC
8 5
4
v I1 6
v I2 2
v
, O
7
555 3 vO
1
VC C 电 源
(8 )
控制电 压
v IC (5) v I1 (6)
阈值输 入
5kΩ
C1
5k Ω
v I2 (2)
2. 十进制计数电路CD4017管脚功能表
时钟 INT 复位
输出状态
L
×
×
H
×
×
↑
L
↓
×
×
↑
H
↓
L
不变
L
不变
H
计数器复位(Q0=H,Q1Q9=L)
L
进到下一级
L
不变
L
不变
L
进到下一级
CD4017它是一片十进制计数/分频器,该器件具有10个译码输出端,每个译 码输出端通常处于低电平,在时钟脉冲由低到高的转换过程中依次进入高电平, 每个输出的高电平维持10个时钟周期中的1个时钟周期,输出10进入低电平后 进位输出由低电平转到高,并能与时钟允许端连成N级。
C2
触发输 入
v
, O
(7 )
放电端
5k Ω
(1 )
RD 复 位
(4 )
R&
& S
T
G
&
1 (3)
vO
电路符号
VC C
RD
v IC
8 5
4
v I1 6
《嵌入式技术应用开发项目教程》项目2 跑马灯控制设计

GPIO_AF_SEL(DIGITAL, PB, 1, 0); //设置PB1引脚是数字通道和GPIO功能
GPIO_AF_SEL(DIGITAL, PB, 2, 0); //设置PB2引脚是数字通道和GPIO功能
GPIO_AF_SEL(DIGITAL, PB, 3, 0); //设置PB3引脚是数字通道和GPIO功能
uint16_t temp, i;
void delay(unsigned int count)
//延时函数
{
unsigned int i;
for(;count!=0;count--)
{
i=5000;
while(i--);
}
}
int main()
{
GPIO_AF_SEL(DIGITAL, PB, 0, 0); //设置PB0引脚是数字通道和GPIO功能
3.LED循环点亮控制设计与实现
实施过程:
1.移植工程模板
复制“任务3 LED闪烁控制” 文件夹,然后然后修改文件夹 名为“任务4 LED循环点亮控 制”,USER文件夹下的M0_ LED.uvprojx工程名不用修改 。
2. LED循环点亮控制程序设计
#include <SC32F5832.h>
#include <GPIO.h>
GPIO_AF_SEL(DIGITAL, PB, 7, 0); //设置PB7引脚是数字通道和GPIO功能
PB->OUTEN|=0x00ff;
//PB0~PB7引脚输出使能,既设置PB0~PB7引脚为输出引脚
PB -> OUT = 0x00ff;
//PB0~PB7输出高电平,LED1~LED8熄灭
跑马灯控制电路设计

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芯片,观察程序是否能控制硬件的实现。
跑马彩灯控制方案

跑马彩灯控制方案简介跑马彩灯是一种常见的装饰灯具,通过控制跑马灯的亮灭、颜色和亮度变化,可以创造出各种炫目的灯光效果。
在节日庆典、宴会场所、夜市、景区等场合,跑马彩灯常常被用于增添气氛。
本文档将介绍一种基于Arduino控制器的跑马彩灯控制方案。
材料准备要实现跑马彩灯控制方案,需要以下材料: 1. Arduino UNO控制器:用于控制跑马彩灯的亮灭和灯光效果。
2. 杜邦线:用于连接Arduino控制器和彩灯。
3. 跑马彩灯电源:用于给彩灯供电。
4. 跑马彩灯:可以根据需求选择适合的跑马彩灯。
硬件连接首先,将Arduino控制器和彩灯电源通过杜邦线连接起来。
将Arduino的GND引脚连接到彩灯电源的负极,并将Arduino的5V引脚连接到彩灯电源的正极。
接下来,将彩灯的控制引脚(通常为数据引脚)连接到Arduino的数字引脚。
具体连接方式取决于所使用的跑马彩灯。
通常,彩灯的控制引脚通过杜邦线连接到Arduino的数字引脚2。
连接完成后,确保所有线路连接牢固可靠,并避免出现短路情况。
软件编程跑马彩灯控制方案使用Arduino编程语言进行编程。
以下是控制彩灯的示例代码:// 跑马彩灯控制示例代码// 定义彩灯控制引脚int ledPin = 2;void setup() {// 设置彩灯引脚为输出模式pinMode(ledPin, OUTPUT);}void loop() {// 点亮彩灯digitalWrite(ledPin, HIGH);// 延时一段时间delay(500); // 延时时间可根据需要进行调整// 熄灭彩灯digitalWrite(ledPin, LOW);// 延时一段时间delay(500); // 延时时间可根据需要进行调整}在上述代码中,我们首先定义了控制彩灯的引脚为数字引脚2。
在setup()函数中,我们将该引脚设置为输出模式。
然后,在loop()函数中,我们通过digitalWrite()函数控制彩灯的亮灭。
实验6 基于FPGA的跑马灯的设计

基于FPGA的跑马灯的设计1、设计要求设计彩灯控制电路:(1)控制8只LED左移、右移、对移和闪烁(2)自动改变显示样式(3)自动进行周期循环2、设计过程(1)原理框图设计图1 彩灯控制器原理框图彩灯控制电路拟采用移位寄存器为核心控制彩灯,实现左移、右移、对移及闪烁功能,并通过模式译码电路改变移位寄存器的模式控制引脚,实现彩灯显示模式的自动、周期性转换。
在移位寄存器处于各种移位状态时,应在其串行移位数据输入端提供显示数据,此功能通过设计数据选通器实现。
彩灯控制电路按照预设时序循环工作,需提供状态及定时信号,此功能由状态计数器对时钟进行分频来实现。
电路时钟由EDA/SOPC实验开发系统提供,此时钟频率较高(1MHZ),因此设计时钟分频器对其进行分频,得到1Hz时钟信号。
电路中,采用74160完成时钟分频,采用74161生成状态信号,采用译码电路完成模式控制,采用74194完成左移、右移、对移及闪烁功能,采用74151完成左移、右移和对移的数据输入选通控制。
(2)电路真值表分析如表1所示。
表1 电路真值表其中:QC1和QC0为状态计数器输出的控制信号;CLK/8为对时钟进行8分频的状态计数器输出信号,CLK/32为对时钟进行32分频的状态计数器输出信号;LED4为左侧74LS194的高位输出信号,LED5为右侧74LS194的低位输出信号;为简化设计,彩灯控制器的状态计数器输出(右移、左移、闪烁)与数据选通器控制端、移位寄存器工作模式(右移、左移、置数)的控制端采用相同逻辑值编码,状态计数器的对移输出与剩余的逻辑值编码(00)相同。
(3)时钟分频器设计107分频(4)状态计数器设计采用二进制计数器74LS161设计,提供时钟的2分频作为闪烁模式的数据信号,8分频作为移位的数据信号,32分频和64分频作为移位数据信号和模式控制信号。
(5)模式译码器设计根据真值表1,经逻辑化简可得:AS=11QCAS⋅QC=+QC=1QC10QCBS⋅QC==QC+QC111QCBS=0QC(6)数据选通器设计(7)移位寄存器设计使用了两片74LS194的左移、右移和置数模式分别实现了LED灯的左移、右移、对移和闪烁。
跑马灯电路设计

跑马灯分析如下:跑马灯电路采用74LS194为核心控制彩灯左移、右移及闪烁功能,围绕74LS194的S1、S0工作的控制方式,S1、S0需要自动周期性的变化,为了实现自动模式转换,设计一个状态计数器,控制彩灯模式转换,利用74153双四选一电路,将S1、S0的状态置入74194,完成周期性地读取。
本设计方案的关键是S1、S0状态信息如何传送给74194,S1、S0状态信息要与整个彩灯控制电路相匹配,不同的S1、S0状态,送入74LS194数据输入端的数据不同,利用74LS153作为数据选通,连接到74LS194数据输入端,不同的工作状态,选通数据输出不同,这是设计的主要关键点之一。
电路中,利用74161完成状态计数工作,每8个时钟脉冲,状态计数器完成加一操作,完成移位方式控制,利用74194完成左移或右移及闪烁功能功能,利用74153完成左右移数据输入选通控制。
根据任务要求列出自动循环状态和74194移位控制工作方式表2。
表2X/0表示电路设计过程中,尽管状态表中取任意态,但在实际电路连接中,取低电平。
彩灯控制器完成左移、右移、闪烁及同时左右移,只需要4种状态,故状态计数器完成模4计数即可。
移位寄存器的工作状态由方式控制字S1、S0决定,查阅74LS194数据手册,确定S1、S0工作方式。
利用表.2,分析S1、S0的状态。
因为彩灯是八路输出,用两片74LS194,其中高位标号为74194B,低位为74194A,所以高位的74LS194工作方式标称为BS1、BS0,低位为AS1、AS0。
将BS1、BS0、AS1、AS0放在一起,用74153将数据状态选通输出即可从表格中可以看出,状态计数器描述计数状态,移位寄存器完成左移、右移、闪烁、左右同时移动功能,且自动循环进行。
2)74153选通电路及74194移位电路控制设计74194功能表该器件具有四种工作方式:同步并行置入、右移、左移、空操作(禁止时钟)。
汇编课程之跑马灯设计报告

太原工业学院汇编语言与微机原理课程设计报告学生姓名:刘创学号:*********系部: 计算机工程系专业: 计算机科学与技术题目: 利用8255实现花式跑马灯成绩指导教师李丽2016年6月28日1.设计内容1)设计电路;2)实现6种不同的跑马灯样式;3)跑马灯的运行状态可由开关控制4)要有暂停跑马灯按钮控制即跑马灯的状态切换。
2.总体设计1)设计原理本实验通过循环检测A口数据,判断按得是哪个开关,如开关1按下,则向AL送01h,并送至B口,循环左移AL达到灯的流水下移,调用延时子程序控制灯闪亮时间,通过BH的赋值控制循环次数,达到时间定时效果。
每循环一个周期,CPU都会检测A口的值,从而能即时切换跑马灯花式。
2)设计跑马灯方案a)按下开关1,跑法1,AL初值01H,循环左移,控制一个亮灯自上而下跑动。
b)按下开关2,跑法2,AL初值81H,循环右移,控制一个亮灯自下而上跑动。
c)按下开关3,跑法3,AL初值0AAH,循环左移,控制间隔4个灯同时闪亮。
d)按下开关4,跑法4,AL初值0C0H,循环右移,控制两个亮灯自下而上跑动。
e)按下按键5,跑法5,AL初值05H,循环左移,控制亮暗亮3灯自上而下跑动。
f)按下开关6,跑法6,AL初值0AAH,循环左移,控制间隔4个灯同时闪亮,相比按键3,跑动时间更长,以显示定功能。
g)按下开关7按下,跑马灯暂停工作,再次按下跑马灯继续工作。
3.硬件设计1)Proteus元件清单及功能说明2)电路设计图a)8086微处理机与锁存器、译码器连接b)8255A与跑马灯开关控制连接图c)8255A与跑马灯LED显示灯连接图4. 软件设计1)程序设计思路利用查询式不断循环查询控制跑马灯样式的开关状态,进而编写程序来控制跑马灯的输出样式。
同时,检测是否暂停跑马灯工作状态的按钮,以及时处理暂停与继续工作状态。
2)程序流程图3)程序代码MarqueeHorseRaceLamp.ASM/*文件名*/ CODE SEGMENTASSUME CS:CODESTART: MOV AL,90HMOV DX,206HOUT DX,ALNOKEY:CALL SCANJNZ NOKEYSCAN PROCMOV AL,0FFHMOV DX,202HOUT DX,ALMOV DX,200HIN AL,DXTEST AL,01HJZ P1TEST AL,02HJZ P2TEST AL,04HJZ P3TEST AL,08HJZ P4TEST AL,10HJZ P5TEST AL,20H JZ P6RETP1:CALL PA1PA1 PROCMOV BH,0MOV BL,01HA1:MOV AL,BLMOV DX,202HOUT DX,ALMOV CX,50000CALL DELAY ROL BL,1CALL STOPCALL SCANCMP BL,01HJNZ J1INC BHJ1:JMP A1PA1 ENDPP2:CALL PA2PA2 PROCMOV BH,0MOV BL,80HA2:MOV AL,BLMOV DX,202H OUT DX,AL CALL DELAY ROR BL,1CALL STOP CALL SCANCMP BL,80HJNZ J2INC BHJ2:JMP A2RETPA2 ENDPP3:CALL PA3PA3 PROCMOV BH,0MOV BL,0AAH A3:MOV AL,BLMOV DX,202H OUT DX,AL CALL DELAY MOV CL,1ROL BL,CL CALL STOP CALL SCAN CMP BL,0AAHJNZ J3INC BHJ3:JMP A3RETPA3 ENDPP4:CALL PA4PA4 PROCMOV BH,0MOV BL,0C0HA4:MOV AL,BLMOV DX,202HOUT DX,ALCALL DELAYMOV CL,1ROR BL,CLCALL STOPCALL SCANCMP BL,0C0HJNZ J4INC BHJ4:JMP A4RETPA4 ENDPP5:CALL PA5 PA5 PROCMOV BH,0MOV BL,05HA5:MOV AL,BLMOV DX,202HOUT DX,ALCALL DELAYROL BL,1CALL STOPCALL SCANCMP BL,05HJNZ J5INC BHCALL RETURNJ5:JMP A5RETPA5 ENDPP6:CALL PA6 PA6 PROCMOV BH,05HMOV BL,0AAHA6: MOV AL,BLMOV DX,202HOUT DX,ALMOV CX,50000CALL DELAYROL BL,1CALL STOPCALL SCANCMP BL,0AAHJNZ J6INC BHCALL RETURNJ6:JMP A6RETPA6 ENDPDELAY PROCMOV CX,50000LOOP1: LOOP LOOP1RETDELAY ENDPRETURN PROC CMP BH,04HJZ NOKEYRETSTOP PROC L1:MOV AL,00HMOV DX,202HOUT DX,ALMOV DX,200HIN AL,DXTEST AL,40HJNZ DONEJMP L1DONE:RETSTOP ENDPRETURN ENDPSCAN ENDPCODE ENDSEND START5. 仿真调试与分析a)连接好完整电路后,加载已经写好的跑马灯程序b)调试已经加载的代码,直至代码无编译错误为止c)启动Proteus调试d)拨动相关控制开关,进而控制跑马灯的工作风格e)调试结果基本符合实验前的设计,跑马灯以正确的工作风格进行工作,符合逻辑,整个实验分析正确f)跑马灯实验设计成功,结束实验6. 结论由于之前曾学习过组成原理,对Proteus的电路连接颇为了解,所以本次的电路连接没有太大的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HDL数字系统课程设计报告书
目录
一、设计目的 (2)
二、设计思路 (2)
三、设计过程 (2)
3.1、系统方案论证 (2)
3.2、程序代码设计 (3)
四、系统调试与结果 (5)
五、主要元器件与设备 (9)
六、课程设计体会与建议 (9)
6.1、设计体会 (9)
6.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;
regt1,dir; //cnt1控制状态2 led灯的亮次数
reg[3:0]t2; //cnt2控制状态2 led灯的亮次数
reg[2:0]t3; //cnt3控制状态2 led灯的亮次数
always(posedge clk)
begin
if(rst) begint1<=0;cnt2<=0;cnt3<=0;dir<=0;end
else
case(sel)
// LED按奇数,偶数依次显示
2'b00:
begin
led_r=16'b10101;
if(cnt1==0)led<=led_r;
else led<=led_r<<1;
t1<=cnt1+1;
end
// LED顺序依次显示,顺序依次熄灭
2'b01:
begin
if(!dir)
begin
if(cnt2==0) begin led_r=16'b00001;led<=led_r;end
else begin led<=(led<<1)+led_r;end
if(cnt2==15) begin dir<=~dir;end
t2<=cnt2+1;
end
else
begin
if(cnt2==0) begin led_r=16'b11110;led<=led_r;end
else begin led<=led<<1; end
if(cnt2==15) begin dir<=~dir;end
t2<=cnt2+1;
end
end
// LED由两侧向中间依次显示,由中间向两侧依次熄灭
2'b11:
begin
if(!dir)
begin
if(cnt3==0) begin
led_r=16'b00001;
led_r1=16'b00000;end
else
begin led_r=(led_r<<1)|led_r;
led_r1=(led_r1>>1)|led_r1;end
led<=led_r|led_r1;
if(cnt3==7)begin dir<=~dir;end
t3<=cnt3+1;
end
else
begin
if(cnt3==0) begin led_r=16'b11110;
led_r1=16'b11111;end
else
begin led_r=led_r<<1;led_r1=led_r1>>1;end
led<=led_r&led_r1;
if(cnt3==7)begin dir<=~dir;end
t3<=cnt3+1;
end
end
default: ;
endcase
end
endmodule
引脚分配:
to,location
rst, pin_47 //复位引脚
clk, pin_79 //时钟控制引脚
sel[0], pin_45 //状态控制引脚
sel[1], pin_46 //状态控制引脚
led[0], pin_19//0—15个LED灯显示引脚
led[1], pin_24
led[2], pin_25
led[3], pin_26
led[4], pin_27
led[5], pin_28
led[6], pin_29
led[7], pin_30
led[8], pin_31
led[9], pin_36
led[10], pin_37
led[11], pin_38
led[12], pin_39
led[13], pin_40
led[14], pin_41
led[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芯片,观察程序是否能控制硬件的实现。
但是最后的成品却不一定与仿真时完全一样,因为,电路模拟与仿真是在理想的环境下,在实际中因为芯片本身的特性而能够成功。
所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
此外,本实验也可通过EDA软件Quartus6.0和modelSim SE 6.0实现。
通过这次学习,让我对各种电路的设计和控制都有了大概的了解,所以说,坐而言不如立而行,对于这些电路还是应该自己动手实际操作才会有深刻理解。
6.2、设计建议
我希望老师在我们动手制作之前应先告诉我们一些关于所做电路的资料、原理,以及如何检测电路的方法,还有关于检测芯片的方法。
这样会有助于我们进一步的进入状态,完成设计。
七、参考文献
[1][美].Palnitkar.VerilogHDL数字设计与综合.:电子工业,2010年;
[2]袁俊泉.verilog HDL数字系统设计及其应用.:电子科技大学,2003年;
[3]黄继业.EDA技术实验教程.:科学.
[4]夏宇闻.verilog数字系统设计教程.:航空航天大学,2008年;
[5]贺敬凯.基于FPGA的专用CPU的设计.: 信息职业技术学院学报,2008年;
[6]松.EDA技术与VHDL.:清华大学,2007年;
[7] 贺敬凯. verilog HDL数字设计教程.:电子科技大学,2010年;
[8]洪伟.基于QuartusⅡ的FPGA/CPLD设计.:电子工业,2010年.。