




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基础课程设计(论文) 基于 8255 驱动的数码管显 示和键盘电路设计与编程 专专 业:业:电气工程及其自动化 指导教师:指导教师: 小组成员:小组成员: 信息技术学院电气工程系 20142014 年年 1010 月月 2828 摘要 I 摘要 本文主要是基于 8255 微处理器芯片,设计中包括数码管显示和矩阵键盘输入 部分,可以完成一些简单 4 位以内的十进制计算。全文较为详细的介绍了芯片工 作原理,硬件和软件的设计以及各部分的驱动程序和流程图。 关键词:关键词:矩阵按键 ,数码显示,运算 摘要 II 目录 摘要.I 绪论.1 1 课程设计任务要求及规定2 1.1 课程设计要求.2 1.2 课程设计规定.2 2 整体设计思想2 3 硬件设计.3 3.1 原器件件清单.3 3.2 微处理器 8086 芯片3 3.3 可编程并行接口芯片 8255A.4 3.4 LED 数码管.6 3.5 44 矩阵按键7 3.6 硬件原理图8 4 软件设计8 4.1 程序流程图8 4.2 总程序设计11 4.3 按键扫描程序设计11 4.4 矩阵键盘程序设计13 4.5 运算程序设计.18 4.6 显示程序设计.19 4.7 延时子程序.21 参考文献22 1 绪论 课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决 实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系 实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立 自主解决设计实践中遇到的各种问题能力的一个重要教学环节。 通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设 计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计 题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理 论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应 用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路 的设计方法,熟练应用 8086 汇编语言编写应用程序和实际设计中的硬软件调试方 法和步骤,熟悉微机系统的硬软件开发工具的使用方法。 通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养 学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工 程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。 摘要 2 1 课程设计任务要求及规定 1.1 课程设计要求 1.四位数码管动态显示左向移位的数据,例如显示 1235 2.完成 4 位数的十进制加法运算,结果显示 3.完成 3 位数的十进制加法运算,结果显示在 4 位 LED 上 4.完成一个 4 位十进制数除 2 位十进制数的除法运算,并将结果以十进 制形式显示 5.完成 2 位十进制数的乘法运算,结果显示 4 位 1.2 课程设计规定 设计硬件线路,用 protel 画图。按单元电路详细说明硬件线路设计思路,元 件参数,选取根据。附详细的元件清单。软件设计。只设计键盘扫描和 LED 显示 部分程序。 有完整的程序流程图,完整的程序清单,并加注释。总结设计过程和设计体 包括总流程图和模块流程图。对程序设计思想做详细说明。 2 整体设计思想 首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就 调用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用 相应的子程序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从 而实现 4 位十进制数以内的加减乘除法运算。运算完成后将运算的结果储存并显 示到 LED 显示器上。如下图: 3 图 1 整体思路流程图 3 硬件设计 3.1 原器件件清单 表一元器件清单 原件名称原件个数 80861 8255A1 8 位 4 字共阴极数码管1 74LS1381 按钮开关16 电阻4 直流 5V 电源1 3.2 微处理器 8086 芯片 当引脚接高电平时,CPU 工作于最小模式。此时,引脚信号 2431 的含义及其 功能如下: (1)IO/M/(memory I/O select):存储器、I/O 端口选择控制信号。 信号指 摘要 4 明当前 CPU 是选择访问存储器还是访问 I/O 端口。为高电平时访问存储器,表示当 前要进行 CPU 与存储器之间的数据传送。为低电平时,访问 I/O 端口,表示当前要 进行 CPU 与 I/O 端口之间的数据传送。 (2)WR/(write):写信号,输出,低电平有效。 信号有效时,表明 CPU 正 在执行写总线周期,同时由信号决定是对存储器还是对 I/O 端口执行写操作。 (3)INTA/(interrupt acknowledge):可屏蔽中断响应信号,输出,低电平 有效。 CPU 通过信号对外设提出的可屏蔽中断请求做出响应。为低电平时,表示 CPU 已经响应外设的中断请求,即将执行终端服务程序。 (4)ALE(address lock enable):地址锁存允许信号,输出,高电平有效。 CPU 利用 ALE 信号可以把 AD15 AD0 地址/数据、A19/S6A16/S3 地址/状态线上的 地址信息锁存在地址锁存器中。 (5)DT/(data transmit or receive):数据发送/接收信号,输出,三态。 DT/信号用来控制数据传送的方向。DT/为高电平时,CPU 发送数据到存储器或 I/O 端 口;DT/为低电平时,CPU 接收来自存储器或 I/O 端口的数据。 (6)DEN/(data enable):数据允许控制信号,输出,三态,低电平有效。 信号用作总线收发器的选通控制信号。当为低电平时,表明 CPU 进行数据的读/写操 作。 (7)HOLD(bus hold request):总线保持请求信号,输入,高电平有效。在 DMA 数据传送方式中,由总线控制器 8237A 发出一个高电平有效的总线请求信号,通 过 HOLD 引脚输入到 CPU,请求 CPU 让出总线控制权。 (8)HLDA(hold acknowledge):总线保持响应信号,输出,高电平有效。 HLDA 是与 HOLD 配合使用的联络信号。在 HLDA 有效期间,HLDA 引脚输出一个高电平 有效的响应信号,同时总线将处于浮空状态,CPU 让出对总线的控制权,将其交付给 申请使用总线的 8237A 控制器使用,总线使用完后,会使 HOLD 信号变为低电平, CPU 又重新获得对总线的控制权。 3.3 可编程并行接口芯片 8255A 微机系统的信息交换有两种方式:并行通信接口方式和串行通信接口方式。 接口电路在 CPU 和 I/O 设备之间起着信号的变换和传输的作用。8255A 可为 86 系 列 CPU 与外部设备之间提供并行输入/输出的通道。由于它是可编程的,可以通过 软件来设置芯片的工作方式,因此,用 8255A 连接外部设备时,通常不用再附加 外部电路,使用教方便。并行接口是在多根数据线上,以数据字节/字与 I/O 设备 交换信息。 5 图 2 8255A 引脚图 在输入过程中,输入设备把数据送给接口,并且使状态线“输入准备好”有 效。接口把数据存放在“输入缓冲寄存器”中,同时使“输入回答”线有效,作 为对外设的响应。外设在收到这个回答信号后,就撤消数据和“输入准备好”信 号。数据到达接口中后,接口会在“状态寄存器”中设置输入准备好标志,或者 向 CPU 发一个中断请求。CPU 可用查询方式或中断方式从接口中读取数据。接口 中的数据被读取后,接口会自动清除状态寄存器中的标志,且撤消对 CPU 的中断 请求。 在输出过程中,每当输出寄存器可以接收数据,接口就会将状态寄存器中 “输出准备好”状态置 1 或向 CPU 发一个中断请求,CPU 可用查询或中断方式向 接口输出数据。当 CPU 输出的数据到达接口后,接口会清除“输出准备好”状态, 把数据送往外设,并向外设发一个“数据输出准备好”信号。外设受到驱动后, 便接收数据,并向接口电路发一个“输出回答”信号,接口收到该回答信号后, 又将状态寄存器中“输出准备好”置位,以便 CPU 输出下一个数据。 定义工作方式控制字: 摘要 6 图 3 寄存器位图 3.4 LED 数码管 LED 为发光二极管构成的显示器件,亦称数码管。由 7 个字符段和一个小数点段 组成,每段对应一个发光二极管,当发光二极管点亮时,相应的字符段点亮。LED 有 共阴极和共阳极两种供应状态。共阴极显示时,将 LED 显示的 COM 接地,将八个字 符段端 a、b、c、d、e、f、g、dp 依次与一个 8 位 I/O 口的最低到最高位连接,当 I/O 给 LED 的哪个字符段送入一个高电平时,该段就被点亮,从而可从这 7 个字符段 中被点亮的构成相应的字符显示出来。同理,COM 阳极即将 COM 端接 Vcc,其显示原 理与 COM 阴极的基本相同,但 I/O 口送入低电平是相应的段才被点亮。 图 4 protel 中 LED 图引脚控制图 3.5 44 矩阵按键 键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,如果是独立按钮 的话必须要需要一个 I/O 口对它进行检测,而键盘往往这需要键盘按钮数一半的 I/O 口数对它进行检测,也许对一个比较简单的系统 I/O 口数一般不是问题,但对于一 7 个大型、复杂的系统来说 I/O 资源就显得非常珍贵了,尽量减少 I/O 使用是非常利 于降低成本,另外一方面键盘比用独立按键要美观,这也是键盘能够长期得到人们 青睐的原因,可是硬件上的节省必然导致软件上编程的复杂,那就来看看键盘到底 使软件编程有多复杂? 因为 44 矩阵键盘有 8 个管脚,于是将键盘接 8255A 的 PC 口,至于为什么选 择 PC 是有原因的,进行键盘扫描一般要求有一部分的 I/O 口的工作方式是输入,另 一部分 I/O 是输出,具体到 44 键盘则要求 4 个 I/O 口输入,另外 4 个输出,这一 点 PC 口刚好符合,而 PA、PB 口要么全部输入或输出,所以只能是 PC 口接键盘。 图图 5 5 protel 中矩阵键盘图 3.6 硬件原理图 图 6 整体硬件设计图 摘要 8 4 软件设计 4.1 程序流程图 开始 初始化 延时 12ms 键扫描 保存键值 键闭合? 键释放? 结束 键闭合? Y Y Y N N N 键盘扫描程序流程图 9 计算键值 扫描 加法运算 减法运算 显示 乘法运算 存储 除法运算 数值? 运算符? “ = ” ? 清零 “ + ” ? “ - ” ? “ * ” ? 总程序流程图 摘要 10 4.2 总程序设计 DATA SEGMENT XDB?;存放数据的每一位 X1 DW ?;存放第一个数据值 X2 DW?;存放第二个数据值 YDW?;存放运算结果 SDB? ;存放运算符号值 EDB? ;按下等号键标记 CC DB? ;存放运算数据位数 HDB0 ;存放按键行号 LDB0 ;存放按键列号 DISCODEDB 3FH,06H,5BH,4FH, 66H,6DH,7DH,07H, 7FH,6FH,77H,7CH, 39H,5EH,79H,71H;段码表 DATA ENDS 4.3 按键扫描程序设计 以下为按键扫描子程序,程序返回后,在变量 H 和 L 中存放当前按键的行列号: CODE SEGMENT ASSUMECS:CODE,DS:DATA START: MOVAX,DATA MOVDS,AX MOVAL,90H ;设置为 A 口输入,B 口输出,C 口输出 OUT46H,AL MOVDI,OFFSET X+3;DI 指向 X 的高位 KKK:CALLKEY ;扫描按键 JMPKKK KEY PROC CHECK:CALLDISP ;等待按键按下的同时进行显示 MOVAL,0F0H ;所有行输出低电平 OUT44H,AL INAL,40H CMPAL,0FFH ;读列值 JZ CHECK ;若都为高电平则无键按下,等待 11 MOVCX,50 LOOP$ ;延时消抖 INAL,DX ;重读列值 CMPAL,0FFH JZCHECK ;无键按下一直等待 MOVH,0 ;有键按下,先把行列号变量清 0 MOVL,0 MOVBL,01H MOVBH,0FEH ;扫描法读键值:从第一行开始测试,即 PC0 输出低电平 NEXT:MOVAL,BH OUT 44H,AL NEXTH:INAL,40H ;读列值,判断是第几列有键按下 TESTAL,BL ;从第一列开始判断 JZWAIT0 ROLBL,1 CMPBL,10H ;当前行状态下没有列有键按下,则转为对下 一行的测试 JZNEXTL INCH ;每判断一列,列号加 1 JMPNEXTH ;再对下一列进行判断 NEXTL:MOVH,0 MOVBL,01H ROLBH,1 ;对下一行测试,让下一个 PC 口输出低电平 CMPBH,0EFH JZEXIT INCL JMPNEXT WAIT0:INAL,40H ;若有键按下,则等该按键松开后再计算键值 CMPAL,0FFH JNZWAIT0 MOVCX,50 LOOP$ ;延时消抖 INAL,40H CMPAL,0FFH JNZWAIT0 摘要 12 CALLKEYVALUE ;调计算键值子程序 EXIT:RET KEY ENDP 4.4 矩阵键盘程序设计 4.4.1 键值子程序 以下为计算键值子程序,通过行列号计算键值(键值=行号*4+列号)键值存放在 DL 寄存器中: KEYVALUE PROC MOVDL,L MOVDH,H SHLDL,1 SHLDL,1 ;列号乘 4 ADDDL,DH CMPDL,9 ;按下的是数字键 JNGNUM_CALL CMPDL,14 JLCONT_CALL ;按下的是运算键 CMPDL,14 JZOUTP_CALL ;按下的是等于键 CMPDL,15 JZCLR_CALL ;按下的是清除键 NUM_CALL: CALLNUMBER ;调数字键处理子程序 JMPEXIT1 CONT_CALL:MOVS,DL ;存放运算键的键值 MOVE,0 CALLCOUNT 调运算键处理子程序,计算第一个 加数 JMPEXIT1 OUTP_CALL:CALLOUTP ;调等号键处理子程序 JMPEXIT1 CLR_CALL:CALLCLEAR ;调清除键处理子程序 EXIT1:RET KEYVALUE ENDP 13 4.4.2 清除键子程序 以下为清除键处理子程序,按下清除键后,X 变量全部清 0: CLEAR PROC MOVX3,0 MOVX2,0 MOVX1,0 MOVX0,0 CALLBITP RET CLEAR ENDP 4.4.3 等号键子程序 以下为等号键处理子程序,该子程序负责将第二个运算数据的数值计算出来存入 X2 变量,并根据运算符号,调用相应的运算子程序: OUTP PROC PUSHAX PUSHDX PUSHBX INCE CALLCOUNT ;调运算键处理子程序,计算第二个运算数据 CMPS,10 JZADD_CALL ;运算符为加号,则调用加法子程序 CMPS,11 JZSUB_CALL ;运算符为减号,则调用减法子程序 CMPS,12 JZMUL_CALL ;运算符为乘号,则调用乘法子程序 CMPS,13 CALLDIVP ;运算符为除号,则调用除法子程序 JMPSTORE1 ADD_CALL:CALLADDP JMPSTORE1 SUB_CALL:CALLSUBP JMPSTORE1 MUL_CALL:CALLMULP STORE1:MOVAX,Y 摘要 14 4.4.4 运算结果返回程序 以下程序将各运算子程序返回的运算结果,按位分解,送入 X 变量 MOVDX,0 MOVBX,1000 DIVBX MOVX0, AL MOVAX,DX MOVBL,100 DIVBL MOVX1,AL MOVAL,AH MOVAH,0 MOVBL,10 DIVBL MOVX2,AL MOVX3,AH POPBX POPDX POPAX RET OUTP ENDP 4.4.5 运算键子程序 以下为运算键处理子程序,该程序将第一个运算数据的数值计算出来并存入 X1 变量;或者将第二个运算数据的数值计算出来并存入 X2 变量;将运算符的值存入 S 变 量 COUNT PROC PUSHAX PUSHBX PUSHDX MOVDX,0 CALLBITP ;测试 X 中的数据是多少位 CMPCC,4 ;输入的数据是 4 位数 ? JZC4 CMPCC,3 ;输入的数据是 3 位数 ? JZ C3 CMPCC,2 ;输入的数据是 2 位数 ? 15 JZC2 JMPC1 ;输入的数据是 1 位数 ? C4: MOVAX,0 MOVAL,X0 MOV BX,1000 MUL BX MOV DX,AX C3: MOVAL,X1 MOV BL,100 MUL BL ADD DX,AX C2: MOV AL,X2 MOVBL,10 MULBL ADDDX,AX C1: MOVAL,X3 MOVAH,0 ADDDX,AX CMPE,1 JNZX1_S MOVX2,DX ;按下的是等号,则将第二个运算数据的值存入 X2 变量 JMPEXIT3 X1_S:MOVX1,DX ;按下的是运算符号,则将第一个运算数据的值 存 X1 变量 MOVX3,0 ;清空 X 变量 MOVX2,0 MOVX1,0 MOV X0,0 EXIT3: POP DX POPBX POPAX RET COUNT ENDP 4.4.6 数字键子程序 以下为数字键处理子程序,该程序,将输入的数据按位存放在 X 变量中,并由 摘要 16 CC 记录数据的位数 NUMBER PROC CMPE,1 JNZCONTINUE MOVE,0 CALLCLEAR CONTINUE:CMPCC,0 ;目前数据为 0 位,即没有数据,则转到 SSS JZSSS PUSHAX PUSHDX MOVAL,X3 MOVAH,X2 MOVDL,X1 MOVDH,X0 MOV CX,8 LL:SHLAX, 1 RCLDX,1 LOOPLL MOVX3,AL MOVX2,AH MOVX1,DL MOVX0,DH POPDX POPAX SSS:MOV DI,DL ;将当前键入的数据存放到 X 的最低位 INCCC ;数据位数加 1 CMPCC,4 ;判断数据位数 JNGEXIT2 MOVCC,0 ;如果数据超过 4 位,重新从最低位开始存放 MOVX2,0 MOVX1,0 MOV X0,0 EXIT2: CALL DISP ;调显示子程序,显示输入的数据 RET NUMBER ENDP 17 4.5 运算程序设计 4.5.1 加法子程序 ADDP PROC PUSHAX MOVAX,X1 ADDAX,X2 MOVY,AX POPAX RET ADDP ENDP 4.5.2 减法子程序 SUBP PROC PUSHAX MOVAX,X1 SUBAX,X2 MOV Y,AX POP AX RET SUBP ENDP 4.5.3 乘法子程序 MULP PROC PUSHAX PUSHDX MOV AX,X1 MOVDX,X2 MULDX MOVY,AX POPDX POPAX RET MULP ENDP 摘要 18 4.5.4 除法子程序 DIVP PROC PUSHAX PUSHBX PUSHDX MOVDX,0 MOV AX,X1 MOVBX,X2 DIV BX MOVY,AX POP DX POP BX POP AX RET DIVP ENDP 4.6 显示程序设计 4.6.1 显示程序设计 DISP PROC PUSHBX PUSH AX MOVBH,0 LEA SI,DISCODE CALLBITP ;测试 X 位数 CMP CC,4 JZ QIAN CMP CC,3 JZ BAI CMP CC,2 JZ SHI CMP CC,1 JMP G JMP NONE QIAN: MOVAH,11100000B ;从第 4 位开始显示 MOVAL,AH 19 OUT 44H,AL MOV BL,X0 MOV AL,SI+BX OUT 42H,AL CALL DELY MOV AL,0 OUT 42H,AL BAI:MOVAH,11010000B ;从第 3 位开始显示 MOV A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年车载空气净化器合作协议书
- 网络软件开发及运维服务协议细节
- 建筑行业施工资质认定证明(7篇)
- 酒店业智能客房服务系统设计与实施策略制定方案
- 农业合作社财务管理制度合作协议书
- 软件定制开发与软件工程化解决方案
- 三方停车场车位租赁协议
- 商业场所装修设计与施工合同协议
- 2025年农村房屋买卖合同范本「常用」
- 2025配电箱租赁合同范本
- 2025年湖北荆州市监利市畅惠交通投资有限公司招聘笔试参考题库含答案解析
- 酒店入股合同协议书
- 银行sql考试题及答案
- 2025闽教版英语三年级下册单词表
- 全套教学课件《工程伦理学》
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 中智公司招聘西飞笔试题
- 英语时间表达法微课PPT.ppt
- 全国职业院校技能大赛高职组汽车检测与维修赛项竞赛试题答案集
- 《2021国标电气弱电图集资料》88D369电气设备在轻钢龙骨隔墙及吊顶上的安装
- 六年级数学解方程计算题100道
评论
0/150
提交评论