单片机流水灯

单片机流水灯
单片机流水灯

嵌入式单片机原理及应用

三级项目报告

学院:电气工程学院

班级:仪表三班

姓名:荣光耀

学号:140103020178

指导教师:张淑清

2016年11月

项目内容简介:

单片机:近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。

流水灯:随着现代社会的发展,人们越来越追求审美和新颖,而流水灯就是其中一种,以前简单的照明工具变得越来越多样化,流水灯的千姿百态恰能给人一种视觉冲击,现在不管大街小巷我们都可以随处可见这种变幻万千的流水灯,而这种流水灯我们可以产用电子电路去设计,我们主要可以用装套控制器和状态译码器来实现灯光的流水效果,但是现在我们可以用单片机来实现,因为其相对于电子电路有明显的优越性,控制硬件电路比较简单,软件方面程序也不复杂,因此制作的远离简单,但功能作用并不低于电子电路设计的,由于它的小巧方便、通俗易懂,所以我们往往采用单片机来做流水灯。

设计原理:

1. 软件框图

2.详细程序清单

/*

************************************************************** * First project

* 2016/10/21

* LED ?μ???‰??????

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

#include "stm32f10x.h"

//include "led.h"

#include "main.h"

void delay(void);

int main(void)

{

LED_Init();

while(1)

{

delay();

GPIO_SetBits(GPIOA,GPIO_Pin_6);

GPIO_SetBits(GPIOA,GPIO_Pin_7);

GPIO_SetBits(GPIOA,GPIO_Pin_8);

GPIO_SetBits(GPIOD,GPIO_Pin_1);

GPIO_SetBits(GPIOD,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_3);

GPIO_ResetBits(GPIOB,GPIO_Pin_4); delay();

GPIO_ResetBits(GPIOA,GPIO_Pin_6);

delay();

GPIO_SetBits(GPIOA,GPIO_Pin_5);

GPIO_SetBits(GPIOA,GPIO_Pin_7);

GPIO_SetBits(GPIOA,GPIO_Pin_8);

GPIO_SetBits(GPIOD,GPIO_Pin_1);

GPIO_SetBits(GPIOD,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4); delay();

GPIO_ResetBits(GPIOA,GPIO_Pin_7);

delay();

GPIO_SetBits(GPIOA,GPIO_Pin_5);

GPIO_SetBits(GPIOA,GPIO_Pin_6);

GPIO_SetBits(GPIOA,GPIO_Pin_8);

GPIO_SetBits(GPIOD,GPIO_Pin_1);

GPIO_SetBits(GPIOD,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4);

delay();

GPIO_ResetBits(GPIOA,GPIO_Pin_8);

delay();

GPIO_SetBits(GPIOA,GPIO_Pin_5);

GPIO_SetBits(GPIOA,GPIO_Pin_6);

GPIO_SetBits(GPIOA,GPIO_Pin_7);

GPIO_SetBits(GPIOD,GPIO_Pin_1);

GPIO_SetBits(GPIOD,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4); delay();

GPIO_ResetBits(GPIOD,GPIO_Pin_1);

delay();

GPIO_SetBits(GPIOA,GPIO_Pin_5);

GPIO_SetBits(GPIOA,GPIO_Pin_6);

GPIO_SetBits(GPIOA,GPIO_Pin_8);

GPIO_SetBits(GPIOD,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4); delay();

GPIO_ResetBits(GPIOD,GPIO_Pin_2);

delay();

GPIO_SetBits(GPIOA,GPIO_Pin_5);

GPIO_SetBits(GPIOA,GPIO_Pin_6);

GPIO_SetBits(GPIOA,GPIO_Pin_8);

GPIO_SetBits(GPIOA,GPIO_Pin_8);

GPIO_SetBits(GPIOD,GPIO_Pin_1);

GPIO_SetBits(GPIOB,GPIO_Pin_3);

GPIO_SetBits(GPIOB,GPIO_Pin_4); delay();

GPIO_ResetBits(GPIOB,GPIO_Pin_3);

delay();

GPIO_SetBits(GPIOA,GPIO_Pin_5);

GPIO_SetBits(GPIOA,GPIO_Pin_6);

GPIO_SetBits(GPIOA,GPIO_Pin_7);

GPIO_SetBits(GPIOA,GPIO_Pin_8);

GPIO_SetBits(GPIOD,GPIO_Pin_1);

GPIO_SetBits(GPIOD,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_4); delay();

GPIO_ResetBits(GPIOB,GPIO_Pin_4);

delay();

GPIO_SetBits(GPIOA,GPIO_Pin_5);

GPIO_SetBits(GPIOA,GPIO_Pin_6);

GPIO_SetBits(GPIOA,GPIO_Pin_7);

GPIO_SetBits(GPIOA,GPIO_Pin_8);

GPIO_SetBits(GPIOD,GPIO_Pin_1);

GPIO_SetBits(GPIOD,GPIO_Pin_2);

GPIO_SetBits(GPIOB,GPIO_Pin_3); delay();

}

}

void delay(void)

{

int i=0xffff;

while(i--);

}

调试结果:

总结:通过此次三级项目,我们收获了很多。首先我们熟悉了单片机的基本使用。能够较熟练的运用流水灯程序。在完成此次项目的过程中,,我们遇到了第五个灯无法点亮的问题,通过请教同学以及查找教材资料,我们成功地利用修改基本程序实现了流水灯连贯。在项目进行的过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查,我们终于找出了原因所在,也暴露出了前期我们在这

方面的知识欠缺和经验不足。我们也深刻的体会到了小组分工的作用。只有合理的分工才能提高作业的效率。实践出真知,通过亲自的实践,使我们掌握的知识不再是纸上谈兵。在作业完成的过程中,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。

表格如下;

(完整版)51单片机流水灯程序

1.第一个发光管以间隔200ms 闪烁。 2. 8 个发光管由上至下间隔1s 流动,其中每个管亮500ms, 灭500ms 。 3. 8 个发光管来回流动,第个管亮100ms 。 4. 用8 个发光管演示出8 位二进制数累加过程。 5. 8 个发光管间隔200ms 由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms 间隔全部闪烁 5 次。重复此过程。 6. 间隔300ms 第一次一个管亮流动一次,第二次两个管亮流动,依次到8 个管亮,然后重复整个过程。 7. 间隔300ms 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8 个全部闪烁 3 次;关闭发光管,程序停止。 1 #include #define uint unsigned int sbit led 仁P"0; void delay(); void main() { while(1) { led1=0; delay(); led1=1; delay(); } } void delay() {

uint x,y; for(x=200;x>0;x--) for(y=100;y>0;y--); } #include #include #define uint unsigned int #define uchar unsigned char sbit p P1A0; uchar a; void delay(); void main() { a=0xfe; P1=a; while(1) { a=_crol_(a,1); delay(); P1=a; delay(); } } void delay() { uint b; for(b=55000;b>0;b--); } 3 #include #include #define uint unsigned int #define uchar unsigned char void delay() { uint x,y; for(x=100;x>0;x--) for(y=110;y>0;y--); } void main() { uchar a,i; while(1) a=0xfe; for(i=0;i<8;i++) { P1=a; delay(100); a=_crol_(a,1); } a=0x7f; for(i=0;i<8;i++) { P1=a; delay(100); a=_cror_(a,1);

单片机课程设计报告--心形流水灯

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日

目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接

图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致 (8) 参考文献 (8) 1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路 的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目 的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述

2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题 这次课程设计是通过STC89C52位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。 3 系统分析 3.1 STC 89C52单片机引脚图及引脚功能介绍 本次设计的目的在于加深STC89C52单片机的理解,首先来简单认识一下,它的引脚如图3-1所示: 图3.1 STC89C52

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

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

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

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

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

基于单片机的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标号处的数据表可以根据实

单片机c语言编程控制流水灯

说了这么多了,相信你也看了很多资料了,手头应该也有必备的工具了吧!(不要忘了上面讲过几个条件的哦)。那个单片机究竟有什么 功能和作用呢?先不要着急!接下来让我们点亮一个LED(搞电子的应该知道LED是什么吧^_^) 我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机 上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。 #include //头文件定义。或用#include其具体的区别在于:后者定义了更多的地址空间。 //在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 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) {

单片机流水灯课程设计

单片机流水灯课程 设计

基于AT89C51单片机的流水灯 1 引言 1.1 课题简介 单片机全称叫单片微型计算机(Single Chip Microcomputer),是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 当前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:在智能仪器仪表上的应用,例如精密的测量设备;在工业控制中的应用,用单片机能够构成形式多样的控制系统、数据采集系统,例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算

机联网构成二级控制系统等;在家用电器中的应用可从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。单片机在医用设备领域中的应用,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等;在各种大型电器中的模块化应用,如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。 本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。本系统就是充分利用了8051芯片的I/O引脚。系统以采用MCS-51系列单片机Intel8051为中心器件来设计LED流水灯系统,实现8个LED霓虹灯的左、右循环显示,并实现循环的速度可调。 1.2 设计目的 (1) 学习基本理论在实践中综合运用的初步经验,掌握电路设计的基本方法、设计步骤,培养综合设计与调试能力。 (2) 掌握汇编语言程序设计方法。 (3) 培养实践技能,提高分析和解决实际问题的能力。 1.3 设计任务及要求 (1) 彩灯用8个发光二极管代替。 (2) 电路具有控制彩灯点亮右移、左移、全亮及全灭等功能。

单片机课程设计报告旗舰版

单片机原理及系统课程设计 评语: 考勤(10)守纪(10)过程(40)设计报告(30)答辩(10)总成绩(100) 专业:电气工程及其自动化 班级:电气1001班 姓名:周兴 学号: 201009018 指导教师:李红 兰州交通大学自动化与电气工程学院 2013 年 3 月 7 日

基于单片机的LED流水灯系统设计 摘要 本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。本系统就是充分利用了8051芯片的I/O 引脚。系统以采用MCS-51系列单片机89C51为中心器件来设计LED流水灯系统,实现8个LED霓虹灯的左、右循环显示,并实现循环的速度可调。 关键词:单片机;LED流水灯;MCS-51 Abstract This design mainly to analyze calculator software and in the process of developing the steps, and from the practical experience of the calculator design has made the detailed analysis and research. This system is to make full use of the 8051 chip I/O pins. System to the MCS - 51 series microconteroller as the center Intel8C51 device to design LED running lights system, realize the eight LED neon light left and right cyclic display, and realize the circulation speed adjustable. Keywords: single chip microcomputer, LED running lights,MCS-51

单片机流水灯C语言源程序

单片机流水灯C语言源程序 标题:51单片机流水灯C语言源程序2008-12-06 08:43:05 ************************************************************** 文件名称:flash_led.c 文件说明:流水灯C程序 编写日期:2006年10月5日 程序说明:MCU采用AT89S51,外接12M晶振,P1口输出 *************************************************************/ #include //51系列单片机定义文件 #define uchar unsigned char //定义无符号字符 #define uint unsigned int //定义无符号整数 void delay(uint); //声明延时函数 void main(void) { uint i; uchar temp; while(1) { temp=0x01; for(i=0;i<8;i++) //8个流水灯逐个闪动 { P1=~temp; delay(100); //调用延时函数 temp<<=1; } temp=0x80; for(i=0;i<8;i++) //8个流水灯反向逐个闪动 { P1=~temp; delay(100); //调用延时函数 temp>>=1; } temp=0xFE; for(i=0;i<8;i++) //8个流水灯依次全部点亮 { P1=temp; delay(100); //调用延时函数 temp<<=1; }

