ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:1.13MB ,
资源ID:26852757      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26852757.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(宿迁学院10微机课程设计点阵LED显示实验.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

宿迁学院10微机课程设计点阵LED显示实验.docx

1、宿迁学院10微机课程设计点阵LED显示实验 课 程 设 计 报 告课程设计名称:微型计算机技术及应用 系 : 三系 学生姓名: 班 级: 学 号: 成 绩: 指导教师: 开课时间: 2012-2013 学年 1 学期点阵LED显示实验一、 设计题目课设题目:LED显示设计二、 主要内容在课程设计时,1人一组,设计报告由学生独立完成,不得互相抄袭。教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。学生在设计中可以引用所需的参考资料,避免重复工作,加

2、快设计进程,但必须和题目的要求相符合,保证设计的正确。学生学会掌握和使用各种已有的技术资料,不能盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。学生要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。三、 具体要求要求:.从键盘输入数字(09); .从LED显示09。四、 实验原理1.88LED双色点阵显示器及4x4键盘显示控制器1. 点阵LED显示器是将许多LED类似矩阵一样排列在

3、一起组成的显示器件,当微机输出的控制信号使得点阵中有些LED发光,有些不发光,即可显示特定的信息。8x8点阵LED相当于8x8个发光二级管组成的列阵,对于共阳极LED来说,其中每一行共用一个阳极(列控制),每一列共用一个阴极(行控制),行控制和列控制满足正确的电平就可以使相应的发光管点亮。编程使得8位数码管初始显示8279-1,然后在小键盘上每按一个键,8位数码管上显示出相应字符,按A键返回。2.部分实验电路图图1 键盘显示电路图 图2 LED显示电路 3.8255A芯片工作原理8255A是一种可编程的I/O接口芯片,可以与MCS-51系统单片机以及外设直接相连,广泛用作外部并行I/O扩展接口

4、。8255A的内部结构8255A内部由PA、PB、PC三个8位可编程双向I/O口,A组控制器和B组控制器,数据缓冲器及读写控制逻辑四部分电路组成。8255A结构框图和引脚图如下:8255A的引脚功能 数据总线(8条):D0D7,用于传送CPU和8255A间的数据、命令和状态字。 控制总线(6条):RESET:复位线,高电平有效。 /CS:片选线,低电平有效。 /RD、/WR:/RD为读命令线,/WR为写命令线,皆为低电平有效。A0、A1:地址输入线:用于选中PA、PB、PC口和控制寄存器中哪一个工作。 8255A控制字和状态字8255A有两个控制字:方式控制字和C口置位/复位控制字。用户通过程

5、序可以把这两个控制字送到8255A的控制寄存器,以设定8255A的工作方式和C口各位状态。方式控制字用于设定8255A三个端口工作于什么方式,是输入还是输出方式。8255A的工作方式8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种; 方式0 :基本的输入输出方式,即无须联络就可以直接进行的 I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。 方式1 :选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0. 方

6、式2: 双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。 8255A是一个并行输入、输出器件,具有24个可编程设置的I/O口,包括3组8位的I/O为PA口、PB口、PC口,又可分为2组12位的I/O口:A组包括A口及C口高4位,B组包括B口及C组的低4位。 A口可以设置为方式0、方式1、方式2,B口与C口只能设置为方式0或方式1. 4.8279芯片工作原理8279是可编程的键盘、显示接口芯片。它既具有按键处理功能,又具有自动显示功能,在单片机系

7、统中应用很广泛。8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64B RAM,键盘控制部分可控制8*8=64个按键或8*8阵列方式的传感器。该芯片能自动消抖并具有双键锁定保护功能。显示RAM容量为16*8,即显示器最大配置可达16位LED数码显示。8279的内部结构及引脚功能8279采用单5V电源供电,40脚封装,其引脚图如下: DB0DB7:双向数据总线,用来传送8279与CPU之间的数据和命令。 CLK:时钟输入线,用以产生内部定时的时钟脉冲。 RESET:复位输入线,8279复位后被置为字符显示左端输入,二键闭锁的触点回弹型式,程序时钟前置分频器被置为31,RES

8、ET信号为高电平有效。 CS:片选输入线,低电平有效,单片机在CS端为低时可以对8279读/写操作。 A0:缓冲器低位地址,当A0为高电平时,表示数据总线上为命令或状态, 当为低电平时,表示数据总线上为数据。 RD:读信号输入线,低电平有效,将缓冲器读出,数据送往外部总线。 WR:写信号输入线,低电平有效,将缓立器读出,将数据从外部数据总线写入8279的缓冲器。 IRQ:中断请求输出线,高电平有效,在键盘工作方式下,当FIFO/传感器RAM中有数据时,此中断线变为高电平,在FIFO/传感器RAM每次读出时,中断线就下降为低电平,若在RAM中还有信息,则此线重又变为高电平。在传感器工作方式中,

9、每当探测到传感器信号变化时,中断线就变为高电平。 SL0SL3:扫描线,用来扫描按键开关,传感器阵列和显示数字, 这些可被编程或被译码。 RL0RL7:回送线,经过按键或传感器开关与扫描线联接, 这些回送线内部设置有上拉电路,使之保持为高电平,只有当一个按闭合时,对应的返回线变为低电平;无按键闭合时,均保持高电平。 SHIFT:换位功能,当有开关闭合时被拉为低电平,没有按下SHIFT开关时,SHIFT输入端保持高电平,在键盘扫描方式中,按键一闭合,按键位置和换位输入状态一起被存贮起来。 CNTL/STB:当CNTL/STB开关闭合时将其拉到低电平,否则始终保持高电平, 对于键盘输入方式,此线用

10、作控制输入端,当键被按下时,按键位置就和控制输入状态一起被存贮起来,在选通输入方式中,作选通用,把数据存入FIFO RAM中。 OUTA3OUTA0及OUTB3OUTB0:显示输出A口及B口,这两个口是164切换的数字显示。这两个端口可被独立控制,也可看成一个8位端口。 BD:空格显示,此输出端信号用于在数字转换时将显示空格或者用显示空格命令控制其显示空格字符。 VCC:+5V电源输入线。 VSS:地线输入线。 8279的编程方法1.8279可按其功能分为:键盘功能块;显示功能块;控制功能块;与CPU接口功能块控制功能块包括控制和定时寄存器,定时和控制,扫描计数器三部分,它主要用来控制键盘和显

11、示功能块工作。控制和定时寄存器:用于存贮来自CPU的编程命令,CPU对8279编程以确定键盘与显示器工作方式和其它工作条件时,先把命令控制数据放到数据总线上,然后使A0=1,WR=0CS=0,并在WR上升沿把命令键存在控制和定时寄存器中,并经译码,建立适当的功能。定时和控制:它含基本的定时计数器,第一个计数器是一个分频系数为2-31的前置定时器,分频系数可由程序预置,使内部频率为100KHz,从而能给出5.1ms键盘扫描时间和10.3ms反 跳时间,其它计数器将此基本频率分频后,提供适当的按键扫描.行扫描.键盘阵列扫描.以及显示器扫描次数。扫描计数器:扫描计数器有两种工作方式,在编码工作方式时

12、,计数器提供一种二进制计数,通过管脚SL0-SL3输出后经外部译码才能提供给键盘和显示器的扫描作用,在译码工作方式时,扫描计数器对最低二位进行译码,SL0-SL3输出4选1的译码信号,作为显示器和键盘的译码扫描。键盘功能块包括:返回缓冲器,键盘反跳及控制,8x8 FIFO传感器RAM,FIFO/传感器RAM状态. 2.返回缓冲器与键盘反跳及控制 :8条返回线被返回缓冲器缓冲,在键盘工作方式中,这几条线被逐个检测,以找出该行键中闭合的键,如果反跳电路测知某键闭合,则它等待10.3ms,然后重核此键是否仍然闭合,如果仍闭合,那么该键在矩阵中的行列地址以及SHIFT和CNTL的状态一起被送到FIFO

13、RAM中,其在FIFO RAM中的数据格式如下: D7 D6 D5 D4 D3 D2 D1 D0 CNTL SHIFT SCAN RET URN 3.显示功能块包括:显示寄存器,16X8显示RAM,显示地址寄存器. 4.I/O 接口功能块 :8279通过数据缓冲器与I/O控制,使8279与CPU系统总线接口,I/O控制部分用CS.A0.RD和WR四条线控制CPU与8279之间的数据交换,数据缓冲器是数据交换的双向通道,控制信号与数据交换间的逻辑关系见下表: CS A0 WR RD 1 0 CPU从8279读状态 0 1 0 1 CPU向8279写状态 1 0 CPU从8279读数据 0 0 1

14、 CPU向8279写数据 1 X X X 数据缓冲器输出呈三态 x为任意数(0或1) 五、 流程图六、 代码data segmentioport EQU 0c400h-0280h ;端口始地址PORT0 EQU ioport+2B0H ;8279 DATA PORTPORT1 EQU ioport+2B1H ;8279 CTRL PORTIO273 EQU ioport+280h ;273端口地址io8255a EQU ioport+288h ;8255端口A地址io8255b EQU ioport+289h ;8255端口B地址io8255c EQU ioport+28ah ;8255端口C

15、地址io8255ctr EQU ioport+28bh ;8255控制端口地址TAB DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h DB 000h,000h,000h,03ch,000h,024h,000h,024h,000h,024h,000h,024h,000h,03ch,000h,000h DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h DB 000h,

16、000h,000h,010h,000h,018h,000h,010h,000h,010h,000h,010h,000h,038h,000h,000h DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h DB 000h,000h,000h,018h,000h,024h,000h,020h,000h,010h,000h,008h,000h,03ch,000h,000h DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,0

17、00h,000h,000h,000h,000h DB 000h,000h,000h,018h,000h,024h,000h,010h,000h,020h,000h,024h,000h,018h,000h,000h DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h DB 000h,000h,000h,010h,000h,018h,000h,014h,000h,012h,000h,03eh,000h,010h,000h,010h DB 000h,000h,000h,000h,000h

18、,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h DB 000h,000h,000h,03ch,000h,004h,000h,004h,000h,01ch,000h,020h,000h,020h,000h,01ch DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h DB 000h,000h,000h,018h,000h,024h,000h,004h,000h,01ch,000h,024h,000h,024h,000h,

19、018h DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h DB 000h,000h,000h,07ch,000h,040h,000h,020h,000h,010h,000h,010h,000h,010h,000h,010h DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h DB 000h,000h,000h,018h,000h,024h,000h,024h,000

20、h,018h,000h,024h,000h,024h,000h,018h DB 000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h DB 000h,000h,000h,018h,000h,024h,000h,024h,000h,038h,000h,020h,000h,024h,000h,018hBUFER DB 0h SEC1 DB 8h ;显示缓冲单元置显示初值8279-1SEC2 DB 2hSEC3 DB 7hSEC4 DB 9hSEC5 DB 12hSEC6 DB 12hSEC7

21、DB 12hSEC8 DB 1hLED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;显示代码表 DB 7FH,6FH,77H,7CH,39h,5EH,79h,71h DB 73H,3EH,40HKEYDATA DB 23H,2BH,33H,3BH,22H,2AH,32H,3AH ;键值表 DB 21H,29H,31H,39H,20H,28H,30H,38HKEYS DB 0FFHdata endsstacks segment db 100 dup (?)stacks endscode segment assume cs:code,ds:data,ss:stacks,

22、es:datastart: CLI MOV AX,DATA MOV DS,AX MOV DX,io8255ctr MOV AL,80H OUT DX,AL MOV DX,PORT1 MOV AL,00H OUT DX,AL ;设置8279方式字 MOV AL,2AH OUT DX,AL ;设置分频系数 MOV AL,0d0h OUT DX,AL ;清显示 MOV AL,90h OUT DX,AL ;设置从左边开始写入数据TEST1: IN AL,DX ;判断8279工作是否正常 AND AL,80H JNZ TEST1KEY1: CALL KEY ;调用键盘显示子程序LP0: MOV CX,0

23、8H MOV SI,OFFSET SEC1LP2: MOV SI,BH ;键号存入显示缓冲单元 INC SI LOOP LP2 CMP BH,0AH ;判断是否为A JL LP1 MOV AX,4C00H ;返回 INT 21HLP1: MOV DI, OFFSET KEYS MOV DI,BH MOV AH, KEYS CMP AH,0FFH JZ KEY1 CALL OFFLED MOV SI,0HSTR1: MOV AL,20H MOV BL,AH MUL BL ADD SI,AX CALL DEL1 CALL DELAY0 JMP KEY1DISPW0 PROC NEAR PUSH C

24、X MOV AL,0FFH ;关行H7:15 MOV DX,IO273 OUT DX,AL MOV AH,0feH ;显示上半个字 MOV BX,IO8255a CLC CALL DISPW1 MOV AL,0FFH ;关行H0:7 MOV DX,IO8255A OUT DX,AL MOV AH,0feh ;显示下半个字 MOV BX,IO273 CLC CALL DISPW1 MOV AL,0FFH MOV DX,IO273 OUT DX,AL POP CX RETDISPW0 ENDPDISPW1 PROC NEAR MOV CX,08HDAT1: MOV DX,BX MOV AL,AH

25、OUT DX,AL MOV AL,TABSI MOV DX,io8255B OUT DX,AL INC SI MOV AL,TABSI MOV DX,IO8255C OUT DX,AL CALL DELAY0 CALL OFFLED INC SI ROL AH,01H LOOP DAT1 RETDISPW1 ENDPDEL1 PROC NEAR MOV CX,12H ;设置每个字符显示时间间隔参数DEL2: PUSH CXDEL3: PUSH CXDEL4: PUSH SI CALL DISPW0 ;调用显示子程序 POP SI LOOP DEL4 POP CX LOOP DEL3 POP C

26、X LOOP DEL2 RETDEL1 ENDPKEY PROC NEAR MOV DX,PORT1 MOV AL,0d0h OUT DX,AL ;清显示WREP: CALL DISP MOV DX,PORT1 IN AL,DX AND AL,07H JZ WREP MOV DX,PORT0 IN AL,DX MOV BL,AL MOV BH,0H MOV SI,OFFSET KEYDATAKEY0: MOV AL,SI CMP AL,BL JNE KEY5 JMP KEY4KEY5: ADD SI,01H ADD BH,01H CMP BH,10H JNE KEY0 JMP KEY4KEY4

27、: MOV BUFER,0H RETKEY ENDPDISP PROC NEARDISP0: MOV DX,PORT1 IN AL,DX AND AL,80H JNZ DISP0 MOV SI,OFFSET SEC1 MOV CX,8HDISP1: MOV BX,OFFSET LED CLD LODSB XLAT MOV DX,PORT0 OUT DX,AL LOOP DISP1 RETDISP ENDPDELAY0 PROC NEAR ;软件延时子程序 PUSH CX MOV CX,20HDELAY: PUSH CX DELA2: PUSH CXDELA3: LOOP DELA3 POP C

28、X LOOP DELA2 POP CX LOOP DELAY POP CX RETDELAY0 ENDPOFFLED PROC NEAR MOV DX,io8255B MOV AL,0H OUT DX,AL MOV DX,io8255C OUT DX,AL RETOFFLED ENDPJMP startcode ends end start七、 调试结果及运行截图1、代码调试结果如下:2、实验连线图3、实验结果截图 图1 显示0 图2 显示1 图3 显示2 图4 显示3 图5 显示4 图6 显示5 图7 显示6 图8 显示7 图9 显示8 图10 显示9八、 总结及感想本次课程设计的主要功能是

29、实现从小键盘输入数字09并将其用88双色LED点阵显示出来,在本次试验中遇到的主要问题是在使用LED灯的过程中,有的时候直接使用LED没有反应,需要先插在“绿选”上,然后插在行选上,才有正确的结果,这可能与程序中的一些程序状态字相关,也有可能是其他原因,总的来说对于程序的运行影响不大。通过本次课程设计,我学习了8279芯片以及8255A芯片的基本功能及编程方法,掌握了一般键盘和显示电路的工作原理,进一步掌握定时器的使用和中断处理程序的编程方法,理解串行接口键盘单片机汇编语言程序的基本结构,了解单片机汇编语言程序的设计和调试方法,掌握几个的基本的传送类、控制类指令的使用方法,学习了延时子程序的编写和使用,对汇编语言的代码书写与应用有了更加深刻的了解,对定时器、矩阵键盘查询、LED等相关知识更加的熟悉,懂得如何把所学的知识点串联起来运用,更懂得如何去思考。虽然也遇到各种各样的问题,但在老师以及同学的帮助下,总算是达到了预期的效果。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1