单片机控制LED及蜂鸣器课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机设计报告
课程单片机课程设计
设计题目 LED灯及蜂鸣器
设计题目:
一、要求
1.了解LED显示流水灯的原理。
2.能够在LED上显示和控制蜂鸣器的工作。
3.熟悉掌握keil软件的使用。
二、分析
本设计使用AT89C52RC做为主控制模块,利用简单的外围电路来驱动LED蝴蝶。设计分为三个模块:单片机控制模块,输出显示模块和驱动模块,单片机控制模块以单片机为核心,以软件KEIL编程实现信号输出,以驱动LED及蜂鸣器为目的。
三、设计
1、硬件方面
(1)、LED驱动模块
图文显示有静态和动态两种方案,本设计中静动态都用到了。动态扫描的意思简单的说就是轮流点亮。具体就图案来说,把内部同行的发光管的阳极相连在一起,先送出对应行的发光管亮灭的数据并锁存,然后选通其它行使其燃亮相同的时间,然后熄灭。反复循环。
蜂鸣器的控制则是加入三极管接在VCC,单片机的第20引脚和负极上,以此来控制蜂鸣器的工作。
(2)、硬件设计
实验板上设计一个蝴蝶状的LED显示,可用于简单的图形图像。蝴蝶的图案是由74个LED绿灯、8个红灯、10个黄灯拼接而成。
其中绿灯直接接到正负极上,黄灯和红灯接到单片机的P2口,来控制其闪动。
2、软件编程(包括流程图、完整的汇编源程序及其注释)
1.电路图
本软件要求实现如下要求:外圈绿灯亮度明亮,红灯和黄灯都不停地闪动,蜂鸣器自动播放歌曲。
电路图如下:
2.主程序
本设计的系统软件能使系统LED各点亮度均匀,充足,可显示清晰图案,并且闪动。
系统主程序开始后,首先是对系统环境初始化,包括设置串口,中断和端口;然后闪动红黄灯,由于单片机没有停机指令,所以可以设置系统程序不断循环。
3.序代码如下:
#include
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define DY_PORT P2 //设置LED连接的I/O组
#define DY_SPEED 100 //设置每一个明亮级的停留时间(值域:
0~65535)
struct music_type
{ uchar tone;
uchar delay;
};
void delay (unsigned int a){ // 1ms延时程序
unsigned int i;
while( --a != 0){
for(i = 0; i < 600; i++);//STC单片机在外部晶振为12MHz时i值上限为600
} //AT89C51单片机在外部晶振为12MHz时i值上限为125
}
uint code tonetab[]={ //D调7声音阶3个8度
63967,64138,64291,64360,64489,64603,64704, //低音1~7
64752,64837,64913,64948,65012,65070,65120, //中音1~7
65144,65186,65225,65242,65274,65303,65328 //高音1~7
};
//曲谱,每个音符两项数据:第1项为音高,第2项为节拍(以1/4拍为单位)
struct music_type code notetab[]={ //”三十里铺”曲谱
1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,
5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,
1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,
5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,
1+14,0x02,4+7,0x04,5+7,0x02,1+14,0x02,1+14,0x04,6+7,0x02,
5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,
4+7,0x03,4+7,0x01,3+7,0x02,2+7,0x02,
1+7,0x03,2+7,0x01,5+7,0x02,2+7,0x02,1+7,0x08,
1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,
5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,
1+14,0x02,2+14,0x04,2+14,0x02,5+14,0x02,1+14,0x04,6+7,0x02,
5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,
1+14,0x02,4+7,0x04,5+7,0x02,1+14,0x02,1+14,0x04,6+7,0x02,
5+7,0x03,6+7,0x01,5+7,0x02,2+7,0x02,5+7,0x08,
4+7,0x03,4+7,0x01,3+7,0x02,2+7,0x02,
1+7,0x03,2+7,0x01,5+7,0x02,2+7,0x02,1+7,0x08,
0,0x00
};
sbit P10=P1^0; //连接无源蜂鸣器
/*
sbit SDAT=P3^4; //连接显示数码的移位寄存器
sbit SCLK=P3^5;*/
volatile uchar tl1,th1; //存控制定时器1定时参数
uint led=0x0001; //LED初始显示数据
bit dir=0; //LED流水方向控制标志