流水灯实验

时间:2024.3.31

流水灯实验

黄博杰 电信3班 222012315220103

一、实验目的

1、熟悉QuartusⅡ的软件的操作;

2、编写流水灯程序,基本掌握时序逻辑电路的编写方法

二、实验原理

所谓流水灯就是让LED灯的亮灭模拟流水,按照顺序使LED灯依次亮,本实验箱上共16个LED,通过程序控制顺序使LED1到LED16亮,从而实现流水灯。

三、实验步骤

1、程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity led_16 is

port ( clk : in std_logic;

      dout : out std_logic_vector(15 downto 0) );

end led_16;

architecture hav of led_16 is

    signal q:std_logic_vector(15 downto 0);

    signal d:std_logic_vector(3 downto 0);

begin

    process(clk)

     begin

      if clk'event and clk='1' then

         d<=d+1;

      end if;

    end process;

    with d select

      q<="1000000000000000" when "0000",

         "0100000000000000" when "0001",

         "0010000000000000" when "0010",

         "0001000000000000" when "0011",

         "0000100000000000" when "0100",

         "0000010000000000" when "0101",

         "0000001000000000" when "0110",

         "0000000100000000" when "0111",

         "0000000010000000" when "1000",

         "0000000001000000" when "1001",

         "0000000000100000" when "1010",

         "0000000000010000" when "1011",

         "0000000000001000" when "1100",

         "0000000000000100" when "1101",

         "0000000000000010" when "1110",

         "0000000000000001" when others;

   dout<=q;

end hav;

2、RTL图

3、功能仿真图

4、时序仿真图

5、引脚分配

四、实验总结

(1)本实验是以数字电路为基础的实验课,因此数字电路理论知识必须要扎实;

(2)本实验需要耐心和细心,特别是在编写程序时,输入法应为英文输入,还有便是文件名要尽量一致,否则在编译时会报错;

(3)实验程序不同所产生的原理图与直接绘制的原理图有时会不同,但是仿真结果却是一样的,其原因是化简表达式有可能不是最简表达式。


第二篇:实验2、流水灯控制实验


实验2、数码管显示实验

【实验目的】

1、 学习LPC系列处理器GPIO口的使用方法;

2、 学习用Keil软件开发ARM程序方法和步骤。

3、 学习7SEG数码管的驱动原理。

4、 学习74HC595驱动数码管的编程方法。

【实验要求】

1、  了解LPC系列处理器GPIO口的功能原理;

2、  在Keil中设计ARM程序,实现对7SEG数码管的控制,和利用74HC595对数码管驱动的驱动程序的编写;

3、  附加要求:请在数码管显示数组里面实现0——F循环显示(程序一)

【实验原理】

1、LPC系列处理器GPIO口的原理

PINSEL(x)     管脚功能选择寄存器

IOPIN(x)  GPIO引脚值寄存器

IOSET(x)  GPIO输出置位寄存器

IODIR(x)  GPIO方向控制寄存器   

IOCLR(x)  GPIO输出清零寄存器

2、实验电路原理图

实验电路的连接如下图,LED1和LED2是利用74HC595进行驱动显示[74HC595的三个控制信号SDI(数据输入)、SCLK(时钟控制)、LOAD(数据显示)分别接到p0.27---p0.29],LED8 COMMON AONDE用GPIO口的P1.18到P1.25来控制的。输出低电平则LED点亮,输出高电平则LED熄灭。

 本次实验的实质原理同第一次试验,对数码管的驱动实际上也是对LED的驱动,因为数码管的各个段也是一个LED灯,所以大家只要明白了哪个管脚对应于哪个LED,就可以实现用数码管显示不同的数字。

4、  程序代码

(1)

#include<lpc23xx.h>

#define led (0xff<<18)//指定P1.18到P1.25

typedef unsigned int uint8;

typedef unsigned long uint16;

const uint8 DISP_TAB[3]={0xdb,0x12,0xe3};//数码管显示数组

void Delay(uint16 t)   //延时函数

{

   while(t--);

}

int main()

{

uint8 i;

IODIR1=(0xff<<18); //设置P1.18到P1.25为输出

while(1)

{

for(i=0;i<3;i++)

{

IOSET1=led;         //先输出高电平使数码管各段全部熄灭

IOCLR1=(DISP_TAB[i]<<18); //输出显示内容

Delay(10000000);  //延时输出

}

}

}

(2)

/*本实验的重点在对74HC595的驱动(show_seg_char()函数功能),其余的同上一个程序,观察显示,上网查找74HC595和74LS595的资料,分析显示结果*/

#include<lpc23xx.h>

#define SDI_SEG   1<<27  //指定p0.27

#define SCLK_SEG  1<<28 //指定p0.28

#define LOAD_SEG  1<<29  //指定p0.29     

typedef unsigned int uint8;

typedef unsigned long uint32;

typedef unsigned char uchar;

void Delay(uint32 t)  //延时函数

{

while(t--);

}

                                                  

void init_seg(void) //初始化连接数码管的端口

{

   PINSEL1 =PINSEL1&0x003fffff;  //选择GPIO 功能

   IODIR0 |=0x0f<<27;                 // 端口为输出

}

  void show_seg_char(uchar data)  //显示一位数字

