多功能数字钟最终报告.doc_第1页
多功能数字钟最终报告.doc_第2页
多功能数字钟最终报告.doc_第3页
多功能数字钟最终报告.doc_第4页
多功能数字钟最终报告.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计题 目 基于单片机的多功能数字钟设计 学生姓名 任江彬 学号 1013014053 所在院(系) 物理与电信工程学院 专业班级 电子102 指导教师 张志伟 完成地点 陕西理工学院 2014年 1月12日多功能数字钟设计报告 摘 要多功能数字钟是以STC89C52RC单片机为核心控制器构成的新型数字化产品,由时钟模块、闹钟模块、键盘显示模块、电源模块、温度、电网电压和频率测量等模块组成。时钟由内部定时器实现时间的计量,通过键盘和数码管可方便地校对时钟和设置闹钟时间,采用光电传感器实现非接触闹钟止闹功能。通过对现场环境温度、电网频率、电压进行测量,实现电压欠压、过压报警。一 方案比较与论证系统设计包含时间计量、显示、温度测量、电网频率、电压测量等多个部分,下面对各部分设计方案做分析和选择。(一) 计时方案一:由51单片机实现时钟功能先设定51单片机内部的一个定时器/计数器工作于定时方式,对机器周期计数形成基准时间,然后用另外一个定时器软件计数的方法对基准时间形成秒,秒计60次形成分钟,分钟计60次形成小时。方案二: 专用时钟芯片目前市场上已有很多实时时钟芯片,。如DS12887、DS1302等,芯片内都集成了时钟/日历功能,给时钟系统设计带来很多方便。考虑到成本以及编程方面的问题,因此选择方案一。(二) 温度采集方案一:采用集成温度传感器(如AD590等)测温,但是电路设计复杂。 方案二:采用数字温度传感器 DS18B20 。该传感器结构简单,不需外接电路,数据传输采用 one-wire总线,可用一根 I/O数据线传输数据,精度高,能满足题目1的要求,且分辨率较高,重复性和可靠性好。数字化温度传感器具有与单片机接口方便、直接数字量输出等优点,因此选用方案二。(三)键盘显示1、键盘方案一:采用阵列式键盘,此类键盘是采用行列扫描方式,优点是当按键较多时可以降低占用单片机的I/O口数目,缺点是电路复杂且会加大编程难度。方案二:采用独立式按键电路,每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。缺点是当按键较多时占用单片机的I/O数目较多,优点是电路设计简单,且编程极其容易。由于该系统采用了常规钟表式的校对方式,用键较少,系统资源足够用,故采用了方案二。2、显示方案一:数码管实现显示功能。 采用共阴数码管,用51单片的P0 I/O口控制数码管的段选,P2 I/O 口控制数码管的位选,同时用74LS245(数据缓冲器)增加I/O的驱动能力方案二:液晶显示器来实现显示功能。液晶显示器来实现显示功能,不仅可以实现基本的显示信息,而且可以显示丰富的符号指示信息,如AM/PM,闹钟符号等,信息量丰富且直观易懂。而且液晶显示有功耗低,体积小,重量轻,寿命长,不产生电磁辐射污染等优点。 由于数码管可以完成制作任务,经济耐用,完全能够满足 电路显示功能 。因此采用方案一。(四) 非接触止闹功能 方案一:采用声音控制实现非接触止闹功能,优点是方便,但由于声控存在灵敏度的问题,在现场条件差的环境中较容易引起误动作。方案二:采用光电开关实现非接触止闹功能,因为光电开关利用物体对红外线的反射,可检测到物体的有无,方便有效,人只需挥挥手就可产生信号,完成止闹功能。考虑到止闹功能的准确性,因此采用方案二。(五) 电压、频率测量交流电压的真有效值测量可采用AC-DC绝对值运放(AD536等)实现,因难于购买,方案采用由9v变压器变压后,经全桥整流滤波,由A/D转换器ADC0832实现电压有效值测量。电网频率是通过变压器、过零比较器处理后得到方波信号,对此方波信号进行频率测量,进而得到电网频率。二系统总体设计系统框图如图所示。 STC89C52RC数码管显示报警电路键盘输入电压测量频率测量温度测量止闹电路系统方框图系统工作原理: 系统上电自检后,数码管实时实现时、分、秒的数字显示以及LED对AM/PM和闹钟开关的显示,通过按键可实现校对时间、设置闹钟时间、闹钟开、闹钟关的设定以及进行现场温度、电网频率、电压值的测量和显示。当闹钟时间到和出现电网电压欠压、过压报警时,通过发光二极管、蜂鸣器来实现声、光报警。 三、系统模块设计1、 键盘接口电路设计键盘电路设计如图所示。 键盘电路设计模式键:第一次按键开始校对小时;第二次按键开始校对分钟;第三次按键开始校对秒钟;第四次按键开始校对闹钟小时;第五次按键开始校对闹钟分钟;第六次按键切换现场温度显示;第七次按键切换电网电压显示;第八次按键切换电网频率显示;第九次按键回到初始计时界面。加键:当切换校对时钟时、分、秒和闹钟时、分时可进行加一操作。减键:当切换校对时钟时、分、秒和闹钟时、分时可进行减一操作。闹钟开关键:按键确定闹钟的开、关。2、显示器电路设计系统采用数码管显示。数码管与单片机接口电路如图所示。 数码管显示电路3、温度测量电路设计温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55125,可编程为9位12位A/D转换精度,测温分辨率达到0.0625, 单片机只需一根I/O口线便能与DS18B20通信,占用单片机I/O口线少,可节省大量引线和逻辑电路。接口电路如图所示。单片机与DS18B20接口电路4、 电网频率测量交流220V电压经变压器降压后, LM393过零比较器,将电网正弦波整成方波信号,此信号频率即为当前电网电压频率。将此脉冲信号由LM393输出到单片机的INT1(P3.3)端口,经编程计算出1s外部中断的次数即为电网的频率。 正弦波变方波电路5、 电网电压测量原理:交流220V电压经变压器降压后,整流滤波,取滤波后的有波动的直流电压信号,用A/D转换器ADC0832,实现时时对电网电压进行检测。设测量最高电压值为255V,通过9V产生交流电压U经整流滤波后,用电阻分压,取5V电压为ADC0832的满量程输入。由ADC0832进行A/D转换,将得到的数字量送入单片机,处理得到电压值并显示。电网电压测量电路6、非接触止闹电路设计当闹钟定时到点时,会触发声报警,系统设计时采用漫射光电传感器ST188检测人体和遥控止闹行为。当人体靠近传感器3cm以内或红外遥控器遥控时,单片机会检测到传感器信号,自动发出停止闹钟行为。7、报警功能当闹钟定时到点时,会触发声报警,电路如图所示。8、5V电源电路设计将220V、50HZ的市电用9V变压器变压后以全波整流电路作为整流网络,以极性电容作为滤波网络,采用固定式三端集成稳压电路7805得到5V直流稳压电源。选用4个1N4007整流二极管组成桥式整流电路。选1000uF/25V的电解电容作为滤波电容。7805输入端加0.33uF电容,防止电路产生自激振荡,输出端的电容用于消除电压中的高频噪声,以便输出较大的电流脉冲。 电源电路设计四系统测试1、测试及制作中所用仪器:数字示波器数字万用表函数发生器直流稳压电源PC机一台温度计、秒表、烙铁等2、测试结果(1)基本要求 上电复位后,由显示信息可知达到数字显示时间、AM/PM显示、闹钟开、关状态、闹钟灯熄灭的显示要求, 按“模式”键,可进行时间设定,能在新的时间点上运行,实现时间设置功能; 按“模式”键,可进行闹钟时间设定,能在新的时间点到达时,发声报警,实现闹钟设置功能; 按“闹钟开关”键,闹钟指示灯随之相应进行“亮”、“灭”切换,如果“闹钟关”,时间到达闹钟设置值时,系统没有发出声报警;如果“闹钟开”,时间到达闹钟设置值时,系统发出声报警,实现闹钟开、关控制。(2)发挥部分 按“模式”键,数码管由主界面显示进入温度显示界面,能准确显示出当前的环境温度,继续按模式键返回时钟显示主界面; 按“模式”键,数码管由主界面显示进入电网电压、频率测量显示界面,能准确显示出当前的电网电压、频率值,继续按模式键返回时钟显示主画面; 在电压欠压、过压时能报警; 当闹钟启动时,在止闹的光电传感器前方30MM内晃一下手,闹钟立即停闹,实现非接触止闹功能。或者用自制的红外遥控器,也可实现非接触止闹五、经验及教训通过此次多功能数字钟设计制作,我将从书本上学到的知识应用于实践,学会了一些电子电路仿真设计能力,虽然过程中遇到了一些困难,但是在解决这些问题的过程无疑也是对我自身专业素质的一种提高。当最终调试成功的时候也是对我们的一种肯定。此次的课设不仅增强了我在专业设计方面的信心,鼓舞了我,更是一次兴趣的培养。 另外在这次实验中我遇到了不少的问题针对不同的问题我采取不同的解决方法,最终一一解决设计中遇到的问题。在我遇到不懂的问题时,利用网上的资源,搜索查找得到需要的信息,和同学之间相互讨论。这次的制作也让我们感受到,我们在电子方面学到的只是很小的一部分知识,我们需要更多的时间来学习知识,学习技术。六参考文献: 1. 郭天祥 新概念51单片机C语言教程.电子工业出版社2. 丁向荣 STC系列增强型8051单片机原理与应用.电子工业出版社3. 李建忠 单片机原理及应用. 西安电子科技大学出版社4. 童诗白、华成英 模拟电子技术基础(第四版). 高等教育出版社5. 阎石 数字电子技术基础(第五版) . 高等教育出版社程序:#include#define uint unsigned int #define uchar unsigned charsbit AM=P11;/AM指示灯sbit PM=P10;/PM指示灯sbit k=P12; /非接触止闹sbit key1=P13; /设置键sbit key2=P14; /加1键sbit key3=P15; /减1键sbit key4=P16; /闹钟开关sbit ring=P17;/闹钟开关指示灯sbit fm=P30; / 过压欠压报警sbit CLK = P32;sbit DI = P35;sbit DO = P34;sbit CS = P31;sbit DQ = P36; /温度传感器sbit fmq= P37; /闹钟蜂鸣器bit ringoff;float tt;uint t;uint temp;uint adc;uint m; /频率uint n; /电压采样次数uint d; /电压uchar num,cout, keynum;uchar hour,min,sec;/时分秒uchar n_hour,n_min; /闹钟时分秒uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,/0-9数字 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef, /0-9数字带小数点0x40,0x39,0x76,0x3e; /-,c ,H ,Uvoid delay(uint z) /1ms延时函数 uint x; for (z;z0;z-) for(x=110;x0;x-); /*/void init_DS18B20()/初始化 uint i; DQ = 0; i=103; while(i0)i-; DQ = 1; i=4;while(i0)i-;bit readbit() /读1位数据 uint i; bit dat; DQ=0;i+;/i+起延时作用 DQ=1;i+;i+; dat=DQ; i=8;while(i0)i-; return (dat);uchar tempread()/读1个字节数据uchar i,j,dat;dat=0;for (i=1;i=8;i+) j=readbit(); dat=(j1); return(dat); void tempwrite(uchar dat) /写1个字节 uchar j; uint i; bit test; for (j=1;j=1;if(test) /写 1 DQ=0; i+;i+; DQ=1; i=8;while(i0)i-; else /写 0 DQ=0; i=8;while(i0)i-; DQ=1; i+;i+; uint gettemp() /读温度数据uchar a,b;init_DS18B20();delay(1);tempwrite(0xcc); / 写跳过读ROM指令tempwrite(0x44); / 写温度转换指令 init_DS18B20();delay(1);tempwrite(0xcc); tempwrite(0xbe);a=tempread();b=tempread();t=b;t=8; t=t|a;tt=t*0.0625; /分辨率0.0625t= tt*10+0.5; return(t); uint ad0832()/ADC0832驱动函数 uchar k; CS=0; CLK=0; CLK=1; DI=1; CLK=0; CLK=1; DI=1; CLK=0; CLK=1; DI=0; CLK=1; CLK=0; for (k=0;k1)| 0x80; else adc=(adc1)|0x00; CS=1; return (adc); void init() /初始化函数ringoff=1; num=0;n=50; /电压采样50次cout=0; keynum=0;hour=12;min=0;sec=0;n_hour=0;n_min=0; TMOD=0x01; /定时器0,工作方式1 TH0=(65536-50000)/256;TL0=(65536-50000)%256;IT1=1; /下降沿触发EA=1; /开总中断ET0=1; /开定时器0中断EX1=1; /开计外部1中断 TR0=1; /启动计数器0 void T0_time() interrupt 1/定时器0中断函数TH0=(65536-50000)/256;TL0=(65536-50000)%256;num+ ; if(num=20) num=0; sec+; EX1=0; /关闭外部1中断 m=cout; /计数值放入变量 cout=0; EX1=1;/开计外部1中断 if(sec=60) sec=0;min+; if(min=60)min=0;hour+; if(hour=24) hour=0; void T1_time() interrupt 2/外部中断1函数 cout+; void key()/按键函数if(key1=0) delay(10); if(key1=0)P0=0x00;delay(5); keynum= keynum+1; TR0=0; while(!key1); if( keynum=4)TR0=1; if( keynum=9) keynum=0; if( keynum=0)if(hour=12)AM=1;PM=0; else AM=0;PM=1; else AM=1;PM=1; if( keynum!=0) if(key2=0) /时间加1 delay(10); if(key2=0) P0=0x00; delay(5); while(!key2);if( keynum=1)hour+;if(hour=24)hour=0;if( keynum=2)min+;if(min=60)min=0;if( keynum=3)sec+;if(sec=60)sec=0;if( keynum=4)n_hour+;if(n_hour=24)n_hour=0;if( keynum=5)n_min+;if(n_min=60)n_min=0; if(key3=0) /时间减1 delay(10); if(key3=0) P0=0x00; delay(5);while(!key3); if( keynum=1) hour-;if(hour=-1)hour=23; if( keynum=2) min-;if(min=-1)min=59; if( keynum=3) sec-;if(sec=-1)sec=59; if( keynum=4) n_hour-;if(n_hour=-1)n_hour=23; if( keynum=5) n_min-;if(n_min=-1)n_min=59; if(key4=0) delay(10); if(key4=0) P0=0x00; delay(5);while(!key4);ringoff=ringoff;ring=ring; if(ringoff=0)if(k=0) delay(10); if(k=0) P0=0x00; delay(5);while(!k);ringoff=1;ring=1; void display() /显示函数 if( keynum=4| keynum=5) P2=0x7f; P0=tablen_hour/10; delay(2); P0=0x00; /消隐 P2=0xbf; P0=tablen_hour%10; delay(2); P0=0x00; /消隐 P2=0xdf; P0=table20; delay(2); P0=0x00; /消隐 P2=0xef; P0=tablen_min/10; delay(2); P0=0x00; /消隐 P2=0xf7; P0=tablen_min%10; delay(2); P0=0x00; /消隐 else if( keynum=6) temp=gettemp(); delay(2); P2=0xf7; P0=tabletemp/100; delay(2); P0=0x00; /消隐 P2=0xfb; P0=tabletemp%100/10+10; delay(2); P0=0x00; /消隐 P2=0xfd; P0=tabletemp%10; delay(2); P0=0x00; /消隐 P2=0xfe; P0=table21;/ C delay(2); P0=0x00; /消隐 else if( keynum=7) unsigned int SUM;unsigned int i,j; j=ad0832(); SUM =SUM+j; if(i=0) /采集50次数据之后取平均值 d= SUM/n; SUM = 0; i =n;i-; P2=0xf7; P0=tabled/100; delay(2); P0=0x00; /消隐 P2=0xfb; P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论