打铃器清单原理图及程序.docx
- 文档编号:3600906
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:8
- 大小:19.51KB
打铃器清单原理图及程序.docx
《打铃器清单原理图及程序.docx》由会员分享,可在线阅读,更多相关《打铃器清单原理图及程序.docx(8页珍藏版)》请在冰豆网上搜索。
打铃器清单原理图及程序
单片机项目——打铃器设计
朱琳
指导老师:
张小明老师
班级:
09信息一班
1………………………………………摘要
2……………………………………任务
3……………………….......硬件图及其设计说明
4………………………..使用说明
5…………………….结束语
6…………….致谢
摘要
本设计是采用单片机技术的打铃器,目前以单片机技术的应用为核心的产品种类非常丰富。
应用我们所学过的知识和查阅相关资料,我制作了这个单片机技术为基础的打铃器,这是一个简单的实用的单片机电子设计产品。
我们通过书本上的知识,再通过每一次上课张老师让我们独立完成自己的项目,自己动脑筋,自己解决。
实在没办法的,可以请教张老师指点1,2在一个半月里的努力与奋斗,有了今天的成果,之前我都没想到我会完成这个任务的。
本打铃器设计是以单片机技术为核心,采用了中小规模集成度的单片机制作的功能较为完善的电子闹钟。
硬件设计应用了成熟的数字钟电路的基本设计方法以,并详细介绍了系统的工作原理。
硬件电路中使用了除AT89C52外,另外还有LCD、晶振、电阻、电容、发光二极管、开关、喇叭等元件。
在硬件电路的基础上,软件设计按照系统设计功能的要求,运用所学的C语言,实现的功能包括‘时时-分分’显示、可设置多组时间、定时时间到能发出10秒的报警声。
整体进行仿真并调试构成了整个完整的打铃器的设计。
最后通过反复的林洋板的实际烧片仿真,该系统能够实现所有要求的功能包括:
(1)能显示‘时时-分分’。
(2)可设置多组时间(3)定时时间到蜂鸣器能发出铃声。
当然这个系统仍然是属于比较简单的单片机应用系统,要设计功能更强的更复杂的系统还需要我进一步的学习。
任务
1.1设计任务
1、设计一个打铃器程序
2、先通过keil软件仿真。
3、再根据原来的程序基础上对硬件进行仿真
4、然后通过修改程序把它移到林洋开发板上
5、最后通过实验进行对打铃器的功能添加与修改。
6、写出完整的设计任务书:
课题的名称、系统的功能、硬件原理图、程序清单;
1.2设计目的
(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;
(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;
(3)针对课题设计方案的分析、选择、比较、熟悉单片机所用系统开发、研制的过程,软硬件设计的方法、内容及步骤;
(4)掌握打铃器的工作原理。
硬件图及其设计说明
1.闹钟元件清单
1
30pF电容
2个
7
导线
若干
2
CRYSTAL
1个
8
蜂鸣器
1个
3
10K电阻
1个
9
数码管
1个
4
10UF电解电容
1个
10
接地线
2个
5
RESPACK-8
2个
11
万能板
1个
6
AT89C52
1个
2.设计说明
3.1AT89C52单片机简介
AT89C52是一个低电压,高性能CMOS8位单片机,片内含8Kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
1.C1和C2取30pF目的是可以稳定频率并对频率有微调作用
2.51单片机内部有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端XTAL2,在两端接晶振及两个电容,目的可以构成稳定的自激振荡器。
3.上电自动复位是在加电瞬间通过电容充电来实现的,在通电瞬间,电容C3通过电阻R11充电,RST端出现高电平而实现复位。
4.BUZ1是蜂鸣器接在P1.5端
程序设计及其设计说明
//头文件:
#include"reg51.h"
//变量定义:
unsignedchardispbitcode[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//表:
共阳数码管0-9
unsignedcharly_tt=0;//作为计数时间量
unsignedcharly_miao=55;//秒
unsignedcharly_fen=59;//分
unsignedcharly_shi=7;//时
unsignedchari,k;
//引脚定义:
sbitSMG_q=P1^0;//定义数码管阳级控制脚(千位)
sbitSMG_b=P1^1;//定义数码管阳级控制脚(百位)
sbitSMG_s=P1^2;//定义数码管阳级控制脚(十位)
sbitSMG_g=P1^3;//定义数码管阳级控制脚(个位)
sbitsound=P1^5;
//函数声明:
voiddisplay(unsignedcharshi,unsignedcharfen);//定义显示函数,参数为显示时分
voiddelay(void);
voidinit();//初如化函数
voidsounder();
//主函数,C语言的入口函数:
voidmain()
{
init();//初始化中断控制寄存器
while
(1)
{
if(ly_tt==20)
{//20*50ms为1秒
ly_tt=0;
ly_miao++;
if(ly_miao==60)
{
ly_miao=0;
ly_fen++;
if(ly_fen==60)
{//满60分清0
ly_fen=0;
ly_shi++;
if(ly_shi==24)//满24小时清0
ly_shi=0;
}
}
}
display(ly_shi,ly_fen);//显示变量内容
if((ly_shi==8&&ly_fen==0&&ly_miao==0)||(ly_shi==8&&ly_fen==02&&ly_miao==0)||(ly_shi==8&&ly_fen==55&&ly_miao==0)||(ly_shi==9&&ly_fen==40&&ly_miao==0)||(ly_shi==9&&ly_fen==55&&ly_miao==0)||(ly_shi==10&&ly_fen==40&&ly_miao==0)||(ly_shi==10&&ly_fen==50&&ly_miao==0)||(ly_shi==11&&ly_fen==35&&ly_miao==0)||(ly_shi==14&&ly_fen==00&&ly_miao==0)||(ly_shi==14&&ly_fen==45&&ly_miao==0)||(ly_shi==14&&ly_fen==55&&ly_miao==0)||(ly_shi==15&&ly_fen==40&&ly_miao==0)||(ly_shi==15&&ly_fen==55&&ly_miao==0)||(ly_shi==16&&ly_fen==40&&ly_miao==0)||(ly_shi==16&&ly_fen==50&&ly_miao==0)||(ly_shi==17&&ly_fen==35&&ly_miao==0))
sound=0;
if(ly_shi==8&&ly_fen==0&&ly_miao>=10)||(ly_shi==8&&ly_fen==02&&ly_miao>=10)||(ly_shi==8&&ly_fen==55&&ly_miao>=10)||(ly_shi==9&&ly_fen==40&&ly_ly_miao>=10)||(ly_shi==9&&ly_fen==55&&ly_ly_miao>=10)||(ly_shi==10&&ly_fen==40&&ly_ly_miao>=10)||(ly_shi==10&&ly_fen==50&&ly_ly_miao>=10)||(ly_shi==11&&ly_fen==35&&ly_ly_miao>=10)||(ly_shi==14&&ly_fen==00&&ly_ly_miao>=10)||(ly_shi==14&&ly_fen==45&&ly_ly_miao>=10)||(ly_shi==14&&ly_fen==55&&ly_ly_miao>=10)||(ly_shi==15&&ly_fen==40&&ly_miao>=10)||(ly_shi==15&&ly_fen==55&&ly_ly_miao>=10)||(ly_shi==16&&ly_fen==40&&ly_ly_miao>=10)||(ly_shi==16&&ly_fen==50&&ly_ly_miao>=10)||(ly_shi==17&&ly_fen==35&&ly_ly_miao>=10))
sound=1;
}
}
//初始化函数
voidinit()
{
ly_tt=0;
TMOD=0X01;//设置定时器1为模式一,即16位计算模式
TH0=(65536-50000)/256;//给计数寄存器赋值,50毫秒时间
TL0=(65536-50000)%256;
EA=1;//开启总中断
ET0=1;//开启定时器0中断
TR0=1;//启动定时器
}
//中断函数,关键字"interrupt",这是C语言的中断函数表示法,1表时定地器0
voidtimer()interrupt1
{
TH0=(65536-50000)/256;//重新赋值
TL0=(65536-50000)%256;
ly_tt++;//50毫秒计数
}
//显示函数,参数为显示内容,只显示两位数
voiddisplay(unsignedcharshi,unsignedcharfen)
{
SMG_q=0;//选择千位数码管,在这里显示的是小时的十位
P0=dispbitcode[shi/10];//
delay();//
P0=0XFF;//
SMG_q=1;//
SMG_b=0;//选择百位数码管,在这里显示的是小时的个位
P0=dispbitcode[shi%10];
if(ly_tt>=10)
P0&=0x7f;//小数点以半秒的时间闪烁
delay();//
P0=0XFF;//
SMG_b=1;//
SMG_s=0;//选择十位数码管,在这里显示的是分的十位
P0=dispbitcode[fen/10];//
delay();//
P0=0XFF;//
SMG_s=1;//
SMG_g=0;//选择个位数码管,在这里显示的是分的个位
P0=dispbitcode[fen%10];//
delay();//
P0=0XFF;//
SMG_g=1;//
}
voiddelay(void)
{
unsignedchari=10;
while(i--);
}
使用说明
按下林洋开发板的电源按钮,数码管显示当前设置时间。
到打铃的时间时(打铃的时间可以自己设置),蜂鸣器响10秒时间后自动停止(响铃时间可以自己设置)。
结束语
这个学期我们信息班在张老师的带领下,学习的单片机由于教学模式比其他老师不一样。
所以我们班级学习的氛围也相对来说非常好张老师分组每2个人一个项目,而且,在者之前,我们都认为是不可能完成的任务。
但是,经过半个学期的努力与奋斗。
再在张老师的带领下,大家都很努力的做自己的项目。
到现在大部分同学都完成了自己的杰作。
这次打铃器制作是单片机学习阶段一次非常难得的理论与实际相结合的机会,通过这次比较完整系统设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际工程问题的能力,同时也提高我查阅文献资料、设计手册、设计规范以及电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,并且意志品质力,抗压能力及耐力也都得到了不同程度的提升。
通过这次设计,让我了解了利用单片机设计系统的一些步骤,同时也了解了关于电子钟的设计原理与设计思想,这次的设计使我认识到我对单片机应用方面的知识知道的太少了,对于书本上的很多理论知识还不能灵活运用,有很多我们掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。
本次设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎么样将我所学到的知识运用到我以后的工作中去。
此次的设计给我奠定了一个实践基础,我会在以后的学习,生活中磨练自己,使自己适应于以后的竞争。
致谢
本文是在张小明老师精心指导和大力支持下完成的。
张小明老师以其严谨求实的治学态度、高度的敬业精神、兢兢业业、孜孜以求的工作作风和大胆创新的进取精神对我产生重要影响。
他渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪。
同时,在此次闹钟设计过程中我也学到了许多了关于单片机方面的知识,实验技能有了很大的提高。
在电路图设计中,张老师给了我很多建议,我首先在网上搜了好多相关资料,做出了电路图的初图,后来经过张老师的讲解和他的精心修改最终完成电路的设计。
张老师是我国最早一批从事单片机行业,做这方面的工作有许多年了,经验十分丰富,每次我遇到问题问他的时候,他总是能滔滔不绝,感觉自己懂得东西太少了。
在电路板的焊接过程中帮助也很大,在焊接完后出现了一些问题,都是在张老师的帮助下解决问题的,衷心地感谢您。
09信息一班朱琳
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 打铃 清单 原理图 程序