基于单片机的LED流水灯设计说明

合集下载

单片机流水灯实验原理

单片机流水灯实验原理

单片机流水灯实验原理
单片机流水灯实验原理:
流水灯是一种基本的电子实验,通过使用单片机控制多个
LED 灯的亮灭来实现灯光在各个灯珠之间流动的效果。

流水
灯实验原理如下:
1. 硬件连接:将多个 LED 灯和适当的电流限制电阻连接到单
片机的不同输出引脚上。

每个 LED 灯的阴极与电流限制电阻
连接到负极(GND),而阳极连接到单片机的 IO 引脚。

需要
注意的是,单片机的 IO 引脚的输出电压应该能够点亮 LED 灯。

2. 软件设计:使用单片机的 GPIO(通用输入输出)功能,设
置相应的输出引脚作为流水灯的控制引脚。

通过对这些引脚进行高低电平控制,实现不同 LED 灯的点亮和熄灭。

3. 流水灯效果:为了实现流水灯的效果,我们将需要在不同的时间间隔内控制不同的 LED 灯点亮。

可以使用一个循环来实
现这种效果,循环中通过更新和改变控制引脚的电平状态来控制流水灯的亮灭顺序。

4. 控制顺序:通过改变控制引脚的电平状态的顺序,可以改变流水灯的流动顺序。

可以通过在循环中使用延迟函数来控制灯的变换速度,或者使用计数器等其他方法来实现更复杂的流水灯效果。

通过以上原理,我们可以实现单片机流水灯实验并观察到灯光在不同的 LED 灯之间流动的效果。

基于51单片机的流水灯设计

基于51单片机的流水灯设计

基于51单片机的流水灯设计51单片机是一种常用的微控制器,它具有高性价比、易于编程和广泛的应用范围。

流水灯是一种常见的电子灯光装置,它通过类似于瀑布般的效果,逐个点亮一系列的灯。

本文将介绍基于51单片机的流水灯的设计。

流水灯的设计过程可以分为硬件设计和软件设计两个步骤。

硬件设计:在硬件设计方面,我们需要准备以下器件和材料:1.51单片机开发板2.杜邦线3.LED灯4.电阻接下来,根据流水灯的设计思路,将多个LED灯连接在一起,形成一个线性的灯带。

为了控制LED灯的亮灭,我们需要使用51单片机的GPIO 口来提供高低电平信号。

通过改变GPIO口的输出信号,我们可以实现各个LED灯的顺序点亮和熄灭。

软件设计:在软件设计方面,我们需要使用到汇编或C语言来编写控制程序。

以下是一个简单的流水灯程序的伪代码:```1.初始化51单片机的GPIO口方向,设置为输出模式2. 定义一个存储灯光模式的数组,比如`light_pattern[] = {0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01}`3.定义一个循环计数器`i`4.进入无限循环5. 通过将`light_pattern[i]`的值写入GPIO口,控制LED灯的亮灭6.延时一定时间(比如几百毫秒)7.更新循环计数器`i`8.如果`i`超过了数组的长度,将其重置为09.结束循环```在程序中,我们可以通过循环计数器`i`来依次点亮和熄灭LED灯。

通过不断更新`i`的值,我们可以实现灯光模式的循环播放。

总结:。

基于51单片机流水灯毕业设计

基于51单片机流水灯毕业设计

基于51单片机的流水灯毕业设计方案:一、引言流水灯是一种常见的电子设计项目,适合初学者练习和毕业设计。

通过使用51单片机和少量外围元件,可以实现一个简单而有趣的流水灯效果。

本文将介绍基于51单片机的流水灯设计方案,包括硬件连接、软件程序设计和效果展示等内容。

二、硬件设计1. 材料准备:51单片机(如STC89C52)、LED灯若干(建议4-8个)、电阻、面包板、连线等。

