基于单片机c语言花样彩灯设计
基于c语言单片机流水节日彩灯课程设计
课程设计报告
课程名称:单片机课程设计
报告题目:节日彩灯控制
学生姓名:
所在学院:
专业班级:
学生学号:
指导教师:
2013年12月25日
课程设计任务书
摘要
彩灯是我国普遍流行的传统的民间的综合性的工艺品。彩灯艺术也就是灯的综合性的装饰艺术。新中国成立后,彩灯艺术得到了更大的发展,科学技术的发展,彩灯艺术更是花样翻新。
节日彩灯以成为我们生活中常见的装置,在各种场合我们都能看见它,它使我们的生活更加的丰富多彩。它集中运用了单片机, LED, 自动控制等技术,是典型的基于单片机的电子产品。
本文以AT89C51单片机为控制核心,采用模块化的设计方案,运用LED彩灯、按键等组成电路,实现彩灯在开启时满足不一样的闪亮方法。按键可以在彩灯使用的时候选择不同的亮法,使彩灯变化多样,键一可以使彩灯依次从上到下循环点亮,健二可以使彩灯停止流动,所有的灯为暗,键三可以使彩灯上向下流动,健四可以使彩灯下向上流动,键五可以使所有的彩灯从亮到暗到亮循环。通过按键可以达到不同的效果。
关键词节日彩灯;循环;AT89C51;
目录
一、概述 (1)
二、方案设计与论证 (1)
1.方案比较 (1)
2.方案论证 (3)
3.方案选择 (3)
三、单元模块设计 (3)
3.1 矩阵键盘的控制 (3)
3.2 流水灯的控制 (4)
四、总原理图 (6)
五、结论与心得 (6)
六、参考文献 (8)
附录一:程序清单 (10)
一、概述
传统的制灯工艺和现代科学技术紧密结合,将电子、建筑、机械、遥控、声学、光导纤维等新技术、新工艺用于彩灯的设计制作,把形、色、光、声、动相结合,思想性、知识性、趣味性、艺术性相统一。在当今的社会里,彩灯已经成为我们生活的一部分,能给我们带来视觉上的享受还能美化我们的生活彩灯控制器主要是通过电路产生有规律变化的脉冲信号来实现彩灯的各种变化。它的主要器件是寄存器。现如今寄存器是数字系统常见的重要部件,除在计算机中广泛用于存放中间数据外,它在其他方面的应用,目前在教材中只介绍可构成环形或扭环形计数器。本次实验由于触发器具有记忆的功能,所以将移位寄存器设计成彩灯控制电路。由于电路本身实用,如果再通过计算机仿真,就可以直观地看到循环彩灯控制效果。如果稍微改动控制电路,就可以改变电路的不同工作状态,控制彩灯变幻出不同的闪烁效果。
单片机课程设计花样流水灯2
单⽚机课程设计花样流⽔灯2
前⾔
随着⼈们⽣活环境的不断改善和美化,在许多场合可以看到彩⾊霓虹灯不断变化闪烁。LED灯由于其丰富的灯光⾊彩,低廉的造价以及控制简单等特点⽽得到了⼴泛的应⽤,⽤彩灯来装饰街道和城市建筑物已经成为⼀种时尚。但⽬前市场上各式样的LED灯控制器⼤多数⽤全硬件电路实现,电路结构复杂、功能单⼀,这样⼀旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态参数。这种彩灯控制器结构往往有芯⽚过多、电路复杂、功率损耗⼤等缺点。此外从功能效果上看,亮灯模式少⽽且样式单调,缺乏⽤户可操作性,影响亮灯效果。因此有必要对现有的彩灯控制器进⾏改进。
流⽔灯是⼀串按⼀定的规律像流⽔⼀样连续闪亮。流⽔灯控制是可编程控制器的⼀个应⽤,其控制思想在⼯业控制技术领域也同样适⽤。流⽔灯控制可⽤多种⽅法实现,但对现代可编程控制器⽽⾔,利⽤移位寄存器实现最为便利。通常⽤左移寄存器实现灯的单⽅向移动;⽤双向移位寄存器实现灯的双向移动。本案例利⽤价格低廉的AT89C51系列单⽚机控制基⾊LED灯泡从⽽实现丰富的变化。
1、课程设计的⽬的和要求
1.1 设计⽬的
近年来随着科技的发展,单⽚机的应⽤正在不断⾛向深⼊,同时带动传统控制检测⽇新⽉异更新,在实时检测和⾃动控制的单⽚机应⽤系统中,单⽚机往往是作为⼀个核⼼部件来使⽤,单⽚机⽅⾯知识是不够的,还应根据具体硬件结构,以及针对具体应⽤对象点的软件结合,加以完善。流⽔灯,可以更简单、⽅便的使⽤。通过本课程设计使学⽣进⼀步巩固单⽚机原理及应⽤的基本概念、基本理论,分析问题的基本⽅法,增强系统地运⽤已学的理论知识解决实际问题的能⼒和查阅资料的能⼒。培养⼀定的⾃学能⼒和独⽴分析问题、解决问题的能⼒,能通过独⽴思考、查阅⼯具书、参考⽂献,寻找解决⽅案。
单片机实例之跑马灯PPT课件
图3-22 P3口查询窗口
.
36
串口设置
KEIL 软件开发平台
图3-23 串口查询窗口
.
37
打开后的串口窗口
KEIL 软件开发平台
图3-24 串口.窗口
38
定时器设置
KEIL 软件开发平台
图3-25 定时器窗口
.
39
打开后的定时器1窗口
KEIL 软件开发平台
图3-26 硬.件I/0口查询窗口
{ unsigned char OutData=0xfe;
for(;;)
{ P1=OutData;
OutData=_crol_(OutData,1); //循环左移
mDelay(1000); /*延时1000 毫秒*/
}
}
.
48
_crol_ 字符循环左移 _cror_ 字符循环右移 _irol_ 整数循环左移 _iror_ 整数循环右移 _lrol_ 长整数循环左移 _lror_ 长整数循环右移 _nop_ 空操作 (相当于8051 NOP 指令) _testbit_ 测试并清零位 (相当于8051 JBC
依次类推,逐次点亮LED所对应的数据为:
1111 1110、1111 1101、1111 1011、1111 0111、
1110 1111、1101 1111、1011 1111、0111 1111。
按键控制多种花样霓虹灯设计
应用工程学院
单片机应用技术实训报告
专业:应用电子
学号:1504150137
姓名:许林
日期:2016/12/24
项目一按键控制多种花样霓虹灯设计
一、任务目的
1.理解实验板独立按键部分的电路原理。
2.掌握循环类、位操作类指令的应用。
3.熟练掌握51单片机集成开发软件的使用。
4.巩固C语言知识并灵活运用到单片机编程。
二、任务要求
使用按键控制多种花样霓虹灯设计,电路板上有8个自上而下排列整齐的发光二极管,需要根据一个(或者三个)按键的输入来实现以下3种显示状态的切换:
a.全部闪烁
b.至上而下流水灯循环
c.第8、6、4、2、1、3、5、7个发光二极管循环
三、硬件电路设计
四、软件设计
#include<regx51.h>
unsigned int n;
void delayms(n)
{unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);}
void main()
{unsigned char key,a,m;
unsigned char code
led[]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff, 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,
0xbf,0xef,0xfb,0xfe,0x7f,0xdf,0xf7,0xfd};
P0=0xff;
while(1)
{
key=0;
while(key==0)
{
key=P3;
基于单片机的彩灯设计
1.引言
随着人们对房屋的装饰需要彩灯,在许多城市可以看到彩色霓虹灯。LED彩灯由于其丰富的灯光色彩,便宜的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、电路复杂、功率损耗大等缺点。此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性。
全球气候暖化危机和能源紧缺在进一步推动LED照明的普及,LED照明具有环保、光效高和寿命长的特点,但在完全取代具有墙上型调光器的白炽灯方面,LED照明还存在兼容性差的先天不足。其主要原因在于:
1)现有的调光器都是针对白炽灯设计的,而白炽灯呈现的是纯阻性;LED作为固态半导体照明器件,需要恒定的直流电流驱动,所以LED照明一般都需要驱动器从交流110V/220V转换到所需要的直流电流;
2)调光器种类繁多,而且工作原理各不相同,包括前切型、后切型和智能型等;
3)LED照明器的种类也很多。这样一来,对于不同的LED照明匹配不同类型的调光器;LED的驱动器面临巨大挑战;其中,可靠性和安全性尤为重要。照明属于消费电子产品,直接接触千家万户的消费者,不仅价格要适当,更重要的是要安全可靠;即便是任一元器件失效或调光器与LED不匹配,也不能造成漏电、过热、过流等任何安全故障。
2.硬件设计
单片机控制三组小灯可以按控制单色依次点亮,还可以通过改变输出脉冲不同的占空比来控制输出电压,以控制该色LED的点亮,实现多色光LED渐变发光功能,使三种颜色的灯可以发出多种颜色,单片机控制P1口的某管脚按规定输出高低电平,输出高电平时由ULN2003输出低电平,经ULN2003反向为高电平,使驱动三极管截止,LED不能点亮,每种颜色的三个小灯由单片机芯片P1口的一个管脚控制,实现它们的顺序点亮及颜色渐变和颜色突变功能。
51单片机技术应用教程(C语言版)项目八PC机远程控制花样霓虹灯设计与制作
8.1.1串行通信的基本原理
串行通信其他知识
串行通信速率:单片机中,串行通信的速率用波特率(baud rate)表示, 单位为Bd。波特率用于表征数据传输的速度,是串行通信的重要指标。 通常,异步通信的波特率为1200的整数倍,如1200、2400、9600Bd。
通信协议:为了保证串行通信的可靠接收,通信双方在字符帧格式、波特 率、电平格式、校验方式等方面应采用统一的标准。这个标准就是收发双 方需要共同遵守的通信协议。
8.1.2 51单片机串行通信基础知识
串行结构接口
51单片机串行接口内部有2个独立 的接收、发送缓冲器SBUF(特殊功 能寄存器),可同时发送、接收数据。
发送缓冲器只写入,不能读出; 接收缓冲器只能读出,不能写入。两 者共用1个字节地址(99H)。
串行接口的控制寄存器有2个: SCON和PCON。
空闲位起:始数 位据:线位数上于据字位符:紧校跟验起位停始:止位位位于:数用据来位表征字 没有数帧据开传头输,时只之数占后1的位数,据之信后息,符,仅帧低占结1束位的,位用,高电 据线的低状电态 平,高用位电于在向前接,高来位表在征平后串,。行通通常信可中取采1位、 平,其收长设度 备没表有示用限发户送可端以自用己奇定校1义.5验位数还或是2位偶校验 制 开始发送1据帧位信的息长度,由用户编程决定
1.熟练使用Keil、Proteus软件完成单片 机通信系统仿真与调试 2.会使用单片机串行通信技术完成基 本的远程控制
四花样彩灯控制器课程设计
四花样彩灯控制器课程设计
1. 项目概述
本课程设计旨在设计一个四花样彩灯控制器,用于控制灯光的颜色和模式。通过该控制器,用户可以选择不同的颜色和模式,实现彩灯的灵活变化,为场景创造出不同的氛围和效果。
2. 项目目标
本项目的目标是设计一个能够控制四个灯泡的彩灯控制器,实现以下功能:
•控制四个灯泡的开关状态;
•控制灯泡的颜色;
•控制灯泡的闪烁模式和速度;
•控制灯泡的亮度。
3. 硬件设计
3.1 芯片选择
本设计选用Arduino UNO作为主控芯片。Arduino UNO是一款开源的基于ATmega328P芯片的单板微控制器,广泛用于原型制作和教育领域。
3.2 电路设计
根据设计要求,我们需要四个LED灯泡,分别代表四个彩灯。每个LED灯泡需要一个数字口进行控制,一个模拟口进行亮度调节。
可以通过以下电路连接方式实现控制:
四个LED分别通过220欧姆的电阻连接电源的正极,共地接到Arduino UNO的GND 引脚上。每个LED的控制引脚分别连接到Arduino UNO的数字口2、3、4和5上。另外,每个LED的亮度控制引脚连接到Arduino UNO的模拟口A0上。
4. 软件设计
4.1 软件框架
本设计将使用Arduino IDE进行编程。Arduino IDE是一款简单易用的开发环境,适用于Arduino开发板。
4.2 程序流程
下面是程序的主要流程:
1.初始化四个灯泡的控制引脚,将其设置为输出模式;
2.进入主循环;
3.读取用户的输入,包括开关状态、颜色、模式和亮度;
4.根据用户输入,控制四个灯泡的状态、颜色和亮度;
基于单片机的流水灯系统设计
基于单片机的花样流水灯及其数码显示技术
姓名;姚玉柱
班级;电信一班
学号;************
学院;电子信息工程学院
1. 设计思路 (3)
1.1电源模块 (4)
1.2显示模块 (4)
1.3花样灯模块 (4)
2 单片机花样灯与数码显示系统总体设计........................................................... 错误!未定义书签。
2.1三个模块的阐述
2.2单片机花样灯与数码显示控制系统的通行方案设计................................. 错误!未定义书签。
2.3单片机花样灯与数码显示控制系统的功能要求........................................ 错误!未定义书签。
2.4单片机花样灯与数码显示控制系统的基本构成及原理............................ 错误!未定义书签。3花样灯与数码显示系统的硬件设计 (8)
3.1AT89C51单片机简介 (9)
3.1.1 AT89C51单片机的主要特性 (9)
3.1.2 主要引脚功能 (10)
3.2系统硬件总电路构成及原理 (12)
3.2.1系统硬件电路构成 (12)
3.2.2系统工作原理 (12)
4系统软件程序的设计 (12)
4.1程序主体设计流程 (12)
4.2理论基础知识 (13)
4.2.1数组及while、switch等语句................................................................. 错误!未定义书签。
单片机花样流水灯设计实验报告
**大学
物理学院
单片机花样流水灯设计实验
课题:花样流水灯设计
班级: 物理 ***
姓名: ***
学号: ……………
当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。
制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。
本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。
关键字:AT89C51 单片机流水灯数码管
1. 单片机及其发展概况
单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集成在一个半导体芯片上。单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。
2. Protues仿真软件简介
Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。
STCC单片机花样流水灯C语言程序
S T C C单片机花样流水灯C语言程
序
Revised on July 13, 2021 at 16:25 pm
花样流水灯程序#include
#define uint unsigned int
#define uchar unsigned char
uchar num;
uchar code table={
0xaa;~0xaa;0x7e;0xbd;0xdb;
0xe7;0xf3;0xf9;0xfc;0xfa;
0xf6;0xee;0xde;0xbe;0x7e;
0xbe;0xde;0xee;0xf6;0xfa;
0xfc;0xf0;0xc0;0x0;0x5f;0xaf;0xd7;0xeb;0xf5;0xfa;0xff}; void delaymsuint;
void main
{
while1
{
fornum=0;num<31;num++
{
P2=tablenum;
delayms200;
}
P2=0x7f;
delayms40;
P2=0x3f;
delayms80;
P2=0x1f;
delayms130;
P2=0x0f;
delayms190;
P2=0x07;
delayms260;
P2=0x03;
delayms240;
P2=0x01;
delayms330;
P2=0x00;
delayms430;
fornum=0;num<31;num++
{
P2=tablenum;
delayms100;
}
P2=0x7f;
delayms40;
P2=0x3f;
delayms50;
P2=0x1f;
delayms70;
P2=0x0f;
delayms100;
单片机的花样彩灯设计
课程设计报告书题目: 单片机控制的花样彩灯设计
专业:电气工程及其自动化(1)班
学号:
学生姓名:
指导教师:
2010年12 月 1 日
南昌工程学院
课程设计(论文)任务书
一、课题设计(论文)题目:
基于单片机控制的花样彩灯设计
二、课程设计(论文)使用的原始资料(数据)及设计技术要求:
设计要求:以MCS51单片机为核心,辅以外围接口电路,设计一个由键盘控制的四种花样LED闪烁彩灯,使八个LED实现流水灯(跑马灯)、逐点点亮、间隔点亮、逐点熄灭四种花样。要求采用键盘查询方式(非中断方式)实现花样转换。在当前花样循环显示时,按下相应的花样选择按钮,能立即转换至对应的闪烁花样(但必须在去干扰或消除抖动之后)。四个按钮S1、S2、S3、S4分别对应花样1、花样2、花样3、花样4。程序开始运行时自动执行花样1(流水灯)。时间间隔采用定时/计数器控制为1S左右(误差不超过10%)。
1、单片机控制系统硬件电路设计,包括单片机时钟和复位电路的设计、LED驱动和键盘设计等。
2、控制软件设计与调试,包括1S定时功能的实现、键盘响应程序和显示控制程序等。
三、课程设计(论文)工作内容及完成时间:
1、查找相关文献,进行方案选择。2天 11.22---11.23
2、系统硬件电路设计,绘制电路原理图。3天 11.24---11.26
3、绘制软件流程图,编写与调试软件。3天 11.29---12.1
4、完成课程设计报告,答辩。2天 12.2---12.3
四、主要参考资料:
1、《单片机原理及应用》,李建忠,西安电子科技大学出版社,2002年
基于单片机的节日彩灯设计
单片机课程设计
题目:
院(系):
专业:
学号:
姓名:
指导教师:
摘要
彩灯控制器在我们的日常生活中有着重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。本次报告中设计的花样彩灯控制器是其中较简单的,但这是进行复杂设计的基础。
查阅相关资料,用简单的输入输出端口等硬件,结合实际彩灯的亮灭控制过程进行设计。利用键盘上的灯实现灯的各种形式的变换,使彩灯变换的样式更多,克服了节日彩灯变换样式单调的缺点,使节日彩灯朝着变换多种多样的方式发展。
关键词:可编程节日彩灯;循环;控制高低电平;实现对彩灯的控制
目录
目录
引言 (4)
1、设计目的与要求 (5)
2、设计总体方案 (5)
3、模块电路的设计 (7)
4、独立设计部分 (10)
5、焊接制作与调试结果及其分析 (12)
6、设计过程中的问题及其解决方案 (13)
7、心得体会 (13)
8、改进工作展望 (14)
参考文献 (14)
附录一 (15)
附录二 (17)
附录三 (19)
1 设计目的与要求
1.1引言
在现代生活中,彩灯作为一种景观,安装在建筑物的适当地方。一是作为装饰增添节日气氛,二是有一种广告宣传的作用:用在舞台上增强晚会灯光效果。
彩灯控制器在我们的日常生活中有着重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。本次报告中设计的花样彩灯控制器是其中较简单的,但这是进行复杂设计的基础。
数码管是一种半导体发光器件,其基本单元是发光二极管。通过对其不同的管脚输入相对的电流,会使其发亮,从而显示出数字能够显示时间、日期、温度等所有可用数字表示的参数。由于它的价格便宜、使用简单,在电器特别是家电领域应用极为广泛,空调、热水器、冰箱等等。绝大多数热水器用的都是数码管,其他家电也用液晶屏与荧光屏。
基于单片机的彩灯设计
基于单片机的彩灯设计
摘要 (2)
关键词:单片机,数字控制,流水灯,AT89S52 (2)
绪论 (2)
1方案设计 (2)
1.1整体设计 (2)
1.2 硬件电路设计 (3)
1.2.1显示部分电路设计 (3)
1.2.2控制电路设计 (4)
1.2.3 总体电路原理介绍 (6)
2使用软件介绍 (7)
2.1 Keil简介 (7)
2.2 Proteus简介 (7)
3软件部分设计 (9)
3.1程序流程图 (9)
3.1.1 主程序流程图 (9)
3.1.2 中断服务程序流程图 (10)
3.2 源程序代码 (11)
4.电路调试与仿真 (13)
5.总结 (15)
6.致谢 (16)
附录 (17)
附录一.电路原理图 (17)
附录二.元件清单 (18)
参考文献: (19)
摘要
本文设计了一种基于单片机的简易流水等的控制系统。系统由AT89S52、LED 发光二极管、按键,可以实现彩灯的不同类型显示切换。其硬件电路主要有主控制器,LED显示电路,复位电路,晶振电路。系统程序的设计包括主程序的设计,中断服务程序等等
本系统以单片机汇编语言进行软件设计,由于汇编语言与单片机底层结合,使程序设计的逻辑关系更加简洁明了。此程序直接在Keil软件编译程序,利用Proteus进行仿真调试,方便修改程序。
关键词:单片机,数字控制,流水灯,AT89S52
绪论
当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。学习单片机的最有效方法就是理论与实践并重,本文用AT89C52单片机自制了一款可实现多种循环显示状态的流水灯,重点介绍了其软件编程方法。
51单片机技术应用教程(C语言版)项目四 花样霓红灯的设计与制作
51单片机技术应用活页式教程(C语言版)
项目四 花样霓虹灯的设计与制作
【引导学习】
1.下面请运用信息查找等方法解释如下C51程序所表达的意思,请在后面解释
每条语句含义,并将每个程序段执行后的功能写出来。
#include <REGX51.H> //
#include <INTRINS.H> // void delay(unsigned int i) //延时程序
{ while(i--); //i次空操作
}
void move_r(unsigned char p)
{
unsigned char i; //
P1=p;
//
for(i=0;i<8;i++) //
{
dFra Baidu biblioteklay(40000); //
P1=_cror_(P1,1); //
}
}
如果P1口接了8个LED灯,p=0x7f,该程序的功能是:
}
如果P1口接了8个LED灯,p=0x7e,该程序的功能是:
51单片机技术应用活页式教程(C语言版)
【引导学习】
项目四 花样霓虹灯的设计与制作
void move_from_m(unsigned char p) { unsigned char i; // P1=p; for(i=0;i<4;i++) // { delay(40000); P1=((p&0xF0)<<i)|((p&0x0F)>>i); //
C51单片机 节日彩灯 课程设计
C51单片机节日彩灯的程序设计用汇编语言编制
要求用单片机控制8只小彩灯(发光二级管),使小彩灯按照要求亮灭。第一秒二极管D1、D3亮,其他灭;第二秒钟二极管D2、D4亮,其他灭;第三秒钟D5、D7亮,其他灭;第五秒钟D1、D3、D5、D7亮,其他灭;第六秒钟D2、D4、D6、D8亮,其他灭;第七秒全亮,第八秒全灭,如此循环。
程序设计
P1.0==D1,.....P1.7=D8; 假设低电平点亮二极管(二极管串联一个200欧姆电阻,正极接电源,负极接CPU 对应引脚)
假设时钟频率12MHz;
ORG 0000H
LED: MOV P1,#0FAH
CALL DELAY1S
MOV P1,#0F5H;
CALL DELAY1S
MOV P1,#0AH
CALL DELAY1S
MOV P1,#0AAH
CALL DELAY1S
MOV P1,#55H
CALL DELAY1S
MOV P1,#00H
CALL DELAY1S
MOV P1,#0FFH
CALL DELAY1S
LJMP LED
DELAY1S: MOV R3,#200
D2:MOV R4,#100
D1:MOV R5,#25
DJNZ R5,$
DJNZ R4,D1
DJNZ R3,D2
RET
END
电路图
元器件清单
单片机花样流水灯设计实验报告
单片机花样流水灯设计实验报告
* * 大学
物理学院
单片机花样流水灯设计实验
课题: 花样流水灯设计班级: 物理 *** 姓名: ***
学号:
【摘要】
当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。
制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计介绍一种简单实用的单片机花样流水灯设计与制作,采用基于MS-51的单片机AT89C51和发光二极管、晶振、复位、电源等电路以及必要的软件组成的以AT89C51为核心,辅以简单的数码管等设备和必要的电路,设计了一款简易的流水灯电路板,并编写简单的程序,使其能够自动工作。
本设计用AT89C51单片机为核心自制一款简易的花样流水灯,并介绍了其软件编程仿真及电路焊接实现,在实践中体验单片机的自动控制功能。该设计具有实际意义,可以在广告业、媒体宣传、装饰业等领域得到广泛应用。
关键字:AT89C51 单片机流水灯数码管
2
【概述】
1. 单片机及其发展概况
单片机又称为单片微计算机,其特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时/计数器及终端系统等)全部集
成在一个半导体芯片上。单片机作为一种高集成度微型计算机,已经广泛应用于工业自动化控制、智能仪器仪表、通信设备、汽车电子与航空航天电子系统、智能家居电器等各个领域。
2. Protues仿真软件简介
Protues以其数量众多的元件数据库、标准化的仿真仪器、直观的捕获界面、简洁明了的操作、强大的分析测试、可信的测试结果, 为电子工程设计节约研发时间,节省了工程设计费用。利用Protues软件设计一款通过数码管显示计数时间的流水灯电路及Keil C软件编程后,再将两者关联则可以简单快速的进行仿真。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*-------------2011.3.19 xxx编写------------------------------------------------------------
设计名称:花样和速度可控的花样彩灯设计
功能:1.本程序用了两个按键,其中一个可以循环控制花样,另一个循环控制流水速度;
2.有断电保存当前花样和速度功能,即断电后,在重现上电时,
执行的花样和速度仍旧是断电前的速度和花样。
缺点:1、本程序为延时计时,精度不高;
2、由于使用延时来得到秒信号,时数和分数被改变后,有时要过一秒后才能被更新显示------------------------------------------------------------------------------------------------
*/
#include
#include
#include<24c02.c>
sbit s1=P1^4; //定义按键
sbit s2=P1^5;
void zhongduan(void)interrupt 1
{
//P1=0xff;
TR0=0; //关闭定时器T0
if(s1==0) //如果按键s1被按下
{delay_ms(10); //延时消抖
di();
{if(s1==0) //如果按键s1按下
{k++;write_add_24c02(0,k);if(k==6){k=1;}}
while(!s1);flag=1;} //等待s1键抬起并改变标志位
TR0=1; //启动定时器T0
}
if(s2==0) //如果按键s2被按下
{delay_ms(10); //延时消抖
di();
if(s2==0)
{i++;write_add_24c02(1,i);if(i==6)i=1;}
while(!s2);flag=1;} //等待s2键抬起并改变标志位
TR0=1; //启动定时器T0
}
void main(void)
{
TMOD=0X02; // 定时器TO,工作方式2,带自动装在的8位计数器,最大数值2^8=256
TH0=256-200; //装载初值
TL0=256-200;
ET0=1; // 定时器T0中断允许
TR0=1; //开启定时器T0
EA=1; //打开外部中断0
k=read_add_24c02(0);
i=read_add_24c02(1);
if(k>=6)k=1;
if(i>=6)i=1;
while(1)
{
flag=0; //按键按下标志位
while(flag==0) //检测到有按键按下
{ switch(k)
{
case 1:huayang_1();break;
case 2:huayang_2();break;
case 3:huayang_3();break;
case 4:huayang_4();break;
case 5:huayang_5();break;
}
switch(i)
{
case 1:x=10;break;
case 2:x=100;break;
case 3:x=500;break;
case 4:x=1000;break;
case 5:x=2000;break;
}
}
}
}
/****************************************
花样子文件zi.c
*************************************************/ /*sbit S1=P1^3; 定义按键s1为引脚P1.3
sbit S2=P1^4;
sbit S3=P1^5;
sbit S4=P1^6;
sbit S5=P1^7;*/
#define led P3
sbit beep=P2^0; //定义蜂鸣器为引脚P2.0
unsigned int x=10;
unsigned char k=1,i=1,flag=0;
//#define led led
void delay_ms(unsigned int xms) //1ms延时子程序
{ unsigned int aa,bb;
for(aa=xms;aa>0;aa--)
{if(flag==1) //当检测到有按键按下,跳出内层循环
break;
for(bb=800;bb>0;bb--);} //调整bb数值,以使本句运行时间为1ms 。
//在PROTEUS中仿真时,可调为120;实际下载到STC12C5A32S2使应调为800左右
}
//-------------------------------------------------
void di() //短促响一声函数
{ beep=0; delay_ms(100);beep=1;}
//-----------------------------------------------
//------------------花样1隔一个位置灯亮----------------
void huayang_1(void)
{
led=0xfe;
delay_ms(x);
led=0xfb;
delay_ms(x);
led=0xef;
delay_ms(x);
led=0xbf;
delay_ms(x);
}
//-----------------------------------------------------
//-------------------花样2高低四位灯循环亮灭-----------
void huayang_2(void)
{
led=0xf0;
delay_ms(x); //调用延时函数
led=0x0f;
delay_ms(x); //调用延时函数
}