版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.邮电大学课程设计报告课程设计名称微机系统与接口技术学院计算机学院指导教师班级班内序号**学生**成绩课程设计内容实验目的:进一步加深和巩固对所学知识点的理解和掌握;综合运用所学知识、工程原理来分析和完成本课程设计;理解计算机软件、硬件如何配合工作,能对计算机硬件进行功能扩展;掌握接口电路设计过程和驱动程序的编写方法;学会如何区分系统中软件、硬件故障和调试手段;培养计算机软硬件的综合设计能力和调试能力。基本内容:(硬件部分)4*4小键盘接口设计;异步串行通信接口设计;4位数码管显示器设计。(软件部分)键盘扫描程序;串行接口通信程序;4位七段数码管显示程序;两组间进行双机通信;在液晶显示器上实现显示功能。实验方法:在HQFC集成环境下,采用汇编语言完成程序设计团队分工:学生课程设计报告见附页课程设计成绩评定遵照实践教学大纲并根据以下四方面综合评定成绩:1、课程设计目的任务明确,选题符合教学要求,份量及难易程度2、团队分工是否恰当与合理3、综合运用所学知识,提高分析问题、解决问题及实践动手能力的效果4、是否认真、独立完成属于自己的课程设计内容,课程设计报告是否思路清晰、文字通顺、书写规*评语:成绩:指导教师签名:年月日目录1.实验目的22.实验内容22.1硬件部分22.2软件部分22.3要求23.实验原理23.1设计思想23.2实验原理图23.3流程图24.实验程序25.实验结果25.1硬件连线图25.2自发自收25.3双机通信26.问题解决及收获体会26.1问题解决26.2收获体会21.实验目的进一步加深和巩固对所学知识点的理解和掌握;综合运用所学知识、工程原理来分析和完成本课程设计;理解计算机软件、硬件如何配合工作,能对计算机硬件进行功能扩展;掌握接口电路设计过程和驱动程序的编写方法;学会如何区分系统中软件、硬件故障和调试手段;培养计算机软硬件的综合设计能力和调试能力。2.实验内容2.1硬件部分4*4小键盘接口设计(利用8255C口)异步串行通信接口设计(8254为波特率发生器)4位数码管显示器设计2.2软件部分键盘扫描程序。将按键0F转换成015的二进制值串行接口通信程序。1.发送/接收均为查询方式;2.发送为查询方式/接收采用中断方式;二者选其一4位七段数码管显示程序。左移位方式显示09、AF将串行接口发送端和接收端环回,当在4*4小键盘上敲击按键时,经串口发送、接收后将对应键值显示在4位数码管上。(要求:依次敲击1、2、3、4、5、…,则依次显示***1、**12、*123、1234、2345、…)2.3要求两个实验组间进行双机通信,一方用小键盘键入数字,另一方接收到后在4位数码管上显示在液晶显示器上实现显示功能(选作,成绩加10分,但满分为100分)3.实验原理3.1设计思想3.1.1主函数发送端:从8255C口进行键盘扫描读入按键,获得其ASCII码值,将其发送给8251,并把发送值变换为七段译码值在LED上进行移位显示。接收端:8251接收到发送来的ASCII码值,在液晶显示器LCD上进行移位显示。主函数为一个大循环,采用查询方式,依次查询是否有键被按下,发送是否准备好,按键是否为E,接收是否准备好,接受到的数据是否为E,条件满足则执行相应操作,不满足则进行下一个查询,而不是原地踏步地查询。若按键不为E则返回一开始循环执行主程序。3.1.2键盘扫描8255C口高四位PC7-PC4输出,低四位PC3-PC0输入,接键盘的行3-列0。采用行扫描法,使键盘上*一行线为低电平,而其余行接高电平,然后读取列值;如果列值中有*位为低电平,则表明当前行与当前列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止。分别用寄存器记录当前行和当前列,并用行数*4+列数计算键值。3.1.3数码管显示8255B口输出,高四位PB7-PB4接LED位码S3-S0,选择*一个数码管。8255A口输出,PA7-PA0接LED的DP-A,将七段译码值输出到数码管,并进行显示。3.1.4液晶屏显示8255B口输出,低三位PB2,PB1,PB0分别接LCD的E,RW,DI,控制液晶显示器的使能,读/写,数据/指令。8255A口输出,PA7-PA0接LCD的D7-D0,与LED复用数据线,将ASCII值输出到液晶屏,并进行显示。3.2实验原理图3.2.1系统接线图3.2.2自发自收CLK0/8254 接1M时钟GATE0/8254 接+5VOUT0/8254接T*/R*CLK/8251CS/8254 接Y0/IO地址CS/8251接Y7/IO地址R*D/8251接T*D/82513.2.3双机通信机器A的R*D/8251接机器B的T*D/8251,机器B的R*D/8251接机器AT*D/8251,其余接线与自发自收相同。3.2.4显示模块PA7~PA0/8255接DP-A/7段译码管PA7~PA0/8255接D7-D0/LCD12864PB7-PB4/8255 接S3-S0/7段译码管PB2 /8255 接E/LCD12864PB1/8255 接R/W/LCD12864PB0 /8255 接D/I/LCD12864PC7~PC0/8255接行3-列0/4*4键盘CS/8255接Y1/IO地址3.3流程图4.实验程序DATASEGMENTIO8251EQU2B8HIO8251CTRLEQU2B9HIO8255AEQU288HIO8255BEQU289HIO8255CEQU28AHIO8255CTRLEQU28BHIO82540EQU280HIO8254CTRLEQU283H;0123456789ABCDEF的ASCII值,用于LCD显示ASCTABLEDB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H;0123456789ABCDEF七段译码值,用于LED显示LEDTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;70H=01110000,0B0H=10110000,0D0H=11010000,0E0H=11100000,用于键盘扫描第1、2、3、4行SCANDB70H,0B0H,0D0H,0E0HLEDBUFDB00H,00H,00H,00H;LED显示的四位数LCDBUFDB20H,20H,20H,20H;LCD显示的四位数FLAGDB00H;是否有数据传输的标志位NUMDB00H;输入的数CUDB00H;接收的数DATAENDSSTACKSEGMENTSTACK'STACK'DB100DUP(")STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK;延时子程序DELAYPROCNEARPUSHC*MOVC*,100HWAIT1:LOOPWAIT1POPC*RETDELAYENDP;LED移位函数LEDSHIFTPROCNEARPUSHD*PUSHB*PUSHA*;LEDBUF中四个数依次左移,右补NUMMOVB*,OFFSETLEDBUFMOVDL,[B*+2]MOV[B*+3],DLMOVDL,[B*+1]MOV[B*+2],DLMOVDL,[B*]MOV[B*+1],DLMOVDL,NUMMOV[B*],DLPOPA*POPB*POPD*RETLEDSHIFTENDP;LED显示函数,用于显示LEDBUF中的四个数SHOWLEDPROCNEARPUSHD*PUSHB*PUSHA*MOVB*,OFFSETLEDBUF;点亮数码管的最高位MOVD*,IO8255B;选择8255B口,控制位码INAL,D*ANDAL,0FH;位码清零OUTD*,ALMOVD*,IO8255A;选择8255A口,输出最高位MOVAL,[B*+3]OUTD*,ALMOVD*,IO8255B;位码控制选数码管4INAL,D*ANDAL,0FHORAL,80H;S3置1,其余置0OUTD*,AL;点亮数码管的第三最高位MOVD*,IO8255BINAL,D*ANDAL,0FH;位码清0OUTD*,ALMOVD*,IO8255A;选择8255A口,输出第三最高位MOVAL,[B*+2]OUTD*,ALMOVD*,IO8255B;位码控制选数码管3INAL,D*ANDAL,0FHORAL,40H;S2置1,其余置0OUTD*,AL;点亮数码管的第二最高位MOVD*,IO8255BINAL,D*ANDAL,0FH;位码清0OUTD*,ALMOVD*,IO8255A;选择8255A口,输出第二最高位MOVAL,[B*+1]OUTD*,ALMOVD*,IO8255B;位码控制选数码管2INAL,D*ANDAL,0FHORAL,20H;S1置1,其余置0OUTD*,AL;点亮数码管的最低位MOVD*,IO8255BINAL,D*ANDAL,0FH;位码清0OUTD*,ALMOVD*,IO8255A;选择8255A口,输出最低位MOVAL,[B*]OUTD*,ALMOVD*,IO8255B;位码控制选数码管2INAL,D*ANDAL,0FHORAL,10H;S0置1,其余置0OUTD*,ALMOVD*,IO8255B;位码清0INAL,D*ANDAL,0FHOUTD*,ALPOPA*POPB*POPD*RETSHOWLEDENDP;LCD移位函数LCDSHIFTPROCNEARPUSHD*PUSHB*PUSHA*;LCDBUF中四个数依次左移,右补CUMOVB*,OFFSETLCDBUFMOVDL,[B*+2]MOV[B*+3],DLMOVDL,[B*+1]MOV[B*+2],DLMOVDL,[B*]MOV[B*+1],DLMOVDL,CUMOV[B*],DLPOPA*POPB*POPD*RETLCDSHIFTENDP;LCD发送指令函数SEND_INSPROCNEARMOVD*,IO8255BINAL,D*ANDAL,11110000B;E=0,W,IOUTD*,ALNOPINAL,D*ANDAL,11110000BORAL,00000100B;E=1,W,IOUTD*,ALMOVD*,IO8255A ;选择数据口,输出指令码MOVAL,BL ;BL中是要输出的指令码OUTD*,ALMOVD*,IO8255BINAL,D*ANDAL,11110000B;E=0,W,IOUTD*,ALRETSEND_INSENDP;LCD发送数据函数SEND_DATAPROCNEARMOVD*,IO8255BINAL,D*ANDAL,11110000BORAL,00000001B;E=0,W,DOUTD*,ALNOPINAL,D*ANDAL,11110000BORAL,00000101B;E=1,W,DOUTD*,ALMOVD*,IO8255A;选择数据口,输出数据MOVAL,BL ;BL中是要输出的数据OUTD*,AL MOVD*,IO8255BINAL,D*ANDAL,11110000BORAL,00000001B;E=0;WDOUTD*,ALRETSEND_DATAENDP;LCD显示函数,用于显示LCDBUF中的四个数SHOWLCDPROCNEARPUSHD*PUSHB*PUSHA*MOVBL,92H ;第3位输出地址CALLSEND_INSMOVB*,OFFSETLCDBUF;输出第3位MOVB*,[B*+3]CALLSEND_DATAMOVBL,93H ;第2位输出地址CALLSEND_INSMOVB*,OFFSETLCDBUF;输出第2位MOVB*,[B*+2]CALLSEND_DATAMOVBL,94H;第1位输出地址CALLSEND_INSMOVB*,OFFSETLCDBUF;输出第1位MOVB*,[B*+1]CALLSEND_DATAMOVBL,95H;第0位输出地址CALLSEND_INSMOVB*,OFFSETLCDBUF;输出第0位MOVB*,[B*+0]CALLSEND_DATAPOPA*POPB*POPD*RETSHOWLCDENDP;获取键盘的输入数字的子程序INPUTPROCNEARPUSHA*;保护现场PUSHC*PUSHD*MOVC*,00H;从第一行开始扫描CHECK:MOVD*,IO8255C;选择C口地址MOVB*,OFFSETSCAN;得到扫描码ADDB*,C*MOVAL,[B*]OUTD*,AL;把要扫描的那一行置0,其余置1;防止抖动INAL,D*;判断是否有键盘按下MOVAH,ALCALLDELAY;延迟一段时间,避过抖动区间INAL,D*;延时后再次读入CMPAL,AH;比较两次读入的值JNZCHECK;不相等说明为抖动,重新检测;判断按下的是哪一列ANDAL,0FHCMPAL,0FH;没有键按下JZNE*TCMPAL,0EH;第四列有键按下JZNE*T1CMPAL,0DH;第三列有键按下JZNE*T2CMPAL,0BH;第二列有键按下JZNE*T3MOVB*,00H;第一列有键按下JMPGETNUMNE*T:INCC* ;修改变量扫描下一行CMPC*,04HJNZCHECK;没有扫描完四行跳转JMPDONE;已经扫描完四行跳转;记录是哪一列有键按下NE*T1:MOVB*,03HJMPGETNUMNE*T2:MOVB*,02HJMPGETNUMNE*T3:MOVB*,01H;计算按下的键的数值GETNUM:MOVAL,CLMOVDL,04HMULDL;行数乘以4,再加上列数ADDBL,AL;此时BL中所存即为按下的键;检测键盘是否弹起MOVD*,IO8255C;C口输入INAL,D*MOVAH,ALNOTUP:CALLDELAYINAL,D*CMPAL,AHJZNOTUP;未弹起,延时重复检测MOVFLAG,01H;有键按下,把flag置1,CALLFINDASC;把键盘值转换为ASC值MOVDL,CL;按键值显示到DOS界面上MOVAH,02HINT21HDONE:POPD* ;恢复现场POPC*POPA*RETINPUTENDP;找到键值对应的ASC数值,存到NUM中FINDASCPROCNEAR*ORC*,C*MOVCL,BL;BL中是键盘按下的值MOVB*,OFFSETASCTABLEADDB*,C*;此时B*即为在ASCTABLE中对应的地址MOVCL,[B*];CL内存着此次按下键盘值的ASC值MOVNUM,CLRETFINDASCENDP;找到键值对应的七段译码值,存到NUM中FINDLEDPROCNEAR*ORC*,C*MOVCL,BL;BL中是键盘按下的值MOVB*,OFFSETLEDTABLEADDB*,C*;此时B*即为LEDTABLE中对应的地址MOVCL,[B*];CL内存着此次按下键盘值的七段译码值MOVNUM,CLRETFINDLEDENDP;主程序START: MOVA*,DATAMOVDS,A* ;初始化8253MOVD*,IO8254CTRL;8253控制端口地址MOVAL,16H;8253选择计数器0低八位,方式3,二进制计数,00010110OUTD*,ALMOVD*,IO82540;计数器0地址MOVAL,52;写入计数初值52(时钟1M,波特率1200baud,波特率因子16)OUTD*,AL;初始化8251MOVD*,IO8251CTRL;8251控制端口地址MOVAL,40H;工作命令字软复位,01000000OUTD*,ALNOPMOVAL,4EH;方式命令字,一个停止位,无校验,8个数据位,波特率因子16,异步01001110OUTD*,ALNOPMOVAL,27H;工作命令字,允许发送接收,00100111OUTD*,ALNOP;初始化8255 MOVD*,IO8255CTRL;8255控制端口地址MOVAL,081H;方式控制字:C口低四位输入,B口输出,方式0,A口输出,方式0OUTD*,ALMOVFLAG,00H;LCD初始化PUSHA*PUSHB*PUSHD*MOVD*,IO8255CTRLMOVAL,10000001BOUTD*,ALMOVBL,30H;基本指令操作,RE=0CALLSEND_INSMOVBL,01H;清除显示CALLSEND_INSMOVBL,06H;指定在资料写入或读取时,光标的移动方向CALLSEND_INS;DDRAM的地址计数器(AC)加1MOVBL,0CH;开显示,关光标,不闪烁CALLSEND_INSPOPD*POPB*POPA*CALLSHOWLCD ;扫描键盘LOOP1: CALLINPUTCALLSHOWLEDMOVD*,IO8251CTRL;检验8251发送是否准备好T*RDYINAL,D*ANDAL,01HJNZSEND;8251发送准备好,转去发送;发送未准备好,检验接收是否准备好LOOP2:MOVD*,IO8251CTRLINAL,D*ANDAL,02H;检验8251发送是否准备好R*RDYJNZRECEIVE;接收准备好,转去接收JMPLOOP1;接收未准备好,转去扫描键盘;发送准备好,判断键盘是否按下SEND:CMPFLAG,01HJESSENDJMPLOOP2;发送准备好,但是没有键盘按下,转去检验接收;键盘按下,要发送数据SSEND:MOVD*,IO8251;8251数据端口地址MOVAL,NUMOUTD*,AL;把发送的数据(ASC值)输出到8251CMPNUM,45H;数据与E比较
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淋巴瘤患者瘤组织中乙型肝炎病毒检测及其临床意义探究
- 液位遥测:船舶装卸安全的智慧守护者
- 涉外婚姻家庭领域国际私法弱者利益保护原则:理论、实践与展望
- 消费者视角下农产品区域品牌资产的多维剖析与提升路径
- 公司成品检验规范管理制度
- 装载机特点及技术参数性能分析
- 金融资产配置与风险管理手册
- 房屋加固工程安全协议书合同二篇
- 妊娠期脑卒中快速反应团队管理策略
- 妊娠期结核病合并妊娠期妊娠期糖尿病的运动处方调整流程
- 2026年中国铁路成都局集团有限公司校园招聘笔试参考题库及答案解析
- 会计局内部监督制度范本
- 2026太平保险校招面试题及答案
- 企业环保工作绩效考核方案
- 2026年航空航天基础知识模拟题库
- 肿瘤免疫治疗伦理审查的特殊考量
- 华为财务制度与工作流程
- 激光技术发展
- 宁夏滩羊介绍
- 团委书工作面试题集
- 2026年资料员之资料员基础知识考试题库300道含答案(培优a卷)
评论
0/150
提交评论