2. 连接方式:将LED灯按顺序连接到51单片机的IO口,每个LED 灯通过一个电阻连接到IO口,确保电流限制。

3. 电源供应:连接电源至电路板,保证正常工作电压和电流。

三、软件设计1. 编程环境:使用Keil C51等集成开发环境进行程序编写。

2. 程序设计:设计一个循环移位的程序,控制51单片机的IO口依次点亮LED灯,形成流水灯效果。

3. 定时控制:通过定时器中断或延时函数控制LED灯的亮灭时间,实现流水灯的效果。

四、效果展示1. 烧录程序:将编写好的程序烧录到51单片机中。

2. 调试测试:连接电路并通电,观察LED灯按顺序点亮并流动的效果。

3. 优化改进:根据实际效果调整程序和硬件设计,优化流水灯的效果和稳定性。

五、注意事项1. 电路连接:确保电路连接正确,避免短路或接反现象。

2. 程序设计:合理设计程序逻辑,确保LED灯的流水效果符合预期。

3. 调试测试:在调试过程中注意观察LED灯的亮暗情况,及时发现问题并进行调整。

六、总结基于51单片机的流水灯设计是一个适合初学者和毕业设计的简单而有趣的项目,通过设计和实现可以提升对单片机编程和电路连接的理解和技能。

希望通过本文的介绍,读者能够顺利完成基于51单片机的流水灯毕业设计,并在实践中不断提升自己的电子设计能力。

基于单片机的流水灯设计讲义

基于单片机的流水灯设计讲义

黄河科技学院LED流水灯的设置LED流水灯的设计引言发光二极管(LED),是一种把电能变成光能的特种器件,主要由PN结芯片、电极和光学系统构成。

当系统受到外界激发后,会从稳定的低能态跃迁到不稳定的高能态,当系统由不稳定的高能态重新回到稳定的低能态时,能量差以光的形式辐射出来,就会产生发光现象。

当在PN结上加以正向电压之后,P区的空穴注入至N区,N区的电子注入至P区,相互注入的电子与空穴相遇后即产生复合,这些多数载流子在结的注入和复合中产生辐射而发光。

它是自发辐射发光,不需要较高的注入电流产生粒子数反转分布,也不需要光学谐振腔,发射的是非相干光。

LED大约是在80年代中期开始在电子显示屏中使用的。

进入90年代以后,由于半导体工业的迅猛发展,带动了LED制造材料和工艺的改进,在颜色与亮度方面都有了质的飞跃。

早期的LED显示屏,由于受材料和工艺的限制,视角仅有200-300左右,从而制约了LED显示屏的发展。

在分辨率方而,由于受当时数字技术、集成电路技术和控制技术等技术的限制,很难作出高密度的LED显示屏。

今后随着半导体工业的不断发展,无论是材料,还是加工工艺,都会不断地提高,LED显示屏在颜色、视角、亮度、密度、寿命等方面也会逐步完善,价格也会进一步降低。

目前LED产业大多以2英寸或4英寸的蓝宝石基板为主,如能采用硅基氮化镓技术,至少可节省75%的原料成本。

据日本三垦电气公司估计,使用硅衬底制作大尺寸蓝光氮化镓LED的制造成本将比蓝宝石衬底和碳化硅衬底低90%。

国内外芯片技术差异很大,在国外,欧司朗、美国普瑞、日本三垦等一流企业已经在大尺寸硅衬底氮化镓基LED研究上取得突破,飞利浦、韩国三星、LG、日本东芝等国际LED巨头也掀起了一股硅衬底上氮化镓基LED的研究热潮。

其中,在2011年,美国普瑞在8英寸硅衬底上研发出高光效氮化镓基LED,取得了与蓝宝石及碳化硅衬底上顶尖水平的LED器件性能相媲美的发光效率160lm/W;在2012年,欧司朗成功生产出6英寸硅衬底氮化镓基LED。

基于单片机控制的LED流水灯设计

