当前位置:文档之家› 嵌入式流水灯实验

嵌入式流水灯实验

嵌入式流水灯实验
嵌入式流水灯实验

实验三GPIO输出控制实验

一、实验目的

熟悉LPC2000系列ARM7微控制器的GPIO输入控制。

二、实验设备

●硬件:PC机一台

LPC2131教学实验开发平台一套

●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。

三、实验内容

1. P0.7管脚控制EasyARM教学实验开发平台上的蜂鸣器报警。

2. GPIO 输出实验-流水灯实验

实验预习要求:

LPC2000 GPIO管脚的设置和控制。

四、实验原理

1.GPIO 输出实验,蜂鸣器控制

在EasyARM2131 开发板上,接有一个蜂鸣器,由P0.7 控制,通过跳线JP11 选择连接。蜂鸣器控制电路如所示。

图3-1 蜂鸣器控制电路

如果跳线JP11 选择蜂鸣器,当P0.7 输出低电平时,蜂鸣器鸣叫,当P0.7 输出高电平则停止鸣叫。程序设置PINSEL0 使P0.7 连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7 口,控制蜂鸣器,流程图见图3-2。

图3-2 蜂鸣器控制实验流程图

2.GPIO 输出实验-流水灯实验

单路LED 控制

EasyARM2131 开发板上有8 个独立的LED,分别由8 个GPIO口控制,现在使用其中一路进行

实验,使用的电路如图3-3所示。

图3-3 单路LED 电路图

当跳线JP12 连接LED1 时,P1.18 采用灌电流方式驱动LED1,当P1.18 输出低电平时,LED1 点亮,当P1.18 输出高电平时,LED1 熄灭。实验程序首先设置管脚连接GPIO,接着设置P1.18 口为输出模式,然后通过IO1CLR和IO1SET控制P1.18,驱动LED1 的亮灭。

GPIO 输出实验-流水灯实验

EasyARM2131 开发板上的8 路LED(LED8~LED1)分别可选择P1[25:18]进行控制,电路如图3-4

所示。

图3-4 8 路LED 控制电路

当跳线JP12 全部选择LED8~LED1 后,P1.25~P1.18 分别控制这8 路LED,就可以进行流水灯实验。流水灯显示花样可以通过数组人为定义,亦可通过一定的算法计算,程序清单所示

为采用人为定义数组控制显示花样的实验程序,流程图如图3-5 所示。

图3-5 流水灯花样显示流程图

五、实验步骤

实验内容1步骤

① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程BeepCon_C。

② 在user组里编写主程序代码main.c。

③将EasyARM教学实验开发平台上的P0.7管脚与Beep跳线短接。

④选择Project->Debug,启动AXD进行JLINK仿真调试。在工程窗口中选择DebugInRAM

生成目标,然后编译连接工程(单击Make按钮)。如图所示。

选择DebugInRAM 生成目标时,编译连接生成的目标代码就是用于在片内RAM 调试。

打开ADS开发环境下的【Edit】->【DebugInFLASH Settings...】,在”ARM fromELF”下Output format做如图选择,输出文件选择你的文件同一目录下,扩展名’.HEX’

⑥ 全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。

⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。

⑧ 可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。

在FLASH 中调试

在工程窗口中选择DebugInFLASH 生成目标,然后编译连接工程(单击Make 按钮)。

选择DebugInFLASH 生成目标时,编译连接生成的目标代码就是用于在片内FLASH 调试。编译连接通过后,按键盘的F5 键,启动AXD进行调试。注意,由于程序要烧写到片内FLASH,默认选项在每次装载FLASH 地址的调试文件时,将会擦除FLASH 并下载代码到FLASH 中。

脱机运行

使用DebugInFLASH 生成目标,并进行调试后(使用JLINK 仿真器),程序即烧写到片内FLASH 中。将JLINK 电源断开,重新上电,程序将脱机运行;

实验内容2实验步骤

① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程LedDisp_C。

② 在user组里编写主程序代码main.c。

③ 选用DebugInRam生成目标,然后编译链接工程。

④ 将EasyARM教学实验开发平台上的P1.[18:25]管脚对应与LED[1:8]跳线短接。

⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试。

⑥ 全速运行程序,程序将会在main.c的主函数中停止。

⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。

⑧ 可以单步运行程序,可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断LED1~LED8控制是否正确。

(3)实验参考程序

GPIO输出控制实验的参考程序见3-1。

程序清单1 错误!文档中没有指定样式的文字。GPIO输出控制实验1的参考程序

/****************************************************************************

* 文件名:main.c

* 功能:蜂鸣器控制。对蜂鸣器进行控制,采用软件延时方法。

* 使用I/O口直接控制,采用灌电流方式。

* 说明:将P0.7与Beep短接。

****************************************************************************/

#include "config.h"

#define BEEPCON 1<<7 // P0.7引脚控制Beep,低电平蜂鸣

/****************************************************************************

* 名称:DelayNS()

* 功能:长软件延时。

* 入口参数:dly 延时参数,值越大,延时越久

* 出口参数:无

****************************************************************************/ void DelayNS(uint32 dly)

{

uint32 i;

for(; dly>0; dly--)

{

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

}

}

/**************************************************************************** * 名称:main()

* 功能:控制蜂鸣器蜂鸣。

****************************************************************************/ int main(void)

