微机接口技术课程设计报告

上传人:仙*** 文档编号:28649684 上传时间:2021-09-05 格式:DOC 页数:17 大小:215.50KB
收藏 版权申诉 举报 下载
微机接口技术课程设计报告_第1页
第1页 / 共17页
微机接口技术课程设计报告_第2页
第2页 / 共17页
微机接口技术课程设计报告_第3页
第3页 / 共17页
资源描述:

《微机接口技术课程设计报告》由会员分享,可在线阅读,更多相关《微机接口技术课程设计报告(17页珍藏版)》请在装配图网上搜索。

1、课程设计报告姓名: 专业: 课程名称:微机接口技术班级: 系(分院): 年 月2目 录一、课程设计要求 .错误!未定义书签。二、总体设计 .3三、 硬件原理图 .4四、程序设计 .7五、调试过程 .15六、心得体会: .16七、参考文献 .17 3一、课程设计要求1、要求选取 8255A 作为扩展接口芯片,输入设备为开关和非编码键盘,输出设备为发光二极管和七段数码管。要求由键盘输入倒计时时间(至少为三位,分和秒用“-”隔开) ,要求计时精度高于 0.1 秒,输入计时时间后,由七段数码管显示并在开关的控制下,实现“开始倒计时” 、 “暂停倒计时”和“结束倒计时” 。倒计时结束、倒计时暂停、倒计时

2、开始要由不同的发光二极管点亮或闪烁状态予以指示。2、目的 单片机是一款功能十分强大,集成度非常高的数字处理系统。为了进一步加强对理论理解的深度和掌握的程度,提高动手能力以及初步的系统分析与设计实现的能力,特作此设计。二、总体设计1、总体要求设计中包括开关、非编码矩阵键盘、发光二极管、七段数码管在内的两种输入设备和两种输出设备。总体设计中至少要给出这 4部分的硬件连接、软件驱动、地址分配及相应的设计原理的描述。2、设计原理的描述电源开关=PC0,暂停开关=PC1;电源指示灯=PC7,暂停指示灯=PC6;PC0=1 启动,=0 退出,PC1=1 暂停,=0 不暂停,电源灯常亮,4暂停等闪烁,非暂停

3、时刻熄灭。三、 硬件原理图1、模块一硬件图图 1 单片机原理图GND GNDR1VCC GNDVCC1234JP14 HEADER GND10 98 76 54 32 11 2vccPB0PB1PB2 AVCCPB3 AREFPB4 GNDPB5PB6PB7PD0 PC0PD1 PC1PD2 PC2PD3 PC3PD4 PC4PD5 PC5PD6 PC6PD7GND1212VCCVCCVCC232425262728120212214151617181991023456111213MOSIRESETMISOSCKRXDTXDJP2J2CON2J3CON3R2R3R4 R6R5R7CON2D1 D

4、252、模块二引脚表表 1 74ls48 引脚功能表3、模块三字形显示图 2 七段数码管的字形输入 输出十进制数或功能 LT RBI D C B A BI/RBO a b c d e f g0 H H 0 0 0 0 H 1 1 1 1 1 1 01 H X 0 0 0 1 H 0 1 1 0 0 0 02 H X 0 0 1 0 H 1 1 0 1 1 0 13 H X 0 0 1 1 H 1 1 1 1 0 0 14 H X 0 1 0 0 H 0 1 1 0 0 1 15 H X 0 1 0 1 H 1 0 1 0 0 1 16 H X 0 1 1 0 H 0 0 1 0 1 1 17

5、H X 0 1 1 1 H 1 1 1 0 0 0 06图 3 数码管与各设备互连图 4 键位码与各设备原理图17 PC3343332313029282753698356726D0D1D2D3D4D5D6D7RDWRA0A1D0D1D2D3D4D5D6D7IORIOWA0A1RESTCS21821F+5V电源开关18 PB020 PB222 PB423 PB525 PB715 PC116 PC213 PC412 PC511 PC610 PC74 PA03 PA12 PA21 PA340 PA439 PA538 PA637 PA710K*11CDEFBA9845673210RPMG19 PB1+

6、5V暂停开关21 PB324 PB614 PC0agag agagagagcccccccccccc+5V+5VIOW A8A0fedca1Q 2Q 3Q 4Q 5Q 6Q 7Q 8QCLR 74LS273(段) CP1Q 2Q 3Q 4Q 5Q 6Q 7Q 8Qb6Q 5Q 4Q 3Q 2Q 1QCLR 74LS273(位) CP6Q 5Q 4Q 3Q 2Q 1QD0 D1 D2 D3 D4 D5 D6 D7RESET74LS138C B A G2A G1 G2BY6# Y7#+5V+5v7四、程序设计1、程序流程图图 四 流程图开始输入倒计时数是否输完倒记时否是输入执行命令 R判断暂停 P否

