《电气课程设计.docx》由会员分享,可在线阅读,更多相关《电气课程设计.docx(33页珍藏版)》请在三一办公上搜索。
1、1 设计任务书 02 基于单片机消毒柜控制电路设计 1系统的组成及工作原理 1系统设计要求 2 1系统组成框图 1系统工作原理 3 1错误!未定义书签硬件电路设计 方案论证 2方案确定 3单片机最小系统设计 3温度转换与放大电路 4数模转换电路 7温度控制电路 8显示模块 9系统软件设计 错误! 未定义书签系统软件设计原理 7 10中断服务程序设计 8 11系统子程序设计 12仿真结果与分析 18参考文献 : 20附录 3: 211 设计任务书1. 设计任务设计一台消毒柜控制系统2. 设计要求(1) 显示消毒柜温度、保持时间;(2) 可以键盘设定消毒柜温度、定时时间;(3) 可以实现实时中断功
2、能;(4) 消毒后自动关机;测温误差:c:(6) 定时误差: f 0C 时R vv Ri Ro(R0 RR1 R0R0 )R1 R0VDD ( R ) VDDR1 R0(2-6)取 T=100C 时,Rt =Q, RiR2=10KR0=100Q, VDd= 12V138.5U严1210 103 1000.0457V(2-7)U(R0R0)V DD 0R1 R0 R1 R0所以,当温度T变化在0100C时,AU的变化范围是0 测量放大电路第二级三运放结构的测量放大器由两级组成,两个对称的同相放大器构成第一级, 为差动放大器一减法器,如图2-7所示。图2-7测量放大电路设加在运放Ai同相端的输入电
3、压为V 加在运放A同相端的输入电压为V?,若A、Ig RV1V1V2Rg(2-9)A、A都是理想运放,则 Vi=V4, V 2=V5Ig(2-8)Rg(2-10)所以,测量放大器第一级的闭环放大倍数为:Af 1(1R1RgR2(2-11)整个放大器的输出电压为:VoV6-7-ReR7(1星、/ R5R4)V3R4(2-12)为了提高电路的抗共模干扰能力和抑制漂移的影响,应根据上下对称的原则选择电阻,若取Ri=F2, Ri=F6,Rs=F7,则输出电压为:R4(1詈V2)評V6)(2-13)第二级的闭环放大倍数:Af 2RsR4(2-14)整个放大器的闭环放大倍数为:(12R1) RsRg)R4
4、(2-15)若取 R.=F5=F6=F7,则 V0=V6-V3, Af2=-1(2-16)Af (1 字)Rg由上可看出,改变电阻RG的大小,可方便的调节放大器的增益,在集成化的测量放 大器中,矗是外接电阻,用户可根据整机的增益要求来选择Rs的大小。此外,由上述推导可见,输出电压Vo与输入电压的差值是正比,所以在共模电压作 用下,输出电压VO为0,这是因共模电压作用在 Rs的两端不会产生电位差,故 Rs上不 存在共模分量对应的电流,也就不会它的输出,即使共模输入电压发生了变化,也不会 引起输出。因此,测量放大器具有比较高的共模抑制能力,通常选取Ri=R,其目的是为了抵消A1和A2本身共模抑制比
5、不等造成的误差和克服失调参数及其漂移的影响。然而,对高流共模电压,一般接法的测量放大器不能完全抑制,在实际应用中,常 采用驱动屏蔽技术来克服高流共模电压的影响。数模转换电路数模转换电路是以ADC0809为核心的A/D转换电路,如图2-8所示。图2-8数模转换电路在使用ADC0809进行模数转换时,应注意以下问题:A. ADC0809的零点不用调整。满刻度调整时,先给输入端加入电压,使满刻度所 对应的电压值是:VINVmax1-5VmaxVmin256(2-17)式中VlN +表示实际输入电压值;Vmax表示输入电压的最大值;Vmin表示输入电压的最小值;当输入电压与Vn+值相当时,调整VREF
6、2端电压值使输出码为FEH或者FHoB. 参考电压的调节。在使用 A/D转换器时,为保证其转换精度,要求输入电压满 量程使用。如输入电压动态范围较小,则可调节参考电压,以保证小信号输入时ADC0809 芯片8位的转换精度。C. 接地。模数、数模转换电路中要特别注意到地线的正确连接,否则干扰很严重,以至影响转换结果的准确性。A/D、D/A及取样保持芯片上都提供了独立的模拟地 (AGND 和数字地(DGND的引脚。在线路设计中,必须将所有的器件的模拟地和数字地分别连 接,然后将模拟地与数字地仅在一点上相连。其中:Vin(+)为模拟电压输入端,A-GND为模拟地,作为输入模拟电压和基准电压 基地端的
7、接地参考点。VREF为基准电压输入端,接 MC1403提供稳定的参考电压。 WR 和RD接89C51的读写端。ADC0804S数据采集系统中的工作过程:采集数据时,首先 微处理器执行一条传送指令,在该指令执行过程中,微处理器在控制总线的同时产生 CS WR低电平信号,启动A/D转换器工作,ADC0804经100us后将输入模拟信号转换为数 字信号存于输出锁存器,并在等待转换结束后,通知微处理器可来取数。微处理器立即 执行输入指令,以产生CS RD低电平信号到ADC0804相应引脚,将数据取出并存入存 储器中。整个数据采集过程中,由微处理器有序的执行若干指令完成。本次设计在AD采样部分电路设计没
8、有选用中断方式,因为在加热装置选取的部分, 选用的为小功率加热器,在一定时间内温度的变化不是很明显。在本系统实时要求不是 很高情况下,采用延时方式对系统执行速度影响不是很大。温度控制电路图2-9温度控制电路本设计采用的是单片机利用 PWM波来控制加热的温控电路,其电路图如图 2-9所示,由两级三极管放大电路组成,第一级放大采用9014三极管,其放大倍数可达1000 以上,而第二级采用大功率的达林顿管TIP122,当脚输出低电平时,三极管导通,控制加热器进行加热。TIP122是大功率三极管,当VCe=3V, Ic=时,其放大倍数为Hfe=1000。其等效电路见图2-10。图2-10 TIP122
9、等效电路显示模块图2-11 HD7279的管脚图HD7279是一种管理键盘和LED显示器的专用智能控制芯片。HD7279的管脚图如图2-11。DIG0DIG7和SSG是64键盘的列线和行线端口,完成对键盘的监视,译码和键值 的识别。在8X8阵列中每个键的键码是用十六进制表示的,可用读键盘数据指令读出, 其范围是00H-3FH HD7279与微处理器仅需4条接口线,其中CS为片选信号(低电 平有效)。当微处理器访问HD727(读键号或写指令)时,应将片选端置为低电平。DATA 为串行数据端,当向HD7279发送数据时,DATA为输入端;当HD7279输出键盘代码时, DATA为输出端。CLK为数
10、据串行传送的同步时钟输入端,时钟的上升沿表示数据有效。 KEY为按键信号输出端,在无键按下时为高电平;而有键按下时此引脚变为低电平并且 一直保持到键释放为止。Rc引脚用于连接HD7279的外接振荡元件,其典型值R=Q,C=15pF。RESETS复位端。 该端口由低电平变成高电平并保持 25ms即复位结束。通常,该端口接+5V即可。DIG0 DIG7分别为8个LED管的位驱动输出端。SASG分别为LED数码管的A段G段的输出 端。DP为小数点的驱动输出端。HD7279片内具有驱动电路,它可以直接驱动1英寸及以下的LED数码管,使外围电路变得简单可靠。 A-G和DP为显示数据,分别对应7段 LED
11、数码管的各段。当对应的数据位为 1时,该段点亮,为 0时则不亮。此指令 灵活,通过造字形表,可以显示用户所需的字符。字形码表如表2-12所示:表2-12 7279字形表显示字符显示码显示字符显示码07EH87FH130H97BH26DHg5FH379Ho1DH433Hd3DH55BHP67H65FHL16H770H熄火码00HHD7279键盘显示电路如图附录 2。系统软件设计系统软件设计原理本程序中使用TO定时器启动A/D转换0809,用T0产生100ms的定时,晶振为6MHz 记数脉冲周期T=2us,设定时初值为X, (2M6-X)*2us=100ms,X=3CB0H所以TH0=3CH TL
12、0=0B0H用INT1中断处理,当0809转换完成后,从P0 口读数、再转换成十进制数、 送显缓区、再根据键盘扫描的结果对温度值进行比较判断,当按下的键是加热功能键时,系统要控制加热器,开始加热,当温度到达 125度时停止加热,当按下保温键时,当温 度低于50度时,加热器开始加热,当温度高于 70度,停止加热,当按下停止键时;一 切动作停止。通过在主程序里面设立标志,中断程序查询标志的方法实现温度与按键的 统一和“同步”,实时的控制加热器的工作,以达到人们所要求达到的效果。主程序主要完成初始化、显示处理、送7279显示、键盘扫描以及键处理等功能,其中初始化又涉及内存单元,显缓区,堆栈,及各寄存
13、器的初始化,其流程框图见图2-13 o图2-13 主程序框图中断服务程序设计中断服务程序先保护现场后,再完成温度的采集与滤波,和加热器的控制,定时时 间的控制,定时时间采用倒计时方式,使得定时时间易于控制。中断服务程序流程框图 如图2-14。图2-14中断服务程序流程框图系统子程序设计本软件设计中,系统子程序的设计是整个程序设计的重中之重,子程序以模块化的方式实现各个独立功能,再通过主程序来调用功能子程序,使整个程序实现完整的功能。温度采样及滤波子程序温度采样及滤波子程序是先启动 ADC080游延时后对0通道采样,采样十次后,将 采样值存放于以50H为首址的内存单元中。采样完成后,调用滤波子程
14、序,先去最大值, 去最小值,再求平均值,从而得到比较准确的采样值。其流程框图如图 2-15所示。图2-15 采样滤波子程序流程框图在滤波程序中,利用冒泡法,逐个比较找出最大值与最小值并去掉,将各个值移位 到50H57H中,再将50H57H勺8个采样值相加,求平均值,保存到 5AH中,至此就得 到了比较准确,消除了干扰后的稳定的温度采样值。显示处理子程序9显示处理主要完成将要显示的字符查表得到其字形码后送到7279显示模块显示出来。7279采用串行接口,每发送一位都要延时,且要对其初始化后才可能正确地显示。显示处理子程序流程框图如图2-16所示。消毒子程序主要 断计时时间到达否, 所示。显缓指针
15、R0显示码R1、循 环次数R7初始化发显示码到7279,并延时 25us1FR0单兀内容查表,将得到的 字形码发送至72791延时8us,去除片选信 号,修改R0和R1置CS为低电平,并延时50us图2-16显示处理子程序流程框图是将消毒标志置为1,将保温标志置为0,再点亮消毒指示灯,判到达则关加热器,没到则开加热器。消毒子程序流程框图如图2-17保温子程序主要用于当用户按下保温键时对系统进行保温。先点亮保温指示灯,置保温标志为1,再判断倒计时是否到0,若没到则再检测当前系统的温度是否在50-70度之间,大于70度时关加热器,小于50度时开加热器。若倒计时归零时,直接停止保 温,其流程框图如图
16、2-18所示。开始图2-18 保温子程序流程框图停止子程序主要在用户按下停止键以后被调用,停止子程序运行后将消毒、保温标志置零,将消毒、保温指示灯熄灭,关闭加热器,再让键盘重新显示PGOC。其流程图如图2-19所示。标志03H、04H置零,清 除消毒、保温标志TR0置零,停止计时丁关指示灯和加热器丁6AH送 RO, 45H 送 R1,04H 送 R7( 开始键盘处理主要是不断的扫描7279模块中的键盘,若有键按下时,则根据得到的键R(送 R1图2-19 停止子程序流程框图值查表求出其键号,将键号存放于寄存器 ACC中供主程序处理。其流程图如图 2-20所 示。图2-20键盘处理子程序流程图仿真
17、结果与分析HD7279键盘显示电路电路原理图经过详细的硬件调试和软件调试之后, 系统工作正常, 7279模块 8位数码管前三位 实时显示当前温度在 000-150 范围内,第四位显示“ - ”,后四位倒计时显示分和秒。 按下“消毒键”时,系统接通加热器,点亮加热指示灯,当温度到达到 125 度时,停止 加热;按下“保温键”,当温度低于 50 度时,系统启动加热,当温度高于 70 度时,系 统停止加热;按下“停止键”时,系统回到初始状态。若按下“校时键”,输入 2 位数字后,再按“确认键”,则系统启动定时,倒计时 显示当前时间,当时间走到时,系统复位,停止消毒 / 保温。3 参考文献 :1 张友
18、德:单片微型机原理、应用与实验,上海复旦大学出版社, , P7-P212 陈黎娟、聂鹏程:单片微型计算机实验教程,南昌航空大学, P17-P323 沈美明、温冬婵:IMB PQ匚编语言程序设计,清华大学出版社,P12-P224 吴金戍、郭庭吉:89C51单片机实践与应用,清华大学出版社,P132-P1435 王福瑞:单片微机测控系统设计大全,北京航空大学出版社,P7-P156 何立民:单片机应用技术选编,北京航空航天大学出版社,2001, P18-P437 邬宽明:单片机外围器件实用手册,北京航空航天大学出版社,1998, P56-P768 鲍健等:用单片机直接驱动液晶显示器,量子电子学报,P
19、32-P429 王春林:中国电子报第四版 . 中国电子报社, , P43-P54附录 3:源程序ORG 0000H LJMP MAIN_1 ORG 000BH LJMP INT_T0 MAIN_1:MOV SP,#67HMOV R7,#50HMOV R0,#20HM_0: CLR A MOV R0,A INC R0 DJNZ R7,M_0 ACALL CHUSHI MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#3CH MOV IE,#82H CLR CLR TR0MAIN_2:ACALL DIR_0 LCALL DIR LCALL HOT_NOT LCALL A_D
20、 LCALL KEYCJNE A,#0FFH,M_1SJMP MAIN_2 M_1: CJNE A,#0AH,M_2 M_2: JNC M_3ACALL SKEY SJMP MAIN_2M_3: CJNE A,#0AH,M_4ACALL MKEY_1 SJMP MAIN_2 M_4: CJNE A,#0BH,M_5ACALL MKEY_2 SJMP MAIN_2 M_5: CJNE A,#0CH,M_6;主程序入口地址;跳入主程序;中断入口地址;跳入中断子程序 ;堆栈段地址;清工作单元 ;调用初始化子程序 ;定时器 T0;定时器赋初值;开中断;指示灯初始化;不启动定时;调显示处理子程序 ;调显
21、示程序;调温度控制子程序;调采样子程序 ;调键盘扫描程序;判断是否有键按下 , 若有则跳M_1;跳转到 MAIN_2;判断键号是否与0A相等,不相则转M_2 ;键号大于0A转M_3;小于则调用数键处理程序 ;跳转到 MAIN_2;判断键号是否与0A相等,不 等则转 M_4;调用定时键子程序;跳转至 MAIN_2;判断键号是否与0B相等,不 等则转 M_5 ;相等则调用确定键子程序 ;跳转到 MAIN_2 ;判断键号是否与0C相等,不等则转 M_6ACALL XIAODU SJMP MAIN_2 M_6: CJNE A,#0DH,M_7ACALL BAOWEN SJMP MAIN_2 M_7:
22、CJNE A,#0EH,M_8ACALL STOP M_8: SJMP MAIN_2 A_D: MOV R0,#50H MOV R7,#0AHMOV DPTR,#0A000H LP7: MOVX DPTR,AMOV R6,#1EH DJNZ R6,$ MOVX A,DPTR MOV R0,A INC R0 DJNZ R7,LP7 ACALL FMAX ACALL FMIN ACALL AVG MOV A,5AH MOV B,#100 MUL AB MOV A,B MOV 60H,A LCALL ER_SHI RETER_SHI: MOV A,60H MOV R0,#42H MOV R7,#3L
23、P: MOV B,#0AHDIV AB XCH A,B MOV R0,A XCH A,B DEC R0 DJNZ R7,LP RETFMAX: MOV R7,#09HMOV R0,#50H LP11: MOV A,R0;若相等则跳转到消毒子程序;跳转到 MAIN_2;判断键号是否与0D相等,不 等则跳转到 M_7 ;若相等则调用保温子程序跳转到 MAIN_2;判断键号是否与0E相等,不 等则转到 M_8 ;调用停止子程序 ;跳转到 MAIN_2 ;建立存放采样值单元首地址 ;采样次数; 0 通道地址;启动 A/D 转换;延时 120 微秒;采样 ;采样值放 R0 所指单元 ;修改地址 ;采样
24、10 次;调用去最大值子程序;调用去最小值子程序;调用求平均值子程序;滤波值存放于 A 中 ;最高温度设为 100 度; 0 到 100 显示;采集的温度值存放于 A 中 ;二进制转化为十进制 ;返回;温度值送 A;显缓区首地址 ;循环次数为 3 ; 10 送寄存器 B;修改指针;循环 3 次;循环次数为 9;滤波值放入以 50H 为首的单元 ;取第一个数放 A 中;指向第二个数;清进位标志;第 1、2 个数比较;若小于则转到 DONE;修改指针;交换;循环比较;子程序结束;去最小值程序;取数;第 1 个数放入 A 中;地址加 1;清借位;比较第 1、2 个数;A中数大,没借位转;大数放 A
25、中;地址减 1;大数放A中;地址再加 1;记数值不为零,继续比较INC R0 CLR C SUBB A,R0 JC DONE MOV A,R0 DEC R0 XCH A,R0 INC R0 MOV R0,A DONE: DJNZ R7,LP11 RETFMIN: MOV R7,#08HMOV R0,#50HLP1: MOV A,R0 INC R0 CLR C SUBB A,R0 JNC DONE1 MOV A,R0 DEC R0 XCH A,R0 INC R0 MOV R0,ADONE1: DJNZ R7,LP1 RETAVG: MOV R7,#08H MOV R6,#03H MOV R0,#
26、50H MOV R3,#00H MOV R4,#00HLP2: MOV A,R0 ADD A,R4 MOV R4,A MOV A,R3 ADDC A,#00H MOV R3,A INC R0DJNZ R7,LP2LP3: MOV A, R3 RRC A MOV R3,A MOV A,R4 RRC A MOV R4,A;求平均值子程序;取数;清存放和的单元;取第 1 个数;把第1个数放R4中; 4 中放和的底位;加进位;和放入R3中;地址加 1;记数器不为零,循环DJNZ R6,LP3MOV 5AH,R4RETCHUSHI: CLRMOV R6,#0CH DJNZ R6,$ MOV A,#0A4
27、H ACALL STFS MOV R6,#2 DJNZ R6,$ SETB;查 - 字符;查good字符;初始化定时单元 ;初始化加热指示灯;显示处理MOV 43H,#0AH MOV 44H,#0BH MOV 45H,#0AH MOV 46H,#0DH MOV 47H,#0EH MOV 35H,#60H CLRRETDIR_0: JB 01H,D_1 JNB 02H,D_1 CLR 02H MOV R0,#44H MOV A,35H ACALL A_R0 MOV A,31H ACALL A_R0D_1: RETA_R0 : MOV R2,A SWAP A ANL A,#0FH MOV R0,A
28、 INC R0 MOV A,R2 ANL A,#0FH MOV R0,A INC R0 RETSKEY: JNB 01H,S_2 MOV R0,22HMOV R0,AINC 22HMOV A,22HCJNE A,#46H,S_1 S_1: JC S_2MOV 22H,#44H S_2: RET;A中放键值;指向下一个数码管STOP: CLR TR0CLR 03HCLR 04HCLRSETBCLRCLRMOV 44H,#0BHMOV 45H,#0AHMOV 46H,#0DHMOV 47H,#0EH RET;停止定时;停止加热;停止保温 ;指示灯熄灭 ;加热膜停止加热;显示 goodMKEY_1:
29、SETB TR0 SETB 01H MOV 22H, #44H RETXIAODU:SETB 03H CLR 04H CLR SETB SETB RETBAOWEN: SETB 04HCLR 03HCLR 05HSETBRETMKEY_2: JNB 01H,ML0 MOV R0, #44H MOV A,R0 ANL A,#0FH SWAP A;键按下,执行消毒;保温键按下,执行保温;换区;中断次数加 1;秒减 1;分减 1MOV R2, A INC R0MOV A, R0ANL A, #0FHORL A, R2MOV 35H,A CLR 01HDEC 35HMOV 31H,#59HSETB T
30、R0 ML0: RETINT_T0: PUSH ACCPUSH PSWMOV PSW, #08HMOV TL0,#0B0HMOV TH0,#3CH INC 30HMOV A,30HCJNE A,#0AH,L2L2: JC L6SETB 02HMOV 30H,#00HMOV A,31HADD A,#99H DA AMOV 31H,A JNZ L6MOV 31H,#59HMOV A,35HADD A,#99H DA AMOV 35H,AJNZ L6CLR 02HMOV 35H,#00H LCALL STOPL6: POP PSWPOP ACCRETIHOT_NOT: JB 03H,LL0 JB 0
31、4H,LL2 AJMP LL8 LL0: MOV A,60H;加热标志为 1 则转 LL0;保温标志为 1 则转 LL2 ;跳转到 LL8;温度值送 ACJNE A,#50H,LL1;温度值与 80度比较, 不相等 LL1LL1:JC LL 9;小于则转 LL9SJMP LL7;跳转到 LL7LL2:MOV A,60H;温度值送 ACJNE A,#3CH,LL3;温度值与 60度比较, 不相等转LL3LL3:JC LL4;小于则转到 LL4SETB;置 1, 不加热CLR;置 0, 加热指示灯熄灭CLR 05H;停止标志为 0SJMP LL8;跳转到 LL8LL4:MOV A,60H;温度值送
32、 ALL5:CJNE A,#28H,LL5JNC LL6;温度值与 40 度比较, 不相等转LL5审曰 |-frt _r A C 十 h I I C;温度大于 40 转 LL6CLRCLR 05H;小于则执行加热SETB;加热指示灯点亮SJMP LL8;跳转到 LL8LL6:CLR 05HSJMP LL8LL7:CLRSETBSJMP LL8LL9:CLRSETBLL8:RETKEY:ACALL KEY1CJNE A,#0FFH,LPP1CLR 00HRET;调用读键值子程序LPP1:JB 00H,LPP2SETB 00H ACALL KEYNUM RETLPP2:MOV A,#0FFHRET
33、; 读键值子程序KEY1: CLRMOV R6,#0CH DJNZ R6,$ MOV A,#15H ACALL STFS MOV R6,#6 DJNZ R6,$ACALL STJSSETBRETSTJS: MOV R7,#08HS_0: SETBSETBMOV R6,#02HDJNZ R6,$MOV C,RLC ACLRMOV R6,#1DJNZ R6,$DJNZ R7,S_0RET; 根据键值求键号KEYNUM :MOV B,AMOV R2,#00HMOV R7,#0FHKEY_0: MOV A,R2ADD A,#0AHMOVC A,A+PCCJNE A,B,KEY_1SJMP KEY_2KEY_1: INC R2DJNZ R7,KEY_0KEY_2: MOV A,R2RETTAB0: DB 1CH,1DH,1EH,1FH,14HDB 15H,16H,17H,0CH,0DHDB 0EH,0FH,04H,