{

PINSEL0 = 0x00000000; // 设置管脚连接GPIO

IO0DIR = BEEPCON; // 设置I/O为输出

while(1)

{

IO0SET = BEEPCON; // BEEPCON = 1

DelayNS(200);

IO0CLR = BEEPCON; // BEEPCON = 0

DelayNS(200);

}

return(0);

}

程序清单2

#include "config.h"

/* LED8~LED1 8 个LED 分别由P1.25~P1.18 控制*/

const uint32 LEDS8 = (0xFF << 18); // P1[25:18]控制LED8~LED1,低电平点亮

/****************************************************************************** *************** 函数名称:DelayNS()

** 函数功能:长软件延时

** 入口参数:dly 延时参数,值越大,延时越久

** 出口参数:无

******************************************************************************* ************/

void DelayNS (uint32 dly)

{ uint32 i;

for ( ; dly>0; dly--)

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

}

/****************************************************************************** *************

** 函数名称:main()

** 函数功能:流水灯显示实验。

** 调试说明:连接跳线JP12 至LED8~LED1。

******************************************************************************* ************/

/* 流水灯花样,低电平点亮,注意调用时候用了取反操作*/

const uint32 LED_TBL[] =

{

0x00, 0xFF, // 全部熄灭后,再全部点亮

0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮

0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加

0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减

0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个靠拢后分开

0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从两边叠加后递减

};

int main (void)

{ uint8 i;

PINSEL1 = 0x00000000; // 设置管脚连接GPIO

IO1DIR = LEDS8; // 设置LED 控制口为输出

while (1)

{

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

{ /* 流水灯花样显示*/

IO1SET = ~((LED_TBL[i]) << 18);

DelayNS(20);

IO1CLR = ((LED_TBL[i]) << 18);

DelayNS(20);

}

}

return 0;

}

参考程序3

/**************************************************************************** * 文件名:main.c

* 功能:LED显示控制。

* 通过GPIO直接控制8个LED产生流水灯效果

* 说明:P1.[18:25]管脚对应与LED[1:8]跳线短接,把P0.16与KEY跳线短接,

* 使用KEY1键来操作流水灯的运行方向

****************************************************************************/ #include "config.h"

const uint32 LEDS8 = 0xFF << 18; //P1[25:18]控制LED1~LED8,低电平点亮

const uint32 KEY = 1 << 16; //P0.16连接KEY1

const uint32 DISP_TAB[10] = { 0x01, 0x02, 0x04, 0x08,0x10,0x20,0x40,0x80, 0xff, 0xff}; const uint32 DISP_TAB2[10] = { 0x80 , 0x40, 0x20, 0x10, 0x08,0x04, 0x02,0x01, 0xff, 0xff};

// 两个LED 图案码表

/**************************************************************************** * 名称:DelayNS()

* 功能:长软件延时

* 入口参数:dly---延时参数,值越大,延时越久

* 出口参数:无

****************************************************************************/ void DelayNS(uint32 dly)

{ uint32 i;

for(; dly>0; dly--)

{

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

}

}

/**************************************************************************** * 名称:main()

* 功能:根据表DISP_TAB来控制LED显示。

****************************************************************************/ int main(void)

{ uint8 i;

PINSEL0 = 0x00; // P0[15:0] 用作GPIO

PINSEL1 = 0x00; // P0[31:16] 用作GPIO

PINSEL2 = PINSEL2 & (~0x08); // P1[25:16]连接GPIO

IO1DIR = LEDS8; // 设置P1[25:18]为输出口,控制LED[7:0]

while(1)

{

if((IO0PIN&KEY)!=0) // 测试KEY 按键

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

{

IO1CLR = DISP_TAB[i]<<18;

DelayNS(50);

IO1SET = 0xffffffff;

}

DelayNS(10);

if((IO0PIN&KEY)==0) // 测试KEY 按键

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

{

IO1CLR = DISP_TAB2[i]<<18;

DelayNS(50);

IO1SET = 0xffffffff;

}

DelayNS(10);

}

return(0);

}

参考程序4

1.

/**************************************************************************** * 文件名:LEDCON.C

* 功能:LED闪烁控制。对发光二极管LED4进行控制,采用软件延时方法。

* 使用I/O口直接控制LED,采用灌电流方式。

* 说明:将跳线器JP4_LED4短接。

****************************************************************************/ #include "config.h"

#define LEDCON 0x02000000 /* P0.25引脚控制LED4,低电平点亮*/

/**************************************************************************** * 名称:DelayNS()

* 功能:长软件延时

* 入口参数:dly 延时参数,值越大,延时越久

* 出口参数:无

****************************************************************************/ void DelayNS(uint32 dly)

{ uint32 i;

for(; dly>0; dly--)

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

}

/**************************************************************************** * 名称:main()

* 功能:控制LED闪烁

****************************************************************************/ int main(void)

{ PINSEL0 = 0x00000000; // 设置所有管脚连接GPIO

PINSEL1 = 0x00000000;

IO0DIR = LEDCON; // 设置LED4控制口为输出

while(1)

{ IO0SET = LEDCON;

DelayNS(30);

IO0CLR = LEDCON;

DelayNS(30);

}

return(0);

}

六、思考

(1)理解实验参考程序中Startup.S文件的作用。

(2)实验程序中的main()函数名是否可以更改为其它名字?(提示:main只是一个标号。)

