ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:467.20KB ,
资源ID:20658422      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20658422.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多功能数字电子表 总结报告Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多功能数字电子表 总结报告Word格式.docx

1、二 方案比较与选择方案一:采用中规模集成电路,由电容、电阻、非门、晶体组成震荡电路提供一个频率稳定的方波信号,分频器电路将高频方波信号经若干次分频后得到1Hz的方波信号供秒计数器进行计数,秒位、分位、时位计数器分别为60、60、24进制计数器,译码驱动电路将计数器输出的8421BCD码转换为数码管需要的逻辑状态,并且为保证数码管正常工作提供足够的工作电流。整点报时、校时等功能也可以通过与非门组成的逻辑电路来实现。方案二: 采用单片机内部定时计数器中断,控制计数变量,将计数变量通过单片机引脚送至总线驱动,为数码管提供足够的电流,通过程序控制每位数码管,实现动态显示。通过7个按键来实现时间预置、秒

2、表、倒计时、闹钟设置、复位的功能。在没有中断,没有按键按下的时候,单片机循环执行显示程序,当中断发生时、有按键按下时,单片机进入相应的子程序执行。语音报时电路采用isd1420语音芯片,用麦克风录下人声,单片机控制语音芯片在适当的时候通过喇叭播放事先录好的声音。附加功能都可以通过单片机程序来实现。方案比较:方案一重要用逻辑电路来实现,需要的芯片较多,集成化低,功能越多,硬件电路越复杂,需要的芯片比较多,成本也较高,故障率高,而且技术相对落后。方案二采用单片机控制,可以方便地控制外围的器件,所有的功能都可以通过编程来实现,实现的功能也更加丰富,需要的芯片数少, 电路相对简单。综合比较两种方案,本

3、设计决定采用方案二。三 电路设计3.1系统总体框图3.2 各部分电路设计3.2.1 复位电路 在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。电路图如图。3.2.2 时钟电路 时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准, MCS-51单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚X

4、TAL1,输出端为引脚XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。电路中的C1、C2的选择在30PF左右,但电容太小会影响振荡的频率、稳定性和快速性。晶振频率为在1.2MHZ12MHZ之间,频率越高单片机的速度就越快,但对存储器速度要求就高。为了提高稳定性我们采用温度稳定性好的NPO电容,采用的晶振频率为12MHZ。本次系统的时钟电路设计如图。 3.2.3数码管显示电路用六个共阳极7段数码管动态扫描显示时间变量,单片机P3口和P0口分别给数码管送位码和字型码,由于P0口没有内置上拉电阻,它输出不了高电平,所以要先给P0口加上上拉电阻。由于数码管输出电流比较小

5、,由P3经过总线驱动器74ls573(或245)给需要显示的数码管的阳极高电平,为数码管提供足够的电流,这样相应的数码管就会点亮,延时一段时间接着显示下一位,循环显示。数码管管压降3.5v左右静态显示时工作电流大约5mA,动态显示时工作电流大约20mA,这里动态显示六个数码管,电流取30mA,所以,流过数码管的的限流电阻计算为:R=(5v-3.5v)/0.03A=50欧姆。3.2.4语音芯片电路采用ISD1420语音芯片,它是美国ISD公司出品的优质单片语音录放电路,由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成。一个最小的录放系统仅由一个麦克风、一个喇叭、

6、两个按钮、一个电源、少数电阻电容组成。使用方便的单片录放系统,外部元件少,信息可保存100年,可反复录放10万次。 录音端/REC和下降沿触发放音端/PLAYE分别接开关,用于手动录放音测试。按下开关,此端为低电平,开始录音或放音。此外,录音端口/REC还接到了三极管的集电极,三极管的基极由单片机的P1.0口控制,用于软件控制录音,每当P1.0为高电平时,按照事先设定好的录音时间和存放地址开始录音。三极管的发射极接了一个led,用于提示录音(录音期间led亮,录音结束led灭),集电极接了开关,不录音时关断开关,防止单片机影响引起误录音。3.2.5按键电路P1口通过10K的电阻接+5v电源,同

7、时通过开关接地,开关没按下时P1口为高电平,当按键按下时P1口为低电平。3.2.6 蜂鸣器驱动电路由于蜂鸣器额定电流较大,所以单片机无法直接驱动,这里用npn三极管驱动,电路图如图,由单片机控三极管基极来控制三极管的导通与关断。蜂鸣器两端电压按照1.5v计算,三极管集电极限流电阻计算公式为R=(5v-0.3v-1.5v)/50mA=64欧姆。四 程序设计4.1 总体思路采用定时计数器中断T0, 10ms中断一次,秒表计时变量m0加1,依次往下进位。m0满100,计时变量a7的秒变量a0加1,依次向下进位。延时函数 主函数为一个大的while(1)循环,在这个循环里先进行初始化,然后进入第二个w