流水灯设计与总结报告

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

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

51单片机 流水灯 ~ 花样灯 程序

单片机为89c52 晶振为11.0592, /***此程序为流水灯*** / #include #include #define uchar unsigned char //宏定义 #define uint unsigned int uchar led; void delay(uint z) //延时子函数体 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { led=0xfe; //赋初值 while(1) { P1=led; //点亮第一个小灯 delay(100); //延时100毫秒 led=_crol_(led,1); 将led的变量左移给下一位} }

/*8个发光管间隔200ms由上至下,返回再由上至下,一个个往下亮,后全亮由下至上,返回再由下至上,一个个往下亮,后全亮 再重复2次, 然后全部熄灭再以500ms间隔 全部闪烁3次。重复此过程*/ #include #include #define uchar unsigned char #define uint unsigned int uchar led; uint i,j; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void main() { while(1) { for(j=0;j<2;j++) { led=0xfe; //赋初值 for(i=0;i<8;i++) { P1=led; //点亮第一个小灯 delay(200); //延时200毫秒 led=_crol_(led,1); //将led变量循环左移给下一位 } led=0xfe; //赋初值 for(i=0;i<8;i++) { P1=led; //点亮第一个小灯 delay(200); //延时200毫秒 led<<=1; //左移给下一位 } led=0x7f; //赋初值