(3)在实验参考程序中,如何控制蜂鸣器报警的速度?

七、实验报告要求

写出实验目的、实验仪器设备、实验原理、实验内容、源代码和操作步骤,调试结果。

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

青 岛 科 技 大 学 微机原理与接口技术综合课程设计(报告) 题 目 __________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________ 院(部)____________________________ 专业________________班 ______年 ___月 ___日 直流电机控制综合实验 周艳平 宋雪英 01 信息科学技术学院 计算机科学与技术0961 2012 12 27

摘要 (2) 1、单片机概述 (2) 2、仿真软件介绍 (2) 3、需求分析 (3) 一、课程设计目的 (3) 二、课程设计要求 (4) 三、实验内容 (4) 1、设计任务与要求 (4) 2、系统分析 (4) 1).硬件电路设计(画出原理图、接线图) (5) 2)软件框图 (7) 3、用keil建项目流程 (8) 4、程序清单 (9) 4、系统调试 (11) 四、设计总结(结论) (12)

摘要 近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。能够通过按键控制8个LED小灯从左到右依次点亮。 关键字:单片机、LED流水灯 1、单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微 型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处 理器、存储器和I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合, 便可成为一个单片机控制系统。 单片机经过1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向发展,它 们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 2、仿真软件介绍 (1).Keil uv3 运行Keil uv3

定时器控制流水灯

成绩 信息与通信工程学院实验报告 (操作性实验) 课程名称:微机原理与微控制器应用 实验题目:c51单片机的定时器实验指导教师: 班级: 学号:学生姓名: 一、实验目的和任务 1.掌握定时器中断的编程方法。 2.掌握keil C51集成开发环境在硬件仿真条件下各参数的设置。 二、实验仪器及器件 硬件:电脑一台、微机原理与单片机试验箱:51开发板、开关及LED显示单元、导线若干 软件:keil uVision4 三、实验内容及电路图 利用实验板上的八个LED灯作显示,利用定时器中断编写中断一次为50ms的定时程序,控制单片机定时器进行定时,总定时时间为0.75ms。

四、流程图与程序 #include "SST89x5x4.h" #include int temp=0x01,num=0; void T0Int() interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; num++; if(num==15) { num=0; P1=_crol_(temp,1);

temp=P1; } } void main() { EA=1; ET0=1; TMOD=0X01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; TR0=1; while(1); } 五、实验结果 八个LED灯由左往右依次亮起,并且每个LED灯点亮时间大约为0.75m。

六、实验数据分析及处理 从实验现象来看,LED灯从左到右依次点亮,符合实验要求,说明实验操作正确,实验结果正确。 七、实验结论与感悟(或讨论)

花样流水灯实验报告

黄淮学院信息工程学院 单片机原理及应用课程设计性实验报告

五、硬件电路设计 根据设计任务,首先进行系统硬件的设计。其硬件原理图由LED显示电路和单片机最小系统组成,如图所示,其中包括时钟电路采用部时钟方式,复位电路采用上电自动复位。由于单片机的I/O口的高电平驱动能力只有微安级,而灌电流可以达到3毫安以上,因此采用低电平驱动。P1、P2、P3分别控制8个led灯。 六、软件程序设计 1、软件设计思路 如果通过上图所示电路图完成实验要求,通过数组,分别同时控P0、P1、P2分别控制8个led灯,从而协调控制24个灯实现花样流水灯效果。 开始 编写数组 主循环 逐个点亮 24灯同时闪烁 逐个熄灭

P3=table1[i]; delayms(500); } shan();//全部闪烁 for(i=0;i<8;i++)//逐个熄灭{ P3=table2[i]; delayms(500); } for(i=0;i<8;i++) { P1=table3[i]; delayms(500); } for(i=0;i<8;i++) { P0=table2[i]; delayms(500); } } } void delayms (uintt) { uint x,y; for(x=t; x>0;x--) for(y=50;y>0;y--); } 七、软硬件仿真调试分析 1、仿真调试结果

图片 1 逐个点亮图片 2 24灯闪烁 图片 3 逐个熄灭 2、性能测试及结果分析 通过仿真结果发现通过上述系统可以实现实验要求,24个灯逐个点亮,24个灯全亮后,24个灯一起闪烁,闪烁5次后,然后24个灯逐个熄灭。由此证明系统满足实验要求。 八、项目总结 在本次花样流水灯试验中,使用循环程序、数组语句实现了实验要求,设计过程中遇到了很多的问题,但经过努力,最终设计出了合理的解决方案。通过此次实验,对多个led灯的控制能力进一步得到提升。 九、项目设计报告成绩 实验报告成绩: 指导教师签字: 年月日

哈工大数电自主实验 数字流水灯

Harbin Institute of Technology 数字电路自主设计实验 院系:航天学院 班级: 姓名: 学号: 指导教师: 哈尔滨工业大学

