毕业设计实例1.docx
《毕业设计实例1.docx》由会员分享,可在线阅读,更多相关《毕业设计实例1.docx(86页珍藏版)》请在冰豆网上搜索。
![毕业设计实例1.docx](https://file1.bdocx.com/fileroot1/2023-2/25/e7281cc7-3b94-405e-8ad7-786ec60dde51/e7281cc7-3b94-405e-8ad7-786ec60dde511.gif)
毕业设计实例1
毕业设计(论文)任务书
专业应用电子技术班级应电061班姓名
一、课题名称:
数字万年历的人性化扩展的分析和设计
二、主要技术指标:
主电源:
220V50Hz市民电
额定工作电压:
6~10V50Hz交流电
正常工作电流:
85mA
最大工作电流:
125mA
走时误差:
正常走时每天误差不到3秒;
显示容量:
16ⅹ2个字符;
显示字符尺寸:
2.95ⅹ4.35mm
语音报时延时:
26秒
三、工作内容和要求:
(1)对万年历的技术进行深入研究,弥补其不足,确定论文主题,构思论文框架;
(2)亲手制作、调试相关电路,总结动手经验,实时记录电路制作过程,要有创新;
(3)根据论文制作内容完成书面论文书写,格式要正确、完整;
(4)参考文献要真实可靠。
四、主要参考文献:
[1]全国大学生电子设计竞赛获奖作品汇编北京理工大学出版社
[2]马忠梅主编的单片机的C语言应用函数设计北京航空航天大学出版社
[3]黑杰克主编的PROTEL99SE科学出版社
[4]周雪主编的模拟电子技术西安电子科技大学出版社
[5]中国电子网:
[6]全国大学生电子设计竞赛网:
[7]EDN中国电子工程师网站:
学生(签名)20年月日
指导教师(签名)20年月日
教研室主任(签名)20年月日
系主任(签名)20年月日
毕业设计(论文)开题报告
设计(论文题目)
数字万年历的人性化扩展的分析和设计
一、选题的背景和意义:
数字时钟,自从发明以来,就成为人类的朋友,但随着时间的推移,人们对它的功能又提出了新的要求,怎样让时钟更好的为人民服务,怎样让我们的老朋友焕发青春呢?
这就要求人们不断设计出新型时钟。
本系统设计的多功能电子钟除了传统的显示时间功能之外还可以温度显示、语音报时。
软硬件相结合,以硬件为基础。
使用ATMEL公司的AT89C52单片机作为中央控制器,结合美国DALLAS公司的DS1302提供时钟信息及该公司的DS18b20温度传感器提供温度采集信息,以1602A字符型液晶显示器为载体显示信息数据,并通过ISD2560语音芯片真人语音报出信息数据;
二、课题研究的主要内容:
(1)数字可编程电路中时序控制以及数字逻辑控制的应用,通过CPU严格的时序控制单总线器件DS1302时钟芯片与DS18b20温度传感器;
(2)DS1302时钟芯片、DS18b20温度传感器、ISD2560语音芯片、1602A字符液晶显示器从理论到实际的一个过度。
(3)以电路的基本理论为基础,着重介绍电路的设计、装调及性能参数的调试方法.
(4)硬件布线的理论与实践;电路EMC的设计;
三、主要研究(设计)方法论述:
1、查阅一些图书资料,上网搜索相关内容,通过老师的辅导和同学之间相互的交流获得一些理论资料。
2、获得的资料整理好,完成每个模块电路的软件设计,并通过KEIL软件完成程序的编写及仿真通过。
3、完成每个模块的硬件电路电路软件模拟设计,通过PROTUES软件仿真通过。
4、完成每个模块的硬件电路的搭试,并通过伟福仿真器进行软硬联调;完成了整个毕业设计的硬件设计。
5、了解毕业设计安排及仔细阅读毕业论文内部格式,完成设计报告的初搞。
6.完成毕业论文的初稿及修改,形成最后上交的毕业设计;结合图形增强文章的可读性。
四、设计(论文)进度安排:
时间
工作内容
2008.6.22~2008.7.3
仔细了解毕业设计安排及仔细阅读毕业论文内部格式
2008.7.4~2008.7.6
查阅有关方面的书籍,做好记录
2008.7.7~2008.7.9
上网查阅有关方面的资料,并做好记录
2008.7.10~2008.7.25
将获得的资料整理好,完成每个模块电路的软件,并软件仿真通过;
2008.7.26~2008.8.12
完成每个模块的硬件电路,并通过伟福仿真器进行软硬联调;完成了整个毕业设计的硬件设计;
2008.8.13~2008.8.16
完成毕业论文的初稿编写;
2008.8.17~2008.8.22
完成毕业论文的初稿修改,形成最后上交的毕业设计;
五、指导教师意见:
指导教师签名:
20年月日
六、系部意见:
系主任签名:
20年月日
0、引言………………………………………………………………………………6
1、方案论证与比较
1.1.时钟心脏电路方案…………………………………………………………6
1.2.显示电路方案………………………………………………………………6
1.3.语音电路方案………………………………………………………………6
1.4.温度采集电路方案…………………………………………………………7
2、总体结构……………………………………………………………………7
3、总体设计思路
3.1设计任务与要求……………………………………………………………7
3.2设计原理与电路………………………………………………………………8
3.3主要几个模块设计介绍………………………………………………………8
4、与传统数字万年历相比,本作品的优势………………………………………17
5、实验仪器设备与元件清单………………………………………………………17
6、调试及故障解决方法……………………………………………………………17
7、系统的使用方法…………………………………………………………………18
8、系统改进………………………………………………………………………18
9、降本增效………………………………………………………………………19
10、结束语………………………………………………………………………20
11.答谢词……………………………………………………………………………20
参考文献……………………………………………………………………………20
附件1程序清单………………………………………………………………………21
附件2录音段落的地址设置…………………………………………………………41
附件3硬件图片………………………………………………………………………42
数字万年历的人性化扩展的分析和设计
摘要:
随着时间的推移,人们对数字万年历的功能又提出了新的要求,怎样让时钟更好的为人民服务呢?
这就要求不断设计出新型时钟。
本设计是一个具有时间、公历、日期、闹钟、温度显示、真人语音报时等的多功能数字万年历;硬件使用ATMEL公司的AT89C52单片机作为中央控制器,结合美国DALLAS公司的DS1302提供时钟信息及该公司的DS18b20温度传感器提供温度采集信息,以1602A字符型液晶显示器为载体显示信息数据,并通过ISD2560语音芯片真人语音报出信息数据;(软件特点等。
。
。
)本设计以数字集成电路技术及理论为基础,以单片机技术为核心。
本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写,首先介绍各系统硬件模块的工作原理及模块核心器件的选择,原理及控制逻辑有结构框图加以阐述,详细阐述了各个模块和实现过程。
关键词:
数字万年历;单片机;时钟芯片;温度传感器;液晶显示;真人语音报时
Designedtoexpandthenumberofcalendar
Abstract:
Withthepassageoftime,thenumberofpeopleonthecalendarfunctionalsoproposednewrequirementsandhowtolettheclocktoservethepeoplebetter,howtorejuvenateouroldfriend?
»Thisrequirespeopletocontinuetodesignanewclock;designasystemwiththistime,theGregoriancalendar,date,alarmclock,temperature,thevoicebroadcastlivemulti-functionaldigitalcalendarusingtheATMEL'sAT89C52SCMasacentralcontroller,withtheUnitedStatesDALLAStheDS1302clocktoprovideinformationandthecompany'sDS18b20temperaturesensorprovidestemperatureinformationcollection,1602AcharacterLCDdisplayinformationasthecarrierofdataandvoicethroughtheISD2560chipslivevoiceontheinformationanddata;numberoftechnology-basedintegratedcircuits,Microcontrollertechnologyasthecore.
Thispaperpreparedbythedominantideologyisintegratinghardwareandsoftware,hardware-based,forthepreparationofvariousfunctionalmodules,firstintroducedthesystemhardwaremoduleandtheworkingprincipleofthecoredeviceofchoicemodule,principleandcontrollogicdiagramofastructuretobeelaborated,Elaboratedonthevariousmodulesandimplementationprocess.
Keywords:
Multi-functiondigitalcalendar;MCU;clockchiptemperaturesensor;characterLCD;voicechiplivevoice
0.引言
数字万年历在日常生活中有很大用处,它能准确、实时、直观地显示出当前的时间信息。
随着时间的推移,人们对它的功能又提出了新的要求,怎样让时钟更好的为人民服务,这就要求我们不断设计出新型时钟。
本系统设计的多功能电子钟,除了传统的时间显示功能之外还具有温度显示、闹钟设定、语音报时、音乐闹铃。
系统加以扩展,通过LCD液晶显示,显示多种字符和时间及温度的采集显示。
本文介绍其设计方案及函数清单,其功能多样化;单元电路分别通过原理图设计、硬件设计、软件设计构成;程序部分由C语言设计完成,利用伟福软件仿真工具硬件编译仿真验证,并利用ATMEL89C52实现,非常适用于家庭、工厂、办公室、实验室等多种场合。
1、方案论证与比较:
1.1.时钟心脏电路方案(四号黑体)
方案一:
采用数字芯片CD4518计数、CD4511译码;组合实现数字钟的基本走时功能;可是该方案功能局限性很大;并且硬件较复杂走线过多;对于电路设计来说如此多的连接线是硬件问题的隐患;功能扩展不灵活;考虑到实现本系统需要大量的数据处理及液晶显示需要可编程控制器件等,用数字电路实现起来比较麻烦。
而且基于整个系统的速度要求,数字电路也不能满足要求。
方案二:
采用AT89C52单片机作为中央控制器,结合时钟芯片作为时钟基本部分;该方案硬件简单,功能可放大性的扩展;实用、低价、低功耗、高速度、体积小、功能强及抗干扰能力比数字电路强。
本设计采用方案二作为主控制器,完成数据处理。
;
1.2.显示电路方案
方案一:
采用LED显示,其不方便不直观,达不到我们的字符显示要求。
方案二:
采用LCD,其显示直观、方便。
界面显示友好,满足我们的界面字符化要求。
本设计采用方案二作为显示界面的设计。
1.3.语音电路方案
方案一:
采用台湾SPR9600语音芯片;但其硬件杂音较大;段落切换速度慢;录音播放多段时控制播放时采用快进方式;不可采用送地址方式工作;本系统语音需要22段组合播放;其远远符合不了该要求;
方案二:
采用美国的ISD2560语音芯片;该硬件杂音较小;段落切换速度较快;多段录音采用送地址播放方式;录音时间可达60秒;可录256段;
本设计采用方案二作为语音电路方案;
1.4.温度采集电路方案
方案一:
采用热敏电阻结合相关模拟电路;其精度不高;测试结果不直接;反应较慢;不可直观性的了解当前温度;电路抗干扰能力差;
方案二:
采用美国达拉斯公司的DS18B20温度传感器;温度值可直观的读出;其精度高可达到小数点后的四位;工作速度快;完成一次温度数据读出→转换→传送到MCU不到3ms;电路抗干扰能力强;且电路器件采用单总线控制;只需一根线与MCU连接;节约口线;硬件实现简单;
本设计采用方案二作为温度采集电路方案;
2、总体结构
数字钟硬件框图:
图4总体结构框图
3、总体设计思路:
3.1设计任务与要求:
(1)对万年历的技术进行深入研究,弥补其不足,确定论文主题,构思论文框架;
(2)系统要具有温度显示、闹钟调节、人性化语音报时等功能,显示部分要采用界面友好的LCD显示;
(3)亲手制作每个模块、调试相关电路,总结动手经验,实时记录电路制作过程,要有创新;
(4)根据论文制作内容完成书面论文书写,格式要正确、完整;
(5)设置一个系统复位开关S,该开关一般不用,只有当单片机工作不正常时才用的上也就是单片机上电复位开关。
3.2设计原理与电路供参考
①总原理图
图1原理图
②硬件实物图片(附录3)
③程序清单(附录1)
3.3主要几个模块设计介绍:
①主函数流程图
图2主函数流程图
②显示函数流程图
图3显示函数流程图
③按键模式调节进入函数流程图
图4模式调节进入函数流程图
④时间调整函数流程图
图5时间调整函数流程图
⑤语音录制函数
/*文件名称:
语音录音处理
*作者:
孙海飞
*完成时间:
2008年8月12日
*/
#include
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitlux=P1^0;//录音选择键
sbitfanx=P1^1;//放音选择键
sbitstx=P1^2;
sbitCE=P1^3;
sbitPD=P1^4;
sbitPR=P1^6;
sbitEOM=P3^0;
sbitLU=P3^2;
sbitFAN=P3^3;
sbitstart=P3^4;
biti=1;j=1;//工作模式控制位;
uchart=0;
sfradrs=0xa0;
ucharcodetable[]={0x00,0x14,0x28,0x36,0x40,0x4a,0x54,0x5e,0x68,0x73,
0x7d,0x86,0x90,0x9a,0xa4,0xae,0xb8,0xc2,0xcc,0xd6,0xe0,0xea};//录、放音的地址;
voiddelay(uintt)
{
uinti;
while(t--)
{
/*对于11.0592M时钟,约延时1ms*/
for(i=0;i<125;i++)
{}
}
}
voidstyle(void)//模式进入函数
{t=0;
if(LU==0)
{
delay(20);//按键去抖;下同;
if(LU==0)
{lux=0;
i=0;
j=1;
}
}
if(FAN==0)
{
delay(20);
if(FAN==0)
{fanx=0;
i=1;
j=0;
}
}
}
voidcopyst(void)//拷贝进入设置
{
CE=0;///CE端为低,开始录音;
while(start==0);
CE=1;
}
voidcopy(void)//进入拷贝的处理
{uchara;
t=0;
for(a=0;a<23;a++)//共22端录音
{
adrs=table[t];
while(start==1);
if(start==0)//按键去抖
{
delay(20);
if(start==0)
{t++;
PR=0;//设置录音状态
PD=0;
stx=0;
copyst();
stx=1;
}
else
{a=a-1;//若为按键抖动造成的进入,将a减1表示循环加一次,抵消这次的误进入;
}
}
}
}
voidplayst(void)
{
CE=0;///CE端为低,开始录音;
_nop_();
_nop_();
CE=1;
while(EOM==1);//等待放音结束
while(EOM==0);
}
voidplay(void)//播放音函数
{
ucharb;
t=0;
for(b=0;b<23;b++)//一共22段
{
adrs=table[t];
while(start==1);
if(start==0)
{
delay(20);
if(start==0)
{
t++;
PR=1;
PD=0;//设置放音状态
stx=0;
playst();
stx=1;
}
else
{
b=b-1;//若为按键抖动造成的进入,将a减1表示循环加一次,抵消这次的误进入;
}
}
}
}
voidmain(void)
{PD=1;//各位初始化防止位状态不定
CE=1;
PR=1;
EOM=1;
stx=1;
lux=1;
fanx=1;
LU=1;
FAN=1;
start=1;
while
(1)
{i=1;j=1;
style();
while((i==0)&&(j==1))
{//判断进入录音状态
copy();
i=1;j=1;
}
while((i==1)&&(j==0))
{//判断进入放音状态
play();
i=1;j=1;
}
}
}
⑥时间信息采集函数
/*文件名称DS1302时钟部分子程序
*作者:
孙海飞
*完成时间:
2008年7月25日
*/
voidDS1302InputByte(unsignedchard)//实时时钟写入一字节(内部函数)
{
unsignedchari;
ACC=d;
for(i=8;i>0;i--)
{
DS1302_IO=ACC0;//右移
DS1302_CLK=1;
DS1302_CLK=0;
ACC=ACC>>1;
}
}
unsignedcharDS1302OutputByte(void)//实时时钟读取一字节(内部函数)
{
unsignedchari;
for(i=8;i>0;i--)
{
ACC=ACC>>1;//右移
ACC7=DS1302_IO;
DS1302_CLK=1;
DS1302_CLK=0;//产生下降延
}
return(ACC);
}
voidWrite1302(unsignedcharucAddr,unsignedcharucDa)//ucAddr:
DS1302地址,ucData:
要写的数据
{
DS1302_RST=0;
DS1302_CLK=0;
DS1302_RST=1;
DS1302InputByte(ucAddr);//地址,命令
DS1302InputByte(ucDa);//写1Byte数据
DS1302_CLK=1;
DS1302_RST=0;
}
unsignedcharRead1302(unsignedcharucAddr)//读取DS1302某地址的数据
{
unsignedcharucData;
DS1302_RST=0;
DS1302_CLK=0;
DS1302_RST=1;
DS1302InputByte(ucAddr|0x01);//地址,命令
ucData=DS1302OutputByte();//读1Byte数据
DS1302_CLK=1;
DS1302_RST=0;
return(ucData);
}
voidDS1302_GetTime(void)//获取时钟芯片的时钟数据到自定义的结构型数组
{
ucharTime_Value;
Time_Value=Read1302(DS1302_SECOND);
Second=((Time_Value&0x70)>>4)*10+(Time_Value&0x0F);
Time_Value=Read1302(DS1302_MINUTE);
Minute=((Time_Value&0x70)>>4)*10+(Time_Value&0x0F);
Time_Value=Read1302(DS1302_HOUR);
Hour=((Time_Value&0x70)>>4)*10+(Time_Value&0x0F);
Time_Value=Read1302(DS1302_DAY);
Day=((Time_Value&0x70)>>4)*10+(Time_Value&0x0