单片机流水灯实验报告

单片机流水灯实验报告 电子信息工程学系实验报告 课程名称:单片机原理及接口 实验项目名称:实验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口线使用。

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

基于51单片机的流水灯设计 一.基本功能 利用AT89c51作为主控器组成一个LED流水灯系统,实现8个LED 灯的左、右循环显示。 二.硬件设计 图1.总设计图

1.单片机最小系统 1.1选用AT89C51的引脚功能 图2. AT89C51 XTAL1:单芯片系统时钟的反向放大器输入端。 XTAL2:系统时钟的反向放大器输出端,一般在设计上只要在XTAL1和XTAL2上接上一只石英震荡晶体系统就可以工作了,此外可以在两引脚与地之间加入20PF的小电容,可以使系统更稳定,避免噪音干扰而死机。 RESET:重置引脚,高电平动作,当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得部特殊功能寄存器容均被设成已知状态。 P3:端口3是具有部提升电路的双向I/O端口,通过控制各个端口的高低电平了实现LED流水灯的控制。

1.2复位电路 如图所示,当按下按键时,就能完成整个系统的复位,使得程序从新运行。 图3.复位电路 1.3时钟电路 时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。 在AT89C51芯片部有一个高增益反相放大器,其输入端为芯片引脚X1,输出端为引脚X2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。此电路采用12MHz的石英晶体。