基于单片机控制的LED流水灯设计

1 单片机 的硬件 组成
单 芯片微型计算机 , 简称单 片机 。 它 是把组成微型计算 机 的各功能部件—— 中央处理 器C P U、 随机存储 器R AM、 只读 存 储 器R O M、 定时/ 计数 器、 并行I / 0接 口电路 、 中断系统 以及 串
行 通 信 接 口等 制 作 在 一 块 集 成 芯 片 上 , 构 成 了 一 个 完 整 的 微
这就 需要输入 让 单片机 能够 解读 的指令 , 控制 单片机 按 照指 令工 作 , 即编 写程 序控 制单片 机 的管脚 , 通过 向I / O口不停 地 赋值、 延 时来 实现 。这 里采 用 移植 性 较高 的c语 言来 控制 单
片机 。
片机 的最小应用系 统 , 即 由8 4 " 发光 二极管 、 手动 复位 电路 、 由
程 方法 。
光 二 极 管一 只一 只地 亮 , 一 只一 只地 灭 , 每 次 亮 的 灯 只 有 一 个, 而 且 是 按 照 一 个 方 向顺 序 向 前 或 向后 走 动 。在 此 我 们 还 应
注 意一 点, 由于 单片机执行 每条指令 的时 间很短 , 并且 人 眼具
有 视觉 暂 留的效应 , 我 们 在 控 制 二 极 管 亮 灭 的 时 候 应 该 延 时
立 单片机应 用系统 。利 用单 片机 实施控 制的系统称 为单 片机 应用系统 , 单 片机应用 系统可分 为最小系统 、 最 小功耗 系统及 典型系 统等 。单片 机最小应用 系统是 指维持单片 机正常 工作 所 必需 的电路连 接 。
本流 水灯 系统 实际上 就是 一个 带有8 个 发 光 二 极 管 的 单

段时 间, 所 以说 必 须 有 延 时 函数 , 否 则我们就 看不到“ 流水”

单片机流水灯程序

单片机流水灯程序

单片机流水灯程序流水灯是一种简单而常见的电子技术实验项目,也是学习掌握单片机编程的基本操作之一。

本文将介绍如何使用C语言编写单片机流水灯程序,并通过Markdown文本格式输出。

硬件准备在开始编写流水灯程序之前,我们需要准备以下硬件设备:1.单片机开发板(如:Arduino、STM32等)2.LED灯(可根据自己的需求选择,一般使用红色、黄色、绿色等常见颜色的LED灯即可)3.杜邦线(用于连接单片机和LED灯)程序编写引入头文件首先,我们需要引入相应的头文件,以便使用单片机相关的功能库和定义常量。

#include <Arduino.h>定义引脚接下来,我们需要定义引脚,将LED灯的接口与开发板的引脚连接起来。

#define LED_PIN_1 2#define LED_PIN_2 3#define LED_PIN_3 4#define DELAY_TIME 500在这个例子中,我们使用了3个LED灯,分别连接到开发板的2、3、4号引脚。

DELAY_TIME用于控制每个灯亮起的时间间隔,单位是毫秒。

初始化引脚在进入主程序之前,我们需要对引脚进行初始化,设置引脚的输出模式。

void setup() {pinMode(LED_PIN_1, OUTPUT);pinMode(LED_PIN_2, OUTPUT);pinMode(LED_PIN_3, OUTPUT);}主程序接下来就是我们的主程序部分,我们可以使用循环语句来实现LED灯的流水效果。

void loop() {digitalWrite(LED_PIN_1, HIGH);delay(DELAY_TIME);digitalWrite(LED_PIN_1, LOW);digitalWrite(LED_PIN_2, HIGH);delay(DELAY_TIME);digitalWrite(LED_PIN_2, LOW);digitalWrite(LED_PIN_3, HIGH);delay(DELAY_TIME);digitalWrite(LED_PIN_3, LOW);}在这个例子中,我们依次点亮每个LED灯,并延迟一定的时间后熄灭,然后依次点亮下一个LED灯,以此循环。

