1、目 录一、设计目的 1二、方案论证 121方案论证与设计 1 2.1.1.控制部分的方案选择 1 2.1.2显示部分的方案选择 12.2 单片机原理 12.3 LED显示数码管 2 三、器件简述 23.1单片机 3 3.2晶振43.3复位电路 43.4 LED数码管53.5蜂鸣器电路63.6按键路6四、软件设计 74.1 主程序流程图74.2 软件调试8五、实验测试 9 5.1硬件测试95.2软件测试 95.3测试结果分析与结论10六、课程设计小结10七、参考文献11附录A12附录B13附录C14附录D15一、设计目的单片机与接口技术课程设计是在教学及实验基础上,对课程所学理论知识的神话和提高
2、,因此要求学生能综合运用所学知识,设计与制造出具有较复杂功能的小型单片机系统,并在实践的基本技能方面进行一次系统的训练。能够较为全面的巩固和应用单片机,课程中所学的基本理论和基本方法,并初步掌握小型单片机系统设计的基本方法。培养独立思考、独立收集资料、独立设计规定功能的单片机系统的能力:培养分析,总结及撰写技术报告的能力。本设计是基于STC89C52的打铃器的设计,适用于对时间的设定,按时打铃,在日常生活中是比较是用的小工具。二、方案论证21方案论证与设计2.1.1.控制部分的方案选择1)用STC 16位单片机设计。对于本设计,在成本方面具有很大优势,而且它的功能强大,对于定时一类问题可以说是
3、小菜一碟,只要添加一些外部设备,比如数码管、蜂鸣器、按键等就可以很好地解决这一问题。2)用可编程逻辑器件设计。可采用ALTERA公司的FLEX10K系列PLD器件。设计起来结构清晰,各个模块,从硬件上设计起来相对简单,控制与显示的模块间的连接也会比较方便。但是考虑到本设计的特点,EDA在功能扩展上比较受局限,而且EDA占用的资源也相对多一些。从成本上来讲,用可编程逻辑器件来设计也没有什么优势。2.1.2显示部分的方案选择本实验采用LED数码管显示方案采用8段数码管既经济实惠,在效果上也可以加入语音报时功能,操作比较液晶显示来说虽然略显繁琐,但总体也还可以做到比较人性化其他选择可以使液晶显示板,
4、虽然液晶显示效果出众,可以运用菜单项来方便操作,但是在显示时,特别是使用秒表功能时扫描速度跟不上,屏幕会有明显的闪烁。而且由于61板的存储空间有限,影响功能拓展。2.2 单片机原理单片机就是简化的微型计算机。CPU中本身自带存储器ROM和RAM。CPU片内也有总线。IC(集成电路)技术是将电路通过特殊工艺做在一块硅基片上封装成芯片,比如CPU,片外存储器等等。 将单片机CPU(比如C52系列),晶振,存储器,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等通过PCB工艺(比如SMT贴片,或者插装)做在环氧树脂板上。这样才是一个完整的单片(做在一块PCB板上)的微型计算机。 2.3 LE
5、D显示数码管常见的LED显示具有清晰明亮的特点。是显示接口也是绝大多数单片机应用系统必备的部件之一。发光二极管组成的显示器是单片机应用产品中最常用的廉价输出设备。它由若干个发光二极管按一定的规律排列而成。当某一个发光二极管导通时,相应的一个点或一笔画被点亮,控制不同组合的二极管导通,就能显出各种字符。1. 显示器的结构常用的7段显示器的结构如图所示,发光二极管的阳极连在一起的称为共阳极显示器,阴极连在一起的成为共阴显示器。1位显示器由8个发光二极管组成,其中7个发光二极管ag控制7个笔画的亮或暗,另一个控制一个小数点的亮和暗,这种笔画的七段显示器能显示的字符较少,字符的形状有些失真,但失控简单
6、,使用方便。图1三、器件简述整体框图 图23.1单片机简介:STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式
7、下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。 图3特性:STC89C52RC单片机: 8K字节程序存储空间; 512字节数据存储空间; 内带4K字节EEPROM存储空间; 可直接使用串口下载; AT89S52单片机: 8K字节程序存储空间; 256字节数据存储空间; 没有内带EEPROM存储空间;3.2晶振:本次设计采用的是12M的晶振,电路图如下: 两只电容在20pF100pF之间取值,其取值在60pF70pF时振荡器频率稳定性
8、较高,按照一般经验,外接晶体时两个电容的取值为30pF;外接陶瓷振荡器是两电容的典型值是47pF。图43.3复位电路:在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便可实现初始化状态服务。为保证应用系统可靠的复位在设计复位电路时,通常使RST引脚保持4ms以上的高电平,只要RST保持高电平,MCS-51单片机就会循环复位;当RST从高电平变为低电平时,MCS-51单片机就从0000H地址开始执行程序,在单片机复位的有效期间,ALE、PSEN 引脚输出高电平。本次设计采用的是手动复位,其电路图如右:图5 手动复位电路有关计算说明:时钟周期T
9、=1fose=112M=1s24T=24s=1RC=1(51*10的三次方*1*10的负六次方)2024T闭=1/RC=1/(1K/51K*10负六次方)1000243.4 LED数码管本系统采用8位LED数码管来分别显示时、分、秒图63.5 蜂鸣器电路本设计采用有源蜂鸣器,采用9013三极管放大信号。图73.6键盘电路图8四、软件设计4.1主程序流程图初 始 化按下开关扫盘,调用键盘程序时钟走动适时打铃开 始图9调节时间4.2软件调试图10本次调试使用的是Keil C51 uvision2软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,使您能在很短的时间内就能学会使用
10、keil c51来开发您的单片机应用程序 。 另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。五、实验测试5.1硬件测试(1) 脱机检查。用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。(2) 联机调试。暂时拔掉AT89C52芯片,将仿真器的40芯仿真插头插入AT89C52的芯片插座进行调试,检验
11、键盘/显示接口电路是否满足设计要求。可以通过一些简单的测试软件来查看接口工作是否正常。5.2软件测试软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。调试的基本步骤如下:(1)用仿真器修改显示缓冲区内容,屏蔽拆字程序,调试动态扫描显示功能。例如将DISP0DISP5单元置为“012345”,应能在LED上从左到右显示“012
12、345”。若显示不正确,可在DISP子程序相应位置设置断点,调试检查。然后用仿真器修改计时缓冲区内容,调用拆字程序,调试显示模块DISPLAY。(2)运行主程序调试计时模块,不按下任何键,检查是否能从由00:00:00开始正确计时。若不能正确计时,则应在定时器中断服务子程序中设置断点,检查HOUR、MIN、SEC、MSEC单元是否随断点运行而变化。然后屏蔽缓冲区初始化部分,用仿真器修改计时缓冲区内容为23:58:48,运行主程序(不按下任何键),检验能否正确进位。(3)调试键盘扫描模块KEYSCAN,先用延时10 ms子程序代替显示子程序延时消抖,在求取键号后设置断点,中断后观察A累加器中的键
13、号是否正确;然后恢复用显示子程序延时消抖,检验与DISPLAY模块能否正确连接。(4)调试时间设置模块MODIFY。首先屏蔽COMB子程序,单独调试键盘设置模块KEYIN,观察显示缓冲区DISP0DISP5单元的内容是否随键入的键号改变,以及键号能否在LED上显示。然后屏蔽KEYIN子程序,单独调试合字模块COMB,分别将R1设置为时间设置缓冲区和闹钟值寄存区的首地址,修改显示缓冲区内容,运行程序后查看时间设置缓冲区HOUR、MIN、SEC单元,最后联调MODIFY模块。(5) 运行主程序联调,检查能否用键盘修改当前时间。5.3测试结论1)硬件测试通过2)软件测试通过3)可以调整时钟时间用11
14、.0592MHZ晶振准确计时,以数字形式显示时、分、秒的时间4)小时以24小时计时形式,分秒计时为60进位5)复位电路成功六、课程设计小结两周的单片机课程设计终于顺利完成了,可以说是苦尽甘来受益匪浅。我选的设计题目是“数字温度计打铃器设计”,开始不够自信觉得这个题目是比较简单的所以选了它,其实不然,做了之后,发现设计电路虽然简单,但我们认为它真正困难的地方是程序设计,不过在我的努力下还有同学的帮助下最终完成了。刚选题目时,真的是一头雾水,硬件电路不知如何下手,更谈何解决程序。我们平时学习单片机理论相对较多,但是真正实践还是不多的。和同学商量后我去查阅和收集资料到图书馆借一些参考书,上网找一些相
15、关资料,并且请教指导老师。通过不断努力,终于把打铃器的思路和模型定了下来并开始准备去购买零件。不得不说,购买零件是一个非常锻炼人的任务,由于此次课程设计同学们的题目都不一样,所以大家所要购买的东西有很多是不一样的,我们宿舍经过统计后到赛格电子市场和老板们讨价还价最终把这项艰巨的任务完成了。下面焊接硬件电路,这个过程可谓完全考验平时的动手能力,要保证焊接的质量,不能虚焊还有跳线等。焊完之后就是程序的调试和完善,以及功能的拓展。焊接电路板完工,细心检查后,进行通电测试。结果数码管没有显示,通过检查,原来是数码管是共阳极的,没有接上拉电阻,所以没有效果。在换了块新的后,终于可以显示了。但还有个问题是
16、发现蜂鸣器的电压太低了,是因为串接了一个太大的电阻。然后,我们换了一个小电阻,但这时蜂鸣器却一直在叫,停不下来,不过,在我的细心检查下,原来是在放大电路的一端虚焊了,这说明我们焊接电路的技术还不够好。在重新焊接那端后电路终于成功实现功能,当时我们的心情都是无比兴奋和快乐。在完成单片机课程设计后,我发现自身还有许多不足,所学到的知识还远远不够,以至于还有一些功能不能被动完成。但通过学习这一次实践,增强了我们的动手能力,提高和巩固了单片机方面的知识,特别是软件方面,并让我认识到把理论应用到实践中去是多么重要。七、参考文献1单片机应用系统设计技术基于C51的Proteus仿真(第二版)M 张齐 朱宁
17、西编著 北京电子工业出版社2单片机应用系统设计技术 基于C51的Proteus仿真实验与解题指导(第二版)M 张齐编著 北京电子工业出版社3单片机原理及其接口技术(第二版)M 胡汗才编著 北京大学出版社451系列单片机设计实列M 楼然苗 李光飞编著 北京航空航天大学出版社5单片微机测控系统设计大全M 王福瑞编著 北京航空航天大学出版社 6单片机实用技术问答M 谢宜仁主编 人民邮电大学出版社附录A1. 元器件清单序号名称代号型号数量1电阻R 1,R2, R3 ,R4 ,R5 ,R6 R7,R8,R1733092电阻R 9,R10, R11 ,R12 ,R13 ,R14, R15,R161k83电
18、阻R20,10K14电容C1,C2, 30pF25电解电容C3,10uF16按钮B1,B2,B3,B447数码管A1,A2SM4204428单片机U1STC89C5219晶振CRYSTAL11.0592110晶体管T1S9013111蜂鸣器BEEHXD1附录B仿真原理图附录C实物图附录D主要程序#include reg52.h/unsigned char code dsp_code_ca = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;unsigned char code dsp_code_ca = 0x3f,0x06,0x5b,0x4f
19、,0x66,0x6d,0x7d,0x07,0x7f,0x6f;unsigned int tflag;unsigned char dspflag;unsigned char tsan,x,second,hour,miniute,temp;unsigned char dflag;unsigned char t,se,min,ho;sbit bee=P37;sbit wei=P20;sbit duan=P21;sbit key1=P10;void delay(unsigned char n) unsigned char i; while(n-) for(i=0;i112;i+); void dela
20、y1(unsigned char m) while(m-); void display(unsigned char d,unsigned char a);/void display_hour(unsigned char d);/void display_min(unsigned char d);void init_ex0();void main() 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;
21、 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(t100) 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(key
22、1=0)delay(100);if(key1=0)min+;if(min=60)min=0; if(t100) 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(t100) P2=0xff;P0= 0x00; P2 =0xfc; delay(1); display(se,
23、6); display(min,3); t-;if(t=101)t=0; second=se;miniute=min;hour=ho; /T0中断服务函数void isr_t0(void) interrupt 1 tflag+; dflag+; if(miniute=0&second10)bee=1; else bee=0; if(dflag = 12)/3ms dflag = 0;dspflag+;if(dspflag =2) dspflag = 0; if(tflag = 4000) tflag = 0; second+; if(second = 60) second = 0; miniu
24、te+; if(miniute=60) miniute=0; hour+; if(hour=24) hour=0; /显示程序void display(unsigned char d,unsigned char a) if(dspflag = 0|x) P2=0xff; P0=0x40; P2&=0xdb; delay1(1); P2=0xff;P0= dsp_code_cad/10; P2 =(0x01a); delay(1); if(dspflag = 1|x) P2=0xff; P0=0x40; P2&=0xdb; delay1(1); P2=0xff; P0 = dsp_code_cad%10; P2=(0x02a); delay(1); void init_ex0() EA=1;/开总中断EX0=1;/开外部中断0IT0=0;/TCON=0x01;void exter0() interrupt 0 delay(1000);x+; se=second;min=miniute;ho=hour; if(x=4)x=0;19
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922