图4.时钟电路 2.流水灯部分 图5.流水灯电路 三.软件设计 3.1编程语言及编程软件的选择 本设计选择C语言作为编程语言。C语言虽然执行效率没有汇编语言

单片机流水灯多种程序方法

一、傻瓜式编程 #include<> #define uint unsigned int #define uchar unsigned char void delay(uint z); //延时子函数的声明main () { P0=0xfe;//第一个灯亮 delay(500); P0=0xfd;//第二个灯亮 delay(500); P0=0xfb; delay(500); P0=0xf7; delay(500); P0=0xef; delay(500); P0=0xdf; delay(500); P0=0xbf; delay(500); P0=0x7f; delay(500); } void delay(uint z) //延时子函数 { uint x,y; for(x=0;x

二、用移位符号“<<”或“>>” void main() //主函数 { a=0xfe; //给a赋值 while(1) { P0=a; //给P0口赋值,第一个等亮 a为1111 1110 a=~a; //求反 a为0000 0001 a=a<<1;//移位 a为0000 0010 a=~a; //求反还原a。第二个灯亮 a为1111 1101 delay(500); if(a==0x7f) { P0=0x7f;//第八个灯亮一次 delay(500); a=0xfe;//让第一个灯亮,然后无限循环 } } } 三、用移位函数_crol_( )和_cror_( ) main() { a=0xfe; while(1) { P0=a; delay(500); a=_crol_(a,1); //a每次左移一位 } } 四、使用数组 uchar code table[ ]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf,0x7f}; main() { whlie(1) { for(a=0;a<8;a++) { P0=table[a]; delay(500); } } }

