任务二单片机控制流水灯
- 格式:ppt
- 大小:1.95 MB
- 文档页数:145


宁波技师学院
课程设计
设计课题: 流水灯控制
专业班级: *********
学生姓名: ** 学号: **
指导老师: *** **
宁波技师学院电气技术系
二零一一年三月
1 摘 要
随着计算机技术的迅猛发展,计算机越来越广泛地应用于人们工作和生活的各个领域。作为计算机;领域里的一个重要方面,单片机及其应用技术近年来也得到了长足发展。
单片机被广泛地应用在工业自动化控制、智能仪器仪表、数据采集、通讯以及家用电器等领域。单片机以其与通用微机完全不同的发展模式,不断满足工业测控、恶劣环境下可靠运行的要求。单片机已成为现代工业领域中不可缺少的重要角色。
2 目 录
1 总体设计··········································3
2 硬件设计··········································4
2.1 LED显示····································4
2.2 数码管显示··································4
2.3 按键控制····································5
2.4 复位电路····································5
3 软件设计··········································6
3.1 流程图······································6
单片机跑马灯(流水灯)控制实验报告
实验目的:
本实验旨在通过使用单片机对LED灯进行控制,实现跑马灯(流水灯)的效果,同时熟悉单片机编程和IO口的使用。
实验器材:
1)STC89C52单片机
2)最基本的LED灯
3)面包板
4)若干跳线
实验过程:
1.硬件连接:将单片机的P2口与面包板上的相应位置连接,再将LED灯接入面包板中。
2.编写程序:按照题目要求编写所需程序。
3.单片机烧录:将程序烧录进单片机中,即可实现跑马灯效果。
程序详解:
1. 由于LED灯是呈现亮灭效果,我们要编写程序来控制LED的亮灭状态。
2. 在程序中,我们通过P2口控制LED灯的亮灭状态。例如,若要让LED1亮,我们就将P2口的第一个引脚设置为低电平(0),此时LED1就会发光。同样地,若要LED2,LED3等依次点亮,则需要将P2口 的第二个、第三个引脚设置为低电平,依此类推即可。
3. 接下来,我们要实现每个LED灯的亮灭时间间隔,并实现跑马灯的效果。
4. 在本实验中,我们采用了计时器中断的方式来实现灯光的控制,即在定时器中断函数中对P2口进行控制,这样可以方便地控制灯亮灭时间和亮度。通过改变定时器中断的时间,可以改变LED灯的亮灭时间;通过改变P2口的控制顺序,可以实现跑马灯效果。
5. 整个程序比较简单,具体的代码实现可以参考以下程序:
#include
#include #define uint unsigned int
#define uchar unsigned char
void Delay1ms(uchar _ms);
void InitTimer0();
sbit led1=P2^0;
sbit led2=P2^1;
案例8 双单片机通信控制流水灯
用串行工作方式进行单片机之间的通信,电路图如下图所示。两个89S51单片机通过串行口进行通信,设置U1使用的晶振频率是11.0592MHz,U2使用的晶振频率是22.1184MHz,U1的RXD接U2的TXD,U1的TXD接U2的RXD,U2接8个发光二极管,要求由U1向U2发送数据,使8个发光二极管按从左到右逐一点亮的流水灯效果。
MCS-51单片机之间的串行异步通信
1.串行口的编程 串行口需初始化后,才能完成数据的输入、输出。其初始化过程如下:
(1)按选定串行口的工作方式设定SCON的SM0、SM1两位二进制编码。
(2)对于工作方式2或3,应根据需要在TB8中写入待发送的第9位数据(地址为1,数据为0)。
(3)若选定的工作方式不是方式0,还需设定接收/发送的波特率。
(4)设定SMOD的状态,以控制波特率是否加倍。
(5)若选定工作方式1或3,则应对定时器 T1进行初始化以设定其溢出率。
2.案例分析 由于串行口通信时传输的“0”或者“1”是通过相对于“地”的
电压区分的,因此使用串行口通信时,必须将双方的“地”线相连以使其具有相同的电压参考点。需要注意的是,异步通信时两个单片机的串行口波特率必须是一样的。由于U1使用的晶振频率是11.0592MHz,U2使用的晶振频率是22.1184MHz,因此二者的串行口初始化程序不完全一样。假设使用240bit/s的波特率,使用串行工作方式1,Tl使用自动装载的方式2,则Ul的TH1应初始化为136,U2的TH1应初始化为16。
对应的程序完成如下功能:Ul和U2进行双工串行通信,Ul给U2循环发送流水灯控制字,U2收到控制字后送到P0口,点亮相应发光二极管,双方都用中断方式进行收发。
(1)单片机U1的源程序
#include
unsigned char sdata=0xfe;
void isr_uart();
手把手教你单片机流水灯实验(详解)
每当夜幕降临,我们可以看到大街各式各样广告牌上漂亮的霓虹灯,看起来令人赏心悦目,为夜幕中的城市增添了不少亮丽色彩。其实这些霓虹灯的工作原理和单片机流水灯是一样的,只不过霓虹灯的花样更多,看起来更漂亮一些。这一课我们就结合S51增强型单片机实验板、ISP编程器来手把手教你详细学习单片机的流水灯实验。
首先介绍实验的硬件设备:S51增强型单片机实验板 + ISP编程器
图1:S51增强型单片机实验板
图2:ISP编程器套件
S51增强型单片机实验板上有8个高亮度发光二极管(见图1所示),可以用来做单片机流水灯、跑马灯。。。等实验,电路原理图见下图3。
图3
从原理图可以看出,如果我们想让接在P1.0口的LED1亮起来,那么我们只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的 LED1熄灭,就要把P1.0口的电平变为高电平就可以;同理,接在P1.1~P1.7口的其他7个LED的点亮和熄灭方法方法同LED1。因此,要实现流水灯功能,我们只要将LED2~LED8依次点亮、熄灭,依始类推,8只LED变会一亮一暗的做流水灯了。
实现8个LED流水灯程序用中文表示为:P1.0低、延时、P1.0高、P1.1低、延时、P1.1高、P1.2低、延时、P1.2高、P1.3低、延时、P1.3高、P1.4低、延时、P1.4高、P1.5低、延时、P1.5高、P1.6低、延时、P1.6高、P1.7低、延时、P1.7高、返回到开始、程序结束。
从上面中文表示看来实现单片机流水灯很简单,但是我们不能说P1.0你变低,它就变低了。因为单片机听不懂我们的汉语的,只能接受二进制的“1、 0......”机器代码。我们又怎样来使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译” 成单片机所需的二进制代码,然后交给单片机去执行。这里的“程序语言”目前主要有汇编语言和C语言两种;在这里我们所说的“翻译”软件,同行们都叫它为“ 编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。