一、实验目的 1.进一步掌握数字电路课程所学的理论知识。 2.熟悉几种常用集成数字芯片的功能和应用,并掌握其工作原理,进一步学会使用其进行电路设计。 3.了解数字系统设计的基本思想和方法,学会科学分析和解决问题。 4.培养认真严谨的工作作风和实事求是的工作态度。 5.数电课程实验为我们提供了动手实践的机会,增强动手实践的能力。 二、实验要求 设计流水灯,即一排灯按一定的顺序逐次点亮,且可调频、暂停、步进。 三、实验步骤 1.设计电路实现题目要求,电路在功能相当的情况下设计越简单越好; 2. 画出电路原理图(或仿真电路图); 3.元器件及参数选择; 4.电路仿真与调试; 5.到实验时进行电路的连接与功能验证,注意布线,要直角连接,选最短路径,不要相互交叉,注意用电安全,所加电压不能太高,以免烧坏芯片; 6.找指导教师进行实验的检查与验收; 7.编写设计报告:写出设计与制作的全过程,附上有关资料和图纸,心得体会。 四、实验原理 设计流水灯的方法有很多种,我的设计思路是: 利用555定时器产生秒脉冲信号,74LS161组成8进制计数器,74LS138进行译码,点亮电平指示灯。并通过调节555的电阻,实现频率可调。通过两与非门,实现暂停、步进功能。

1.秒信号发生器 (1)555定时器结构(2)555定时器引脚图 (3)555定时器功能表 (4)555定时器仿真图

2. 74LS161实现8进制加计数 74LS161是常用的四位二进制可预置的同步加法计数器,它可以灵活地运用在各种数字电路,以及单片机系统中实现分频器等很多重要的功能。 (1)74LS161同步加法器引脚图 管脚图介绍: 始终CP和四个数据输入端 P0-P3 清零CLR 使能EP,ET 置数PE 数据输出端Q0-Q3 进位输出TC (2)74LS161功能表 (5)74LS161仿真图 对74LS161进行八进制计数改组,需要一个与非门,即芯片74LS00,也就是将74LS161的输出端通过与非门,当输出为8时将输出为高电平的端口与非后接到74LS161的清零段。即计数到8是异步清零,所以74LS161变为八进制计数。

单片机花样流水灯设计实验报告

**大学 物理学院 单片机花样流水灯设计实验 课题:花样流水灯设计 班级: 物理 *** 姓名: *** 学号: ……………

当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。 制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。 本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。 关键字:AT89C51 单片机流水灯数码管

1. 单片机及其发展概况 单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。 2. Protues仿真软件简介 Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。 【实验设计目标】 设计要求以发光二极管作为发光器件,用单片机自动控制,对8个LED 灯设计至少3种流水灯显示方式,每隔20秒变换一次显示花样,计时通过一个二位七段数码管显示。

嵌入式系统流水灯、按键、定时器实验报告

嵌入式系统应用 实验报告 姓名: 学号: 学院: 专业: 班级: 指导教师:

实验1、流水灯实验 1.1实验要求 编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。1.2原理分析 实验主要考察对STM32F10X系列单片机GPIO的输出操作。 参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式:◇输入浮空 ◇输入上拉 ◇输入下拉 ◇模拟输入 ◇开漏输出 ◇推挽式输出 ◇推挽式复用功能 ◇开漏式复用功能 根据实验要求,应该首先将GPIO配置为推挽输出模式。

由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。反之,LED灯熄灭。 1.3程序分析 软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。 GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO 时钟: RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE); 然后配置GPIO输入输出模式: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再配置GPIO端口翻转速度: GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 最后将配置好的参数写入寄存器,初始化完成: GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。

单片机实验指导

(内部教材) 单片机实验指导书 周小波编 阜阳师范学院物理与电子科学学院电子信息科学与技术教研室

第一章系统概述 一、系统简介 MCS-51单片机实验板是物理与电子科学学院自主研发设计的单片机实验系统。板载一片51内核STC89C52单片机,整个实验系统由17个独立模块组成,各模块相互独立,给学生提供了更大的发挥空间。利用目前流行的Keil c51软件,进行软、硬件仿真开发调试。 二、各模块电路 (1)单片机最小系统模块 最小系统电路主要由STC89C52单片机、时钟电路、复位电路等构成,所有的IO口均引出。 (2)串口电平转换模块

串口电平转换电路主要由MAX232芯片以及相关外围电路构成,可以用来下载程序,以及作串口通信实验。 (3)数码管驱动模块 8位共阳极数码管采用8550(PNP)三极管驱动,模块预留位选端口和段选端口两排插针,根据需要可自行连接。 (4)LED发光二极管模块 板载8个发光二极管,J1为接线端口,可根据需要自行连接到单片机的IO 口或者其他外设上,PZ2为排阻,起限流作用。 (5)键盘模块 键盘电路由4各独立按键和4*4矩阵键盘构成,Pk2接口为独立键盘的接线端子,Pk1端口为矩阵键盘的接线端子。

(6)DA转换模块 DA转换电路采用8位DA芯片DAC0832,PDA端口为8位数据的输入端,11 脚为DAC0832输出端,发光二极管用于指示DA转换的结果。 (7)AD转换模块 AD转换电路由8位AD转换芯片ADC0804构成,通过调节VR1电位器可以改 变AD输入端的模拟电压。

(8)电机驱动模块 采用L298N模块作为电机驱动,可以驱动2个直流电机或1个步进电机, J5为信号输入端,输出端J6接直流电机或者步进电机。 (9)总线扩展模块 采用82C55芯片作为总线的扩展,采用一片锁存器74HC573,使P0口可以作 为地址和数据总线的复用端口。J9为82C55的控制总线接线端子,J10为82C55 的地址和数据接线端子,PA、PB、PC为82C55的输出端口,可以外接其他外设完 成相应的实验。

