基于单片机最小系统的流水灯
单片机最小系统实现花样流水灯

3.灯阵从由下顶点开始,以逆时针依次点亮,最后回到下顶点。
4.灯阵从由下顶点开始,以顺时针依次点亮,最后回到下顶点。
5.先奇数灯点亮,然后偶数灯点亮,呈交替状态。
6.所有灯先同时点亮,后同时熄灭,呈闪烁状态。
7.以上六种状态依次运行。
以上七种运行方式, 由外部中断(微动开关) 控制,即一次中断运行状态1, 两次中断运行状态2,… 当遇到第八此中断时,再次从状态1开始。
uchar ID;
uchar cnபைடு நூலகம்=0; uint j;
void main()
{SP=0x50;
P1=0x00;
//P0=0x00;
EA=1;
IT0=1;
EX0=1;
TMOD=0x10; TH1=15536/256;
TL1=15536%256;
ET0=1; TR0=1;
ID=1;cnt=0; while(1){if(ID>7)
功;最后用keil C编程软件及STC-ISP下载软件完成STC89C5单 片机对外围流水灯设计的整体控制。
三、设计需求
整个流水灯系统由按键控制,实现各种状态之间的转换,即按 键第一次压下,流水灯进入到第一种状态;按键第二次压下,流水 灯进入到第二种状态;以此类推。
四、设计材料
序号
器件
数量
功能
1
STC-89C52单片机最小系统板
基于STC-89C51的流水灯的设计与实现
一、设计目的
以STC-80C51单片机最小系统为核心,设计多样式流水灯。掌 握外围LED电路的设计方法,熟练掌握C51软件编程控制方法,实 现LED闪烁功能,最终完成单片机的应用与外围电路的开发任务。
单片机c语言编程控制流水灯

说了这么多了,相信你也看了很多资料了,手头应该也有必备的工具了吧!(不要忘了上面讲过几个条件的哦)。
那个单片机究竟有什么功能和作用呢?先不要着急!接下来让我们点亮一个LED(搞电子的应该知道LED是什么吧^_^)我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机上接上最少的外围电路元件让单片机工作。
一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。
#include<reg51.h> //头文件定义。
或用#include<at89x51.h>其具体的区别在于:后者定义了更多的地址空间。
//在Keil安装文件夹中,找到相应的文件,比较一下便知!sbit P1_0 = P1 ^ 0; //定义管脚void main (void){while(1){P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效}}就那么简单,我们就把接在单片机P1_0上的LED点亮了,当然LED是低电平,才能点亮。
因为我们把LED的正通过电阻接至VCC。
P1_0 = 0; 类似与C语言中的赋值语句,即把0 赋给单片机的P1_0引脚,让它输出相应的电平。
那么这样就能达到了我们预先的要求了。
while(1)语句只是让单片机工作在死循环状态,即一直输出低电平。
如果我们要试着点亮其他的LED,也类似上述语句。
这里就不再讲了。
点亮了几个LED后,是不是让我们联想到了繁华的街区上流动的彩灯。
我们是不是也可以让几个LED依次按顺序亮呢?答案是肯定的!其实显示的原理很简单,就是让一个LED灭后,另一个立即亮,依次轮流下去。
假设我们有8个LED分别接在P1口的8个引脚上。
硬件连接,在P1_1--P1_7上再接7个LED即可。
例程如下:#include<reg51.h>sbit P1_0 = P1 ^ 0;sbit P1_1 = P1 ^ 1;sbit P1_2 = P1 ^ 2;sbit P1_3 = P1 ^ 3;sbit P1_4 = P1 ^ 4;sbit P1_5 = P1 ^ 5;sbit P1_6 = P1 ^ 6;sbit P1_7 = P1 ^ 7;void Delay(unsigned char a){unsigned char i;while( --a != 0){for(i = 0; i < 125; i++); //一个; 表示空语句,CPU空转。
单片机最小系统交通灯流水灯课程设计

单片机最小系统交通灯流水灯课程设计单片机最小系统交通灯流水灯课程设计HEFEI UNIVERSITY 单片机应用技术课程设计报告系别:电子信息与电气工程系专业(班级):姓名(学号):导师姓名:完成时间:2015-05-30 摘要本课程设计完成的是构建单片机最小系统和实验环境熟悉,跑马灯实验及74LS138译码器,8255控制交通灯实验,8253方波实验。
最小系统包括晶振,复位等模块。
138的译码实验,根据138的译码特性建立一个译码表,用P1口给74LS138的A、B、C口赋值,在此过程中其实只用到了P1 ,P1 ,P1 ;8255A交通的实验选择PA口控制交通灯,核心思想就是延时时间的控制;8253方波实验采用的是CLK0产生方波信号,再用T0、T1不同工作方式进行分频,输出方波;最后继电器是通过控制单片机端口的高低电平来控制继电器的通断。
关键词:单片机译码器交通灯方波工作方式目录一、系统分析1 二、系统总体设计2 三、硬件设计3 1、单片机最小系统3 2、流水灯电路5 3、译码器电路6 3.1 74LS138芯片的引脚图及功能6 3.2 电路设计7 4、交通灯电路8 4.1 8255A芯片引脚图及功能8 4.2 电路设计9 5、方波电路10 5.1 8253芯片的引脚图及功能10 5.2 电路设计12 6、继电器电路12 7、独立按键电路13 四、软件设计13 1、主程序13 2、地址端口定义14 3、输出方波程序15 五、系统调试16 1、硬件调试16 2、软件调试16 3、软硬件联调16 六、功能测试16 1、测试平台16 2、测试工具17 3、测试步骤17 4、测试结果17 总结17 致谢18 参考文献18 附录19 附录1 作品展示19 附录2 硬件清单20 附录3 软件清单21 单片机应用技术----课程设计一、系统分析本次设计的单片机控制系统,旨在通过按键操作完成如下五个功能:1、实现P1口控制8个指示灯,循环点亮,瞬间只有一个灯亮2、实现与74LS138译码器连接的8个指示灯,循环点亮,瞬间只有一个灯亮3、使用芯片8255A控制LED指示灯,实现交通灯功能。
基于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单片机的流水灯设计方案,包括硬件连接、软件程序设计和效果展示等内容。
二、硬件设计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单片机的流水灯毕业设计,并在实践中不断提升自己的电子设计能力。
《单片机原理及应用》基于51单片机实验箱的流水灯设计

《单片机原理及应用》基于51单片机实验箱的流水灯设计一、实验目的和要求1.掌握单片机基本资源使用。
2.掌握单片机电路原理图。
3.掌握单片机C语言软件开发以及试验箱使用。
二、实验内容和原理实验内容:1.绘制程序流程图并编写C语言程序2.在实验箱中进行测试,最后提交实验报告三、主要仪器设备Keil4软件、C51单片机实验箱。
四、操作方法与实验步骤4.1 题目要求使用单片机实验箱实现流水灯功能。
4.2 系统设计思路主程序中实现流水灯功能,时间单位采用500ms信号,作为实现流水灯的发光二极管和单片机的P1相连。
4.2 C程序编制(包含详细的文字和程序流程图)#include<intrins.h>#include<reg52.h>#define uchar unsiged char#define uint unsigned intvoid mDelay(uint Delay){int i;for(;Delay>0;Delay--)for(i=0;i<110;i++);}void main(){unsigned char a,i;While(1){a=0x01;for(i=0;i<8;i++){a=-crol-(a,1)P2=amDelay(500);}}4.3 测试分析(包含文字和图像叙述)在KeilC51软件软件中编写好程序并调试好后,连接单片机实验箱,实验结果如下:实验箱上连接的八个灯,每个灯间隔500ms的时间一个接一个的循环闪烁。
五、讨论和心得(不少于100字)通过此次实验,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,试验过程还是比较繁琐,但是还是完成了这次试验,使我对于理解单片机的基本原理更加深刻,将所学知识运用到实践中,在实践中发现问题,强化理论知识。
课程名称:单片机原理及应用实验项目名称(二):定时计数器的应用—按钮控制LED灯四、实验目的和要求1.掌握单片机基本资源使用。
单片机流水灯实训报告

基于AT89C52单片机的流水灯设计实训报告学院:信息工程学院班级:12级电子信息工程本科班学号:姓名:指导教师:2014年 12月29日目录前言 (1)一、总体设计 (2)1.1 总体设计框图 (2)1.2 硬件具体原理图 (3)二、设计内容 (3)2.1 设计要求 (3)2.2 硬件设计 (3)2.3 软件设计 (5)2.3.1 Keil的使用步骤: (5)2.3.2 程序流程 (8)2.3.3 程序代码 (9)三、最小系统板的焊接及调试流程 (12)3.1 最小系统板电路焊接流程: (12)3.1.1焊前准备: (12)3.1.2焊接步骤: (12)3.2 调试及问题解决方法 (13)3.2.1仿真 (13)3.2.2下载 (14)3.2.3问题及解决方法 (14)四、总结体会 (15)前言随着社会的进步和发展和人们生活水平的不断提高单片机技术已经成为当今各种新技术的载体各个应用领域的工程技术人员都应掌握单片机应用术。
同时,它所给人带来的方便也是不可否定的。
其中,数码管就是一个典型的例子。
但人们对它的要求越来越高要为现代人工作、科研、生活、提供更好的方便的设施,就需要从单片机技术入手,一切向着数字化控制、智能化控制方向发展。
单片机应用的意义不仅在于它的广阔范围及所带来的经济效益。
更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。
以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。
单片微型计算机就是将CPU、RAM、ROM、时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
我们周围有许多广告牌。
流水灯控制系统设计

目录第1章方案的论述以与与最终方案的确定......................... - 1 -1.1第一种方案的论述. (1)1.2第二种方案的论证 (1)1.3第三种方案的论述 (1)1.4最终方案的确定 (2)第2章硬件设计.................................................. - 3 -2.1总体方案设计分析. (3)2.2系统逻辑框图 (3)2.3主要元器件简介 (3)2.3.1 8086CPU ························································································- 3 -2.3.2 地址锁存器74LS373的内部电路与工作原理························- 6 -2.3.3 可编程外围接口芯片8255A的简介.........................................- 8 -第3章软件设计.................................................- 13 -3.1程序流程设计.. (13)3.1.1 主程序流程·················································································· - 13 -3.1.2 程序流程图·················································································· - 14 -3.1.3 系统硬件连接图········································································· - 15 -3.1.4 源程序设计(附录) ....................................................................... - 15 -3.2设计最终理想结果与原理.. (15)3.2.1 左向移动流水灯········································································· - 15 -3.2.2 右向移动流水灯········································································· - 15 -设计心得·························································- 17 -参考文献·························································- 18 -附录······························································- 19 -第1章方案的论述以与与最终方案的确定1.1 第一种方案的论述第一种方案,使用AT89C51单片机实现流水灯闪烁设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电气工程学院学生科研实践计划项目
总结报告
项目编号:SRPP201715
项目名称:基于单片机最小系统的流水灯项目参加人:李恺(论文撰写者)任子业所在班级:电子161
项目指导教师:宋潇
项目完成时间:2017年 6 月
填报日期:2017年 6 月 4 日
河南科技大学电气工程学院
2016年制
目录
一、项目研究内容 (3)
二、设计方法 (3)
三、系统各模块的设计过程 (4)
1.电源模块 (4)
2.单片机最小系统 (5)
3.驱动电路 (8)
4.PCB设计 (8)
四、系统软件设计 (10)
1.源程序 (10)
2.程序流程图 (11)
五、系统调试与结果分析 (12)
六、总结 (14)
一、研究内容
单片微型计算机简称单片机,是指集成在一块芯片上的计算机,它具有与结构简单,控制功能强,可靠性高,体积小,价格低等优点。
单片机技术作为计算机技术的一个重要的分支,广泛的应用于工业控制,智能仪器仪表,家用电器,电子玩具等各个领域。
此次研究的内容是:用AltiumDesigner制作基于单片机最小系统流水灯的原理和PCB,自己进行各个原件的焊接。
并进行程序的设计,通过程序来精确的控制LED的亮灭时间,从而达到预期的目的。
二、设计方法
首先,我们设计使用8个LED小灯制作流水灯,采用STC90C51RC作为主控芯片,并在单片机外围设计了电源指示模块,复位电路和晶振。
通过编程控制I/O口的电平高度,使8个LED灯能够准确的以不同的时间亮灭。
其基本的模块图如下所示:
图2-1-1 流水灯结构
在这之后,为了防止所设计的系统没有误差,同时练习自己的焊接能力,于是我们找到了洞洞板并将单片机的最小系统焊于其上,录入程序看是否工作。
如果不工作则进行修改,直到成功为止。
这样,即练习了焊接技术以防焊接PCB时失误又能够进一步掌握单片机最小系统。
最后进行程序和PCB的设计。
主要通过Keil uVision5和AltiumDesigner两个软件进行单片机的程序设计,原理图和PCB的制作。
最后用stc-isp-15将所得到HEX文件烧录到单片机中,观察说设计的系统是否达到所预期的目的
三、系统的各模块设计过程
1、电源模块
供电采用5v的USB供电
图3-1-1 电源电路
C4为去耦合电容,通过此电容将电路中的耦合产生的能量传递抵消,从而减小了对单片机工作的影响。
2、单片机最小系统
(1)单片机裸片如图所示
STC90C516RC+系列单片机是宏晶科技推出的新一代超高速、低功耗的单片机,指令代码完全兼容传统8051单片机。
指令代码完全兼容传统8051单片机,12时钟的机器周期和6时钟的机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz以下时,复位脚可直接接地。
我们用P2引脚作为电路的驱动接口,用RST引脚连接复位电路,用XTAL1和XTAL2连接晶振,用RXD和TXD连接下载模块,VCC和GND连接电源。
图3-2-1 单片机
(2)晶振
如图所示:
XTAL2
XTAL1
图3-2-2 晶振电路
每个单片机系统里都有晶振,全程是叫晶体震荡器,在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。
晶振旁边接的是负载电容,负载电容是指晶振的两条引线连接IC块内部及外部所有有效电容之和,可
看作晶振片在电路中串接电容。
负载频率不同决定振荡器的振荡频率不同,而我们采用的是12MHz的晶振,结合芯片手册的说明所以使用了47pf的负载电容。
(3)复位电路
如图所示:
当单片机的RST引脚置于高电平几秒后,单片机复位,程序重新执行。
RST
图3-2-3 复位电路
VCC上电时,C充电,在10K电阻上出现电压,使得单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。
工作期间,按下S,C放电,在10K电阻上出现电压,并持续一段时间,使得单片机复位。
松开S,C又充电,几个毫秒后,单片机进入工作状态。
(4)下载模块如图所示:
插针2接单片机TXD引脚,插针1接单片机RXD引脚。
图3-2-4 插针
图3-2-5 下载模块
USB下载模块是单独的物件,没有直接焊入PCB中,于是用四头插针与相应功能的接口连接,然后再用杜邦线与插针连接就能实现相应的功能。
(5)上拉电阻的设计
如图所示:
图3-2-6 上拉电阻
P0口是集电极开路输出,也就是OC门,这种结构没有输出高电平的能力
就相当于一个一端接地的开关, 按下去就输出低电平0V,断开就没有电压,是悬空状态.如果要输出高电平控制一个器件,而这个器件本身又没有内置上拉,就必须自己接一个上拉电阻。
3、驱动模块
如图所示:
图3-3-1 驱动电路
单片机的I/O输出能力不足以驱动LED灯,所以采用灌电流的方式来驱动LED灯发光。
4、PCB的设计
我主要设计PCB,在设计PCB时遇到了不少的困难。
首先是原理图,设计时需要很多的原件,有的元件库里的元件没有封装有的有,但是有很多是不能用的。
而且,不同的元件库里的原件还不一样,而自己画原件又很浪费时间,也不会画。
于是就在网上找了很多的资源,最终将原理图的问题解决。
在画PCB时,先进行原件的布局,之后开始布线,为了减少信号的损失我把地线加粗为30mil,电源线加粗为20mil。
考虑我们所做的板子非常的小,就没有进行覆铜。
然而一些封装却无法解决,比如说排阻即找不到封装自己也不会画,还有就是一些电容,找到封装,但是不符合实际,不是太大就是太小,结果只画了图而没有去制作。
原理图如下:
图3-4-1 原理图
PCB图如下所示:
图3-4-2 PCB
四、系统软件设计
1、源程序部分设计
程序采用延时程序,先定义一个延时函数,通过返回不同的函数值,在不同的位置调用来实现不同LED灯的亮灭时间。
为了精确的控制延时的时间我们用了Keil uVision5进行了仿真,第一个灯亮的时间是1.01秒与我们规定的一秒只有0.01的误差,达到了我们预期的目的,这说明我们设计的程序是可行的。
图4-1-1 延时函数
2、程序流程图
图4-2-1 程序框图
五、系统调试与结果分析
我们的工作开始进展的时候,我们根据各功能模块画出了原理图,并用AD制图软件进行了仔细的排线画出了PCB原理图。
随后我们用洞洞板开始进行硬件的焊接,在硬件的焊接完成后,将写好的程序下载进去,结果有一两个灯没亮,我们用万用表进行了排查,灯的引脚处没有电压,我们动了动单片机,发现灯的引脚和单片机的底座焊接的不牢固。
在程序的设计中,我们用软件仿真时发现并没有达到预期的亮灭时间,于是不断地修改延时函数中第二个循环中的n的值然后不断进行仿真最后确定了125.5这个值较为准确。
同时在烧录时我们发现只有在开关打开的一瞬间,HEX文件才能被烧录进去,而其他时间无法烧录。
经过详细的了解,原来我们单片机的P1.0,P1.1未置低属于冷启动,只有在断电然后上电才能够完成下载。
但这并没有影响到实验的完成,在以后的设计中,我们会注意到运用到热启动,毕竟热启动不用多次的按动开关键。
图5-1-1 实物
最后在这都完成之后,我们现将单片机通上电,然后将程序烧录进去,最终达到了预期的目的。
六、总结
在本次项目中,我主要从事的是动手操作这部分。
通过查阅书籍和影像资料我已经初步的掌握了Keil uVision5和AltiumDesigner的基本的使用方法。
在本项目中我经过不断地修改布局,我把本次项目所需的PCB板基本的画完,但是封装出现了很大的错误,是经过老师的指导修改,然后才成功的把AD制图搞定。
之后就是软件的编写,通过队友的指导,掌握了延时的方法很快就编写了所需的程序,并成功的运行在单片机上。
在焊接的过程中也掌握了焊接的技巧,能够焊接一些基础的器件同时在实验室的学习中也基本的掌握了一些实验仪器的使用。
这次项目使我学到很多东西,为我进一步学习单片机奠定了基础。
在以后的学习中希望通过对单片机的学习,入门嵌入式系统和一些其它先进的东西,追赶时代的潮流,能够从事自己喜欢的工作。