电子技术综合设计总结报告-多路放大与巡回测量+多功能数字时钟.doc_第1页
电子技术综合设计总结报告-多路放大与巡回测量+多功能数字时钟.doc_第2页
电子技术综合设计总结报告-多路放大与巡回测量+多功能数字时钟.doc_第3页
电子技术综合设计总结报告-多路放大与巡回测量+多功能数字时钟.doc_第4页
电子技术综合设计总结报告-多路放大与巡回测量+多功能数字时钟.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

成都信息工程学院电子工程学院电子技术综合设计总结报告题 目: 多路放大与巡回测量 多功能数字时钟 专 业: 电子信息工程 班 级: 信处081班 姓 名: 指导教师: 评 分: 2011年 11 月 10日23目 录1 项目计划11.1 方案可行性11.1.1 市场分析11.1.2 设计方案选择11.2 项目执行计划12 设计说明22.1 各单元模块设计原理22.1.1 多路放大与巡回测量电路22.1.2 多功能数字钟模块与掉电保护系统22.1.3 电源模块32.1.4 按键模块42.1.5 最小系统模块42.1.6 显示模块52.2 各单元模块设计流程62.3 部分源程序及注解63 调试说明103.1 调试方法及步骤103.1.1仿真103.1.2产品调试104 总结105 参考文献116 附录111 项目计划1.1 方案可行性1.1.1 市场分析多路放大与巡回测量电路能应用于自动化生产,或某些大型设备(如激光),它通过对各参数的分析由电路实现对电压的巡回检测,监视及报警,以确保系统的稳定性,所以它的应用市场还是有一定的前景。数字时钟,是一种基于液晶显示,能直观显示日期与时间的显示产品。由于其方便、直观的特点,它被广泛应用于银行、车站、机场等公共场所,所以也具有广泛的市场。1.1.2 设计方案选择微型计算机渗透到测试领域并得到充分应用,是现代测试技术的发展必然趋势,也是作为现在智能仪表的一般方法,目前市场上的单片机从数据总线的宽度上分为8位,16位,32位,其中32位近年来在信号处理与分析以及语音数字图像处理等方面运用比较广泛,而运用于测量的还是8位和16位占主导地位而基于本课题的要求我们选择8位足矣,加之其中51芯片我们比较熟悉其外围电路以及编程环境,所以在硬件上我们选择了基于51单片机芯片加以设计。而在软件上我们选择了keil软件,运用c语言编程。至于数字时钟的实现,只需在多路巡回放大电压的基础上,加以数码管作为显示,再辅以软件实现即可。1.2 项目执行计划表1设计开发阶段的划分及主要内容人员负责人完成期限硬件原理谭凯,李伟伟谭凯2011-10-15软件编程谭凯,李伟伟谭凯2011-10-30产品制作及调试谭凯,李伟伟李伟伟2011-11-05报告书写谭凯,李伟伟李伟伟2011-11-102 设计说明2.1 各单元模块设计原理2.1.1 多路放大与巡回测量电路该模块电路实现的原理是:将电压待测管脚与单片机i/o口相连。将最后一路设置0-50mv的小信号,将经lm324放大并经射随器隔离后再采集。当采集电压高于预设电压的上限或低于预设电压下限的时候led将闪烁,实现报警功能。放大电路部分通过lm324放大电路实现,通过两级放大,电压放大倍数为66。图12.1.2 多功能数字钟模块与掉电保护系统该模块采用时钟芯片ds1302,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5v5.5v。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302内部有一个318的用于临时性存放数据的ram寄存器。ds1302是ds1202的升级产品,与ds1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。利用单片机对芯片数据进行读写,达到显示时间的作用。芯片的sclk、 i/o、 rst管脚分别与单片机的p2.0、p2.1、p2.2相接。掉电保护系统的实现原理是:主系统正常供电的时候进行充电,当主系统断电后电容放电对体统提供供电。具体电路如下图所示:图22.1.3 电源模块该系统采用直接外接5v供电,加了一个led来显示是否通电,并用了一个10uf的大电容和一个0.1uf的小电容对电源进行滤波处理。具体电路如下图所示:图32.1.4 按键模块本系统的按键部分由4个功能按键构成。s3接单片机p3.2它的功能是:模式选择。s4接单片机p3.3它的功能是:日期时间(年月日时分秒)的设置选择。s5接单片机p3.4它的功能:加功能。s6接单片机p3.5它的功能是:减功能。具体电路如图:图42.1.5 最小系统模块单片机的最小系统包含一个上电复位电路(对单片机进行初始化)与一个晶体振荡电路(为单片机提供时序)。电路如图5所示。复位电路的工作原理是:通电时,电容两端相当于是短路,于是rst引脚上为高电平,然后电源通过电阻对电容充电,rst端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。图52.1.6 显示模块本系统采用一个8段数码管来显示日期与时间,它的段码与单片机的p0口相接,而位选与单片机的p2口相接。电路如图6所示: 图62.2 各单元模块设计流程开始定时器t0、液晶显示、1302初始化按键处理显示信息处理电压时钟报警掉电保护ny部分源程序及注解#include #include ds1302.h#include led.h/#include key.h/#include dac.h#define uchar unsigned char#define uint unsigned int#define led_duanp0#define led_weip2/#define bee p3_7/#define krun p3_2struct systemtime gettime=0;struct systemtime settime =1,1,1;struct systemtime *stime = &settime;struct systemtime *gtime = &gettime;/bit nflag=0;/bit runflag=0;/*码表*/code uchar duan15=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x77,0x7c,0x39,0x5e;code uchar wei4=0x7f,0xbf,0xdf,0xef;uchar led_hc4=0;/extern uchar qh;/*定时器初始化*/void init_timer()tmod = 0x11;th0 = -30;/定时器0每30*256 = 1/240秒中断一次tr0 = 1;et0 = 1;ea = 1;/*显示*/extern uchar ncont;/ systemtime gettime;/ ntime tnow20;/extern bit nflag;/extern uchar sendx;/extern uint plv;/*void delayus(uint dly)uchar i;for(;dly!=0;dly-)for(i=1;i!=0;i-)i=1;*/void led1()led_hc0 = gettime.hour/10;led_hc1 = gettime.hour%10;led_hc2 = gettime.minute/10;led_hc3 = gettime.minute%10;extern void show() int i = 0 ; led_duan = duan2;/led_hci; led_wei = weii; if(i = 4) i = 0; else i+; void delay()int i =1000;if(i != 0)i-;/*主函数*/mian()/init_timer();ds1302_initial();ds1302_settime(stime);ds1302_gettime(gtime);while(1)show();delay();/* 定时器0中断:多任务分时处理 */*void timer0() interrupt 1/ 1/240秒中断1次,240次为1sth0 = -60;/*cont_time+;if(cont_time = 120 | cont_time = 0)flash = flash; */ 任务3:按键扫描 /*if(ucdelaykey = 0)/ 若刚才没按键则扫描按键if(keyscan() != 0)/ 若有按键动作ucdelaykey = 24;/ 设置延迟时间消颤约12mselsebstill = 0;/ 松键状态标志else / 有按键利用delaykey按键消颤if(-ucdelaykey = 0)/ 消颤或延时时间到?ckeycode = keyscan();/ 取有效键值 */#include #include #include /* 宏定*/#define uchar unsigned char#define uint unsigned int#define led_duanp0#define led_weip2/*结构体*/struct systemtime gettime=0,0,0;struct systemtime settime =0,10,21;struct systemtime setling12 =0;struct systemtime *stime = &settime;struct systemtime *gtime = &gettime;/* 常量*/sbit k0 = p32;sbit k1 = p33;sbit k2 = p34;sbit k3 = p35;sbit been = p37;sbit changeled = p32;uchar changekey = 0;uchar tw;uchar fg=0;uchar ucunt = 240;uchar unumber = 0;uchar unumberhc = 0;char sgok = 0;char delaykey = 0;uchar wav_index=0;uchar index=0;uchar cdisdata4;uint count;uint cou=0;uint dey;uint dfre=400,fre=500,th=20;uchar th0,tl0;uchar swth=0;char year=11,month=11,day=14;char clock_flag=1;void delay(uint n);/*码表*/uchar duan15=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x77,0x7c,0x39,0x5e;uchar wei4=0x70,0xb0,0xd0,0xe0;/*显示常量*/uchar led_hc4=0,1,2,3;int a=0 ;char ccunt =60;/* 按键处理函数*/void display() /*if(k3=0) changekey=changekey;delaykey = 80;if(changekey != 0)if(k1 = 0)if(sgok = 1)settime.hour+;if(sgok = 2)settime.minute+;delaykey=80;if(k0 = 0)if(sgok = 1)settime.hour-;if(sgok = 2)settime.minute-;delaykey=80;if(k2 = 0)sgok+;if(sgok = 4)sgok = 0;been = 0;/ucunt =ucunt; if(sgok = 3)setlingunumber=settime;unumber+;if(unumber = 12) unumber = 0;delaykey=80; if(changekey = 0) if(k0 = 0) fre+=10;if(fre=1000) fre=1000;if(fre=10) fre=10;if(fre=240)th=20000/fre;dfre=fre-30;th0=256-th;delaykey = 80;if(k1 = 0) fre-=10;if(fre=1000) fre=1000;if(fre=10) fre=10;if(fre=240)th=20000/fre;dfre=fre-30;th0=256-th;delaykey = 80;if(k2=0) swth+=1;if(swth=3) swth=0;delaykey = 80; */ if(k1 = 0) delay(10); if(k1 = 0) if(clock_flag=3) if(sgok = 0)settime.hour+; if(sgok != 0)settime.minute+;else if(clock_flag=2) if(sgok = 0) month+; if(month12)month=1; if(sgok != 0) day+; if(day31) day=1; delaykey=50;if(k0 = 0) delay(20); if(k0 = 0)if(clock_flag=3) if(sgok = 0)settime.hour-; if(sgok != 0)settime.minute-;else if(clock_flag=2) if(sgok = 0) month-; if(sgok != 0) day-; delaykey=50;if(k2 = 0)delay(10);if(k2 = 0) sgok=sgok; delaykey=50;if(k3=0) delay(10);if(k3=0) clock_flag+;if(clock_flag=4)clock_flag=1;ds1302_initial(); ds1302_settime(stime); delaykey=50; /*显示*/void led1() if(gettime.hour 24) led_hc0 = gettime.hour/10;led_hc1 = gettime.hour%10;if(gettime.minute 60)led_hc2 = gettime.minute/10;led_hc3 = gettime.minute%10;void led2()led_hc0 = month/10;led_hc1 = month%10;led_hc2 = day/10;led_hc3 = day%10;void led3() if(settime.hour 24) led_hc0 = settime.hour/10;led_hc1 = settime.hour%10;else settime.hour = 0;if(settime.minute =4) a=0; /*/*定时器初始化函数*/void init_timer()tmod = 0x12;th1 = 216;tl1 = 240;tr1 = 1;et1 = 1;th0 = 0;tl0 = 200;/定时器0每30*256 = 1/240秒中断一次tr0 = 1;et0 = 1;ea = 1;/*/void ling()if(gettime.hour = setlingunumberhc.hour) & (gettime.minute = setlingunumberhc.minute) if(fg = 0) been = 1;ucunt =240;fg = 1; else fg =0;if(fg = 0)unumberhc+;if(unumberhc = 12)unumberhc = 0;/*主函数*/void main() init_timer();ds1302_initial();ds1302_settime(stime);while(1) ds1302_gettime(gtime); /*中断函数*/void timer0() interrupt 1/ 1/240秒中断1次,240次为1s/*if(fre=200) wav_index=0;if(fre=240) if(swth=0) p1=sin100wav_index+;if(swth=1) p1=tra100wav_index+;if(swth=2) p1=puls100wav_index+;if(wav_index=100) wav_index=0; */void timer1()interrupt 3 th1 = 216; tl1 = 240; switch(clock_flag) case 1:led1();break; case 2:led2();break; case 3:led3();break; /case 4:led4();break; defa

温馨提示

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

评论

0/150

提交评论