版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子技术综合设计课程结题报告题目:多路放大与巡回测量电路教学打铃系统专业:电子信息工程(防雷方向)班级:雷电 071 班姓名:袁蛟贺晓曦指导教师:王江评分:2010 年 11 月12 日目录1 题目描述和要求 . 01.1对功能及指标的理解. 01.2系统设计思路. 02 设计说明 . 12.1 工作原理 . 12.1.1 单片机最小系统模块 . 12.1.2 显示模块 . 22.1.3 电压采集模块. 22.1.4 模数转换模块. 32.1.5 时钟模块 . 42.1.6 按键模块 . 42.2软件设计 . 62.2.1 主流程及中断流程图 . 62.2.2 与流程图相配的源程序及注解 .
2、73 调试过程 . 163.1方法 . 错误!未定义书签。3.2步骤 . 错误!未定义书签。3.2.1 硬件部分 . 163.2.2 软件部分 . 163.2.1 通道选择电压值. 173.4误差分析 . 183.5结论 . 184 总结 . 195 附件 . 191 题目描述和要求题目一:多路放大与巡回测量电路基本要求:1. 对八路不同的电压 (0-5v)进行巡回测量2. 用按键选择输入, led 数码管显示通道号和电压值3. 路输入电压调节通过1 个电位器完成。4. 测量及输出误差 5扩展要求 : 5. 设置一路 050mv 的小信号,经放大后再采集,对应显示050.0。题目二:教学打铃系
3、统基本要求:使用 ds1302 芯片计时,显示时、分,当设置的闹铃时间与实时时间相同,蜂鸣器定时打铃(或led 闪烁报警)。扩展要求:按键设置并永久保存24 组定时数据。1.1 对功能及指标的理解题目一要求对八路不同的电压进行巡回测量,并将通道和电压值输出显示到数码管上。则需要8 个阻值不同的电阻对5v 进行分压,可产生明显的梯度;再将采集到的电压经转化后显示。其中,小信号为小数点后三位数值,显示时只显示无小数点的两位值;其余电压信号显示三位有效数字。题目二要求滚动显示时间、年、月、日,选用ds1302时钟芯片。时钟显示按各个位数分别显示,最小显示单位为秒。对按键进行复用可实现系统不同功能的选
4、择。1.2 系统设计思路单片机及最小系统时钟芯片备用电源按键数码管显示电压采集模数转换图 1-1 系统框图多路放大与巡回测量电路、数字钟系统框图如图1-1 所示。系统主要由单片机、时钟芯片 ds1302、电压采集及数模转换、显示、按键几部分组成。系统上电后,默认进入时间显示状态,显示时间。通过按键可选择不同的模式。其中,时钟模式下实现实时时钟读取显示、当前时间设置调整; 电压采集模式下, 实现通道选择、电压值显示。2 设计说明2.1工作原理2.1.1单片机最小系统模块p101p112p123p134p145p156p167p178reset9rx d(p30 )10tx d(p31 )11in
5、t 0(p32 )12int 1(p33 )13t0( p34)14t1( p35)15wr(p36)16rd (p37)17xt al218xt al119gn d20p2021p2122p2223p2324p2425p2526p2627p2728psen29al e/pro g30ea /vp31p0732p0633p0534p0435p0336p0237p0138p0039vcc40jp1he ader 4x2csp34vccvccp20p21p22p23c1010u fr1210kvccc430pc530py1cry sta lp25p26p27rdwrp24p00p01p02p03p
6、04p05p06p07p10p11p12p13p14p15p16p17cba图 2-1 单片机最小系统单片机最小系统是指单片机利用自身资源,用最少的辅助元件组成一个可以工作的系统。包括电源(地) ,起振电路(晶振y2=22.1184m) ,复位电路组成。其中,晶振的两端分别接30pf 的电容到地;复位电路先接10uf 电容后在与地并联,起到滤波的作用。晶振是为单片机提供起振时间,晶振越大,单片机处理速度越快。本次设计选择22.1184m 的晶振,一个机器周期大约是1us,能够满足系统设计需求。2.1.2显示模块图 2-2 显示模块为节省资源,在这里选择的数码管是4 位共阴极数码管。在上拉电阻的
7、选择上,一般 1k 到 10k 比较合适,过大则亮度不够,过小则会烧掉数码管。电压采集模块将 5v 电源电压与一串8 个 10k 的电阻串联再在末尾串联一个1k 的电阻来调节电压。其中第一个10k 的 r0 电阻用于限流,防止5v 的电压直接接到通道选择开关 cd4051 上将芯片烧毁。从第二个电阻r1 开始,将其电流流过后的一端接到通道选择开关cd4051 上,r1-r7 阻值取 10k。最后一路电压,即通过r7 的电阻由于信号可能会太小, 导致电压值的丢失, 故将其放大 50 倍后再接到cd4051 上,所以反馈电阻r8=51k,接地电阻 r9=1k。通过按键键值的改变,控制 cd4051
8、 的地址端,就可以选择不同的电压值。r11kr210kr310kr910kr410kr1010kr710kr810k12vr51kr651kvccdata_in1data_in2data_in3data_in4data_in5data_in6data_in7data_in8321411c1acapc9x41x62x3x74x55inh6vee7c9b10a11x312x013x114x2154051capdata_in1data_in2data_in3data_in4data_in5data_in6data_in7data_in8abc图 2-3电压采集电路图2.1.3模数转换模块图 2-4模
9、数转换电路adc0804 转换器的时序如下。 cs/=0 时,允许进行转换。 wr/由低跳高时转换开始,8 位逐次比较需用 88=64 个时钟周期,再加上控制逻辑操作,一次转换需要 6673个时钟周期。当 cs/与 wr/同时有效时便启动转换,转换结束时产生信号intr/,可供输出查询或中断信号。在cs/和 rd/共同控制下可以读取转换结果数据。在转换过程中,如果再次启动转换器,则终止正在进行的转换,进入新的转换,在新的转换过程中,数据寄存器中仍保持上一次的转换结果。0804 转换器的零点无需调整,而输入电压的范围可以通过调整vref/2端处的电压加以改变。 vref 端电压应为输入电压的1/
10、2。例如输入电压范围是 0v 至 2v,则在 vref 端应加 1v,但当输入电压为0+5v 时,vref 端无需外加任何电压,而由内部电源分压得到p34rdwrvccvccref20vin (-)7lsbd b018db117vin (+)6db216db315db414a-g nd8db513db612ms bdb711vre f/29int r5cl k-r19cs1rd2cl k-in4wr3u2ad c0804p10p11p12p13p14p15p16p172.1.4时钟模块图 2-5时钟模块ds1302 是 dallas 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和 31
11、字节静态 ram ,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、日期、月、年的信息,每月的天数和闰年天数可自动调整,时钟操作可通过am/pm 指示决定采用 24 或 12小时格式。此次设计中,选用 ds1302 将大大简化时钟的实现,节约单片机资源。ds1302 可实现与单片机进行简单的同步串行方式通信,仅需用到三个口线:(1)res(复位) , (2)i/o(数据线), (3)sclk(串行时钟)。时钟/ram 的读/写数据以一个字节或多达 31 个字节的字符组方式通信。 ds1302功耗很低,保持数据和时钟信息是功耗小于 1mw。同时, ds1302双电源管脚
12、用于主要电源和备份电源供应,vcc1 为可编程涓流充电电源,附加七个字节存储器。本次设计中,考虑到单片机i/o 口的电压可能过低,不足以驱动ds1302,故将其三个管脚sclk、i/o、rst 接了上拉电阻。 r10、r11、r12 为限流电阻,取其阻值为10k。由于题目中要求数字钟能掉电保持,所以将ds1302 的一个供电管脚 vcc1 与地间接了一个电容。当电压接通时,由vcc2 为 ds1302供电;掉电时,由vcc1 为 1302 供电。通过网上资料的查阅, c1 取 100u 时,1302 的掉电保持时间可达到1 个小时,满足题目要求。2.1.5按键模块vcc21x12x2344ce
13、5i/o6sclk7vcc18s31302y2crysta lvccrdwrcsu1be llvccr13res2p24c8ca pc7ca p图 2-6按键模块此次设计中只用了三个按键, 故需按键复用才能满足题目要求。将三个按键开关 k1、k2、k3 分别接到单片机的p2.5、p2.6、p2.7。单片机上电时,系统默认显示时间;在此模式下,k2、k3 可实现年、月、日、分、秒的加和减来实现数字钟的时间设置。如果k1 按下,则进入电压采集模式;数码管会显示采到的电压值。2.1.7 元器件清单序号名称数量封装1 lm324n 1 dip14 2 cd4051be 1 dip16 3 stc89c
14、52rc 1 dip40 4 adc0804 1 dip20 5 1302 1 dip8 6 共阴数码管1 seg 7 晶振 22mhz 1 crystal 8 晶振 37khz 1 sip2 9 三极管 8050 1 sip3 10 发光二极管1 led1 11 排阻1 sip9 12 滑动变阻器1k 1 cxyp 13 10k 15 axial0.3 14 51k 1 axial0.3 15 1k 3 axial0.3 16 普通按键3 kai 17 150pf 1 rad0.1 18 30pf 2 rad0.1 19 10uf 1 rb.2/.4 s2sw -pbs1sw -pbs4sw
15、 -pbp25p26p272.2软件设计2.2.1主流程及中断流程图系统初始化有 无 按键按下时间显示模式读取 1302 时间1302 时间显示按键 1 按键 2 按键 3 时 间 或者 通 道切换数字加数字减n y 按键处理外部中断0 外部中断1 定时器中断0 定时器中断1 采集 10次电压并求平均值,显示。读定时器1 的值,关中断。返回按键扫描,取键值。初值清零,置相应的中断标志位。2.2.2与流程图相配的源程序及注解/ / 函数名:adc / / 函数功能: ad采集/ / 函数参数:无/ / 返回值:无/ / void adc() float x,y; uint current_dat
16、e; uint z; x=ut1.t; y=ut2.t; current_date=(x/y)*500; /计算采集到的电压ad_ok = 0; /设置模数转换标志归零addata=addata+current_date; /每路电压值累加if(+mean_num=10) /如果累加了 10次 mean_num=0; /采集次数归零addata/=10; /求 10次平均值if(road=0) /如果是小信号则单独处理 z = addata/5; dispbuf1 = z/100; /求电压值最高位dispbuf2 = z/10%10; /求电压值第二位dispbuf3 = z%10; /求电
17、压值最低位 /目的为了转换显示成毫伏的小信号else /处理其他路信号 dispbuf1 = addata/100; dispbuf2 = addata/10%10; dispbuf3 = addata%10; addata=0; /累加电压值归零 void display()/*两部分的显示模块 * unsigned char sect; if(state) /显示电压值 seg7+; seg7 %=4; p2|= 0 xf0; /消隐if(seg7=1&road0)p0=dispcodedispbufseg7|0 x80; else p0=dispcodedispbufseg7;
18、p2 &=dispbitseg7; else /显示时间 seg7+; seg7 %=4; p2|= 0 xf0; sect = (scan_buff1*10+scan_buff0)/3; switch(time_seting) /时间 case 0: /默认显示时间if(sect%4)=0) /显示秒 0-59 p0=dispcodescan_buffseg7; else if(sect%4)=1) /显示时、分p0=dispcodescan_buff4+seg7; else if(sect%4)=2) /显示月、日 if(seg7=2) p0=dispcodescan_buff8+
19、seg7|0 x80; else p0=dispcodescan_buff8+seg7; else if(sect%4)=3) /显示年p0=dispcodescan_buff12+seg7; break; case 1: p0=dispcodescan_buffseg7;break;/显示设置秒case 2: case 3: p0=dispcodescan_buff4+seg7;break;/显示设置时、分case 4: case 5: p0=dispcodescan_buff8+seg7;break; /显示设置月、日case 6: p0=dispcodescan_buff12+seg7;
20、break; / 显示设置年 p2&=dispbit3-seg7; /位选gettime(); / / 函数名:disposekey / / 函数功能:按键处理/ / 函数参数:无/ / 返回值:无/ / void disposekey() switch(ckeycode) case 6: /键值为“ 6” ,调整时间“加”模式 switch(time_seting) case 0: break; case 1: scan_buff0+=1; /key1 按下,秒加 1 if(scan_buff09)scan_buff0=0;scan_buff1+=1; break; case 2:
21、scan_buff4+=1; /key1 按下,分加 1 if(scan_buff49)scan_buff4=0;scan_buff5+=1; break; case 3: scan_buff6+=1; /key1 按下,时加 1 if(scan_buff69)scan_buff6=0;scan_buff7+=1; break; case 4: scan_buff8+=1; /key1 按下,日加 1 if(scan_buff89)scan_buff8=0;scan_buff9+=1; break; case 5: scan_buff10+=1; /key1 按下,月加 1 if(scan_b
22、uff109)scan_buff10=0;scan_buff11+=1; break; case 6: scan_buff12+=1; /key1 按下,年加 1 if(scan_buff129)scan_buff12=0;scan_buff13+=1; break; if(state=1)adc(); ndelaykey = 2000; /* 按住键不动,可连续产生键值, 相当于连续按键*/ break; case 5: /键值为“ 5” ,电压采集模式 if(state=0)time_seting=+time_seting%7; else road=+road%8; send_road()
23、; /调用发送通道函数,发送通道if(state=1)adc(); ndelaykey = 2000; break; case 3: /键值为“ 3” ,调整时间“减模式” if(time_seting0) switch(time_seting) case 1: scan_buff0-=1; /key3 按下,秒减 1 if(scan_buff09)scan_buff0=9;scan_buff1-=1; break; case 2: scan_buff4-=1; /key3 按下,分减 1 if(scan_buff49)scan_buff4=9;scan_buff5-=1; break; ca
24、se 3: scan_buff6-=1; /key3 按下,时减 1 if(scan_buff69)scan_buff6=9;scan_buff7-=1; break; case 4: scan_buff8-=1; /key3 按下,日减 1 if(scan_buff89)scan_buff8=9;scan_buff9-=1; break; case 5: scan_buff10-=1; /key3 按下,月减 1 if(scan_buff109)scan_buff10=9;scan_buff11-=1; break; case 6: scan_buff12-=1; /key3 按下,年减 1
25、 if(scan_buff129)scan_buff12=9;scan_buff13-=1; break; else state=(+state)%2; /第一次执行,改变 state的值settime(); break; display(); /调用显示ckeycode = 0; void main() tmod = 0 x12; /定时/计数器做定时用th1 = 0; /给定时 1 器重装初始值,工作在模式1 tl1 = 0; et1 = 1; /允许 t1 中断tr1 = 1; th0 = -200; /8 位自动重装定时器约每200us中断 1 次,4608次为 1 秒tl0 = -2
26、00; tr0 = 1; et0 = 1; /允许 t0 中断it0 = 1; /外部中断下降沿触发it1 = 1; ea = 1; /开总中断send_road(); /初始通道号码ds1302_init(); while(1) if(ckeycode) disposekey(); /响应按键操作 void t0_int() interrupt 1 ntimer+; if(ntimer = 13824) / 满 3 秒,进行秒处理 ntimer=0; road+; road%=8; send_road(); /*扫描按键 * if(ndelaykey=0) ckey = (p2 &
27、0 x0e)1; / 取键值 p21、p22、p23 if(ckey != 0 x0e)ndelaykey=100;/ 设置延迟时间削颤else bstill=0; / 是否松键标志 ,bstill=0 代表松键,此时没有按键按下clongdelay=0; / 按键长按时间 / 松键 else / 有按键利用 delaykey 按键消颤 ndelaykey-; if(ndelaykey=0) ckeycode = (p2 &0 x0e)1; / 取键值 p21、p22、p23 if(ckey != ckeycode) ckeycode = 0; display(); /调用显示函数 /
28、 / 函数名:settime / / 函数功能:设置初始时间/ / 调用: writeto1302() / / 初始时间格式:秒分时日 月 星期/ / 函数参数:无/ / 返回值:无/ / void settime() uchar i; uchar addr = 0 x80; year = scan_buff13*16+scan_buff12; month = scan_buff11*16+scan_buff10; date = scan_buff9*16+scan_buff8; hour = scan_buff7*16+scan_buff6; min = scan_buff5*16+scan
29、_buff4; sec = scan_buff1*16+scan_buff0; if(sec0 x59) sec=0; if(min0 x59) min=0; if(hour0 x24) hour=1; if(date0 x31) date=1; if(month0 x12)month=1; curtime0 = sec; curtime1 = min; curtime2 = hour; curtime3 = date; curtime4 = month; curtime5 = day; curtime6 = year; writeto1302(0 x8e,0 x00); / 控制命令 ,wp
30、=0,允许写操作/ for(i=0;i7;i+) writeto1302(addr,curtimei); / 秒 分 时 日 月 星期 年 / addr +=2; writeto1302(0 x8e,0 x80); / 控制命令 ,wp=1,写保护 / / / 函数名:gettime / / 函数功能:读取 ds1302当前时间/ / 调用: uc_r1302() / / 输入: uccurtime / / 函数参数:有(写入的字节内容 ) / / 当前时间格式:秒分 时 日 月 星期 年/ / void gettime(void) uchar i; uchar addr = 0 x81; f
31、or (i=0;i4; scan_buff12= year&0 x0f; scan_buff11 = month4; scan_buff10 = month&0 x0f; scan_buff9 = date4; scan_buff8 = date&0 x0f; scan_buff7 = hour4; scan_buff6 = hour&0 x0f; scan_buff5 = min4; scan_buff4 = min&0 x0f; scan_buff1 = sec4; scan_buff0 = sec&0 x0f; 3 调试过程3.1硬件部分检
32、查电路板, 看是否有虚焊和腐蚀不完全的地方;除此之外, 还应用欧姆表实际测试电路板,以再次确定电路板没有短路等错误。3.2软件部分利用 proteus仿真软件对软件部分进行仿真。 因为本次实验我们小组没有完成多路放大与巡回测量这部分工作, 所以数据的调试和软件测试都是通过仿真软件来完成。3.3调试数据及波形3.2.1通道选择电压值通道显示值实测值测量误差0 0.024 0.06 60% 1 0.544 0.68 20.00% 2 1.11 1.30 14.39% 3 1.80 1.93 6.37% 4 2.44 2.56 4.37% 5 3.07 3.17 2.90% 6 3.81 3.82
33、0.20% 7 4.44 4.45 0.58% 3.2.2 1302 管脚波形图(仿真)1302管脚 51302 管脚 6 1302 管脚 7 3.4误差分析由于 pcb 板制作比较生疏,焊接工艺差导致电路的工作效率不高。c 语言基础差,程序过于冗长,有很多部分都是多余的,使得电路工作效果不好。教学打铃系统采用1302 时钟芯片效果比较稳定,从波形上面看,没有出现较大偏差。3.5结论本次设计要求实现多路巡回放大电路电压的测量及显示;实时显示时间并具有掉电保持功能。我们实现了设计的基本功能及多路巡回放大电路中扩展功能的一项,同时使电压采集部分的结果有较高的精度。4 总结通过这个实验培养了在单元电路设计,系统电路分析,整机联调,计算机辅助设计和信息处理等综合方面的能力;培养和提高学生的科研素质, 工程意识和创新精神;学习一种单片机系统设计的方法;熟悉利用protel99 软件设计硬件电路;学习实物电路的电装技术;熟悉利用keil 软件编写编译 c51 源程序;学习利用万用表,示波器,信号源,电源等设备调试硬件,软件的方法;要求学生掌握硬件开发基本流程和软件开发基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《酒店消防培训》课件2
- 孕期肛门坠胀的健康宣教
- 鼻恶性肉芽肿的健康宣教
- 《计算机辅助制》课件
- 白塞氏病的健康宣教
- 睡眠呼吸暂停综合征的健康宣教
- 孕期室性早搏的健康宣教
- 激素依赖性皮炎的临床护理
- 妊娠合并淋巴瘤的健康宣教
- 急性喉气管炎的健康宣教
- 娱乐行业虚拟现实主题公园建设方案
- 公路工程合同纠纷处理与法律适用考核试卷
- 股权合作协议范本三篇
- 2023年四川省眉山市公开招聘警务辅助人员(辅警)笔试专项训练题试卷(2)含答案
- CFA固定收益证券知到智慧树期末考试答案题库2024年秋首都经济贸易大学
- 2024-2030年中国成品油行业深度调查及投资可行性研究报告
- 光伏项目达标投产实施细则-施工
- 2023年黑龙江省齐齐哈尔市龙沙区烟草专卖局公务员考试《行政职业能力测验》历年真题及详解
- 喷涂质量协议书(2篇)
- 统编版(2024)七年级上册道德与法治第三单元《珍爱我们的生命》测试卷(含答案)
- 事故隐患内部举报奖励制度
评论
0/150
提交评论