基于单片机的流水灯设计

基于单片机的流水灯设计目录1 总体设计方案 (2)1.1设计功能及要求 (2)1.2设计方案 (2)1.2.1 硬件设计方案 (2)1.2.2 软件设计方案 (2)2 硬件设计 (3)2.1串口工作电路设计 (3)2.2单片机核心电路设计 (4)2.3发光二极管连接电路 (6)3 软件设计 (7)3.1主程序 (8)3.2子程序1 (9)3.3子程序2 (9)3.4子程序3 (9)3.5子程序4 (9)3.6子程序5 (9)3.7子程序6 (10)3.8子程序7 (10)4 课程设计体会 (10)1 总体设计方案1.1设计功能及要求现代都市夜景少不了霓虹灯的点缀,本课程设计选择模拟都市霓虹灯的亮灭情况,即用单片机实现流水灯控制,实现花样灯得控制。

如让灯一个接一个的亮,或者让灯隔一个灯亮等。

1.2 设计方案流水灯总体设计框图如下图所示。

1.2.1 硬件设计方案本小车主要采用STC89C52单片机作为控制二极管的发光情况从而实现流水灯控制。

采用美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5V单电源供电的MAX232芯片,为下载程序提供数据传送通道。

1.2.2 软件设计方案采用汇编语言的编程方法,对STC89C52单片机的输出引脚进行控制,从而达到流水灯控制。

2 硬件设计流水灯的总体硬件设计电路图如下图所示2.1串口工作电路设计串口电路的设计主要采用MAX232,主要实现对单片机STC89C52的程序载入。

MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5V单电源供电。

其封装入图所示。

引脚分三大部分。

第一部分是电荷泵电路,由1、2、3、4、5、6脚和4只电容构成。

功能是产生+12V和-12V两个电源,提供给RS-232串口电平的需要。

第二部分是数据转换通道,由7、8、9、10、11、12、13、14脚构成两个数据通道。

其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。

流水灯说明书【范本模板】

【摘要】:若干个灯泡有规律依次点亮或者依次熄灭叫流水灯,它用在夜间建筑物装饰方面。

例如在建筑物的棱角上装上流水灯,可起到变换闪烁美不胜收的效果。

一般情况下单片机的流水灯由若干个LED发光二极管组成,在单片机系统运行时,可以在不同的状态下让流水灯显示不同的组合,作为单片机运行正常的指示,当单片机系统出现故障时,可以利用流水灯显示当前的故障码,对故障做出诊断。

本设计采用一块单片机(AT89C52。

BUS)作为流水灯系统的控制核心,通过编程来实现单片机I/O口对LED的控制,使流水灯显示上下流动、停止流动、闪灯等功能,并由按键控制流水灯的不同亮法,LED的工作方式通过键盘的扫描实现。

其中的LED采取共阴极接法,通过依次向连接的LED的I/O口送出低电平来实现LED的点亮.【关键词】:流水灯按键控制单片机数码管显示1、引言1。

1初始条件:1. 单片机型号为AT89C52,晶振频率为12MHz,控制16个红色发光二极管;2。

16个红色发光二极管共有6种亮灯模式,每个灯亮200ms;3. 通过若干按键选择,用查询方式实现红色发光二级管的不同亮灯模式;4。

要求灯与灯之间的亮、灭交替速度可调;5。

用LED数码管显示每种亮灯模式;6。

系统处于不同亮灯模式时,伴有不同的声音,至少有3种不同的声音.1.2要求完成的主要任务:1。

查阅参考文献,自学相关元器件的内部结构、工作方式或初始化编程过程;2. 按初始条件完成相关电路的设计,绘制单片机控制系统硬件接线原理图;3。