7、是保存断点,点亮指示灯停止倒计时执行判断恢执行 M否是恢复断点时间是否执行倒计时等待是82、源代码data segmentpap equ 218hpbp equ 219hpcp equ 21ahcp equ 21bh ;控制字dp equ 210h ;段选wp equ 211h ;位选table dw0101h,0102h,0104h,0108h,0110h,0120h,0140h,0180hdw 0201h,0202h,0204h,0208h,0210h,0220h,0240h,0280h,0410h,0420h,0440h,0480hchar db12,13,14,15,11,10,9,8

8、,4,5,6,7,3,2,1,0Da1 db3fh,30h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,58h,5eh,79h,71h,40hCc1 dw ?Cc2 dw ?W2 db ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axcall kg ;开关mov w2,1 ;输入第一个键位码call keymov bh,di ;保存第一个键位码mov w2,2 ;输入第二个键位码call dey mov bl,di ;保存第二个键位码call zyc ;延迟程序cal

9、l ds1 ;进行倒数程序9mov ah,4chint 21hdey proc ;按键子程序push si ;保存寄存器push axpush bxpush cxpush dxmov al,82h ;初始化 a 口,c 口为输出,b 口为输入mov dx,cpout dx,almov ax,0r1:mov al,0 ;用反转法对键位进行扫描mov dx,papout dx,almov dx,pbpin al,dxcmp al,offhmov dx,dilea di,da1sub dx,cc1 ;还原di的值mov cc2,si ;找到 di(十位) 数字的所在相对一个数的位置mov cx,si

10、lea si,da1sub cx,si ;得到十位的循环次数mov si cc2 ;还原s2的值dec disub dx,0jz e2 ;判断个位是不是为零;如果为 0,跳过下面的调用call ds4 ;输出在输入时候不满十个数的各位数字e2:sub cx,0jz e1 ;判断十位是否为零,如果为 0,跳过下面的调用dec si ;因为在前面已经输10出了一次个位数,所以这里减一mov dx,10d5:lea di,da1+9 ;从第九个数开始倒数,完成最后的倒数循环call ds4 ;进行倒数dec si ;十位数字减一loop d5e1:pop axpop bxpop cxpop dxpo

11、p sipop di retds1 endpds4 proc ;倒数子程序push dxpush cxpush bxpush axmov cx,dxdp1:mov dx,20dg2:push dxmov bh,simov bl,dicall zyc ;调用延迟程序call exit ;调用退出程序mov al,si ;显示倒数的数字mov dx,211hout dx,almov al,1mov dx,210hout dx,alcall ycamov al,dimov dx,211hout dx,almov al,2mov dx,210hout dx,alcall ycacall zyc11po

12、p dxdec dxcmp dx,0jnz dg2dec diloop dp1pop axpop bxpop cxpop dxretds4 endpyc proc ;延迟程序push cxpush bxmov bx,5000yc1:movcx,4000loop $dec bxjnz yc1pop bxpop cxmov bl,almov cx offfhloop $mov dx,cpmov al,90hout dx,almov dx,pbpmov al,blout dx,almovdx,papin al,dxmov ah,blnot axlea si tablelea di charmov c

13、x,16r2:cmp ax,sijz nxtadd si,2inc diloop r2nxt:mov dx,dp ;将键盘上输412入数据显示在数码管上mov alw2out dx,almov al,diout dx,almov dx,cpmov al,82hout dx,alcall ycpop dxpop cxpop axpop siretkey endpkg proc ;开关push axpush bxpush cxpush dxmov dx,cp ;初始化 c 口为输入,其他口为输出mov al,89hout dx,almov dx,pcpkg1:in al,dxtest al,1 ;

14、当 k1 为 0 时启动程序jz kg1mov cx,5000hkg2:mov dx,papmov al,ofehloop kg2pop dxpop cxpop bxpop axretkg endpds1 proc ;倒数程序push dipush sipush cxpush ax13lea si,da1lea di,da1d1:cmp di,bl jz d2inc dijmp d1d2:cmp si,bhjz d4inc sijmp d2d4:mov cc1,diyca proc ;延迟程序push cxpush bxmov bx,1500c2:mov cx,1000loop $dec bx

15、jnz yc2pop bxpop cxretyca endpzyc proc ;延迟主程序,主要是用于显示和延迟push sipush dipush axpush bxpush cxpush dxs2:call exitmov dx,cp ;初始化 a 口,b口为输出,c 口低四位为输入,高四位为输出mov al,81hout dx,almov dx,pcp ;判断 k3 是否为 0,如果为 0,则进入延迟in al,dxtest al,4hjnz s3mov dx,dpmov al,01h14out dx,almov dx,wpmov al,bhout dx,almov dx,pcp ;显示

