




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江工业大学计算机学院实 验 报 告实验名称 双色点阵LED图像显示实验 姓 名 学 号 201326811608 班 级 计科1301 教 师 日 期 2016年1月 20一、实验内容与要求1.1 实验内容用汇编语言编写代码,通过向280h,288h,290h三个端口输出事先编写好的图像的行码、列码(280h连接CS1片选信号,对应行端口;288h连接CS2片选信号,对应红色列端口;290h连接CS3片选信号,对应黄色列端口),实现在8*8 LED点阵上双色显示静态,动态图像。我的图像是先按顺序静态显示红色的“贾ge!加油”五个字,然后按顺序静态显示黄色的“贾ge!加油”五个字,然后对这五个字进行左右交替扫描动态红黄色显示。最后是实现了一个动态创意图像。1.2 实验要求(1) 熟悉8*8LED的内部电路结构;(2) 掌握8*8LED能够显示图像的工作原理;(3) 实现稳定清楚得显示静态字;(4) 要求实现红黄双色交替显示;(5) 实现滚屏扫描显示;(6) 实现创意动态图像。二、实验原理与硬件连线2.1 实验原理 首先实验中显示用到的共阳极8*8点阵LED显示器的显示原理,其实它是将64个LED按8*8矩阵排列在一起组成的显示器件,并且在每一个显示位置上都有红、黄两种不同颜色的发光二极管。当微机输出的控制信号使得点阵中的有些LED发光,有些不发光,就会显示出特定的信息。包括汉字、图形等。其点阵结构如图1所示。我们可以看到,该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。如果想让某一个LED管发特定颜色的光,只要将与其相连的行线加高电平,相应颜色的列线加低电平即可。图1点阵LED显示器结构接下来,介绍下把微机控制信号加到行线、列线的原理,这是通过280h,288h,290h这三个端口分别连接了CS1、CS2、CS3三个片选信号。其中CS1片选选择的是连接在行端口的74LS273锁存器,CS2片选选择的是连接在红色列端口的74LS273锁存器,CS3片选选择的是连接在黄色列端口的74LS273锁存器。所以送到280h端口的控制信号会通过7407行驱动器加至点阵的8条行线上使相应的行线变为高电平,送到288h端口和290h端口的控制信号会通过驱动器DS75452反向后加至点阵的8条列线上使相应的列线变为低电平,相应的LED就导通,能够发出相应颜色的光。内部电路连接图如图2所示。图2点阵LED及驱动电路然后就是为什么能在一个8*8矩阵上稳定显示一幅图像的实验原理。要显示一幅图像,我们首先要算出它的点阵代码,采用逐列循环发光。先使第一列线导通,然后送出这一列的行码,使这一列相应的LED发光,然后列线列码左移一位,送出第二列的行码,又使第二列相应的LED发光,如此循环8次,即可将整个图形按列显示一遍。如果我们再每次输出这一列的时候先延时,然后再输出下一列,并重复显示这个矩阵多次,即可得到一幅稳定的图像。红色、黄色只要改变相应的端口号就行了。 2.2 硬件连线将TPC-USB平台上的280h端口与行片选信号CS1连接,288h端口与红列片选信号CS2连接,290h端口与黄列片选信号CS3连接。三、设计思路、步骤和程序流程图3.1 设计思路首先我计算出了相应字的行码和列码,存储在数组里面,通过输出相应的行码、列码想在8*8点阵上通过逐列扫描静态显示出红色“贾ge!加油”五个字,然后把红色端口改为黄色端口,又通过逐列扫描静态显示出黄色“贾ge!加油”五个字。在后面的扫描滚动显示的环节,我在每个字的8个行码之前加了8个00h,之后也 加了8个00h。在显示的时候,先把前8个数当做行码,逐列扫描输出,稳定输出后,又把第2个数开始的后8个数当做行码,逐列扫描输出,如此循环,直到把最后8个00h当做行码逐列扫描输出后才算完成一个字的从左到右扫描滚动输出。然后对于创意动态图,我想的是一个苹果一口一口被吃掉最后变成果核的动画,本来想在加上果核扔进垃圾桶的动画,但果核缩小后发现看不出来是果核了,所以就把最后这部分删掉了,最后虽然设计变的更加简单了,但也更加的清晰明了。3.2 实验步骤(1) 连接硬件电路,将280h端口跟片选信号端口CS1相连,288h端口跟片选信号端口CS2相连,290h端口跟片选信号端口CS3相连;(2) 打开代码运行软件,检测硬件电路是否已连接;(3) 硬件电路检查连接好了以后,设计要输出的字,编译代码;(4) 编译代码通过以后执行代码;(5) 调试代码,直到出现我想要的结果;(6) 对8*8LED矩阵上的显示结果进行拍照。3.3 程序流程图静态显示双色“贾ge!加油”,程序流程图如图3所示:图3 点阵LED“贾ge!加油”字显示流程图动态滚屏左右交替显示“贾ge!加油”五个字,程序流程图如图4所示:图4 点阵LED“贾ge!加油”字显示流程图 显示创意动态图像程序流程图:原理与文字显示一样,且只有一种红色字体,具体可看图3四、程序清单与执行结果4.1 程序显示“贾ge!加油”程序:prot1 equ 280hprot2 equ 288hprot3 equ 290h DATA SEGMENTMESS DB start play,0AH,0DH,$ ;提示信息BUFF1 DB 00H,22H,28H,32H,0FCH,32H,28H,22H ;杰的行码BUFF2 DB 68H,0a8H,0f8h,00H,0ffH,0a1H,62H,00H ;ge的行码BUFF3 DB 00h,00h,00h,7ah,00h,00h,00h,00h ;!的行码BUFF4 DB 38h,28h,38h,00h,7fh,41h,0feh,41h ;加的行码BUFF5 DB 3fh,25h,0ffh,25h,3fh,00h,4ah,91h ;油的行码BUFF6 DB 00h,00h,00h,00h,00h,00h,00h,00h,00H,2 2H,28H,32H,0FCH,32H,28H,22H, 00h,00h,00h,00h,00h,00h,00h,00h ;杰行码从左-右,用于扫描输出BUFF7 DB 00h,00h,00h,00h,00h,00h,00h,00h, 00H,62H,0A1H,0ffH,00H,0f8H,0a8H,68H, 00h,00h,00h,00H,00h,00h,00h,00h ;ge行码从右-左,用于扫描输出BUFF8 DB 00h,00h,00h,00h,00h,00h,00h,00h, 00h,00h,00h,7ah,00h,00h,00h,00h, 00h,00h,00h,00h,00h,00h,00h,00h ;!行码从左-右,用于扫描输出BUFF9 DB 00h,00h,00h,00h,00h,00h,00h,00h, 41h,0feh,41h,7fh,00h,38h,28h,38h, 00h,00h,00h,00h,00h,00h,00h,00h ;加行码从右-左,用于扫描输出BUFF10 DB 00h,00h,00h,00h,00h,00h,00h,00h, 3fh,25h,0ffh,25h,3fh,00h,4ah,91h, 00h,00h,00h,00h,00h,00h,00h,00h ;油行码从左-右,用于扫描输出DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09 INT 21H ;显示提示信息another: ;从another到后面的jmp another整体再显示一遍 mov si,offset BUFF1 ;将BUFF1的偏移地址送到si mov cx,05h ;要显示5个字,即循环5次next: ;从next到loop next之间循环显示下一个字 push cx mov cx,80h ;显示同一个8*8方阵80h次 L1: ;从L1到loop L1之间显示同一个字 mov ah,01h push cx mov cx,08h ;总共要显示8列L0: ;从L0到loop L0之间循环显示下一列 mov al,si ;得到行码 mov dx,prot1 out dx,al ;行码送到行端口 mov al,ah ;得到列码 mov dx,prot2 ;用红色端口 out dx,al ;显示一列红 shl ah,01 ;列码左移一位 call DELAY ;输完一列延时 mov al,0 out dx,al ;红色列端口清零 inc si ;地址加1,指向下一个行码 loop L0 ;8列没有显示完,继续显示剩下列数 pop cx sub si,8 ;重复显示刚刚的矩阵,将si地址重新指向该矩阵的起始行码位 call DELAY loop L1 ;重复显示同一个矩阵80h次 mov al,0 mov dx,prot1 out dx,al ;行端口清零 pop cx add si,8 ;显示下一个矩阵,将si指向下一个矩阵的起始行码 call DELAY loop next call DELAY ;红色显示完,延时,然后再显示黄色 mov si,offset BUFF1 ;接下来显示黄色,将si复位到第一个矩阵的第一个行码 mov cx,05h ;显示5不同方阵的个数next1: ;从next1到loop next1之间循环显示下一个字 push cx mov cx,80h ;显示同一个8*8方阵80h次 L11: ;从L1到loop L1之间显示同一个字 mov ah,01h push cx mov cx,08h ;总共要显示8列L01: ;从L0到loop L0之间循环显示下一列 mov al,si ;得到列码 mov dx,prot1 out dx,al ;行码送到行端口 mov al,ah ;得到列码 mov dx,prot3 ;用黄色端口 out dx,al ;显示一行黄 shl ah,01 ;列码左移一位 call DELAY ;输完一列延时 mov al,0 out dx,al ;黄色列端口清零 inc si ;地址加1,指向下一个行码 loop L01 ;8列没有显示完,继续显示剩下列数 pop cx sub si,8 ;重复显示刚刚的矩阵,将si地址重新指向该矩阵的起始行码位 call DELAY loop L11 ;重复显示同一个矩阵80h次 mov al,0 mov dx,prot1 out dx,al ;行端口清零 pop cx add si,8 ;显示下一个矩阵,将si指向下一个矩阵的起始行码 call DELAY loop next1 call DELAY ;黄色显示完,延时,然后再扫描滚动显示 mov cx,05h ;循环扫描5个字 mov si,offset BUFF6 ;将循环扫描开始矩阵的偏移地址送sianother1: ;从another1到loop another1扫描显示下一个字 push cx cmp cx,04h ;扫描第二个字的时候跳转到next3执行 jz change cmp cx,02h jz change ;扫描第四个字的时候跳转到next3执行 mov cx,17d ;显示不同方阵的个数 jmp next2 ;扫描第一、三、五个字的时候跳转到next2执行change: mov cx,17d ;显示不同方阵的个数 jmp next3next2: ;从next2到loop next2从左到右扫描显示红色字 push cx mov cx,20h ;显示同一个8*8方阵的次数 L12: ;从L12到loop L12显示同一个矩阵 mov ah,01h ;初始列码 push cx mov cx,08h ;总共要显示8列L02: ;从L02到loop L02循环显示下一列 mov al,si ;得到行码 mov dx,prot1 out dx,al ;输出行码 mov al,ah ;得到列码 mov dx,prot2 ;用红色端口 out dx,al ;显示一列红 shl ah,01 ;左移一位 call DELAY ;一列显示完延时 mov al,0 out dx,al ;行端口清零 inc si ;si指向下一个行码 loop L02 ;8列没有显示完,继续显示剩下列数 pop cx sub si,8 ;重复显示刚刚的矩阵,将si地址重新指向该矩阵的起始行码位 call DELAY loop L12 ;重复显示同一个矩阵20h次 mov al,0 mov dx,prot1 out dx,al ;行端口清零 pop cx inc si ;下一个要显示的矩阵是刚才矩阵起始位的下一位 call DELAY loop next2 ;循环显示下一个矩阵goon: call DELAY ;一个字扫描显示完,延时,然后再扫描下一个 pop cx add si,7 ;si指向下一个字扫描起始位 loop another1 ;循环显示下一个字 jmp another ;5个字循环完以后,从头开始再来next3: ;从next3到loop next3从右到左扫描显示黄色字 push cx mov cx,20h ;显示同一个8*8方阵的次数 L13: ;从L13到loop L13显示同一个矩阵 mov ah,80h ;初始列码 push cx mov cx,08h ;总共要显示8列L03: ;从L03到loop L03循环显示下一列 mov al,si ;得到行码 mov dx,prot1 out dx,al ;输出行码 mov al,ah ;得到列码 mov dx,prot3 ;用黄色端口 out dx,al ;显示一列黄 shr ah,01 ;右移一位 call DELAY ;一列显示完延时 mov al,0 out dx,al ;行端口清零 inc si ;si指向下一个行码 loop L03 ;8列没有显示完,继续显示剩下列数 pop cx sub si,8 ;重复显示刚刚的矩阵,将si地址重新指向该矩阵的起始行码位 call DELAY loop L13 ;重复显示同一个矩阵20h次 mov al,0 mov dx,prot1 out dx,al ;行端口清零 pop cx inc si ;下一个要显示的矩阵是刚才矩阵起始位的下一位 call DELAY loop next3 ;循环显示下一个矩阵 jmp goon ;回到goon执行,循环显示下一个字DELAY PROC NEAR ;延迟子程序push cxmov cx,0ffhccc: loop cccpop cxretDELAY ENDP CODE ENDSEND START显示创意动态图程序:prot1 equ 280hprot2 equ 288hprot3 equ 290h DATA SEGMENTMESS DB to start play ,0AH,0DH,$ ;提示信息BUFF1 DB 00H,00H,0EH,1FH,1FH,7FH,9FH,0EH,00H,00H ;第1幅图行码BUFF2 DB 00H,00H,0EH,1FH,1FH,7FH,9FH,00H,00H,00H ;第2幅图行码BUFF3 DB 00H,00H,0EH,1FH,1FH,7FH,91H,00H,00H,00H ;第3幅图行码BUFF4 DB 00H,00H,00H,1FH,1FH,7FH,91H,00H,00H,00H ;第4图行码BUFF5 DB 00H,00H,00H,11H,1FH,7FH,91H,00H,00H,00H ;第5幅图行码DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09 INT 21H ;显示提示信息begin: ;重头开始输出 mov dx,290h ;清除红,黄列码 mov al,00h out dx,al mov dx,288h out dx,al mov bl,5d ;一共有5个矩阵 mov si,0 ;si初始化again: ;从again到jnz again 之间循环输出下一个矩阵 mov ah,10h ;每个阵列循环输出10h次 all: ;从all到jnz all之间循环输出8列 mov cx,8 mov bh,01h ;初始化列码为01h mov di,2 add di,si ;初始化di,di为当前输出行号each: ;从each到loop each之间输出某一列 mov dx,290h ;清除红,黄列码 mov al,00h out dx,al mov dx,288h out dx,al mov dx,280h mov al,BUFF1+di ;得到行码 out dx,al ;输出行码 inc di ;di指向下一个行码 mov dx,288h ;用红色端口 mov al,bh ;得到列码 out dx,al ;输出列码 cmp bh,BUFF1+si+1 ;如果这一列中有夹杂黄色,则把该列记录在si+1位 jz kk ;有黄色列跳转到kk,是这一列相应的黄色LED亮 jnz ll ;没有黄色的列,直接跳转到ll,进行下一列的输出kk: mov dx,290h ;清除红,黄列码 mov al,00h out dx,al mov dx,288h out dx,al mov dx,280h; mov al,BUFF1+si ;得到这一列黄色部分的行码 out dx,al ;输出行码 inc di ; di指向下一个行码 mov dx,290h ;使用黄色端口 mov al,BUFF1+si+1 ;得到黄色列码 out dx,al ;输出列码ll: shl bh,01h ;bh左移一位 loop each ;循环输出下一列 DEC ah CMP ah,0 JNZ all ;重复输出某阵列10h次 add si,0ah ;si指向下一行起始位 dec bl cmp bl,0 jnz again ;循环输出5个矩阵 jmp begin ;从新开始输出DELAY PROC NEAR ;延迟子程序 push cx mov cx,0ffhccc: loop ccc pop cx retDELAY ENDP CODE ENDSEND STA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 麻织工艺设备防护层维护工艺考核试卷及答案
- 金属拉丝工艺优化措施流程考核试卷及答案
- 用课件教学的坏处和好处
- 特种玻璃抛光清洗工艺考核试卷及答案
- 2025年焊工高级职业资格证考试题库及答案
- 2025年海南省书记员招聘笔试真题及答案
- 2025年海工模块焊工现场考试题及答案
- 中职会计教学课件哪里找
- 弹力针织图案编织工艺考核试卷及答案
- 纺织带涂层耐折叠破裂耐盐雾工艺考核试卷及答案
- 高中生物竞赛知识点(全)
- GB/T 42268-2022乙烯-丙烯-二烯烃橡胶(EPDM)评价方法
- 装饰员工薪资工资表
- YC/T 207-2014烟用纸张中溶剂残留的测定顶空-气相色谱/质谱联用法
- GB/T 9237-2017制冷系统及热泵安全与环境要求
- 胃肠减压操作流程课件
- 《昆虫记》整本书阅读教学设计
- 冀教版六年级英语上册课件Unit-2
- 民事纠纷委托律师合同书
- 全国机场图2013九江庐山
- 法律法规和其他要求清单+合规性评价表
评论
0/150
提交评论