精品可控流水灯单片机课程设计报告(c语言)-定

目录 1 引言 (1) 2课题综述 (1) 2.1 课题的来源 (1) 2.2课题的意义 (1) 2.3预期的目标 (1) 2.4面对的问题 (1) 2.5课题的技术 (2) 3系统分析 (2) 3.1涉及的基础知识 (2) 3.280C51单片机引脚图及引脚功能介绍 (2) 3.3 解决问题的基本思路 (3) 3.4总体方案 (3) 4系统设计 (3) 4.1硬件设计 (3) 4.2 软件设计 (4) 4.3元件清单 (4) 4.4硬件原理图 (5) 4.5 硬件焊接图 (6) 4.6设计主要功能 (6) 5代码编写 (6) 6程序调试 (7) 结论 (8) 致谢 .................................................................................................. 错误!未定义书签。参考文献 .............................................................................................. 错误!未定义书签。

1 引言 单片机课程设计主要是为了让我们增进对80C51单片机电路的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。 2课题综述 2.1课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2课题的意义 这次单片机课程设计是为了通过对流水灯控制的设计加强学生团队配合的能力和创造力;综合运用专业及基础知识,解决实际工程技术问题的能力。能够让学生深入真是的体会到所学的理论知识和实践相结合的过程。找出自身的不足并加以改正。 2.3预期的目标 对8个LED灯设计5种流水灯显示方式,用一个按键进行方式选择,并用一个数码管显示方式编号;用两个键来控制流水灯流动的速度。 2.4面对的问题 这次课程设计是通过80C51位单片机实现。但面对的问题却是两方面的:一个是软件的设计,也就是实现流水灯控制功能的程序编辑;另一个是硬件的设计,需要我们自己连接、焊接电路板。而更为严峻的就是设计的最后还要将软硬件相结合。首先我们需要通过protel将设计的实物的电路图画出来,再根据电路图连接实物电路。

基于单片机的流水灯课程设计

09机电一体化课程设计 学院:南昌航空大学高职学院 设计题目:基于单片机的流水灯系统设计 指导老师:杨蓓 姓名: 班级:099021 学号: 年月日

目录 一、摘要 (03) 二、前言 (03) 三、硬件组成 3.1流水灯硬件构成及原理 (04) 3.2流水灯硬件原理图 (04) 四、软件编程 4.1位控法 (06) 4.2循环位移法 (08) 4.3查表法 (10) 4.4遵循原则 (13) 五、结语 (17) 六、设计体会 (17) 七、参考文献 (18)

一、摘要 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。关键词:LED 单片机控制系统流水灯 二、前言 学习单片机的最有效方法就是理论与实践并重,现在我把单片机流水灯设计作为一个毕业课程设计,需要更深的去了解单片机的很多功能,努力的去查找资料,当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。 三、硬件组成

3.1流水灯硬件构成及原理 按照单片机系统扩展与系统配置状况,单片机应用系统可分为最小系统、最小功耗系统及典型系统等。AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,具有丰富的内部资源:4kB闪存、128BRAM、32根I/O 口线、2个16位定时/计数器、5个向量两级中断结构、2个全双工的串行口,具有4.25~5.50V的电压工作范围和0~24MHz工作频率,使用AT89C51单片机时无须外扩存储器。因此,本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。其具体硬件组成如图1所示。 3.2流水灯硬件原理图

51单片机经典流水灯汇编程序

单片机流水灯汇编程序设计 流水灯汇编程序 8只LED为共阳极连接,即单片机输出端为低电平时即可点亮LED。 ;用最直接的方式实现流水灯 ORG 0000H START:MOV P1,#01111111B ;最下面的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#10111111B ;最下面第二个的LED点亮 LCALL DELAY ;延时1秒 MOV P1,#11011111B ;最下面第三个的LED点亮(以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B ;完成第一次循环点亮,延时约0.25秒 AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250ms PUSH PSW ;现场保护指令(有时可以不加) MOV R4,#2 L3: MOV R2 ,#00H L1: MOV R3 ,#00H L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减一,如果比1大,则转向L2) DJNZ R2 ,L1 ; 中层循环:256次 DJNZ R4 ,L3 ;外层循环:2次 POP PSW RET END