{

        uchar i;

           IOCLR0=LOAD_SEG;         //锁存数,可从寄存器通过 ,可输入74HC595内的寄存器

              IOCLR0=SCLK_SEG;         //上升沿采样

             for(i=0;i<8;i++)

        {

            

           if((data&0x80)==0x80) //先发高位

                    IOSET0=SDI_SEG;

              else 

                  IOCLR0=SDI_SEG;

                     IOSET0=SCLK_SEG;   //上升沿

                     data=data<<1;

                  IOCLR0=SCLK_SEG;

                   

         }

        

         IOSET0=LOAD_SEG;             //显示数据  

         }

int main()

{

uchar tab[18]={0x24,0x6f,0x38,0x2a,0x63,0xa2,0xa0,0x2f,0x20,0x23,0x21,0xe0,

               0xb4,0x68,0xb0,0xb1,0xff,'\0'};     //  最后一个数据0xff为全灭

uint8 i;

init_seg();

while(1)

{

for(i=0;i<18;i++)

{

show_seg_char(tab[i]);

Delay(10000000);

}

}

}

附(来自网上):

74HC595  数码管驱动 

74HC595使用总结

74HC595外形图

         

 QB --|1              16|--Vcc

 QC --|2              15|--QA

 QD --|3              14|--SI

 QE  --|4              13|--/G

 QF  --|5              12|--RCK

 QG  --|6              11|--SCK

 QH  --|7             10|--/SCLR

  GND-|8               9|--QH'

           

74595的数据端:

QA--QH: 八位并行输出端,可以直接控制数码管的8个段。

QH': 级联输出端。我将它接下一个595的SI端。

SI: 串行数据输入端。

74595的控制端说明:

/SCLR(10脚): 低点平时将移位寄存器的数据清零。通常我将它接Vcc。

SCK(11脚):上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级)

RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低点平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。

/G(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。

//这个引脚不管是否用到,都要给他下拉。否则显示会不稳定,万一上拉,将没有任何显示。

注:74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。

74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。

与164只有数据清零端相比,595还多有输出端时能/禁止控制端,可以使输出为高阻态

更多相关推荐:
单片机实验报告——流水灯

电子信息工程学系实验报告课程名称:单片机原理及接口实验项目名称:实验2流水灯实验时间:20xx-10-21班级:电信092姓名:蔡**学号:*********一、实验目的:进一步熟悉keil仿真软件、prote…

流水灯设计与总结报告

流水灯设计与总结报告摘要近年来随着电子技术和微型计算机的发展呢单片机的档次不断提高应用领域也不断扩大已在工业控制尖家电汽车电子系统端科学智能仪器仪表日用办公自动化设备个人信息终端及通信产品中得到广泛的应用成为现...

流水灯实验报告

实验报告课程名称单片机实习专业班级姓名戴秀锋学号1104451216电气与信息学院和谐勤奋求是创新1234实验教学考核和成绩评定办法课内实验考核成绩严格按照该课程教学大纲中明确规定的比重执行实验成绩不合格者不能...

单片机流水灯实验报告

单片机流水灯实验报告一实验目的1熟练掌握AT89S52型开发板的使用方法和注意事项2了解简单单片机应用系统的设计方法3掌握应用KEIL软件编辑编译源汇编程序的操作方法4掌握应用USBISP烧录软件的操作方法5帮...

流水灯实验报告

扬州大学广陵学院课程设计报告设计题目流水灯设计姓名学号100036137班级时间20xx年7月4日目录一设计任务与要求3二实验目的3三实验思路31系统逻辑设计32源程序代码3LED流水灯控制模块4分频器5四位选...

流水灯实验报告

单片机流水灯实验一任务让8个LED灯轮流亮起来实现流水灯的功能二思路让接在P00口的LED灯亮起来那么只要把P00口的电平变为低电平就可以了相反如果要接在P00口的LED灯熄灭就要把P00口的电平变为高电平就可...

流水灯实验报告

实验一流水灯实验一实验目的1简单IO引脚的输出2掌握软件延时编程方法3简单按键输入捕获判断二实验实现的功能1开机时点亮12发光二极管闪烁三下2按照顺时针循环依次点亮发光二极管3通过按键将发光二极管的显示由顺时针...

msp430流水灯实验

includequotio430hquotunsignedcharLEDunsignedinta8BIT0BIT1BIT2BIT3BIT4BIT5BIT6BIT7intmainvoidStopwatchdogtimertoprev...

流水灯实验

LiaoningNormalUniversity单片机实验项目题目流水彩灯学院物理与电子技术学院专业电子信息工程班级序号03学号20xx1121020xx920xx1121020xx9学生名称程磊尹元元指导老师...

流水灯实验

华北电力大学实验报告实验名称课程名称专业班级自动化1203学生姓名孟令虎黄琰淦学号20xx09020xx620xx020xx306成绩指导教师张妍老师实验日期20xx511一实验目的1熟练掌握开发板的使用方法和...

左右来回循环的流水灯实验报告

青岛科技大学微机原理与接口技术综合课程设计(报告)题目_直流电机控制综合实验指导教师__________________________学生姓名__________________________学生学号___…

流水灯显示实验

成绩课程设计报告学院计算机与电子信息学院题目8255并行接口应用专业电子信息科学与技术班级电子072姓名XXXX学号XXX指导老师XXXX实验时间20xx年3月8日20xx年3月11日微机原理及应用课程设计实验...

流水灯实验总结(21篇)