单片机课程设计多功能花样流水灯设计
- 格式:doc
- 大小:336.00 KB
- 文档页数:22


单片机实训报告
——花样流水灯的制作
班级:电气一班
学号:110101127
姓名:李亚龙
一、花样流水灯的设计方案
流水灯实际上就是一个带有八个发光二级管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机。
如果要让P0.0口的LED2亮起来,那么只要把P0.0口的电平变为低电平就可以了;相反,如果要接在P0.0口的LED1熄灭,就要把P0.0口的电平变为高电平;同理,接在P0.0~P0.7口的其他7个LED的电亮和熄灭的方法同LED2。因此,要实现流水灯功能我们只要将发光二极管LED2~LED9依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。
对8段LED数码管显示器的控制,包括“显示段”和“公共端”两个地方的控制。其中显示段用来控制字符的形状,公共端用来控制若干个LED中的那一只被选中,前者称为“段选”,后者称为”
位选”。只有二者结合起来,才能在指定的LED上显示指定的字形。显然,要显示某种字形就应该使此字形的相应字段点亮,按照 dp、g、e、f、e、d、c、b、a的顺序,dp为最高位,a为最低位,引脚输入不同的8位二进制编码,可显示不同的数字或字符。
二、花样流水灯的硬件电路设计
时钟电路是计算机的心脏,它控制着计算机的工作节奏,CPU就是通过复杂的时序电路完成不同的指令功能的,89C52的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号;另一种为外部方式,时钟信号由外部引入。
单片机有多种复位电路,本系统采用电平式复位与上电复位方式,如下图所示当上电时C1相当于短路时,使单片机复位,在正常工作时,按下复位键是单片机复位。
显示部分主要是由八个LED和 四个七段数码管组成,八个LED由限流电阻限流后接入89C52的P0口 。
1 目 录
摘要 ........................................................................ 1
关键词 ...................................................................... 1
Abstract ...................................................................... 2
Keyword ..................................................................... 2
1 AT89C51单片机简介 ......................................................... 3
1.1 单片机的发展 ........................................................... 3
1.2 单片机的分类 ........................................................... 3
1.3 AT89C51的介绍 .......................................................... 3
1.3.1 AT89C51的结构 ..................................................... 3
1.3.2 AT89C51主要特性 ................................................... 4
1.3.3 AT89C51的管脚说明 ................................................. 4
C51单⽚机实现呼吸灯和花样流⽔灯程序
1.⽤C51单⽚机实现花样流⽔灯,代码如下:
#include
#define LED_A P1 //led灯所⽤的接⼝,是哪个⼝就写P⼏
void delayms()
{
unsigned char x = 0;
unsigned char i;
unsigned char y = 0;
while(y < 0.001) //定义led灯的切换的延时时间,越⼩越快。
{ //(y < 0.001);(x<100);(i<100)都可以修改
x = 0;
while(x<100)
{
i = 0;
while(i<100)
{
i++;
}
x++;
}
y++;
}
}
#define LED_NUM 8 //定义led灯的数量,可快速实现不同⽤途的修改;
void main()
{
unsigned char k;
unsigned char j;
unsigned char LED_ALL[] = {0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F}; //led灯亮灭的⼗六进制数组;
unsigned char LED_ALL_2[] = {0XFC,0XF3,0XCF,0X3F};
while(1)
{
for(k=0;k<3;k++) //第⼀个for实现奇偶灯交叉闪烁三次,想闪烁⼏次就修改(K<3)中
的数值;
{
LED_A = 0xAA;
delayms();
LED_A = 0x55;
delayms();
}
for(k=3;k>0;k--) //实现⼀个流⽔灯左右三次(从左到右再从右到左算⼀次);
{
for(j=0;j
{
LED_A = LED_ALL[j];
delayms();
}
for(j=6;j>0;j--)
{
LED_A = LED_ALL[j];
delayms();
}
}
for(k=0;k<3;k++) //实现前四个灯亮后四个灯灭,交叉闪烁3次,修改次数同上;
东北石油大学
实习总结报告
实习类型 生产实习
实习单位 东北石油大学实习基地
实习起止时间 2018年7月7日至2018年7月16日
指导教师 刘东明、孙鉴
所在院(系) 电子科学学院
班 级
电子科学与技术15-2
学生姓名
学 号 02
2018年 7月 16日
目 录
第1章 按键控制流水灯设计 .............................. 1
实习目的 .............................. 错误!未定义书签。
实习要求 .............................. 错误!未定义书签。
第2章 电路工作原理 .................................... 2
STC89C52单片机工作原理 ............................. 2
LED工作原理 ........................................ 3
按键工作原理 ........................................ 3
整体电路图 .......................................... 5
本章小结 ............................................ 6
第3章 C程序设计 ....................................... 7
程序设计流程图 ...................................... 7