51单片机汇编程序集(二) 2008年12月12日星期五 10:27 辛普生积分程序 内部RAM数据排序程序(升序) 外部RAM数据排序程序(升序) 外部RAM浮点数排序程序(升序) BCD小数转换为二进制小数(2位) BCD小数转换为二进制小数(N位) BCD整数转换为二进制整数(1位) BCD整数转换为二进制整数(2位) BCD整数转换为二进制整数(3位) BCD整数转换为二进制整数(N位) 二进制小数(2位)转换为十进制小数(分离BCD码) 二进制小数(M位)转换为十进制小数(分离BCD码) 二进制整数(2位)转换为十进制整数(分离BCD码) 二进制整数(2位)转换为十进制整数(组合BCD码) 二进制整数(3位)转换为十进制整数(分离BCD码) 二进制整数(3位)转换为十进制整数(组合BCD码) 二进制整数(M位)转换为十进制整数(组合BCD码) 三字节无符号除法程序(R2R3R4/R7)=(R2)R3R4 余数R7 ;二进制整数(2位)转换为十进制整数(分离BCD码) ;入口: R3,R4 ;占用资源: ACC,R2,NDIV31 ;堆栈需求: 5字节 ;出口: R0,NCNT IBTD21 : MOV NCNT,#00H MOV R2,#00H IBD211 : MOV R7,#0AH LCALL NDIV31 MOV A,R7 MOV @R0,A INC R0 INC NCNT MOV A,R3 ORL A,R4 JNZ IBD211 MOV A,R0 CLR C SUBB A,NCNT MOV R0,A RET ;二进制整数(2位)转换为十进制整数(组合BCD码) ;入口: R3,R4 ;占用资源: ACC,B,R7 ;堆栈需求: 3字节 ;出口: R0

最新单片机课程设计 外部中断控制流水灯变化

单片机课程设计报告 设计题目:外部中断控制流水灯变化 姓名

一.设计目的 通过学习单片机工作原理和各种工作方式及各管脚的功能,想通过P3口的俩管脚P3.2和P3.3第二功能,即外部中断来使CPU响应,达到控制流水灯的目的。 二.设计要求 主程序实现8个灯从P2.0到P2.7依次亮灭,灯与灯 之间间歇约0.5秒.当P3.3口是低电平时,灯从P2.7到P2.0依次亮灭,灯与灯之之间间歇约0.5秒.循环3次返回主程序.当P3.2口是低电平时,灯全灭,当P3.2口是高电平时,返回主程序.当同时使P3.2和P3.3为低电平时,灯全灭,因为外部中断0的优先级高于外部中断1的优先级. 三.MCS-51的硬件结构: 四.P3口的状态 P3口是双功能口,默认为第一功能(通用I/O口),通过编程可设置第二功能。

五.中断传送方式: 中断方式则是在外设为数据传送做好准备之后,就向CPU发出中断请求信号(相当于通知CPU)。CPU接收到中断请求信号之后立即作 出响应,暂停正在执行的原程序(主程序),而转去外设的数据输入输 出服务,待服务完之后,程序返回。CPU再继续执行被中断的原程序。六.外部中断 外部中断是指从单片机外部引脚输入请求信号。输入/输出的中断请求、实时事件的中断请求、掉电和设备故障的中断请求都可以作为 外部中断源,从引脚INT0、INT1输入。 外部中断请求、有两种触发方式:电平触发及跳变(边沿)触发。 这两种触发方式可以通过对特殊功能寄存器TCON编程来选择。七.电路原理逻辑图如下:

P3.3 P3.2 灯亮情况 0 0 全灭 0 1 全灭 1 0 从P2.0到P2.7依次亮灭 1 1 从P2.7到P2.0依次亮灭八.实验硬件电路图如下

按键控制数码管和流水灯设计报告实验报告要点