单片机流水灯实验报告

流水灯实习报告 一、实验原理 单片机通过P0口连接锁存器74ls273,P0同时作为低八位地址,实验板内P2口连接74ls138,任意一个输出连接74ls273片选,再将74ls273接八个LED 灯,通过软件控制对74ls273送入显示数据就可以按要求显示了。 二、硬件原理图 三、实验程序 ORG 00H AJMP START ORG 001BH AJMP INT ORG 0100H START: MOV SP,#60H MOV TMOD,#10H MOV TL1,#00H MOV TH1,#4CH MOV R0,#00H MOV R1,#20 SETB TR1 SETB ET1 SETB EA

INT: PUSH ACC PUSH PSW PUSH DPL PUSH DPH CLR TR1 MOV TL1,#B0H MOV TH1,#3CH SETB TR1 DJNZ R1,EXIT MOV R1,#20 MOV DPTR,#DATA MOV A,R0 MOVC A,@A+DPTR MOV DPTR,#8000H Movx @DPTR,A INC R0 ANL 00,#07H EXIT: POP DPH

POP PSW POP ACC RETI DATA: DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,0H END 四、实验功能 以实验机上74LS273做输出口,接八只发光二极管,编写程序,使开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去. 五、实验总结 通过这次课程设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。而安排课程设计的基本目的,是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟和领悟力。 尤其是观察、分析和解决问题的实际工作能力。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演和准备毕业设计工作。通过课程设计,让我们找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。课程设计促进了我

嵌入式课程设计流水灯

流水灯编程 实验目的: 掌握GPIO端口的基本控制方法 掌握硬件电路仿真方法。 实验内容: 1、复习流水灯的工作原理。 2、按教材上 3、4节的内容或实验指导书2、1节的内容创建好项目,生成可执行文件。 3、阅读LED示例程序代码。 4、软件模拟,无误后下载到实验板上运行,观察效果。 5、通过硬件仿真的方式调试程序。分析LED_Init、main这2个函数中每一行代码的作用。 6、修改程序使得灯改变一次状态的时间间隔为0、02、0、01、0、1、0、3、0、5、1、2秒。 7、修改程序使得灯闪动的方向反向。 8、修改循环亮灯的程序,使每次亮灯的起始位置依次下移。 选做进阶版 1.用左边4个灯闪烁代表绿灯,右边4个灯闪烁代表红灯,8个灯 全亮代表黄灯。模拟交通信号灯运行(绿灯10秒,红灯20秒, 绿到红过渡时黄灯3秒) 2、将自己的学号编码用LED灯效果展示出来。 实验原理:

电路中有L0,L1,L2,L3,L4,L5,L6,L7共八个发光二极管,当引脚LED_SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。 A~H引脚连接STM32F108VB芯片的PE8~PE15,程序初始化时,对其进行初始设置。引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。注意,LED_SEL连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的IO不可用,需对AFIO_MAPR寄存器进行设置,设置其为IO可用。 实验过程及结果描述: 按实验内容的步骤一步一步的来。重点描述实验内容的6、7、8还有选修进阶的1、2、 要实现改变灯状态的时间间隔,只需改变delay_ms这函数的里面的参数即可,例如时间间隔改为0、02秒就将参数改为20,1秒就将参数改为1000,(delay_ms()函数里面参数的单位为ms)其它以此类推。通过参数的改变可以瞧到灯状态改变的时延相应的改变了。 改变灯的闪动方向则将light左移或者右移位数的值赋给light,例如循环一次左移一位,则light=light<<1,右移则就是light=light>>1;这里又涉及到当左移(右移)到最左(右)一位时,再次亮灯时的起始位置设置的问题,这里就可以设置当左移(右移)到最左(最右),设置一个判断语句当左移(右移)到左(右)端点时,将初始值赋给题目要求的位置即可。 实验结果:灯的移动方向改变。每次循环完一次之后通过改变赋给初

单片机实训,流水灯,霹雳灯

单片机实训 --霹雳灯 学生姓名:陈文锋 学院:信息工程学院 班级: 12应用电子技术 学号: 2012011846 指导教师:王颖 日期: 2014 年 5 月

目录 第一章、任务书.........................................................................................第二章、总体方案设计及选择................................................................. (1) 实验原理......................................................................................... 第三章、电路设计..................................................................................... (1) 硬件设计........................................................................................ (2) 软件设计......................................................................................... (3) 电路板制作及联机调试..................................................................第四章、程序清单................................................................................... 第五章、设计心得.................................................................................... 第六章、参考资料....................................................................................第七章、附件(实物图)........................................................................

流水灯设计报告

流水灯设计报告 一、实验目的 通过本实验教学,学习数字电路综合应用(将单元电路组成系统电路的方法),掌握简单数字系统设计方法。通过查阅手册和文献资料,培养独立分析和解决实际问题的能力。掌握示波器、信号发生器、频率计、万用电表等常用电子仪器设备的使用。获得数字电路综合应用能力。 二、实验内容 用D 触发器和译码器设计一个8位可循环的流水灯,用仿真软件进行仿真,最后根据电路图在万能板上焊接出来。 三、实验原理 1.D 触发器 D 触发器的状态方程为:Q n+1=D 。其状态的更新发生在CP 脉冲的边沿,74LS74(CC4013)、74LS175(CC4042)等均为上升沿触发,故又称之为上升沿触发器的边沿触发器,触发器的状态只取决于时针到来前D 端的状态。D 触发器应用很广,可用做数字信号的寄存,移位寄存,分频和波形发生器等,图A 为74LS74外引线排列,图B 为D 触发器逻辑符号。 2.译码器 74LS138 为3 线-8 线译码器,共有 54LS138和 74LS138 两种线路结构型式 工作原理: ① 当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。比如:A2A1A0=110时,则Y6输出端输出低电平信号。 图A 74LS74外引线排列 图B D 触发器逻辑符号