8、hile(1)循环,在没有按键按下时一直显示当前时间变量,当有按键按下时,进入按键函数,再次返回后判断复位变量restar是否为1,为1则跳出小的while(1)循环,在大循环中进行初始化然后再进入小的while(1)循环中。 显示函数分为普通显示函数和时间预置状态下的显示函数。时间预置状态下的显示函数通过两个形参来确定要显示的变量以及要显示小数点的位(用于标示可调位)。按键函数keyscan()分为7个子功能函数,通过判断分别进入不同的功能函数执行。4.2 程序框图(总体)五 测试方案5.1仿真测试各个按键功能的程序分别编写,一个功能的程序编好后,在protues里仿真,出现问题回去分析修改

9、程序直到仿真成功。然后开始接着写下一个功能程序,按照同样的方法测试仿真各个功能程序。5.2 语音电路部分测试a)不用单片机控制,给语音芯片的地址端接低电平,从0x00开始录音,上电,按下录音按键,说一段语音,松开录音键,按下播放按键,看喇叭是否正常播放刚才录下的语音。b)通过录音程序,由单片机控制,上电,录音指示灯开始亮灭闪烁,指示灯亮时开始录入“1”、“2”、“3”、“4”、“5”的语音。然后通过放音按键看播放是否正确。5.3 数字钟部分测试a) 将程序烧进单片机,上电运行,观察数码管是否从00.00.00开始计时。b) 按下按键3,看数码管显示是否进入时间预置状态。各个可调位的移动是否正确

10、,各个位的增减是否可以,进率是否正确。设置好时间,再次进入时间预置状态,看年月日十分秒星期是否正确,退出状态是否顺利。c) 按下按键4,看数码管显示是否进入秒表状态,通过按键1(开始暂停键)和按键2(清零键)观察秒表是否正确,退出状态是否顺利。d) 按下按键5,应该进入倒计时状态,按照“b)”的方法进行倒计时初始时间设置的测试。然后再按下按键5,观察倒计时状态,观察计到零时是否停止在00.00.00,退出状态是否顺利。e) 按下按键6,看是否进入闹钟时间设置状态,按照“b)”的方法进行闹钟时间预置测试。退出此状态,等待时间到达闹钟时间观察语音芯片是否报时。f) 在任意状态下按下按键7观察数码管

11、是否复位清零从00.00.00开始显示。g) 测试整点报时。可以先将时间设置在靠近整点前,然后观察到整点时蜂鸣器、语音芯片是否都能正常报时。六 测试结果与系统调试a)在各个按键功能的仿真测试上,每个功能按键的程序上都浪费了很长时间,出现了很多问题比如:进率错误、复位按键不灵、显示不稳定、显示乱码、状态跳不出来等等。最终,数字钟显示功能包括时间显示(包括年月日星期)、时间预置、秒表、倒计时、闹钟、蜂鸣器整点报时、复位都能较好地实现。b)一开始,功能正确,但数码管显示非常暗,几乎看不清,一位是限流电阻太大了,改成小的还是不行,有把限流电阻短路掉,数码管显示仍然很暗,最后反复检查电路后发现我们使用的

12、是共阳极数码管,而电路中总线驱动器74ls573接在了字型码信号输出端,将573改接到位选信号线上数码管显示就正常了。c) 语音电路一直没有反应,录音之后放不出音,后来发现ISD1420芯片根本买有焊到电路里去,由于芯片没有封装,所以没有引脚,只有28个焊点,要认为地用插针将它固定在电路板上,然后插针的两端分别和电路板和芯片焊在一起。这个问题解决之后电路也检查了几遍语音功能还是没有成功。我觉得是不是有原件坏了。八 总结通过实践,基本完成了多功能数字钟的设计制作,它可以实现时间显示(包括年月日星期)、时间预置、秒表、倒计时、闹钟、蜂鸣器整点报时、复位的功能,基本功能实现得比较充分、丰富。从最初的

13、选题、方案选择、查资料、电路设计、程序设计、原件参数的计算、焊接,整个过程下来,自己的基本的能力有了很大的提高。数字钟这个选题,电路不是很复杂,主要是编程麻烦点,很多功能的实现都需要比较复杂的程序来实现,程序的逻辑性比较强,所以,感觉最有收获的应该是C语言编程得到了很好的锻炼。为了美观同时也锻炼焊接技术,我们在焊接时尽量少用排线多用焊锡。另外,通过一起努力,也锻炼了我们的团队合作能力。我们的设计也存在着一些不足:(1) 语音电路没有实现,时间有限,检测调试也没有出结果。(2) 焊锡的走线存在浪费的现象,可能原件布局不是很合理。另外,有的原件焊错了之后有的线就成了“废线”。(3) 程序太长,一些