自行创新设计,完成程序结构与控制功能设计,进行系统调试,实现控制要求;4. 撰写设计说明书,说明书字数不少于5000字,参考文献不少于8篇;2 、系统总体方案设计2.1 系统的方案设计:根据题目的要求,控制模块需要选择单片机作为核心控件,选择的单片机AT89C52还有各自的总线型号的,而对于按键,可以选择BUTTON,当然用SWITCH 来代替也是可以实现的;显示模块的LED发光二极管选择红色.考虑到题目的要求与电路图布线的问题,经过仔细的分析和论证,最终的方案如下:单片机:AT89C52按键:BUTTON 发光二极管:LED-RED和蜂鸣器等。

基于单片机的流水灯设计

基于单片机的流水灯设计摘要:随着时代的变化,很多商品在确保其性能前提下也开始变得更加美观大方。

在其中LED流水灯的运用也越来越广泛下去。

利用单片机加以控制促使LED造成流水实际效果因为价格低廉,实际操作方便快捷而便备受欢迎。

文中选择用C51单片机利用C语言程序编写操纵LED小灯的闪动,利用单片机P0-P3口输出高低电平差别促使不同类型的小灯产生不同类型的明暗度转变进而产生流水效果。

并引入for语句和分数句子进行流水灯款式的循环和自动选择。

关键字:流水灯,单片机,C语言,LED小灯1引言1.1设计背景LED灯在现代社会中一直都拥有广泛应用,其便宜实惠能够在很大程度上满足人们在各个领域里的要求,比如广告牌子、工业控制系统的操作面板等具有流水灯的运用。

在这样的新趋势状态下那就需要开专门自动控制系统,而利用单片机制作出来的流水灯的自动控制系统因为省时省力简单实用。

可以在很大程度上达到也支持现阶段的必须。

而且利用了单片机的结构有很多相近计时器、存储器能够很容易地进行针对小灯控制。

其简单实用的特点也是具备主要代表实际意义。

1.2需求分析报告应用8051系列产品单片机进行心型流水灯的设计方案,利用单片机导出高低电平的改变来促使小灯闪动进而实现循环系统流水,而且在尽可能美观大方前提下开发出更多的小灯闪动款式。

2设计2.1总体方案设计总体目标此次课题研究选用AT89S51单片机完成LED小灯闪烁的实际效果。

与此同时加入复位电路。

复位后闪动款式则再次开始。

而且在确保电源电路没有问题的情形下尽可能进行更多小灯闪动款式,以保证其美观度。

2.2总体方案设计框架图应用5V电压源根据联接USB接口立即供电系统。

依据在单片机及内部结构烧提前准备好的系统控制单片机P0-P3口的高低电平转变促使小灯产生变化。

并加入复位电路,当复位按键启动时,小灯状态将回应至最初的状态。

3 AT89C51单片机单片机全称是片式微型机,也被称为单片微控制板,经过不断的技术升级和优化,现在的单片机已经将一个基本上完整的、可以实现电子计算机基本要素的元器件集成化于一块微处理芯片之中。

基于单片机的LED流水彩灯设计

第1章概述近几年来,彩灯对于美化、亮化城市有着不可轻视的重要工作。

因此作为城市装饰的彩灯需求量越来越大,对与彩灯的技术和花样也越来越高。

但传统的彩灯控制电路一般是由数字电路组成,这种彩灯控制器电路结构复杂、成本较高、功率损耗大,此外从功能效果上看,彩灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。

因此有必要对现有的彩灯控制器进行改进。

然而单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。

LED彩灯具有成本低、发光纯度高、发光热量小、耗电量低、超长寿命的特点。

所以利用单片机作LED彩灯控制,不仅是使控制花样、路数大大增加,成本也很低,而且对环境能源没有污染,有着很大的发展前景。

本方案是一种基于AT-89C51单片机的彩灯控制方案,实现对LED彩灯的控制。

