打铃器设计实验设计报告.docx
- 文档编号:7352614
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:22
- 大小:1.23MB
打铃器设计实验设计报告.docx
《打铃器设计实验设计报告.docx》由会员分享,可在线阅读,更多相关《打铃器设计实验设计报告.docx(22页珍藏版)》请在冰豆网上搜索。
打铃器设计实验设计报告
目录
一、设计目的·················································1
二、方案论证·················································1
2.1方案论证与设计······································1
2.1.1.控制部分的方案选择·································1
2.1.2显示部分的方案选择································1
2.2单片机原理············································1
2.3LED显示数码管··········································2
三、器件简述···················································2
3.1单片机···············································3
3.2晶振··················································4
3.3复位电路·············································4
3.4LED数码管············································5
3.5蜂鸣器电路············································6
3.6按键路················································6
四、软件设计················································7
4.1主程序流程图············································7
4.2软件调试················································8
五、实验测试··················································9
5.1硬件测试················································9
5.2软件测试···············································9
5.3测试结果分析与结论·····································10
六、课程设计小结·············································10
七、参考文献···················································11
附录A························································12
附录B························································13
附录C························································14
附录D························································15
一、设计目的
单片机与接口技术课程设计是在教学及实验基础上,对课程所学理论知识的神话和提高,因此要求学生能综合运用所学知识,设计与制造出具有较复杂功能的小型单片机系统,并在实践的基本技能方面进行一次系统的训练。
能够较为全面的巩固和应用单片机,课程中所学的基本理论和基本方法,并初步掌握小型单片机系统设计的基本方法。
培养独立思考、独立收集资料、独立设计规定功能的单片机系统的能力:
培养分析,总结及撰写技术报告的能力。
本设计是基于STC89C52的打铃器的设计,适用于对时间的设定,按时打铃,在日常生活中是比较是用的小工具。
二、方案论证
2.1方案论证与设计
2.1.1.控制部分的方案选择
1)用STC16位单片机设计。
对于本设计,在成本方面具有很大优势,而且它的功能强大,对于定时一类问题可以说是小菜一碟,只要添加一些外部设备,比如数码管、蜂鸣器、按键等就可以很好地解决这一问题。
2)用可编程逻辑器件设计。
可采用ALTERA公司的FLEX10K系列PLD器件。
设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。
但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。
从成本上来讲,用可编程逻辑器件来设计也没有什么优势。
2.1.2显示部分的方案选择
本实验采用LED数码管显示方案采用8段数码管既经济实惠,在效果上也可以加入语音报时功能,操作比较液晶显示来说虽然略显繁琐,但总体也还可以做到比较人性化
其他选择可以使液晶显示板,虽然液晶显示效果出众,可以运用菜单项来方便操作,但是在显示时,特别是使用秒表功能时扫描速度跟不上,屏幕会有明显的闪烁。
而且由于61板的存储空间有限,影响功能拓展。
2.2单片机原理
单片机就是简化的微型计算机。
CPU中本身自带存储器ROM和RAM。
CPU片内也有总线。
IC(集成电路)技术是将电路通过特殊工艺做在一块硅基片上封装成芯片,比如CPU,片外存储器等等。
将单片机CPU(比如C52系列),晶振,存储器,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等通过PCB工艺(比如SMT贴片,或者插装)做在环氧树脂板上。
这样才是一个完整的单片(做在一块PCB板上)的微型计算机。
2.3LED显示数码管
常见的LED显示具有清晰明亮的特点。
是显示接口也是绝大多数单片机应用系统必备的部件之一。
发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。
它由若干个发光二极管按一定的规律排列而成。
当某一个发光二极管导通时,相应的一个点或一笔画被点亮,控制不同组合的二极管导通,就能显出各种字符。
1.显示器的结构
常用的7段显示器的结构如图所示,发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的成为共阴显示器。
1位显示器由8个发光二极管组成,其中7个发光二极管a~g控制7个笔画的亮或暗,另一个控制一个小数点的亮和暗,这种笔画的七段显示器能显示的字符较少,字符的形状有些失真,但失控简单,使用方便。
图1
三、器件简述
整体框图
图2
3.1单片机
简介:
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35Mhz,6T/12T可选。
图3
特性:
STC89C52RC单片机:
8K字节程序存储空间;
512字节数据存储空间;
内带4K字节EEPROM存储空间;
可直接使用串口下载;
AT89S52单片机:
8K字节程序存储空间;
256字节数据存储空间;
没有内带EEPROM存储空间;
3.2晶振:
本次设计采用的是12M的晶振,电路图如下:
两只电容在20pF~100pF之间取值,其取值在60pF~70pF时振荡器频率稳定性较高,按照一般经验,外接晶体时两个电容的取值为30pF;外接陶瓷振荡器是两电容的典型值是47pF。
图4
3.3复位电路:
在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便可实现初始化状态服务。
为保证应用系统可靠的复位在设计复位电路时,通常使RST引脚保持4ms以上的高电平,只要RST保持高电平,MCS-51单片机就会循环复位;当RST从高电平变为低电平时,MCS-51单片机就从0000H地址开始执行程序,在单片机复位的有效期间,ALE、PSEN引脚输出高电平。
本次设计采用的是手动复位,其电路图如右:
图5手动复位电路
有关计算说明:
∵时钟周期T=1/fose=1/12M=1μs
∴24T=24μs
τ=1/RC=1/(51*10的三次方*1*10的负六次方)≈20>24T
τ闭=1/R’C=1/(1K//51K*10负六次方)≈1000>24
3.4LED数码管
本系统采用8位LED数码管来分别显示时、分、秒
图6
3.5蜂鸣器电路
本设计采用有源蜂鸣器,采用9013三极管放大信号。
图7
3.6键盘电路
图8
四、软件设计
4.1主程序流程图
图9
4.2软件调试
图10
本次调试使用的是KeilC51uvision2软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用keilc51来开发您的单片机应用程序。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
五、实验测试
5.1硬件测试
(1)脱机检查。
用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。
(2)联机调试。
暂时拔掉AT89C52芯片,将仿真器的40芯仿真插头插入AT89C52的芯片插座进行调试,检验键盘/显示接口电路是否满足设计要求。
可以通过一些简单的测试软件来查看接口工作是否正常。
5.2软件测试
软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。
程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。
联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。
调试的基本步骤如下:
(1)用仿真器修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。
例如将DISP0~DISP5单元置为“012345”,应能在LED上从左到右显示“012345”。
若显示不正确,可在DISP子程序相应位置设置断点,调试检查。
然后用仿真器修改计时缓冲区内容,调用拆字程序,调试显示模块DISPLAY。
(2)运行主程序调试计时模块,不按下任何键,检查是否能从由00:
00:
00开始正确计时。
若不能正确计时,则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运行而变化。
然后屏蔽缓冲区初始化部分,用仿真器修改计时缓冲区内容为23:
58:
48,运行主程序(不按下任何键),检验能否正确进位。
(3)调试键盘扫描模块KEYSCAN,先用延时10ms子程序代替显示子程序延时消抖,在求取键号后设置断点,中断后观察A累加器中的键号是否正确;然后恢复用显示子程序延时消抖,检验与DISPLAY模块能否正确连接。
(4)调试时间设置模块MODIFY。
首先屏蔽COMB子程序,单独调试键盘设置模块KEYIN,观察显示缓冲区DISP0~DISP5单元的内容是否随键入的键号改变,以及键号能否在LED上显示。
然后屏蔽KEYIN子程序,单独调试合字模块COMB,分别将R1设置为时间设置缓冲区和闹钟值寄存区的首地址,修改显示缓冲区内容,运行程序后查看时间设置缓冲区HOUR、MIN、SEC单元,最后联调MODIFY模块。
(5)运行主程序联调,检查能否用键盘修改当前时间。
5.3测试结论
1)硬件测试通过
2)软件测试通过
3)可以调整时钟时间用11.0592MHZ晶振准确计时,以数字形式显示时、分、秒的时间
4)小时以24小时计时形式,分秒计时为60进位
5)复位电路成功
六、课程设计小结
两周的单片机课程设计终于顺利完成了,可以说是苦尽甘来受益匪浅。
我选的设计题目是“数字温度计打铃器设计”,开始不够自信觉得这个题目是比较简单的所以选了它,其实不然,做了之后,发现设计电路虽然简单,但我们认为它真正困难的地方是程序设计,不过在我的努力下还有同学的帮助下最终完成了。
刚选题目时,真的是一头雾水,硬件电路不知如何下手,更谈何解决程序。
我们平时学习单片机理论相对较多,但是真正实践还是不多的。
和同学商量后我去查阅和收集资料到图书馆借一些参考书,上网找一些相关资料,并且请教指导老师。
通过不断努力,终于把打铃器的思路和模型定了下来并开始准备去购买零件。
不得不说,购买零件是一个非常锻炼人的任务,由于此次课程设计同学们的题目都不一样,所以大家所要购买的东西有很多是不一样的,我们宿舍经过统计后到赛格电子市场和老板们讨价还价最终把这项艰巨的任务完成了。
下面焊接硬件电路,这个过程可谓完全考验平时的动手能力,要保证焊接的质量,不能虚焊还有跳线等。
焊完之后就是程序的调试和完善,以及功能的拓展。
焊接电路板完工,细心检查后,进行通电测试。
结果数码管没有显示,通过检查,原来是数码管是共阳极的,没有接上拉电阻,所以没有效果。
在换了块新的后,终于可以显示了。
但还有个问题是发现蜂鸣器的电压太低了,是因为串接了一个太大的电阻。
然后,我们换了一个小电阻,但这时蜂鸣器却一直在叫,停不下来,不过,在我的细心检查下,原来是在放大电路的一端虚焊了,这说明我们焊接电路的技术还不够好。
在重新焊接那端后电路终于成功实现功能,当时我们的心情都是无比兴奋和快乐。
在完成单片机课程设计后,我发现自身还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。
但通过学习这一次实践,增强了我们的动手能力,提高和巩固了单片机方面的知识,特别是软件方面,并让我认识到把理论应用到实践中去是多么重要。
七、参考文献
[1]《单片机应用系统设计技术–基于C51的Proteus仿真》(第二版)[M]张齐朱宁西编著北京电子工业出版社
[2]《单片机应用系统设计技术–基于C51的Proteus仿真实验与解题指导》(第二版)[M]张齐编著北京电子工业出版社
[3]《单片机原理及其接口技术》(第二版)[M]胡汗才编著北京大学出版社
[4]《51系列单片机设计实列》[M]楼然苗李光飞编著北京航空航天大学出版社
[5]《单片微机测控系统设计大全》[M]王福瑞编著北京航空航天大学出版社
[6]《单片机实用技术问答》[M]谢宜仁主编人民邮电大学出版社
附录A
1.元器件清单
序号
名称
代号
型号
数量
1
电阻
R1,R2,R3,R4,R5,R6R7,R8,R17
330Ω
9
2
电阻
R9,R10,R11,R12,R13,R14,R15,R16
1kΩ
8
3
电阻
R20,
10KΩ
1
4
电容
C1,C2,
30pF
2
5
电解电容
C3,
10uF
1
6
按钮
B1,B2,B3,B4
4
7
数码管
A1,A2
SM42044
2
8
单片机
U1
STC89C52
1
9
晶振
CRYSTAL
11.0592
1
10
晶体管
T1
S9013
1
11
蜂鸣器
BEE
HXD
1
附录B
仿真原理图
附录C
实物图
附录D
主要程序
#include"reg52.h"
//unsignedcharcodedsp_code_ca[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsignedcharcodedsp_code_ca[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsignedinttflag;
unsignedchardspflag;
unsignedchartsan,x,second,hour,miniute,temp;
unsignedchardflag;
unsignedchart,se,min,ho;
sbitbee=P3^7;
sbitwei=P2^0;
sbitduan=P2^1;
sbitkey1=P1^0;
voiddelay(unsignedcharn)
{
unsignedchari;
while(n--)
{
for(i=0;i<112;i++);
}
}
voiddelay1(unsignedcharm)
{
while(m--);
}
voiddisplay(unsignedchard,unsignedchara);
//voiddisplay_hour(unsignedchard);
//voiddisplay_min(unsignedchard);
voidinit_ex0();
voidmain()
{
se=0;min=0;hour=0;
init_ex0();
TMOD|=0x02;
TH0=0x06;
TL0=0x06;
EA=1;
ET0=1;
while
(1)
{second=se;miniute=min;hour=ho;
while(x==0)
{
TR0=1;
display(second,6);
display(miniute,3);
display(hour,0);
}
while(x==1)
{
TR0=0;
if(key1==0){delay(100);if(key1==0)se++;if(se==60)se=0;}
if(t<100)
{
display(se,6);
display(min,3);
display(ho,0);
t++;
if(t==99)t=200;
}
if(t>100)
{
P2=0xff;
P0=0x00;
P2=0x3f;
delay
(1);
display(min,3);
display(ho,0);
t--;if(t==101)t=0;
}
second=se;miniute=min;hour=ho;
}
while(x==2)
{
TR0=0;
if(key1==0){delay(100);if(key1==0)min++;if(min==60)min=0;}
if(t<100)
{
display(se,6);
display(min,3);
display(ho,0);
t++;
if(t==99)t=200;
}
if(t>100)
{
P2=0xff;
P0=0x00;
P2=0xe7;
delay
(1);
display(se,6);
display(ho,0);
t--;if(t==101)t=0;
}
second=se;miniute=min;hour=ho;
}
while(x==3)
{
TR0=0;
if(key1==0){delay(100);if(key1==0)ho++;if(ho==24)ho=0;}
if(t<100)
{
display(se,6);
display(min,3);
display(ho,0);
t++;
if(t==99)t=200;
}
if(t>100)
{
P2=0xff;
P0=0x00;
P2=0xfc;
delay
(1);
display(se,6);
display(min,3);
t--;if(t==101)t=0;
}
second=se;miniute=min;hour=ho;
}
}
}
//T0中断服务函数
voidisr_t0(void)interrupt1
{
tflag++;
dflag++;
if(miniute==0&&second<10){bee=1;}
elsebee=0;
if(dflag==12)//3ms
{
dflag=0;
dspflag++;
if(dspflag==2)
dspflag=0;
}
if(tflag==4000)
{
tflag=0;
second++;
if(second==60)
{
second=0;
miniute++;
}
if(miniute==60)
{
miniute=0;
hour++;
}
if(hour==24)
hour=0;
}
}
//显示程序
voiddisplay(unsignedchard,unsignedchara)
{
if(dspflag==0||x)
{
P2=0xff;
P0=0x40;
P2&=0xdb;
delay1
(1);
P2=0xff;
P0=dsp_code_ca[d/10];
P2=~(0x01< delay (1); } if(dspflag==1||x) { P2=0xff; P0=0x40; P2&=0xdb; delay1 (1); P2=0xff; P0=dsp_code_ca[d%10]; P2=~(0x02< delay (1); } } voidinit_ex0() { EA=1;//开总中断 EX0=1;//开外部中断0 IT0=0; //TCON=0x01; } voidexter0()interrupt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 打铃 设计 实验设计 报告