欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    北邮微机系统与接口技术小学期报告.docx

    • 资源ID:8784012       资源大小:22.16KB        全文页数:20页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    北邮微机系统与接口技术小学期报告.docx

    1、北邮微机系统与接口技术小学期报告北京邮电大学课程设计报告课程设计名称微机系统与接口技术学 院计算机学院指导教师班 级班内序号学 号学生姓名成绩课程设计内容实验目的:进一步加深和巩固对所学知识点的理解和掌握;综合运用所学知识、工程原理来分析和完成本课程设计;理解计算机软件、硬件如何配合工作,能对计算机硬件进行功能扩展;掌握接口电路设计过程和驱动程序的编写方法;学会如何区分系统中软件、硬件故障和调试手段;培养计算机软硬件的综合设计能力和调试能力。基本内容:(硬件部分)4x4小键盘接口设计;异步串行通信接口设计;4位数码管显示器设计。(软件部分)键盘扫描程序;串行接口通信程序;4位七段数码管显示程序

    2、;两组间进行双机通信;在液晶显示器上实现显示功能。实验方法:在HQFC集成环境下,采用汇编语言完成程序设计团队分工: 学生课程设计报告(附页)见附页课程设计成绩评定遵照实践教学大纲并根据以下四方面综合评定成绩:1、课程设计目的任务明确,选题符合教学要求,份量及难易程度2、团队分工是否恰当与合理3、综合运用所学知识,提高分析问题、解决问题及实践动手能力的效果4、是否认真、独立完成属于自己的课程设计内容,课程设计报告是否思路清晰、文字通顺、书写规范评语: 成绩: 指导教师签名: 年 月 日1. 实验目的1. 进一步加深和巩固对所学知识点的理解和掌握;2. 综合运用所学知识、工程原理来分析和完成本课

    3、程设计;3. 理解计算机软件、硬件如何配合工作,能对计算机硬件进行功能扩展;4. 掌握接口电路设计过程和驱动程序的编写方法;5. 学会如何区分系统中软件、硬件故障和调试手段;6. 培养计算机软硬件的综合设计能力和调试能力。2. 实验内容 硬件部分 4x4小键盘接口设计(利用8255 C口) 异步串行通信接口设计(8254为波特率发生器) 4位数码管显示器设计 软件部分 键盘扫描程序。将按键0F转换成015的二进制值 串行接口通信程序。1.发送/接收均为查询方式;2.发送为查询方式/接收采用中断方式;二者选其一 4位七段数码管显示程序。左移位方式显示09、AF 将串行接口发送端和接收端环回,当在

    4、4x4小键盘上敲击按键时,经串口发送、接收后将对应键值显示在4位数码管上。(要求:依次敲击1、2、3、4、5、,则依次显示xxx1、xx12、x123、1234、2345、) 要求 两个实验组间进行双机通信,一方用小键盘键入数字,另一方接收到后在4位数码管上显示 在液晶显示器上实现显示功能(选作,成绩加10分,但满分为100分) 3. 实验原理 设计思想 主函数 发送端:从8255C口进行键盘扫描读入按键,获得其ASCII码值,将其发送给8251,并把发送值变换为七段译码值在LED上进行移位显示。 接收端:8251接收到发送来的ASCII码值,在液晶显示器LCD上进行移位显示。 主函数为一个大

    5、循环,采用查询方式,依次查询是否有键被按下,发送是否准备好,按键是否为E,接收是否准备好,接受到的数据是否为E,条件满足则执行相应操作,不满足则进行下一个查询,而不是原地踏步地查询。若按键不为E则返回一开始循环执行主程序。 键盘扫描 8255C口高四位PC7-PC4输出,低四位PC3-PC0输入,接键盘的行3-列0。 采用行扫描法,使键盘上某一行线为低电平,而其余行接高电平,然后读取列值;如果列值中有某位为低电平,则表明当前行与当前列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止。 分别用寄存器记录当前行和当前列,并用 行数X 4+列数 计算键值。 数码管显示 8255B口输出,高四

    6、位PB7-PB4接LED位码S3-S0,选择某一个数码管。 8255A口输出,PA7-PA0接LED的DP-A,将七段译码值输出到数码管,并进行显示。 液晶屏显示 8255B口输出,低三位PB2,PB1,PB0分别接LCD的E,RW,DI,控制液晶显示器的使能,读/写,数据/指令。 8255A口输出,PA7-PA0接LCD的D7-D0,与LED复用数据线,将ASCII值输出到液晶屏,并进行显示。 实验原理图 系统接线图 自发自收CLK0 /8254 接 1M时钟GATE0/8254 接 +5VOUT0 /8254 接 TX/RXCLK/8251CS /8254 接 Y0/IO地址CS /825

    7、1 接 Y7/IO地址RXD /8251 接 TXD/8251 双机通信机器A的RXD/8251接机器B的TXD/8251 ,机器B的RXD/8251 接机器ATXD/8251,其余接线与自发自收相同 。 显示模块PA7PA0/8255 接 DP-A/7段译码管PA7PA0/8255 接 D7-D0/LCD12864PB7-PB4/8255 接 S3-S0/7段译码管PB2 /8255 接 E/LCD12864PB1 /8255 接 R/W /LCD12864PB0 /8255 接 D/I /LCD12864PC7PC0/8255 接 行3-列0/4*4键盘CS /8255 接 Y1/IO地址

    8、 流程图4. 实验程序DATA SEGMENTIO8251 EQU 2B8HIO8251CTRL EQU 2B9HIO8255A EQU 288HIO8255B EQU 289HIO8255C EQU 28AHIO8255CTRL EQU 28BHIO82540 EQU 280HIO8254CTRL EQU 283H的ASCII值,用于LCD显示ASCTABLE DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H七段译码值,用于LED显示LEDTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7D

    9、H,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H用于键盘扫描第1、2、3、4行SCAN DB 70H,0B0H,0D0H,0E0HLEDBUF DB 00H,00H,00H,00H ;LED显示的四位数LCDBUF DB 20H,20H,20H,20H ;LCD显示的四位数FLAG DB 00H ;是否有数据传输的标志位NUM DB 00H ;输入的数CU DB 00H ;接收的数DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP()STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS

    10、:STACK;延时子程序DELAY PROC NEAR PUSH CX MOV CX,100H WAIT1 : LOOP WAIT1 POP CX RETDELAY ENDP;LED移位函数LEDSHIFT PROC NEAR PUSH DX PUSH BX PUSH AX ;LEDBUF中四个数依次左移,右补NUM MOV BX,OFFSET LEDBUF MOV DL,BX+2 MOV BX+3,DL MOV DL,BX+1 MOV BX+2,DL MOV DL,BX MOV BX+1,DL MOV DL,NUM MOV BX,DL POP AX POP BX POP DX RETLEDS

    11、HIFT ENDP;LED显示函数,用于显示LEDBUF中的四个数SHOWLED PROC NEAR PUSH DX PUSH BX PUSH AX MOV BX,OFFSET LEDBUF ;点亮数码管的最高位 MOV DX,IO8255B ;选择8255B口,控制位码 IN AL,DX AND AL,0FH ;位码清零 OUT DX,AL MOV DX,IO8255A ;选择8255A口,输出最高位 MOV AL,BX+3 OUT DX,AL MOV DX,IO8255B ;位码控制选数码管4 IN AL,DX AND AL,0FH OR AL,80H ;S3置1,其余置0 OUT DX,

    12、AL ;点亮数码管的第三最高位 MOV DX,IO8255B IN AL,DX AND AL,0FH ;位码清0 OUT DX,AL MOV DX,IO8255A ;选择8255A口,输出第三最高位 MOV AL,BX+2 OUT DX,AL MOV DX,IO8255B ;位码控制选数码管3 IN AL,DX AND AL,0FH OR AL,40H ;S2置1,其余置0 OUT DX,AL ;点亮数码管的第二最高位 MOV DX,IO8255B IN AL,DX AND AL,0FH ;位码清0 OUT DX,AL MOV DX,IO8255A ;选择8255A口,输出第二最高位 MOV

    13、AL,BX+1 OUT DX,AL MOV DX,IO8255B ;位码控制选数码管2 IN AL,DX AND AL,0FH OR AL,20H ;S1置1,其余置0 OUT DX,AL ;点亮数码管的最低位 MOV DX,IO8255B IN AL,DX AND AL,0FH ;位码清0 OUT DX,AL MOV DX,IO8255A ;选择8255A口,输出最低位 MOV AL,BX OUT DX,AL MOV DX,IO8255B ;位码控制选数码管2 IN AL,DX AND AL,0FH OR AL,10H ;S0置1,其余置0 OUT DX,AL MOV DX,IO8255B

    14、;位码清0 IN AL,DX AND AL,0FH OUT DX,AL POP AX POP BX POP DX RETSHOWLED ENDP;LCD移位函数LCDSHIFT PROC NEAR PUSH DX PUSH BX PUSH AX ;LCDBUF中四个数依次左移,右补CU MOV BX,OFFSET LCDBUF MOV DL,BX+2 MOV BX+3,DL MOV DL,BX+1 MOV BX+2,DL MOV DL,BX MOV BX+1,DL MOV DL,CU MOV BX,DL POP AX POP BX POP DX RETLCDSHIFT ENDP;LCD发送指令

    15、函数SEND_INS PROC NEAR MOV DX,IO8255B IN AL,DX OUT DX,AL NOP IN AL,DX OR AL,00000100B ;E=1,W,I OUT DX,AL MOV DX,IO8255A ;选择数据口,输出指令码 MOV AL,BL ;BL中是要输出的指令码 OUT DX,AL MOV DX,IO8255B IN AL,DX OUT DX,AL RETSEND_INS ENDP;LCD发送数据函数SEND_DATA PROC NEAR MOV DX,IO8255B IN AL,DX OR AL,00000001B ;E=0,W,D OUT DX,

    16、AL NOP IN AL,DX OR AL,00000101B ;E=1,W,D OUT DX,AL MOV DX,IO8255A ;选择数据口,输出数据 MOV AL,BL ;BL中是要输出的数据 OUT DX,AL MOV DX,IO8255B IN AL,DX OR AL,00000001B ;E=0;W D OUT DX,AL RETSEND_DATA ENDP;LCD显示函数,用于显示LCDBUF中的四个数SHOWLCD PROC NEAR PUSH DX PUSH BX PUSH AX MOV BL,92H ;第3位输出地址 CALL SEND_INS MOV BX,OFFSET

    17、LCDBUF ;输出第3位 MOV BX,BX+3 CALL SEND_DATA MOV BL,93H ;第2位输出地址 CALL SEND_INS MOV BX,OFFSET LCDBUF ;输出第2位 MOV BX,BX+2 CALL SEND_DATA MOV BL,94H ;第1位输出地址 CALL SEND_INS MOV BX,OFFSET LCDBUF ;输出第1位 MOV BX,BX+1 CALL SEND_DATA MOV BL,95H ;第0位输出地址 CALL SEND_INS MOV BX,OFFSET LCDBUF ;输出第0位 MOV BX,BX+0 CALL SE

    18、ND_DATA POP AX POP BX POP DX RETSHOWLCD ENDP;获取键盘的输入数字的子程序INPUT PROC NEAR PUSH AX ;保护现场 PUSH CX PUSH DX MOV CX,00H ;从第一行开始扫描CHECK: MOV DX,IO8255C ;选择C口地址 MOV BX,OFFSET SCAN ;得到扫描码 ADD BX,CX MOV AL,BX OUT DX,AL ;把要扫描的那一行置0,其余置1 ;防止抖动 IN AL,DX ;判断是否有键盘按下 MOV AH,AL CALL DELAY ;延迟一段时间,避过抖动区间 IN AL,DX ;延

    19、时后再次读入 CMP AL,AH ;比较两次读入的值 JNZ CHECK ;不相等说明为抖动,重新检测 ;判断按下的是哪一列 AND AL,0FH CMP AL,0FH ;没有键按下 JZ NEXT CMP AL,0EH ;第四列有键按下 JZ NEXT1 CMP AL,0DH ;第三列有键按下 JZ NEXT2 CMP AL,0BH ;第二列有键按下 JZ NEXT3 MOV BX,00H ;第一列有键按下 JMP GETNUMNEXT: INC CX ;修改变量扫描下一行 CMP CX,04H JNZ CHECK ;没有扫描完四行跳转 JMP DONE ;已经扫描完四行跳转;记录是哪一列有

    20、键按下NEXT1: MOV BX,03H JMP GETNUMNEXT2: MOV BX,02H JMP GETNUMNEXT3: MOV BX,01H ;计算按下的键的数值GETNUM: MOV AL,CL MOV DL,04H MUL DL ;行数乘以4,再加上列数 ADD BL,AL ;此时BL中所存即为按下的键 ;检测键盘是否弹起 MOV DX,IO8255C ;C口输入 IN AL,DX MOV AH,ALNOTUP: CALL DELAY IN AL,DX CMP AL,AH JZ NOTUP ;未弹起,延时重复检测 MOV FLAG,01H ;有键按下,把flag置1, CALL

    21、 FINDASC ;把键盘值转换为ASC值 MOV DL,CL ;按键值显示到DOS界面上 MOV AH,02H INT 21HDONE: POP DX ;恢复现场 POP CX POP AX RET INPUT ENDP;找到键值对应的ASC数值,存到NUM中FINDASC PROC NEAR XOR CX,CX MOV CL,BL ;BL中是键盘按下的值 MOV BX,OFFSET ASCTABLE ADD BX,CX ;此时BX即为在ASCTABLE中对应的地址 MOV CL,BX ;CL内存着此次按下键盘值的ASC值 MOV NUM,CL RETFINDASC ENDP;找到键值对应的

    22、七段译码值,存到NUM中 FINDLED PROC NEAR XOR CX,CX MOV CL,BL ;BL中是键盘按下的值 MOV BX,OFFSET LEDTABLE ADD BX,CX ;此时BX即为LEDTABLE中对应的地址 MOV CL,BX ;CL内存着此次按下键盘值的七段译码值 MOV NUM,CL RETFINDLED ENDP;主程序START: MOV AX,DATA MOV DS,AX ;初始化8253 MOV DX,IO8254CTRL ;8253控制端口地址 MOV AL,16H ;8253选择计数器0低八位,方式3,二进制计数,00010110 OUT DX,AL

    23、 MOV DX,IO82540 ;计数器0地址 MOV AL,52 ;写入计数初值52(时钟1M,波特率1200baud,波特率因子16) OUT DX,AL ;初始化8251 MOV DX,IO8251CTRL ;8251控制端口地址 MOV AL,40H ;工作命令字软复位,01000000 OUT DX,AL NOP MOV AL,4EH ;方式命令字,一个停止位,无校验,8个数据位,波特率因子16,异步01001110 OUT DX,AL NOP MOV AL,27H ;工作命令字,允许发送接收,00100111 OUT DX,AL NOP ;初始化8255 MOV DX,IO8255

    24、CTRL ;8255控制端口地址 MOV AL,081H ;方式控制字:C口低四位输入,B口输出,方式0 ,A口输出,方式0 OUT DX,AL MOV FLAG,00H ;LCD初始化 PUSH AX PUSH BX PUSH DX MOV DX,IO8255CTRL OUT DX,AL MOV BL,30H ;基本指令操作,RE=0 CALL SEND_INS MOV BL,01H ;清除显示 CALL SEND_INS MOV BL,06H ;指定在资料写入或读取时,光标的移动方向 CALL SEND_INS ;DDRAM 的地址计数器(AC)加1 MOV BL,0CH ;开显示,关光标

    25、,不闪烁 CALL SEND_INS POP DX POP BX POP AX CALL SHOWLCD ;扫描键盘LOOP1: CALL INPUT CALL SHOWLED MOV DX,IO8251CTRL ;检验8251发送是否准备好TxRDY IN AL,DX AND AL,01H JNZ SEND ;8251发送准备好,转去发送;发送未准备好,检验接收是否准备好 LOOP2: MOV DX,IO8251CTRL IN AL,DX AND AL,02H ;检验8251发送是否准备好RxRDY JNZ RECEIVE ;接收准备好,转去接收 JMP LOOP1 ;接收未准备好,转去扫描

    26、键盘;发送准备好,判断键盘是否按下SEND: CMP FLAG,01H JE SSEND JMP LOOP2 ;发送准备好,但是没有键盘按下,转去检验接收;键盘按下,要发送数据SSEND: MOV DX,IO8251 ;8251数据端口地址 MOV AL,NUM OUT DX,AL ;把发送的数据(ASC值)输出到8251 CMP NUM,45H ;数据与E比较 JZ EXIT ;数据是E则转去退出 CALL FINDLED ;将数据转为七段译码值 CALL LEDSHIFT ;移位后显示 CALL SHOWLED MOV FLAG,00H ;显示后把flag恢复为0 JMP LOOP2;开始

    27、接收RECEIVE: MOV DX,IO8251 IN AL,DX ;8251接收到数据,存到CU中 MOV CU,AL CMP CU,45H ;数据与E比较 JZ EXIT ;数据是E则转去退出 CALL LCDSHIFT ;移位输出 CALL SHOWLCD CALL SHOWLED JMP LOOP1;返回DOSEXIT: MOV AL,00H ;结束输出0 MOV DX,288H ;A口输出 OUT DX,AL MOV BL,01H ;清除显示 CALL SEND_INS MOV AX,4C00H INT 21H CODE ENDS END START5. 实验结果 硬件连线图 自发自

    28、收自发自收时,按下44键盘,可以看到对应键值在数码管上移位显示,即发送的数据,同时,在LCD液晶显示屏上出现接收的数据,与数码管显示的一致。当在键盘按下E,数码管不再显示,LCD液晶屏也清屏。 双机通信两机通信时,A机按下44键盘,A机的数码管显示按下的键值,B机收到A机发送的数据,在LCD液晶显示屏显示,即A机的数码管与B机的液晶显示屏显示内容一致。B机发送数据时,在B机的数码管显示B机按下的键值,A机LCD液晶显示屏显示收到的数据,即B机的数码管与A机的液晶显示屏显示内容一致。通信过程中,任意一端均可做发送或接受端。在任意一端44键盘按下E时,两机都结束通信,数码管不显示,LCD液晶屏清屏

    29、。6. 问题解决及收获体会 问题解决 问题:LED显示出现明显的闪烁解决:LED是靠高电平点亮,要保持其显示,必须要持续给LED高电平。所以在每个循环中,要多次调用LED显示函数。 问题:LED输出重叠显示解决:在进行数码管显示时,要先输出数据,再选择位码,否则会因为顺序相反造成重叠显示。 问题:运行程序时,只按键一次程序就退出解决:在主程序中有个大循环,在大循环的最后要使用jmp语句跳到开头重复进行查询。 问题:LCD无法显示解决:在一开始要对LCD进行初始化,如发送基本指令集等。 问题:双机通信时双方没有显示解决:数据未能稳定传输,将两台机器共地。实验过程还有很多如编译错误,赋值错误等问题,不再一一列出。还有部分问题解决见收获体会。 收获体会


    注意事项

    本文(北邮微机系统与接口技术小学期报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开