主要以AT-89C51单片机作为主控核心与发光二极管、晶振、复位、电源等组成电路,利用软件编辑实现彩灯流水灯的效果。

第2章方案设计2.1设计任务(1)共有红、绿、蓝3色彩灯各8个,要求按一定顺序和时间关系运行:红色发光二极管由弱到强—>绿色发光二极管由弱到强—>蓝色发光二极管由弱到强。

(2)利用三基色原理,控制每次点亮红色发光二极管,绿色发光二极管,蓝色发光二极管的数目,实现黄色,紫色,青色。

(3)控制不同颜色发光二极管的数目,实现花样彩灯。

(4)编写程序代码。

(5)程序分析与调试。

2.2工程方案按照设计任务要求,红,绿,蓝光由弱到强,每个颜色用8个发光二极管,在程序控制下,先亮一个,再亮两个,再亮三个,慢慢的直到最后全亮,就能看到由弱到强的现象。

如果同一颜色使用更多的发光二极管,显示效果会更柔和。

要实现黄色,紫色,青色光,只能根据三基色原理进行合成。

所谓三基色是指红,绿,蓝三色,人眼对红,绿,蓝最为敏感,大多数可以通过红,绿,蓝3种颜色按照不同的比例合成产生。

同时,绝大多数单色光也可以分解成红绿蓝三种光。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机的LED流水灯设计
设计任务
1掌握MCS-51系列8051、8255的最小电路及外围扩展电路的设计方法
2了解单片机数据转换功能及工作过程
3设计LED流水灯系统,实现8个LED霓虹灯的左、右循环显示4完成主要功能模块的硬件电路设计
5用proteus软件完成原理电路图的绘制
一设计方法
本课题使用AT89C51单片机时无须外扩存储器。

因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。

如果要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1~P1.7口的其他7个LED 的点亮和熄灭的方法同LED1。

因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。

由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。

二方案论证与比较
2.1循环移位法
在上个程序中我们是逐个控制P1端口的每个位来实现的,因此程序显得有点复杂,下面我们利用循环移位指令,采用循环程序结构进行编程。

我们在程序一开始就给P1口送一个数,这个数本身就让P1.0先低,其他位为高,然后延时一段时间,再让这个数据向高位移动,然后再输出至P1口,这样就实现“流水”效果啦。

由于8051系列单片机的指令中只有对累加器ACC中数据左移或右移的指令,因此实际编程中我们应把需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样同样可以实现“流水”效果。

具体编程如下所示,程序结构确实简单了很多。

2.2查表法
上面的两个程序都是比较简单的流水灯程序,“流水”花样只能实现单一的“从左到右”流方式。

运用查表法所编写的流水灯程序,能够实现任意方式流水,而且流水花样无限,只要更改流水花样数据表的流水数据就可以随意添加或改变流水花样,真正实现随心所欲的流水灯效果。

我们首先把要显示流水花样的数据建在一个以TAB为标号的数据表中,然后通过查表指令“MOVC A,A+DPTR”把数据取到累加器A中,然后再送到P1口进行显示。

具体源程序如下,TAB标号处的数据表可以根据实现效果的要求任意修改。

2.3位控法
这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,从而来控制相应LED灯的亮灭。

本次实验我们采用的是查表法和循环移位法,这两个方法要比位控法要复杂些,但是程序要简略的多
三硬件设计
1单片机时钟电路
时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。

在MCS-51芯片部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。

此电路采用12MHz的石英晶体。

时钟电路如下图:
2复位电路
电阻的作用是用于上电复位的,VCC以上电,由于电容两端电压不能突变,所以RST上为高电平,然后电容放电,RST就为低电平了,还可以用手动复位,此电路应用自动复位。

3工作电路
工作电路就是根据总的电路的指令,来反应工作情况。

本电路的流水灯电路具体的如下:
根据各个模块的功能及他们的信号传输,连接电路如下:
四软件设计
汇编语言和C语言的特点及选择
本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。

