单片机简易计算器的设计.doc_第1页
单片机简易计算器的设计.doc_第2页
单片机简易计算器的设计.doc_第3页
单片机简易计算器的设计.doc_第4页
单片机简易计算器的设计.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要:简易计算器的设计主要分为键盘的编码、七段LED 数码管的显示及四则运算法则的编写三部分。设计中我们用可编程外围接口芯8255A 连接键盘和七段LED 数码管,用七段LED 数码管显示键盘输入信号及运算结果,利用简单的汇编语言编写相应程序进行两位自然数的有效四则运算。 关键词:8255A;七段LED数码管;汇编语言;四则运算 一、简易计算器的基本原理本课程设计的原理是:通过8255A控制键盘和LED显示器。也就是说首先将8255A与键盘和LED显示器相连,然后编译程序,通过程序完成对8255A的初始化。断开模板的排线,独自利用8255A作控制芯片,控制键盘的输入和计算结果的显示。二、设计方案将可编程外围接口芯片8255A 与键盘和七段LED 连接,通过对8255A 编程及对键盘的操作实现计算功能:键盘码包括数字09、运算符号“+” “-” “*” “/”“=”和清零“CL”键,通过键盘依次输入第一个运算数字、运算符号、第二个运算数字、“=”,在七段LED 灯上显示运算结果,期间数字输入有误可按“CL”键之后重新输入。三、硬件设计可编程外围接口芯片8255A 的PA 端口低四位做七段LED 灯的片选输出端,PB 端口八位做七段LED 灯的数据数码管输出端,PC 端口高四位输出(行线),低四位输入(列线),74LS138 片选300H-307H 端接8255A 芯片CS 片选端。1.1 LED 显示器及其功能七段LED 显示器由七个发光段构成,每段均是一个LED 二极管。这七发光段分别称为a,b,c,d,e,f,g,通 过控制不同段的点亮和熄灭,以显示所要得到的数字。七段LED 的输出功能也是通过8255的并行输出实现。 图1 LED数码管12 LED 显示数字编码表2.1 8255A 的基本工作原理:8255 是Intel 公司生产的可编程输入输出接口芯片,它是具有3 个8 位的并行I/O 端口,具有三种工作方式,被广泛地使用于单片机的并行I/O 端口。3工作方式0:基本输入输出方式工作方式1:选通输入输出方式工作方式2:双向传送方式2.2 8255 引脚功能说明:RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O 口均被置成输入方式。PA0PA7:端口A 输入输出线,一个8 位的数据输出锁存器/缓冲器, 一个8 位的数据输入锁存器。PB0PB7:端口B 输入输出线,一个8 位的I/O 锁存器, 一个8 位的输入输出缓冲器。PC0PC7:端口C 输入输出线,一个8 位的数据输出锁存器/缓冲器, 一个8 位的数据输入缓冲器。端口C 可以通过工作方式设定而分成2 个4 位的端口, 每个4 位的端口包含一个4 位的锁存器,分别与端口A 和端口B 配合使用,可作为控制信号输出或状态信号输入端口。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255 与CPU 进行通讯。RD:读信号线,当这个输入引脚为低电平时,允许8255 通过数据总线向CPU 发送数据或状态信息,即CPU 从8255 读取信息或数据。WR:写入信号,当这个输入引脚为低电平时,允许CPU 将数据或控制字写8255。D0D7:三态双向数据总线,8255 与CPU 数据传送的通道,当CPU 执行输入输出指令时,通过它实现8 位数据的读/写操作,控制字和状态信息也通过数据总线传送2.3 8255 的读写控制:8255 的读/写控制逻辑电路接受CPU 发来的控制口号RD、WR、RESET 和地址信号A1A0。然后根据命令端口,控制信号的要求,将端口的数据读出选信CPU 或者将CPU 送来的数据写入端口,各端口的工作状态。通过用输出指令对8255A 的控制字寄存器编程,写入设定工作方式的控制字,可以让3个数据口以不同的方式工作,端口A 可工作于3 种方式的任一种,端口B 只能工作于方式0 和方式1,端口C 除了用于输入输出端口外,还能配合A 口和B 口工作,为这两个端口的输入输出操作提供联系信号。2.4 键盘原理当进行扫描时,扫描信号由列引脚输入键盘。以1000、0100、0010 和0001 的顺序每次扫描不同的列,然后读取列引脚的信号就可以判断是哪个键被按下。5识别键盘上哪个键被压下的过程的扫描步骤:1.检测是否所有键都都松开了,若没有则反复检测。2.但所有键都松开了,再检测是否有键压下,若无键一下则反复检测。3.如有键压下,要消除键抖动,确认有键压下。4.对压下的键进行编码,将该键的行列信号转换成16 进制码,由此确定哪个键被压下了。如出现多键重按的情况,只有在其它键均释放后,仅剩一个键闭合时,才把此键当作本次压下的键。5.该键释放后,再回到2。图2 计算机电路图四、软件设计系统流程图 图3 8255A流程图 图4 计算器系统流程图1 键盘调试代码 PORTA EQU 300HPORTB EQU 301HPORTC EQU 302HPORT_CTRL EQU 303HDATA SEGMENTTABLE DB77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEHDB0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEHFORM DB0F9H,0A4H,0B0H,00H,99H,92H,82H,7FHDB0F8H,80H,98H,0C0H,01H,01H,01H,01HDATA ENDSSTACK SEGMENT STACKDW 50 DUP(0)TOP_STACK LABELWORDSTACK ENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART: MOV AX,STACKMOV SS,AXLEASP,TOP_STACKMOV AX,DATAMOV DS,AXMOVDX,PORT_CTRLMOVAL,10000001BOUT DX,ALMOV DX,PORTAMOV AL,00HOUT DX,ALMOV DX,PORTBMOV AL,0FFHOUT DX,ALBEGIN: MOVDX,PORTCWAIT_OPEN: IN AL,DXAND AL,0FHCMP AL,0FHJNEWAIT_OPENWAIT_PRES: IN AL,DXAND AL,0FHCMP AL,0FHJEWAIT_PRESMOVCX,16EAHDELAY: LOOPDELAYIN AL,DXAND AL,0FHCMP AL,0FHJEWAIT_PRESNEXT: MOVAL,0EEHMOV CL,ALNEXT_ROW:ANDAL,0F0HOUT DX,ALIN AL,DXAND AL,0FHCMP AL,0FHJNEENCODEROL CL,01MOV AL,CLJMPNEXT_ROWENCODE: MOVBX,000FHMOVDX,PORTCIN AL,DXANDCL,0F0HAND AL,0FHADD AL,CLNEXT_TRY: CMPAL,TABLEBXJE DONEDEC BXJNSNEXT_TRYMOVAH,01HJMP EXITDONE:MOVAL,FORMBXMOVDX,PORTBOUT DX,ALMOVAH,00HMOVCX,5000HD1:LOOP D1JMP STARTEXIT: JMP STARTCODE ENDSEND2 基于二进制码运算设计代码ADD_L:ADD AX,DX ;CMP AX,9999 ;判断是否溢出JA OVERFLOW ;溢出JMP DISPLAY_P ;调用结果显示过程SUB_L:SUB AX,DX ;CMP AX,0 ;判断是否溢出JS OVERFLOW ;溢出JMP DISPLAY_P ;调用结果显示过程MUL_L:MUL DX ;AX与第二个输入的数DX 相乘-结果放入(DX,AX)CMP DX,0 ;如果DX 不为零,即结果超出1 个字节(65535)JNE OVERFLOW ;溢出CMP AX,9999 ;判断是否溢出JA OVERFLOW ;溢出JMP DISPLAY_P ;调用结果显示过程DIV_L:CMP DX,255JA OVERFLOW ;被除数要小于FFH(要求DH 为零)DIV DL ;第一个输入的数AX 除以第二个输入的数AND AX,00FFH ;保留商AL,对余数AH 清零JMP DISPLAY_P ;调用结果显示过程3 LED 刷新代码LED PROCPUSH AXPUSH BXPUSH CXPUSH DXLED_L:MOV CL, 0EEHMOV BX, 0LED_NEXT:PUSH BXMOV DX, PORT_B ;B 口控制七管灯的数字显示MOV BL, BUFFER_L+BXMOV AL, FORMBXOUT DX, AL ;送数值MOV DX,PORT_AMOV AL,CLOUT DX,AL ;送片选ROL CL, 1POP BXINC BXCMP BX, 4PUSH CXMOV CX,200HD0: LOOP D0POP CXJNE LED_NEXTPOP AXPOP BXPOP CXPOP DXRETLED ENDP4 Clear 功能代码及出错处理CLEAR_L PROCMOV AL,0MOV BUFFER_L,ALMOV BUFFER_L+1,ALMOV BUFFER_L+2,ALMOV BUFFER_L+3,ALRETCLEAR_L ENDPERROR PROC ;出错处理HLTRETERROR ENDP五、结论电子设计正在当今社会发挥越来越重要的作用,其采用的软硬件结合技术也逐渐成熟,该模拟系统正是采用软硬相结合的方法实现的6。8255A 可编程外围接口芯片有着不同的端口,可以进行不同的工作式,因而有着及其广泛的应用。在键盘设计方面,主要是软件的设计,通过程序编码来完成硬件方面所无法工作的部分,例如关于在扫描键盘时需要逐行拉低并进行判断、编码。判断时,需要不断的屏蔽字节,来获所需要的数据,而这一点硬件是无法做到的。本文给出了一个基于汇编言和基础芯片电子计算器的设计,对于进行初步硬件设计的读者有一定的帮助。由于完整程序代码过长,本文并没有给出,仅给出核心代码供参考。 参考文献1 钱晓捷 主编:微机原理与接口技术,第4版,

温馨提示

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

评论

0/150

提交评论