表1 74LS138逻辑功能表 ② 利用 E1、E2和E3可级联扩展成 24 线译码器;若外接一个反相器还可级联扩展成 32 线译码器。 ③ 若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。 ④ 可用在8086的译码电路中,扩展内存。 引脚功能: A0∽A2:地址输入端 STA (E1):选通端 /STB (/E2)、/STC (/E3):选通端(低电平有效) /Y0∽/Y7:输出端(低电平有效) VCC :电源正 GND :地 A0∽A2对应Y0——Y7;A0,A1,A2以二进制形式输入,然后转换成十进制,对应相应Y 的序号输出低电平,其他均为高电平。 如图C 所示为74LS138译码器的引脚排列图。功能表如表1所示 四、实验结果 图C 74LS138的引脚排列图

流水灯课程设计

基于单片机的流水灯设计 学院: 专业: 指导老师: 姓名: 班级: 学号: 年月日

摘要:当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。 This age is a new technology emerge in endlessly era, in the electronic field especially automation intelligent control field, the traditional schism components or digital logic circuit, is composed of control system with unprecedented speed was replaced by microcontroller intelligent control system. SCM has small, strong function, low cost, etc, it can be said that wide application, intelligent control and automatic control core is the microcontroller. 关键词:LED 单片机控制系统流水灯 目录 1.前言 1.1 设计概述 (2) 1.2 设计主要功能 (2) 2. 硬件组成 2.1 80C51单片计算机的组成原理 (3) 2.组成框图及内部总体结构 (3) 2.寄存器和存储器………………………………………………………

流水灯课程设计(免费)..

数字电子技术课程设计报告 (彩灯控制器) 专 专业:电子信息工程 班级:7B1211 学号:123025 姓名:白旭飞 年月:2014-6-28

一、设计要求 1. 以8或10个指示灯作为显示器件,能自动的从左到右、从右到左自动的依次被点亮,如此周而复始,不断循环。 2.打开电源时控制器可自动清零,每个指示灯被点亮的时间相同约为0.5S~2S 范围内。 3.用计算机画出设计电路图,进行仿真分析验证其正确性。 4.写设计说明书一份(画总原理框图以及说明主要工作原理,单元电路的设计和元器件的选择,画出完整的电路图和元器件明细表,收获、体会及建议) 二、设计的作用,目的 1.作用 利用控制电路可使彩灯(例如霓虹灯)按一定的规律不断的改变状态,不仅可获得良好的观赏效果,且可以省电(与彩灯全亮相比)。 2.目的 用NE555芯片,74LS151芯片,74LS163芯片,74LS194,以及一些逻辑门芯片完成彩灯控制器。 三、设计的具体实现 1.系统概述 接通电源时,555占空比可调振荡器产生1s单位的脉冲,脉冲送到下一个模块74LS151计数器,目的实现模5计数器,达到每五秒生成一个脉冲输向下一个芯片74LS194移位寄存器以及计数器74LS163。进而彩灯在脉冲的作用下依次点亮,并实现循环,完成实验要求。 2.总体思路 先用555定时器用来生成1s标准单位cp脉冲,把脉冲给计数器74LS151,通过74LS151形成模5加法计数器,再将74LS151输出信号供给74LS194移位寄 存器输入端,Q 0,Q 1, Q 2 和Q 3 接彩灯然后连接几个逻辑门,把74LS194接成环形 计数器。就能实现基本电路要求。 3.方案设计 总体电路共分三大块。第一块实现时钟信号的产生;第二块实现灯亮灭情况的演示;第三块实现灯亮灭的控制及节拍控制。

实验一 Keil4基本用法及流水灯实验指导书

实验一 Keil4基本用法及流水灯 【实验目的】 1、学习Keil4的基本方法; 2、掌握在开发过程中程序工程模板的建立和使用; 3、掌握LPC1768的GPIO口的用法。 【实验要求】 1、了解LPC系列处理器GPIO口的功能原理; 2、了解程序设计中多模块编程的方法; 【实验原理】 一、LPC系列处理器GPIO口的原理 参见教材中有关GPIO口的章节,重点要掌握GPIO口的初始化、数据的输入和输出;本实验通过LPC1768的IO口控制8个LED的亮灭。 二、实验板上的LED 1.原理图 实验板上LED的硬件连接参见下图。 2.说明

