单片机【倒计时音乐闹钟】课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
if(switch_one==0) //Í£Ö¹¿ªÊ¼
{
s1num++;
while(!switch_one);
if(s1num==1)
{
TR1=1;
}
if(s1num==2)
{
s1num=0;
TR1=0;
}
}
if(switch_two==0) //1~60·ÖÖӿɵ÷
{
fen++;
miao=0;
P3.3 /INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
1602LCD液晶屏简介
字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD。
管脚列表
四、硬件电路设计与仿真
if(fen==60)
fen=0;
write_sfm(4,fen);
write_sfm(7,miao);
write_com(0x80+0x40+4);
write_com(0x80+0x40+7);
miao=60;
}
if(switch_three==0) //5·ÖÖÓ
{
fen=5;
miao=0;
write_sfm(4,fen);
(2)通过按键可以自主设置倒计数的时间(1-60min、5min、10min)。一旦按下键则开始倒计数,当计数为0时,发出一阵音乐声。
三、总体设计与方案讨论
倒计时音乐器主要有六个模块组成:
①51单片机最小系统电路
②LCD1602液晶屏电路
③按键电路
④LED指示灯电路
⑤电源电路
⑥蜂鸣器电路
方案论证:
方案一:
while(1)
{
keyscan();
if(beep_flag==1)
{
beep_flag=0;
do
{
m++;
for(a=0;a<2000;a++)
{
beep=~beep;for(b=0;b<24;b++);
}
for(a=0;a<2000;a++)
{
beep=~beep;for(b=0;b<25;b++);
void write_data(uchar dat){
RS=1;
LCDRW=0;
DATA_PORT=dat;
delay_ms(5);
EN=1;
delay_ms(5);
EN=0;
}
//--------------------------------------------
void write_com(uchar com){
八.参考文献……………………………………………………………14
摘要
近年来随着科技的飞速发展,单片机的应用正在不断深入,渐渐的改变人们的生活习惯。在生活中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
人们做事通常是要有目的和时间观念的,在平时对一些比较重要的事情应该是调好闹钟或者备忘录来提醒自己。提醒的方式有很多,在学习了单片机的有关知识之后,运用相关知识来设计完成倒计时音乐闹钟。我对单片机很感兴趣,所以在听了老师给我们讲解单片机相关知识以后,我自己课后查找资料,不断学习单片机方面的知识。这次课设给了我学以致用的机会,我利用自己学的单片机知识,做了一个基于51单片机的倒计时音乐闹钟的设计。
五、程序流程图
六、程序设计
主程序:
#include "reg52.h"
#include "1602.h"
sbit beep = P2^0;
sbit LED = P1^4;
bit flag2;
uchar ptr = 0x00;
uchar high;
uchar low;
uchar time;
uchar beep_flag=0;
write_sfm(7,miao);
}
}
1602LCD液晶屏驱动程序
#include "1602.h"
#include "reg52.h"
#include<intrins.h>
sbit RS=P2^2;
sbit LCDRW=P2^3;
sbit EN=P2^4;
//--------------------------------------------
write_sfm(7,miao);
write_com(0x80+0x40+4);
write_com(0x80+0x40+7);
miao=60;
}
if(switch_four==0) //10·ÖÖÓ
{
fen=10;
miao=0;
write_sfm(4,fen);
write_sfm(7,miao);
STC89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。
3.1.2管脚说明:
VCC:供电电压。GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
由于STC89C52中自带有定时器T0、T1,所以倒计时音乐闹钟可采用定时器中断方式和定时产生可变方波方式。此方式需要考虑两个定时器的优先级和定时器的交替开断需要精确。所以变成比较麻烦,但是比较准备和稳定。
方案二:只利用STC89C52的一个定时器用来倒计时,而音乐是通过有不同的延时来达到产生不同方波的目的。这种方法虽然编程简单,但是音乐的效果不好。
uchar s1num=0;
uchar code music[] = {
0xFC,0x44,0x7F, 0xFC,0x44,0x7F, 0xFC,0x44,0xFF, 0xFA,0x68,0xFF,
// 3 _ 3_ 3 1
0xFD,0x23,0x7F, 0xFD,0x23,0x7F, 0xFD,0x23,0xFF, 0xFC,0x44,0xFF,
}
for(a=0;a<2000;a++)
{
beep=~beep;for(b=0;b<26;b++);
}
for(a=0;a<2000;a++)
{
beep=~beep;for(b=0;b<27;b++);
}
}
while(m<5);
}
}
}
void time1() interrupt 3
{
TH1= 0xDC; //ÑÓʱ10ms
RS=0;
LCDRW=0;
DATA_PORT=com;
delay_ms(5);
EN=1;
delay_ms(5);
EN=0;
}
//--------------------------------------------
void lcd_init(){
LCDRW=0;
RS=0;
write_com(0x36);
// 2_ 3_ 4 4
0xFC,0xAC,0x7F, 0xFD,0x23,0x7F, 0xFD,0x34,0xFF, 0xFD,0x34,0xFF,
// 3_ 2_ 3 1
0xFD,0x23,0x7F, 0xFC,0xAC,0x7F, 0xFD,0x23,0xFF, 0xFC,0x44,0xFF,
TL1 = 0x00;
num++;
if(num==90)
{
LED=~LED;
num=0;
miao--;
if(miao==59)
fen--;
if(miao==0)
{
miao=60;
if(fen==0)
{
TR1=0;
fen=0;
miao=0;
beep_flag=1;
}
}
write_sfm(4,fen);
0x00};
void delayms(int z)
{
int a,b;
for(a=z;a>0;a--)
for(b=112;b>0;b--);
}
void time_init()
{
TMOD=0x11;
TR1=0;
TH1= 0xDC; //ÑÓʱ10ms
TL1 = 0x00;
ET1=1;
EA=1;
}
void keyscan()
write_com(0x80+0x40+4);
write_com(0x80+0x40+7);
miao=60;
}
}
void main ()
{
time_init();
lcd_init();
print_string("By:Blue");
write_com(0x80+0x40);
print_string("TIM 00:00"); //56 89
对比以上两种方法,我最后选择的方案一,虽然编程较方案二麻烦,但是最终的效果比较好。
四、硬件介绍
序号
元器件名称
型号
可代用型号
数量
2
单片机
STC89C52
1
3
LED
2
4
晶振电容22p
2
5
复位按钮
1
7
10k复位电阻
2
8
单独按键
5
10
电解电容10uf
1
11
4.7K排阻
1
12
1k电阻
2
13
11.0592M晶振
2
1.所需元件
STC89C52介绍
单片机主控电路的主要元件是STC89C52,其外型及管脚如图1所示:
图1 STC89C51管脚排列图
STC89C52是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的STC89C52提供了高性价比的解决方案。
原理图
PCB图
Protues仿真图
硬件总结:
由于考虑到元器件的布局、电路板的美观和减少飞线,我采用了双面板的形式。因为这个倒计时音乐闹钟不是高速板,所以它的PCB布线不用太讲究,主要是不要违反基本规则就可以了。
个人比较喜欢在电路板加多一个LED用来指示电源正常和用另外一个LED来指示程序运行正常,所以额外加多了两个LED灯。
五邑大学
单片机课程设计
课程设计题目:倒计时音乐闹钟
院系信息工程学院
专业轨道交通自动化
学号3113002264
学生姓名梁杰帆
指导教师梁淑芬
完成日期2015年11月3日
基于单片机的倒计时音乐闹钟
一.设计目的……………………………………………………………2
二.硬件简介…………………………………………………………·3
uchar m;
int a,b,y;
sbit switch_one = P1^0;
sbit switch_two = P1^1;ห้องสมุดไป่ตู้
sbit switch_three = P1^2;
sbit switch_four = P1^3;
uchar miao=60,fen=1,num=0;
uchar flag=1;
write_com(0x0f);
write_com(0x38);
write_com(0x06);
write_com(0x01);
关键词:单片机倒计时LCD液晶屏
一、设计目的
(一)通过设计了解一个倒计时音乐闹钟的基本工作原理
(二)掌握51单片机计数器/定时器的工作方式和1602LCD的驱动工作原理;
(三)掌握keil4、AD10、prtues等软件的使用
(四)掌握调试电路和分析问题的能力
二、设计内容
(1)利用AT89C51单片机结合字符型LCD显示器设计一个简易的倒数计数器。一分钟倒计数,当倒计数为0时,则发出一段音乐声响,通知倒计数到达。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
P3口也可作为STC89C52的一些特殊功能口,如下所示:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 /INT0(外部中断0)
// 1_ 3_ 5 5
0xFC,0x44,0x7F, 0xFD,0x23,0x7F, 0xFD,0x82,0xFF, 0xFD,0x82,0xFF,
// 4_ 3_ 2 -
0xFD,0x23,0x7F, 0xFD,0x23,0x7F, 0xFC,0xAC,0xFF, 0xFF,0xFF,0xFF,
三.设计要求……………………………………………………………4
四.硬件电路设计………………………………………………………5
五.流程图设计…………………………………………………………7
六.程序设计……………………………………………………………8
七.设计小结……………………………………………………………13
// 1_ 3_ 2 .5
0xFC,0x44,0x7F, 0xFD,0x23,0x7F, 0xFC,0xAC,0xFF, 0xFA,0x68,0xFF,
// .7_ 2_ 1 -
0xFC,0x0C,0x7F, 0xFC,0xAC,0x7F, 0xFC,0x44,0xFF, 0xFF,0xFF,0xFF,
相关文档
最新文档