1、智能仪器设计报告目录一、 设计要求说明二、 电路设计思想三、 硬件设计(1) 温度传感器及其信号调理电路(2) 键盘接口电路与报警电路(3) 显示接口电路(4) 微型打印机接口(5) 总电路设计四、 软件设计(1) 监控程序设计(2) 自检程序设计(3) A/D转换与计算程序设计(4) 显示子程序设计(5) 键盘处理子程序(6) 打印程序五、 实验感想六、 各芯片引脚及参考文献七、 附录:程序清单一、设计要求说明一路水温或环境温度检测, 误差:0.5;温度3位数码显示(XX.X);工作状态指示(如加热器工作指示);开机自检;配简单键盘,如温度上、下限临界报警值设置;配微型打印机接口;配置通信接
2、口。二、电路设计思想实验过程采用自顶向下的设计思想,先考虑整体目标,明确任务,把整体分解为一个个子任务,并考虑子任务之间的关系。这样就把较大的、复杂的、难解决的问题分解成若干个小的、简单的、易解决的问题。本系统首先单独设计各个功能模块,分模块测试后,最后将其组合调试,完成整个电路的设计。整个仪器采用89C51单片机为核心,以MTS102作传感器进行温度信号的采集。本次设计的系统具有以下几个功能模块:(1)温度传感器及其信号调理电路 采用MTS102作传感器进行温度采集,并利用激励电路、补偿电路和放大电路构成调理电路,输出与温度成线性关系的电压。(2)A/D接口电路 利用ADC0809进行AD转
3、换,将输入电压模拟信号转换为数字量,便于单片机处理。(3)键盘接口电路 利用8279进行键盘扫描,可靠性高,实现高温报警设置、中断打印功能。(4)温度显示电路 利用四位一体的共阳极数码管显示XX.X的温度显示,减少了段选线的条数,简化电路。(5)打印机接口电路 采用查询方式判断微型打印机GP16是否忙,若不忙则将单片机传送过来的数据打印。(6)报警部分 当当前温度值大于键盘所设定的上限值时,发光二极管亮并发出报警声。三、硬件设计(1)温度传感器及其信号调理电路本设计采用MTS102二极管作为温度传感器,激励和放大电路采用REF2000电流源及OPA1013双运放来实现。设测温范围为050,调节
4、电阻使50时对应为5V,因为该传感器是线性的,则050对应的输出电压为05V。图3.1 温度传感器信号调理电路(2)A/D采集 AD转换器采用ADc0809,ADc0809是8路的AD转换器,输入电压对应着的它的量化值0255,也就是对应温度的050。 本设计采用查询的方式来判断A/D是否转换完毕。查询到转换完成后,则进行数据读操作。当AD转换器转换地址和RD非信号同时有效是,选通OE,且转换数据送入到数据总线,由89C51读入。图3.2 A/D采样(2)键盘接口电路与报警电路图3.3键盘接口电路图3.4 报警电路(3)显示接口电路图3.5 显示接口电路(4)微型打印机接口微型打印机GP16中
5、有三态锁存器,在CS非和WR非的控制下能锁存CPU总线上得数据,三台门又能与CPU实现隔离,故GP16与8051自间不需要外加锁存器。图中,BUSY信号接到单片机的P2.1假,用来查询打印机是否空闲,该打印机的选通地址为0FFFFH。图3.6 微型打印机接口电路(6) 总电路设计将各个模块组合起来,得到如图下的总电路。图3.7 总体电路原理图四、软件设计程序设计工作的主要任务是把已经转换的电压量转换为电压量的温度信号经过A/D转换变为数字量,进行判断和报警等处理;然后,再通过编程计算得到的温度的BCD码,最后送LED显示。1s的定时时间由定时器T0采用中断方式实现。通过键盘申请外部中断,打印机
6、的工作通过外部中断INT0实现;报警上限值的设定通过外部中断INT1实现。(1) 监控程序设计监控程序流程图(2) 自检程序设计 为了检查数码管的好坏,需对数码管进行自检。方法是先令所有字段全亮再令其全灭,检出数码管的输出是否正常。(3) A/D转换与计算程序设计1. 温度采集与计算程序本设计中的温度信号是否转换完毕是通过P2.2脚查询EOC输出的方法来判断的。当EOC=1时,转换完毕。转换后的数字量放在累加器A中,这是1字节二进制数,先用它与温度上限比较,根据比较的结果设置相应的报警标志位。比较处理完毕,还需进行物理量与数字量的变换,即标度变换。标度变换值应该为B=50.0/255,为了达到
7、转换精度,即为能精确显示到小数点后一位的值,则计算公式应修改为T=D*10*B=D*10*50.0/255(D为采集的数字量),所以变换后的温度实际最大值为500.2. 温度值转换为BCD码子程序经过标度变换后的温度值为十六进制,为了满足LED显示,需要变换为BCD码用于显示。(4)显示子程序设计(4) 键盘处理子程序S2按下后,申请外部中断INT1,所以S3,S4,S5的键盘处理程序即为外部中断1的中断处理程序。(5) 打印程序 S1按下后,申请外部中断INT0,所以打印程序即为外部中断0的中断处理程序。五、实验感想 由于考研,此次课程设计的时间很赶,在紧张的二周时间内,我们组完成了软件程序
8、的编写,电路板的搭建和电路的调试。在这次课程设计中,我主要负责电路调试部分。虽然之前,我们也进行过类似于传感器设计的课程设计,但是在此次智能仪器设计的过程还是发现了很多问题。 我发现电路搭建的好坏直接决定了电路调试的成功与否,在芯片引脚和对应的管脚之间的连接应该很认真。比如,在检查数码管的好坏过程中,由于我们采用的是四位一体的ARK SR420561K,和之前的常用的数码管的引脚不一样,所以在调试的时候数码管显示不正确,在改正好连线后显示正常。 通过此次课程设计,我发现了理论联系实际的重要性。一些本来就仅仅了解或者根本不会的东西,在自己和大家的一起研究和讨论下,也弄懂不少。学习是个没有止境的过
9、程,在之后的学习过程更应该不断充实自己。 六、各芯片引脚及参考文献(1)各芯片引脚(2)参考文献1 赵新民,王祁.智能仪器设计基础M.黑龙江,哈尔并工业大学出版社,1999. 2 张俊谟.单片机中级教程,原理与应用M.北京,北京航空航天大学出版社,2002.3 袁鹏平,何志刚,罗开玉.快速精通Altium Designer 6电路图和PCB设计M.北京,化学工业出版社,2009.4 周严.数字化测量系统M.北京,北京理工大学出版社,2011.5 周严.测控系统电子技术M.北京,科学出版社,2007.6 寇戈,蒋立平.模拟电路与数字电路(第2版)M.北京,电子工业出版社,2009.八、 附录:程
10、序清单 ORG 0000H SJMP MAIN ORG 0003H AJMP INT_0 ORG 000BH AJMP TIME ORG 0013H AJMP INT_1 MAIN: CLR EA MOV DPTR, #7FFFH ;8279命令状态口地址7FFFH MOV A, #09H MOVX DPTR, A MOV A, #34H ;ALE12MHz经20分频得100KHz MOVX DPTR, A MOV A, #0DFH ;清零 MOVX DPTR, A WAIT: MOVX A, DPTR JB ACC.7, WAIT MOV TMOD,#01H ;定时器0模式控制字 MOV T
11、H0,#0FEH MOV TL0,#0CH SETB TR0 ;定时器0启动 SETB IT0 ;下降沿触发 SETB IT1 SETB EA ;全局中断使能 SETB ET0 ;定时器0中断使能 SETB EX0 ;INT0中断使能 ;SETB EX1 MOV DPTR,#3FFFH MOV A,0F9H MOVX DPTR,A MOV A,0F9H MOVX DPTR,A MOV A,0F9H MOVX DPTR,A MOV A,0F9H MOVX DPTR,A MOV R0,#10H MOV 30H,#0 MOV 31H,#0HI: AJMP $ INT_0: PUSH DPH PUSH
12、 DPL MOV DPTR, #3FFFH MOVX A, DPTR ANL A, #3FH MOV DPTR, #KEYTAB MOVC A, A+DPTR MOV DPTR, #DISTAB MOVC A, A+DPTR MOV DPTR,#3FFFH MOVX DPTR, A NOP POP DPL POP DPH RETI TIME: CLR TR0AD: MOV DPTR,#9FFFH MOV A,#00H MOVX DPTR,A NOP NOP NOP SETB P3.3EOC: MOV A,P3 JNB ACC.3,EOC MOV DPTR,#9FFFH MOVX A,DPTR
13、ADD A,30H MOV 30H,A MOV A,31H ADDC A,#0 MOV 31H,A DJNZ R0,BACK SWAP A ANL A,#0F0H MOV 31H,A MOV A,30H SWAP A ANL A,#0FH ADD A,31H MOV R0,#10H MOV 30H,#0 MOV 31H,#0 MOV B,A MOV DPTR,#7FFFH MOV A,#90H MOVX DPTR,A MOV A,B LCALL CHANGE MOV TH0,#0FEH MOV TL0,#0CHBACK: SETB TR0 RETIINT_1: RETI CHANGE: CLR
14、 EA MOV B,#51 DIV AB MOV DPTR, #DISTAB_DOT MOVC A, A+DPTR MOV DPTR,#3FFFH MOVX DPTR, A MOV A,B MOV B,#10 MUL AB MOV 32H,B MOV B,#51 DIV AB MOV 33H,B MOV B,32H MOV 32H,A MOV A,B XRL A,#0 JZ NEXT MOV A,32H ADD A,#5 INC 33H MOV 32H,A NEXT: MOV A,32H MOV DPTR, #DISTAB MOVC A, A+DPTR MOV DPTR,#3FFFH MOVX
15、 DPTR, A MOV A,33H MOV B,#10 MUL AB MOV 32H,B MOV B,#51 DIV AB MOV 33H,B MOV B,32H MOV 32H,A MOV A,B XRL A,#0 JZ NEXT1 MOV A,32H ADD A,#5 INC 33H MOV 32H,ANEXT1: MOV A,32H MOV DPTR, #DISTAB MOVC A, A+DPTR MOV DPTR,#3FFFH MOVX DPTR, A MOV A,33H MOV B,#10 MUL AB MOV 32H,B MOV B,#51 DIV AB MOV 33H,B MO
16、V B,32H MOV 32H,A MOV A,B XRL A,#0 JZ NEXT2 MOV A,32H ADD A,#5 INC 33H MOV 32H,ANEXT2: MOV A,32H MOV DPTR, #DISTAB MOVC A, A+DPTR MOV DPTR,#3FFFH MOVX DPTR, A SETB EA RET KEYTAB: DB 01H, 02H, 03H, 0AH DB 00H, 00H, 00H, 00H DB 04H, 05H, 06H, 0BH DB 00H, 00H, 00H, 00H DB 07H, 08H, 09H, 0CH DB 00H, 00H
17、, 00H, 00H DB 0FH, 00H, 0EH, 0DH DISTAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H DB 92H, 82H, 0F8H, 80H, 90H ;09 DB 088H, 083H, 0C6H, 0A1H, 86H, 08EH ;AF ;DB 08CH, 0C1H, 0C7H, 07FHDISTAB_DOT: DB 040H, 079H, 024H, 030H, 19H DB 12H, 02H, 078H, 00H, 10H ;09 END_;调试8279 ORG 0000H LJMP MAIN ORG 0003H LJMP JIANPAN
18、 ORG 0100HMAIN: MOV SP, #5FH ;设置堆栈指针 CLR EA MOV DPTR, #0BFFFH ;指向命令/状态口 MOV A, #00H ;置键盘/显示器工作方式命令字 MOVX DPTR, A ;送入命令字 MOV A, #2AH ;置分频命令字 MOVX DPTR, A ;送入命令字 MOV A, #40H ;置读FIF0 RAM命令字 MOVX DPTR, A ;送入命令字 MOV 51H, #03H ;设定温度为3位 SETB EA SETB EX1LOOP: SJMP $ ;等待中断 ORG 0003HJIANPAN: CLR EA ;关闭所有的中断 P
19、USH ACC PUSH PSW MOV R7, 51H MOV DPTR, #0BFFEH ;指向数据口 MOVX A, DPTR ;读入键值编码 CJNE R7, #03H,ATT2ATT1: MOV R0, #70H ;键值存放首地址 MOV DPTR, #KEYTAB1 ;DPTR指向键符表 MOVC A, A+DPTR ;查找键值 MOV R0, A DEC 51H SJMP OUT0ATT2: CJNE R7, #02H, ATT3 MOV R0, #71H MOV DPTR, #KEYTAB1 ;DPTR指向键符表 MOVC A, A+DPTR ;查找键值 MOV R0, A D
20、EC 51H SJMP OUT0ATT3: MOV R0, #72H MOV DPTR, #KEYTAB1 ;DPTR指向键符表 MOVC A, A+DPTR ;查找键值 MOV R0, A MOV 51H, #03HOUT0: POP PSW POP ACC SETB EA ;打开所有中断 RETIKEYTAB1:DB 0FFH,04H,01H,00H,07H,0FFH,0FFH,0FFH DB 0FFH,05H, 02H, 13H, 08H, 0FFH, 0FFH, 0FFH DB 0FFH, 06H, 03H, 0AH, 09H, 0FFH, 0FFH, 0FFH DB 0FFH, 0C
21、H, 0DH, 0EH, 0BH, 0FFH, 0FFH, 0FFH ;DB FFH, 10H, 11H, 12H, 0FH, FFH, FFH, FFHKEYTAB2:DB 0FFH,04H, 07H, 0EH, 01H, 0FFH, 0FFH, 0FFH DB 0FFH, 05H, 08H, 00H, 02H, 0FFH, 0FFH, 0FFH DB 0FFH, 06H, 09H, 0FH, 03H, 0FFH, 0FFH, 0FFH DB 0FFH, 0BH, 0CH, 0DH, 0AH, 0FFH, 0FFH, 0FFHEND_;调试键盘ORG 0000HLJMP MAINORG 00
22、13HLJMP JIANPANORG 0100HMAIN:MOV SP, #5FH ;设置堆栈指针CLR IT1CLR EAMOV DPTR, #0BFFFH ;指向命令/状态口MOV A, #0D1H ;置总清除命令MOVX DPTR, A ;总清除命令送入LP: MOVX A, DPTR ;读入状态字节 JB ACC.7, LP ;等待清除MOV A, #00H ;置键盘/显示器工作方式命令字MOVX DPTR, A ;送入命令字MOV A, #34H ;置二十分频命令字MOVX DPTR, A ;送入命令字MOV A, #40H ;置读FIF0 RAM命令字MOVX DPTR, A ;送
23、入命令字MOV 90H, #03H ;设定温度为3位SETB IT1SETB EASETB EX1LOOP: SJMP LOOP ;等待中断ORG 0160HJIANPAN:CLR EA ;关闭所有的中断PUSH ACCPUSH PSWMOV R7, 90HMOV DPTR, #0BFFEH ;指向数据口MOVX A, DPTR ;读入键值编码CJNE R7, #03H,ATT2ATT1:MOV R0, #10H ;键值存放首地址MOV DPTR, #KEYTAB1 ;DPTR指向键符表MOVC A, A+DPTR ;查找键值MOV R0, ADEC 90HSJMP OUT0ATT2: CJN
24、E R7, #02H, ATT3 MOV R0, #11HMOV DPTR, #KEYTAB1 ;DPTR指向键符表MOVC A, A+DPTR ;查找键值 MOV R0, A DEC 90H SJMP OUT0ATT3: MOV R0, #12HMOV DPTR, #KEYTAB1 ;DPTR指向键符表MOVC A, A+DPTR ;查找键值 MOV R0, A MOV 90H, #03HOUT0: POP PSW POP ACC SETB EA ;打开所有中断 RETIKEYTAB1: DB 0FFH, 01H, 04H, 07H, 0EH, 0FFH, 0FFH, 0FFH DB 0FFH, 02H, 05H, 08H, 00H, 0FFH, 0FFH, 0FFH DB 0FFH, 03H, 06H, 09H, 0FH, 0FFH, 0FFH, 0FFH DB 0FFH, 0AH, 0BH, 0CH, 0DH, 0FFH, 0FFH, 0FFH END_
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1