实验板上的8个LED利用GPIO口直接控制。图中的8个LED引脚(LD11~LD4)分别对应P2.0~P2. 7。8根信号线经过74LV244W驱动以后连接到发光二极管LED上,引脚输出高电平则LED点亮,输出低电平则LED熄灭。 三、程序工程模板说明 1.工程目录说明 在程序开发中,尤其是涉及到的代码较多时,应该将不同的代码分别存放,这样做的好处是系统代码结构清楚,查找、管理和代码移植都容易。实验板提供的程序工程模板中,主要有以下几个目录: 1)Common:这个目录存放了几乎各个实验都要使用的公用代码、IAR配置宏和链接器命令文件。 2)App:这个目录存放了自己的应用程序。 2.工程模板的建立 1)建立一个名叫led的目录,将以上四个目录拷贝到该目录中; 2)在该目录中创建一个名叫led的工程; 3)在工程选项中右键,选择“Add Group…”,添加三个组:Common、Target和User。 4)在Common组中选择“Add Files…”将Common\src目录中的四个文件添加进工程; 5)在Target组中添加目标板驱动程序,本例中只需要添加fio.c; 6)在User组中自己新建一个源程序,本例中取名为led_test.c; 7)按照IAR EW ARM设置章节中的内容对工程进行设置。 以上的程序开发流程应当牢记,以后我们的每个实验都采用这个流程进行。 四、驱动程序说明 1.fio.c说明 在本例中使用到的目标板驱动程序为fio.c,它提供了4个函数: 1)GPIOInit( ):对GPIO口的初始化,三个参数分别为端口组号、端口类型和端口方向; 2)LedsInit( ):对4个Led的初始化操作; 3)LedOn( ):点亮一个Led。参数为led灯的编号。如果给出的参数大于4,则按取余以后算出的值点亮; 4)LedOff( ):熄灭一个Led。 2.fio.h说明 fio.h是fio.c的配套头文件,内容主要有:SCS寄存器中GPIOM设置的参数、各GPIO 寄存器的地址、几个参数宏、fio.c中的几个函数的extern外部函数声明。 【实验内容与步骤】 一、了解Keil4软件基本用法: (1)在Keil4中新建一个工程文件的步骤:详见参考文档“Keil_uvision_4基本使用教程”;(2)在Keil4中打开一个现成的工程文件,对其进行环境设置、编译、链接及生成可执行文

单片机流水灯实验报告

单片机流水灯实验报告 电子信息工程学系实验报告 课程名称:单片机原理及接口 实验项目名称:实验2 流水灯实验时间: xx-10-21 班级:电信092 姓名:蔡松亮学号: 910706247 一、实验目的: 进一步熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。 二、实验原理: MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I/O端口即可以按字节操作,又可以按位操作。当系统没有扩展外部器件时,I/O端口用作双向输入输

出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。 以P1口为例,内部结构如下图所示: 图 P1口的位结构 作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。 I/O口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;P0口作I/O 口使 用时应外接10K的上拉电阻,其它口则可不必;P2可某几根线作地址使用时,剩下的线不能作I/O口线使用;P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。

发光二极管流水灯实验

实验一发光二极管流水灯实验 一、实验目的: 1.通过AT89C51单片机控制8个发光二极管,八个发光二极管分别接在单片机的P0.0-P0.7接口上,输出“0”时,发光二极管亮。开始时P0.0→P0.1….→P0.7,实现亮点以1HZ频率循环移动。 2.用PROTEUS 设计,仿真以AT89C51为核心的发光二极管流水灯实验装置。 3.掌握发光二极管的控制方法。 二、PROTEUS电路设计: 三、程序部分 #include sbit control = P3^7; void delay(int z) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { int i,tmp; control = 0; P0 = 0xef; delay(1000); for(i=1;i<=7;i++) { tmp = P0; P0 = (tmp>>1)+ 0x80; delay(1000); } }

实验二开关控制LED数码管实验 一、实验目的: 1.通过AT89C51读入4位开关K1、K2、K3、K4的输入状态,并按照二进制编码关系0-F输出到数码管显示。(如K4K3K2K1全部按下,则显示F;若只有K2按下,则显示2。) 2.掌握LED数码管的静态显示。 3.掌握I/O口的控制方法。 二、PROTEUS电路设计:

三、程序部分 #include unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82, 0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,}; unsigned char KEY; void main() { while(1) { KEY = P2; switch(KEY) { case 0xff:P0 = table[0];break; case 0xfe:P0 = table[1];break; case 0xfd:P0 = table[2];break; case 0xfc:P0 = table[3];break; case 0xfb:P0 = table[4];break; case 0xfa:P0 = table[5];break; case 0xf9:P0 = table[6];break; case 0xf8:P0 = table[7];break; case 0xf7:P0 = table[8];break; case 0xf6:P0 = table[9];break; case 0xf5:P0 = table[10];break; case 0xf4:P0 = table[11];break; case 0xf3:P0 = table[12];break; case 0xf2:P0 = table[13];break; case 0xf1:P0 = table[14];break; case 0xf0:P0 = table[15];break; default :break; } } }

流水灯设计与总结报告

流水灯设计与总结报告 摘要:近年来,随着电子技术和微型计算机的发展呢,单片机的档次不断提高应用领域也不断扩大,已在工业控制、尖 端科学、智能仪器仪表、日用家电汽车电子系统、 办公自动化设备、个人信息终端及通信产品中得到广泛 的应用,成为现代电子系统中最重要的智能化的核心部件。关键字:单片机,流水灯 需求分析: 随着现代社会的发展,人们越来越追求审美和新颖,而流失灯就是其中一种,以前简单的照明工具变得越来越多样化,流水灯的千姿百态给人一种视觉冲动,现在不管大街小巷我们都可以随处可见这种变幻万千的流水灯,而这种流水灯我们可以产用子电路去设计,我们可以用控制器和状态译码器来实现灯光的流水效果,但是现在我们可以用单片机AT89C51来实现,因为其相对于电子电路有明显的优越性,控制硬件电路比较简单,软件方面也不复杂,而且功能作用并不低于电子电路设计的。由于它的小巧方便,我们采用单片机来做流水灯。 设计系统