16、灯mov al,0hout dx,alcall ycamov dx,dpmov al,02hout dx,almov dx,wpmov al,blout dx,almov dx,pcp ;显示灯灭mov al,40hout dx,alcall ycajmp s2s3:pop dxpop cxpop bxpop axpop dipop siretzyc endpexit proc ;退出程序push axpush bxpush cxpush dxpush dipush simov dx,cp ;初始化 c 口输入,a,b 口为输出mov al,89hout dx,almov dx,pcpin a

17、l,dxtest al,2hjz ex1mov ah,4chint 21h15ex1:pop sipop dipop dxpop cxpop bxpop axretexit endpcode endsend start五、调试过程首先将发光二级管,键盘,七段数码管一个一个的分别进行调用,在调试过程中,通过实验的效果来发现错误的地方,并加以改善,直到调试到的结果与想要的现象相符,再将各模块进行拼接,进行调试,调试成功为止。键盘和七段数码管的程序模块首先经过单独调试,然后在模块拼接后再进行调试。在调试过程中遇到的问题要给出分析过程及解决办法。在调试过程中,首先出现的问题是在做发光二极管实验中连线总

18、是出现问题,导致部分指示灯不能准确的显示,经调整实验成功,在编程过程中也出现了由于对汇编语句撑握不够熟练导致程序无法调试,检查最终得以解决其次是在七段数码管显示中出现多位显示的闪烁问题,后经老师指导,检查出是延时程序出现问题,通过缩短刷新时间间隔将问题解决。在 DOS 状态下编译程序,编译通过后建立连接。输入文件名才能运行程序。六、心得体会通过前几个的小实验,从中了解了输出端口 211h,还有每个数字输出的位置由几个数控制。若想在第一个位置上显示则将 210h 处的 dl 赋值为 1h,第二个为 2h,第三个为 4h,第四个为 8h,第五个为 10h,第六个为 20h,这只是在几个位置上显示单

19、个的数。若想要显示前 3 个位置,就将 210h 处的 al 赋值为7。在掌握 8255A 的工作方式 ,开始做实验时,没有想到延迟的位置,导致灯的闪烁没有规律,其次程序正常执行后,因把 5、6 的线序互相插反了,导致灯亮的顺序发生了变化。最后灯循环时,最后 2 盏灯没有循环到,因开始把灯设置为全亮,此时为 0,占有用了一个空间,经过几次反复的试验,做出了正确的程序。在上面的实验中,加了开关控制、暂停,退出一系列的操作。总体思想为当开关 1 开时,流水灯开始循环;当开关 2 开时,流水灯暂停,流水灯继续循环流动,当开关 2 关时,流水灯暂停,开关 1 关闭。数码管的显示,之前是静态的初始化,动

20、态数码管显示是在静态的基础上修改完成的,首先判断十位和个位上的数时,调用延迟的位置加错了地方。因之前在实验没有加过数据段。所以在这次实验中,数据段的使用不够熟练,依次读数中出错了,在整体中没有将数据保存,经过不断的尝试,将以上的数据错误加以改正,掌握了动态数码管的工作原理。在做键盘时,了解了什么是行列反转法。首先对所有行输出低电平,同时读入列线,如果有按键下,则该键所在的列线为低电平,而其他列线为高电平,由此获得列号,然后向所有的列线输出低电平,读行线,确定按键行号。通过行号和列号确定按键的位置和编码。在按键下去为 0,若按 1 数码管上显示全 1,按 C 数码管显示在 C。在做实验时,因把

21、table 的数据做了更改,效果是把整个程序处于退出状态,按什么都不显示,改回原有的实验就成功了。总得来说通过对这门课程的学习 ,及后期的课程设计使我对单片机的基本结构和特点、单片机的应用模式和领域,以及单片机的供应状态有了进一步的认识,从而掌握了单片机与其他设备相连接的输入输出中断等接口技术的基本知识,使我从硬件软件彼此相结合的基础上理论联系实际,进一步提高了动手能力,综合应用的同时对单片机应用系统及其在计算机内运行过程中相应步骤有了进一步的认识。七、参考文献1、赵秀珍,单永磊.单片微型计算机原理及应用.中国水利水电出版社,2001 年2、胡汉才. 单片原理及其接口技术.北京:清华大学出版社,1996 年3、孙一林.汇编语言程序设计.高等教育出版社,2001 年4、何立民,张迎新等.单片机初级教程.北京:北京航空航天大学出版社,2000 年

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!