在单片机的应用系统程序设计时,常用的是汇编语言和C语言。

机硬件,程序可读性和可移植性比较差。

而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。

在本设计中采用C语言编写软件程序。

C语言程序设计
特殊功能寄存器P0一共八位,因此P0寄存器可一次存放一字节数据,寄存器的每位的输出对应P0.0~P0.7引脚,其中P0.0为P0的低位引脚,P0.7为高位引脚。

P0引脚输出高低电平与寄存器P0存放数据一致,如程序中,P0 = 0x01时,则只有P0.0输出高电平,其它引脚输出低电平。

为了实现流水灯效果,程序设计让P0的八个引脚依次输出高电平即可。

如先让P0 = 0x01,LED1点亮,然后让P0 = 0x02,LED2点亮,依次往下操作,P0 = 0x80时,LED8被点亮。

每次点亮一只LED后,通过延时函数调整下一个LED被点亮的时间间隔。

程序清单如下
#include<reg51.h>
/*延时函数*/
void delay(unsigned int x)
{
while(x--);
}
/*主函数*/
void main(void){
P0=0x01;delay(30000);
P0=0x02;delay(30000);
P0=0x04;delay(30000);
P0=0x08;delay(30000);
P0=0x10;delay(30000);
P0=0x20;delay(30000);
P0=0x40;delay(30000);
P0=0x80;delay(30000);
}
通过电路仿真,LED可以实现从右到左的一次点亮,但此程序看起来很笨,并且功能单一,我们可以考虑采用数组实现,如把P0的八个取值放在一个数组里,这样就可以通过数组取值达到LED流水灯显示效果。

程序修改为:
/*预处理*/ #include<reg51.h>
unsigned char code LED[] = {0x01,0x02,0x04,0x0
8,0x10,0x20,0x40,0x80}; /*延时函数*/
void delay(unsigned int x) {
while(x--); } /*主函数*/ void main(void) { while(1){
P0 = LED[i];
delay(30000);
i++;
if(i >= 9)
i = 0;
}
}
该程序与原程序仿真运行结果是一样的,但利用数组精简了程序的冗余项,更加符合软件的编程思想。

五软件调试
软件调试一般分为以下四个阶段:1、编写程序并查错;2、在汇编语言的编译系统中编译源程序3、对程序进行编译连接,并及时发现程序中存在的错误;4、改正错误。

在软件调试过程中,对出现的错误进行了认真的分析和修改,多次调试成功后,能够很好的达到既定的设计效果。

六运行结果
如下
Led灯从左至右依次熄灭
七体会
1通过本次的实验,熟悉keil仿真软件、proteus仿真软件的使用。

了解并熟悉单片机I/O口和LED灯电路结构,学会构建简单的流水灯电路。

掌握C51中单片机I/O口的编程方法和使用I/O 口进行输入输出的注意事项。

2最开始从课题的选择,计算器的设计、硬件和软件系统的设计、到最后的Proteus软件仿真完成,这其中经历了很多困难,但是更重要的是在这个过程中我得到了很大的锻炼。

通过C51单片机等一些器件的设计让我学习和掌握了单片机技术的基础知识和技术要点,也使现在正在学的很多知识都得到了运用。

3对于这次单片机课程设计不仅巩固了以前所学过的知识,而且学到了很多在书本上没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中发现了自己的不足之处,例如对以前所学过的知识理解得不
够深刻,掌握得不够牢固,学习了单片机C语言。

4从本次设计可见,单片机芯片部具有的一定容量的片程序
存储器,也有连接外部设备的端口。

掌握了最基本的硬件电路和软件的应用,可以为以后继续深入研究计算机硬件方面的知识提供了保障。

八参考文献
[1]《单片机原理及应用》薛峰.朱晓骏编著:理工大学,2011,9
页脚。

相关文档
最新文档