1.复位电路部分 为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。手动按钮不仅具有上电复位的功能,还可以通过按按键的方法实现复位,(如上图所示按S22)此时电源VCC经两个电阻分压,在RST端产生一个复位高电平。 2.时钟电路部分 时钟电路为单片机工作提供基本时钟,它是计算机工作的心脏,它控制着计算机的工作节奏。时钟电路一般由晶体震荡器和电容组成。

流水灯焊接实验报告

电子设计实训总结报告设计题目:流水灯套件 专业班级:14信工一班 学生姓名:蔡翔 学号:20142313 指导教师:许小丽

流水灯NE555设计 一、设计任务与要求 1.了解NE555以及其组成的多谐振荡器的原理; 2.了解CD4017十进制计数器; 3.学会利用proteus绘画原理图和电路焊接方法; 二、设计原理及分析 1.本实验套件由NE555组成的多谐振荡器和CD4017十进制计数器/脉冲分配器组成; 2.改变RV1大小可改变振荡周期,即灯组流动速度。当第一个脉冲到来时,Q0输出高电平,LED1点亮,第二个脉冲到来时,Q1输出高电平,LED2点亮,。。。,直到Q9输出高电平,LED10点亮,完成一个循环输出,接着进行第二轮输出,由LED1亮,LED2亮。。。 三、方案论证及实现 改变RV1大小可改变振荡周期,即灯组流动速度。当第一个脉冲到来时,Q0输出高电平,LED1点亮,第二个脉冲到来时,Q1输出高电平,LED2点亮,。。。,直到Q9输出高电平,LED10点亮,完成一个循环输出,接着进行第二轮输出,由LED1亮,LED2亮。。。 四、总原理图及元器件清单 1.总原理图

2.元器件清单 3.主要元器件功能及原理 NE555是属于555系列的计时IC的其中的一种型号,引脚1为接地,2为触发点,3为输出,4为重置,5为控制,6为重置锁定,7为发电,8为V+。其主要特点为:(1)只需简单的电阻器、电容器,即可完成特定的振荡延时作用。其延时范围极广,可由几微秒至几小时之久。(2)它的操作电源范围极大,可与TTL,CMOS等逻辑电路配合,也就是它的输出电平及输入触发电平,均能与这些系列逻辑电路的高、低电平匹配。(3)其输出端的供给电流大,可直接推动多种自动控制的负载。(4)它的计时精确度高、温度稳定度佳,且价格便宜。 CD4017是一种十进制计数器/脉冲分配器。CD4017 是5 位Johnson 计数器,具有10 个译码输出端,CP、CR、INH 输入端。时钟输入端的斯密特触发器

嵌入式课程设计流水灯

嵌入式课程设计流水灯-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

流水灯编程 实验目的: 掌握GPIO端口的基本控制方法 掌握硬件电路仿真方法。 实验内容: 1.复习流水灯的工作原理。 2.按教材上节的内容或实验指导书节的内容创建好项目,生成可执行文件。 3.阅读LED示例程序代码。 4.软件模拟,无误后下载到实验板上运行,观察效果。 5.通过硬件仿真的方式调试程序。分析LED_Init、main这2个函数中每一行代码的作用。 6.修改程序使得灯改变一次状态的时间间隔为、、、、、1、2秒。 7.修改程序使得灯闪动的方向反向。 8.修改循环亮灯的程序,使每次亮灯的起始位置依次下移。 选做进阶版 1.用左边4个灯闪烁代表绿灯,右边4个灯闪烁代表红灯,8个 灯全亮代表黄灯。模拟交通信号灯运行(绿灯10秒,红灯20秒,绿到红过渡时黄灯3秒) 2.将自己的学号编码用LED灯效果展示出来。 实验原理:

电路中有L0,L1,L2,L3,L4,L5,L6,L7共八个发光二极管,当引脚LED_SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。 A~H引脚连接STM32F108VB芯片的PE8~PE15,程序初始化时,对其进行初始设置。引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。注意,LED_SEL连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的IO不可用,需对AFIO_MAPR寄存器进行设置,设置其为IO可用。 实验过程及结果描述: 按实验内容的步骤一步一步的来。重点描述实验内容的6、7、8还有选修进阶的1、2. 要实现改变灯状态的时间间隔,只需改变delay_ms这函数的里面的参数即可,例如时间间隔改为秒就将参数改为20,1秒就将参数改为1000,(delay_ms()函数里面参数的单位为ms)其它以此类推。通过参数的改变可以看到灯状态改变的时延相应的改变了。 改变灯的闪动方向则将light左移或者右移位数的值赋给light,例如循环一次左移一位,则light=light<<1,右移则是light=light>>1;这里又涉及到当左移(右移)到最左(右)一位时,再次亮灯时的起始位置设置的问题,这里就可以设置当左移(右移)到最左(最右),设置一个判断语句当左移(右移)到左(右)端点时,将初始值赋给题目要求的位置即可。

相关主题
文本预览
相关文档 最新文档