版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
接口技术综合实验 1-目录TOC\o"1-2"\f\h\z第一章实验任务书 11.1实验目的 11.2实验设备 11.3实验内容 11.4实验扩展 21.5实验要求 2第二章设计构思 22.1整体设计思路 22.2程序各部分的设计 32.2.1键盘程序的设计 32.2.2显示程序的设计 52.2.3定时器中断子程序的设计 62.2.4外部中断0程序的设计 72.2.5扩展功能的实现 8第三章实验感想 93.1实验感想 9附录——总电路图第一章实验任务书1.1实验目的1、通过实验,学生得到接口技术实际应用系统开发的综合训练。2、提高学生单片机综合系统的开发的能力。1.2实验设备接口技术实验箱一套、一台计算机。1.3实验内容利用接口技术实验箱,进行温度单片机控制系统设计。单片机控制系统控制系统结构如方块图所示:数/模转换器数字控制器测量变送模/数转换器保持器执行器━给定值多路开关对象被控变量单片机控制系统系统中对象的被控变量——温度值由温度变送器转换为0~5V信号(由外部提供的0~5V信号源)作为ADC0809的模拟输入量,要求单片机控制系统定时1S进行A/D转换,转换结果——测量值(16进制数表示)在数码管右两位中显示。数字控制器的设定值(16进制数表示)从键盘输入,在数码管左两位中显示设定值;数字控制器采用比例控制,输出为Y=K*(设定值-温度测量值),假设K=1,︱设定值-温度测量值︱≦7FH,数字控制器输出是有符号数。数字控制器输出送入DAC0832进行D/A转换,得到0~5V的模拟信号控制执行器——加热棒对对象加热,输出0~2.49V使加热棒逐渐加大加热量,输出2.5~5V使加热棒逐渐减少加热量。1.4实验扩展前两位数码管以十进制方式显示设定的温度值。输入设定温度值的时候只能输入0~9这10个十进制数,按其他按键单片机不响应。1.5实验要求1、根据实验内容,设计硬件电路原理图,并给出详细接线图(包括8051芯片、晶振电路、复位电路,电源、ADC0809、DAC0832、8255、键盘与数码管显示电路等)。2、利用PROTEL软件绘制出上述电路原理图(即.SCH文件)(选作)3、利用PROTEL软件设计出印刷电路板图(即.PCB文件)。(选作)4、画出程序流程图。5、给出源程序清单。6、调试(约定的实验室时间),调试结束后要请老师进行检查,答辩。利用接口实验箱进行调试。第二章设计构思2.1整体设计思路根据实验要求,我将键盘程序作为主程序,键盘程序中加入反复调用显示程序的子程序,这样实现了键盘和显示程序的“同时”运行。然后用定时器程序产生1S的中断,将启动A/D转换的语句放在定时器中断程序里面,这样就实现了1S采样一次的功能。然后用A/D芯片控制外部中断0,这样A/D转换完毕之后会执行INT0子程序。外部中断0子程序里放读取A/D转换结果的程序和启动D/A的程序。这样,实验要求的全部功能就实现了,具体各个模块的设计和扩展功能的实现在后面会讲到。下面是程序框图。2.2电路各部分的设计2.2.1键盘程序的设计键盘程序作为主程序无限循环运行,程序不停的扫描是否有按键按下,如果有则再判断键号,然后将键号存入内存缓冲单元中,供显示程序和温度比较程序使用。具体源程序如下:/*30H,31H,32H,33H从左到右分别存放4个数码管要显示的数据*/KL: MOV R5,#02H ;循环存数计数器KP: LCALL KS1 ;判断是否有按键按下 JNZ LK1 ;如果有按键按下,则进入消抖环节LK1 LCALL DIR AJMP KPLK1: LCALL DIR ;消抖,调用显示程序来延迟12MS LCALL DIR LCALL DIR LCALL KS1 JNZ LK2 ;确实有按键按下则进入判断键号环节LK2 LCALL DIR AJMP KPLK2: MOV R3,#0FEH ;R3存列选码 MOV R4,#00H ;R4为列号计数器LK4: MOV DPTR,#0FF7CH ;往A口赋列选码 MOV A,R3 MOVX @DPTR,A MOV DPTR,#0FF7EH ;从C口读入状态,然后进入下面的判断键号的程序 MOVX A,@DPTR LCALL DIR LZERO: JB Acc.0,LONE MOV A,#00H ;0行首键号 AJMP LKPLONE: JB Acc.1,LTWO MOV A,#04 ;1行首键号 AJMP LKPLTWO: JB Acc.2,LTHR MOV A,#08 ;2行首键号 AJMP LKPLTHR: JB Acc.3,NEXTL MOV A,#12 ;3行首键号 AJMP LKPNEXTL: INC R4 ;列计数器加一,如果按键不在此列,判断下一列 MOV A,R3 JNB Acc.3,KP ;如果到最后一列,则重新开始整个程序 RL A ;将列选码指向下一列 MOV R3,A LJMP LK4 ;开始判断下一列LKP: ADD A,R4 ;跳到LKP则表明已经找到按键,将此时的A和R4相加则得到 ;按键号 CLR C CJNE A,#10,XU ;如果键值大于等于10则不将键值存入内存单元,实现了扩展 ;功能XU: JC XU1 LJMP KLXU1: PUSH Acc ;A入栈,暂时存起来LK3: LCALL DIR ;判断按键是否松开,松开后再执行存数 LCALL KS1 JNZ LK3 LCALL DIR ;消抖,调用显示程序来延迟12MS LCALL DIR LCALL DIR LCALL KS1 JNZ LK3 LCALL DIR DJNZ R5,NEXT2 ;控制循环存数 POP 31H ;若R5减1不为0则用POP指令将前面入栈的键值存入 ;30H中 LJMP KL ;否则存入31H中NEXT2: POP 30HKND: LJMP KP ;循环执行键盘程序/*判断是否有按键按下的子程序*/KS1: MOV DPTR,#0FF7CH MOV A,#00H ;将A口全置零,然后读取C口的状态 MOVX @DPTR,A MOV DPTR,#0FF7EH ;读取C口的状态 MOVX A,@DPTR CPL A ;A取反,这样如果有按键按下则A不为零,否则为零 ANL A,#0FH ;屏蔽掉无用的高4位 RET2.2.2显示程序的设计显示子程序即键盘程序中所调用的DIR,每调用一次显示子程序,程序就动态轮流显示四个内存缓冲单元的值各一次,具体源程序如下:/*显示子程序,从左至右4个数码管轮流显示一次,执行时间大约为4MS*/DIR: PUSH Acc CLR RS1 ;更换工作寄存器区,达到现场保护的目的 SETB RS0LD0: MOV R0,#30H ;内存显示单元指针 MOV R3,#0FEH ;位选码 MOV A,R3LD1: MOV DPTR,#0FF7CH MOVX @DPTR,A MOV A,@R0 MOV DPTR,#1000H ;1000H为段码表首地址 MOVC A,@A+DPTR ;查表找到相应的段码MOV DPTR,#0FF7DHMOVX @DPTR,A LCALL DEL1MS ;延迟1MS保证余辉足够MOV A,R3JNB Acc.3,OUT1 ;如果显示到最后一位就退出显示INC R0 RL A ;如果没有,则显示下一位MOV R3,A AJMP LD1OUT1: CLR RS1 ;退出子程序之前须将工作寄存器区还原CLR RS0 POP Acc RETDEL1MS:PUSH Acc SETB RS1 ;更换工作寄存器区,达到现场保护的目的 CLR RS0 MOV R6,#4DL1: MOV R5,#125DL2: DJNZ R5,DL2 DJNZ R6,DL1 CLR RS1 ;退出子程序之前须将工作寄存器区还原 SETB RS0 POP Acc RET2.2.3定时器中断子程序的设计为了产生1S的中断,我将定时器设置为100MS中断一次,10次中断之后则为1S,然后再执行子程序内容,即启动A/D转换。具体源程序如下:IT0P: PUSH DPH PUSH DPL PUSH PSW ;保护状态字,即保护寄存器区 CLR RS1 CLR RS0 MOV TL0,0B0H ;计数器赋初值 MOV TH0,#3CH DJNZ R2,OUT2 ;1S之后才执行语句 MOV DPTR,#7FF8H ;启动A/D转换 MOVX @DPTR,A MOV R2,#10OUT2: POP PSW ;恢复寄存器区 POP DPL POP DPH RETI2.2.4外部中断0程序的设计这当A/D转换完毕后,会产生INT0中断,中断子程序里放读取A/D转换结果、比较温度、和D/A输出的程序,具体源程序如下:INT0P: PUSH DPH ;待A/D转换完毕后触发此中断程序,然后执行;读A/D结果和D/A的功能 PUSH DPL PUSH Acc PUSH PSW ;保护寄存器区 MOV DPTR,#7FF8H ;读取A/D转换结果 MOVX A,@DPTR MOV 40H,A ;将转换结果暂时存入40H中,以备后面调用 ANL A,#0FH ;低4位存入33H MOV 33H,A MOV A,40H ;高4位存入32H SWAP A ANL A,#0FH MOV 32H,A MOV A,30H ;将键盘输入的值组合起来才能进行运算 MOV B,#10 ;将输入的10进制数转换为16进制数,然后进行后面的 ;运算MUL AB ;高位乘以10加上低位,存入内存后即为16进制数 ADD A,31H CLR C ;将进位清零,以免影响判断结果 SUBB A,40H ;设定值-温度测量值 JC RESC ;如果为正则直接输出,如果为负,则运算后再输出 SJMP OUT3RESC: CPL A ;A取反加1后得到差值的绝对值 ADD A,#81H ;A再加80H即让D/A从2.5V开始输出OUT3: MOV DPTR,#0FFBFH ;A6口连接D/A的片选端 MOVX @DPTR,A ;D/A输出 POP PSW POP Acc POP DPL POP DPH RETI2.2.5扩展功能的实现上面各个模块的程序已经包含了扩展功能,这里再单独拿出来解释一下。扩展功能1:前两位数码管以十进制方式显示设定的温度值。这个功能很容易实现,因为显示程序只显示输入的数据,输入的是10进制书显示的自然也就是10进制数,但是因为温度比较的时候都是以16进制数比较的,所以在温度比较的时候要将输入的10进制数转换成16进制数后再进行比较,具体程序如下: MOV A,30H ;将高位存入A中 MOV B,#10 ;高位乘以10加上低位,存入内存后即为16进制数MUL AB ADD A,31H ;加上低位扩展功能2:输入设定温度值的时候只能输入0~9这10个十进制数,按其他按键单片机不响应。要实现这个功能需要在键盘程序中修改程序,我的方法是用一个比较语句,在每次计算出键号后判断键号是否大于9,如果大于9则不将键号存入内存单元中,否则才存入内存中。具体程序如下:LKP: ADD A,R4 ;这句表明计算出键号了,且存入了A中 CLR C ;进位C清零 CJNE A,#10,XU ;如果A小于10,则C置1XU: JC XU1 ;若C为1,即A小于10,则存储键号 LJMP KL ;否则直接重新执行键盘程序,即不存键号XU1: PUSH Acc ;A入栈,暂时存起来第三章实验感想3.1实验感想本次
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年互联网企业收入确认准则
- 2026年区域教研员蹲点包校工作制度
- 2026年企业接班人选拔中的信任风险与培养机制
- 2026年漫画编辑如何指导作者优化分镜
- 滑雪场滑雪教练聘用合同2026
- 2026年高校知识产权信息服务中心建设
- 职业发展规划服务协议2026
- 2026年工业机器人自动化项目成本控制
- 2026年楼道走廊地面清洁与养护方法
- 企业财务报表估值合同
- 2026春青岛版(五四制)三年级科学下册(全册)各单元知识点复习要点梳理
- 断肢再植术后血液循环观察指标及护理要点
- 2026广东深圳市优才人力资源有限公司招聘编外聘用人员(派遣至深圳市龙岗区机关事务管理局)补充笔试备考试题及答案详解
- 2026年广东省高三语文二模作文题目解析及范文:“意外”的价值
- 2026年上海市虹口区八年级下学期期中语文试卷参考答案与评分标准
- 中核汇能广东能源有限公司笔试
- Unit 5 Nature's Temper 单元练习题 新教材人教版八年级英语下册
- 水库库区水质富营养化治理方法及管控措施
- 2026年及未来5年市场数据中国数据标注与审核行业发展监测及市场发展潜力预测报告
- 2026年高级钳工技能考核通关题库及参考答案详解(模拟题)
- 《化工企业可燃液体常压储罐区安全管理规范》(AQ3063-2025)检查表
评论
0/150
提交评论