14、功能应该还有更好更简洁的算法来实现。这些不足也是以后应该努力的地方。九 参考文献1. 夏兰 ,等.语音芯片ISD1420在轴位移监控表中的应用J.自动化技术与应用.2004,23(11)2.周润景,等.单片机电路设计分析与制作M.北京:机械工业出版社,2010.53. 胡汉才,单片机原理及接口技术,清华大学出版社,1996十 附录A 电路设计图a)原理图b)PCB图B程序主程序:#include #define uint unsigned int #define uchar unsigned char void playsound(uchar a7);sbit key1=P10; /key1k

15、ey7为数字钟功能按键sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit key5=P14;sbit key6=P15;sbit key7=P16;sbit PLAYLE=P27; /语音芯片放音控制位sbit baoshi=P17; /整点报时控制位uchar restar=0,count=0; /restar:复位标志位 count:中断次数记录变量uchar a7=0; /存放计时变量星期、年、月、日、时、分、秒uchar m3=0; /存放秒表计时变量分钟、秒、毫秒uchar g3=0; /存放闹钟时间变量 存放时、分钟、秒uchar code

16、 table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /共阳数码管段码uchar code table1=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /带小数点的段码/*延时函数*/void delay( uint ms) /延时函数uchar i; while(ms-) for(i=0;i110;i+); /*中断函数*/void Timer0(void) interrupt 1 TH0=(65535-10000)/256; TL0=(65535-10000)%256; m

17、0+; /每10ms中断一次,秒表计数变量的毫秒位加1 if(m0=100) m0=0; / 毫秒位满100置0,秒位加1 m1+; a0+; /计时变量秒位加1 baoshi=0; /整点报时蜂鸣器响1s结束 PLAYLE=1; / 语音控制端置高,为下一次下降沿触发放音做准备 if(a0=g0&a1=g1&a2=g2)|(a2=g2&g1=1&g0=0&a1=0&a0=60) /若当前时间和闹钟预置时间相等,则: /若闹钟预置时间为01:01:00或00:00,则判断a0是否为60 P2=0x4b; /给送语音芯片送播放地址 PLAYLE=0; / 开始播放“起床起床起床起床”的声响if(

18、m1=100) /秒位满100置0,更高位加1m1=0; m2+; if(m2=100) m2=0; if(a0=60) /秒变量满 a0=0; a1+; if(!(g1=1&g0=0) / 如果特殊情况(闹钟预置时间为01:00)不满足, if(a1=60) /分钟变量满 a1=0; a2+; baoshi=1; /若分钟变量满则蜂鸣器整点报时(P1.7输出高电平),维持1秒 playsound(a); /调用放音函数进行语音整点报时 if(a2=24) a2=0; a3+; if (a3=31&(a4=4|a4=6|a4=9|a4=11) /日变量加到31溢出(4、6、9、11月) a3=

19、0; a4+; else if (a3=32&(a4=1|a4=3|a4=5|a4=7|a4=8|a4=10|a4=12) / 日变量加到32溢出(1、3、5、7、8、10、12月) else if (a3=29&a4=2&a5%4!=0) /日变量加到29溢出(平年的2月) else if(a3=30&a5%4=0) /日变量加到30溢出(润年的2月) else ;/*显示函数*/void disp(uchar a7) P3=0x20; P0=tablea0%10; delay(2); P3=0x10; P0=tablea0/10; P3=0x08; P0=table1a1%10; P3=0

20、x04; P0=tablea1/10; P3=0x02; P0=table1a2%10; P3=0x01; P0=tablea2/10;/*语音整点报时函数*/void playsound(uchar a7) uchar i; uchar ad; if(a210&a2=19)现在时间 P2=0x32;十 ad= a2*5%10; /语音 if(a2=20) P2=0x0a;二20&24) ad=a2*5%10; /*时间预置显示函数(使用小数点区别预置位和其他位)*/void disp1(uchar f7,uchar n) if(n4) /n小于4表示,key3按下的次数小于4,数码管显示时分

21、秒,预置位为时、分或秒位 P3=0x20; /显示秒 if(n=1) /若n等于1,表示key3只按一次,预置位为秒位 P0=table1f0%10; else P0=tablef0%10; delay(2); /显示秒 if(n=1) P0=table1f0/10; P0=tablef0/10; P3=0x08; /显示分 if(n=2) P0=table1f1%10; P0=tablef1%10 ; P3=0x04; P0=table1f1/10; P0=tablef1/10; P3=0x02; /显示时 if(n=3) P0=table1f2%10; P0=tablef2%10; P3=0x01; if(n=3

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1