摘要 单片机自20世纪70年代以来,以其极高的性价比,以及方便小巧受到人们极大的重视和关注。本设计选用msp430f249芯片作为控制芯片,来实现矩阵键盘对LED数码管显示的控制。通过单片机的内部控制实现对硬件电路的设计,从而实现对4*4矩阵键盘的检测识别。用单片机的P3口连接4×4矩阵键盘,并以单片机的P3.0-P3.3口作键盘输入的列线,以单片机的P3.4-P3.7口作为键盘输入的行线,然后用P0.0-P0.7作输出线,通过上拉电阻在显示器上显示不同的字符“0-F”。在硬件电路的基础上加上软件程序的控制来实现本设计。其工作过程为:先判断是否有键按下,如果没有键按下,则继续检测整个程序,如果有键按下,则识别是哪一个键按下,最后通过LED数码管显示该按键所对应的序号。 关键字:单片机、流水灯、数码管、控制系统 SCM since the nineteen seventies, with its high price, and a convenient compact attention and great concern. Thisdesign uses msp430f249 chip as the control chip, to realize the control of the LED digital tube display matrix keyboard. Through the internal control single chip to realize the hardware design of the circuit, so as to re alize the detection and recognition of 4*4 matrix keyboard. 4 * 4 matrix keyboard connected with the MCU P3 port, and the MCU P3.0 P3.3 port for a keyboard input, MCU P3.4P3.7 port as the lines of keyboard input, and then use theP0.0 P0.7 as the output line, by a pull-up resistor display different characters "0F on display". Control with software programs based on the hardware circuit to realize the design. The working process is: first to determine whether a key is pressed, if no key is pressed, it will continue to test the whole procedure, if a key is pressed, the Keywords: SCM, water lights, digital tubes, control system 键盘控制流水灯和数码管实验报告 目录 一设计的目的 (2) 二任务描述及方案设计 (3) 1. 任务描述 (3)

单片机课程设计报告--心形流水灯

单片机课程设计报告--心形流水灯

井冈山大学 机电工程学院 单片机 课程设计报告 课程名称:单片机 设计题目:心形流水灯 姓名:彭玉红 专业:生物医学工程 班级:11级医工本一班 学号:110615017 指导教师:王佑湖 2013年11月27日

目录 1引言 (2) 1.1设计任务 (2) 1.2设计要求……………………………………………… ..2 2 课题综述 (2) 2.1课题的来源 (2) 2.2面对的问题 (2) 3 系统分析 (2) 3.1 STC89C52单片机引脚图及引脚功能介绍 (2) 4 系统设计 (4) 4.1硬件设计 (4) 4.1.1硬件框图 (4) 4.1.2硬件详细设计 (5) 4.2 软件设计 (5) 4.3 硬件原理图 (6) 4.4 元件清单 (6) 4.5 硬件焊接图 (6) 4.6 代码编写 (7) 5心得体会 (7) 6致谢 (8) 参考文献 (8)

1 引言 单片机课程设计主要是为了让我们增进对STC89C51单片机电路的感性认识,加深对理论方面的理解。了解软硬件的有关知识,并掌握软硬件设计过程、方法及实现,为以后设计和实现应用系统打下良好基础。另外,通过简单课题的设计练习,使我们了解必须提交的各项工程文件,达到巩固、充实和综合运用所学知识解决实际问题的目的。 1.1设计任务 设计一个单片机控制的流水灯系统 1.2设计要求 (1)32个LED灯; (2)可实现多种的亮灯(如左循环,右循环,间隔闪,90度交叉闪等)。 2 课题综述 2.1 课题的来源 当今社会,这种由单片机芯片控制各种硬件工作的技术也日益成熟,并普及在交通、化工、机械等各个领域。而流水灯这项技术在生活中的应用更是广泛,较为贴近生活。而流水灯控制的设计所需要的知识也正好吻合了我们本学期对于单片机这门课程的学习,所以设计流水灯控制的这个课题让我们对知识的学习和巩固都有了进一步的加深。 2.2 面对的问题

相关文档
最新文档