汇编走马灯花样设计
一、实验器材
TPC-USB实验机(芯片:8255、74LS273、ADC0809、数码管、8*8点阵)、TPC-USB软件
二、实验要求
1、LED走马灯花样(点亮花样)实验:利用TPC-USB的K7-K0 8位开关,控制LED产生8种走马灯花样。
2、在走马灯花样实验设计的基础上,增加在七段数码显示器上滚动显示自己的学号、8X8点阵上滚动显示自己的名字并控制滚动速度。
三、实验原理
1、设置8255为工作方式0,A口输出C口输入,C口接八个手动开关,A口接8颗灯,通过读取输入数据控制8颗灯的花样显示。
2、通过ADC0809模数转换器,电压旋钮调整电压大小控制转为16进制数据的大小,此数值作为循环控制的初值,以达到控制数码管、点阵滚动显示的效果。
3、74LS273输出端Q1-Q7接数码管a-g,Q8接数码管S1,Q8取反接数码管S0,通过Q8的变化达到循环显示十位和个位的目的。
4、每个时刻点阵中只有一列被显示(此实验中下图CS3的部分未用),不停高速轮转以达到显示整个8*8点阵的效果,通过循环次数控制点阵中字的滚动速度。
四、实验分析与设计
1、程序流程图
2、汇编代码
;************************ ;* 走马灯花样设计实验 * ;************************ io0809a equ 280h io8255a equ 288h io8255c equ 28ah io8255d equ 28bh proth equ 290h prothr equ 298h ls273 equ 2a0h data segment ;彩灯样式 pattern1 db 01H,02H,04H,08H,10H,20H,40H,80H ;彩灯从L0到L7依次点亮 pattern2 db 80H,40H,20H,10H,08H,04H,02H,01H ;彩灯从L7到L0依次点亮 pattern3 db 18H,24H,42H,81H,81H,42H,24H,18H ;彩灯先从中间到两端依次点亮再从两端到中间依次点亮 pattern4 db 81H,42H,24H,18H,18H,24H,42H,81H ;彩灯先从两端到中间依次点亮再从中间到两端依次点亮 pattern5 db 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH ;彩灯从L0到L7依次熄灭 pattern6 db 7FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH ;彩灯从L7到L0依次熄灭 pattern7 db 0E7H,0DBH,0BDH,7EH,7EH,0BDH,0DBH,0E7H ;彩灯先从中间到两端依次熄灭再从两端到中间依次熄灭 pattern8 db 7EH,0BDH,0DBH,0E7H,0E7H,0DBH,0BDH,7EH ;彩灯先从两端到中间依次熄灭再从中间到两端依次熄灭 count dw ? ;学号(12330272) led db 86h,5bh,0dbh,4fh,0cfh,4fh,0cfh,3fh,0bfh,5bh,0dbh,07h,87h,5bh ;名字(RSH) myname db 00h,00h,00h,00h,00h,00h,00h,00h db 00h,00h,7fh,58h,54h,72h,01h,00h db 00h,00h,79h,49h,49h,4fh,00h,00h db 00h,00h,7fh,08h,08h,7fh,00h,00h db 00h,00h,00h,00h,00h,00h,00h,00h data ends stseg segment dw 256 dup(?) stseg ends code segment assume cs:code, ds:data, ss:stseg start: mov dx,data mov ds,dx mov di,0 mov bh,0 mov byte ptr count,bh ;设置8255 A口输出C口输入,使全部灯熄灭 mov dx,io8255d mov al,8bh out dx,al mov al,0 mov dx,io8255a out dx,al ;选择为哪一轮灯样式 select: mov dx,io8255c in al,dx lamp1: cmp al,01h ;比较al是否为01h,不是则跳转到lamp2继续比较 jnz lamp2 lea si,pattern1 ;si指向pattern1 jmp show lamp2: cmp al,02h jnz lamp3 lea si,pattern2 jmp show lamp3: cmp al,04h jnz lamp4 lea si,pattern3 jmp show lamp4: cmp al,08h jnz lamp5 lea si,pattern4 jmp show lamp5: cmp al,10h jnz lamp6 lea si,pattern5 jmp show lamp6: cmp al,20h jnz lamp7 lea si,pattern6 jmp show lamp7: cmp al,40h jnz lamp8 lea si,pattern7 jmp show lamp8: cmp al,80h jnz default lea si,pattern8 jmp show default: jmp select ;若都不匹配(更改或关掉灯花样对应的开关),跳转回select重新进行选择判断 ;展示一轮灯样式 show: mov bl,8 ;每轮重复8次 next: mov al,[si] mov dx,io8255a out dx,al ;显示一个灯花样 ;从A/D转换器读数控制滚动速度 mov dx,io0809a ;启动A/D转换器 out dx,al in al,dx ;从A/D转换器输入数据 add al,1 ;数码管显示学号 goon: push si ;压栈保护数据 call id ;数码管中显示学号 pop si ;恢复 ;点阵顺序显示8列一遍 push di ;压栈保护数据 call displayname ;点阵显示名字 pop di ;恢复 dec al jnz goon ;分时循环显示学号和名字 ;一个灯花样之后的判断跳转 add count,2 ;学号向左滚动 cmp count,14 ;判断学号是否滚动显示到最后 jnz skip1 mov count,0 ;从头显示学号 skip1: inc di ;名字向左滚动一列 cmp di,32 ;判断名字是否滚动显示到最后 jnz skip2 mov di,0 ;从头显示名字 skip2: inc si ;下一个灯花样 dec bl cmp bl,0 ;判断一轮灯花样是否结束 jnz next ;跳转到下一个灯花样 jmp select ;跳转到下一轮灯花样 ;七段数码管显示学号子程序 id proc push ax ;压栈 push bx push cx push dx lea si,led ;si指向学号首地址 add si,count ;si指向当前要显示的学号(十位) mov cx,2 ;十位、个位循环显示次数 ;循环显示十位、个位 again: mov al,[si] mov dx,ls273 out dx,al ;学号十位显示 mov al,[si+1] mov dx,ls273 out dx,al ;学号个位显示 loop again mov al,0 out dx,al ;灭灯 pop dx ;恢复 pop cx pop bx pop ax ret ;子程序结束返回 id endp ;8*8点阵显示名字子程序 displayname proc push ax ;压栈 push bx push cx push dx mov ah,80h mov cx,8 ;循环次数 each: mov al,myname[di] mov dx,proth out dx,al ;输出行码 mov al,ah mov dx,prothr out dx,al ;输出列码 mov al,0 out dx,al ;关闭点阵显示 shr ah,1 ;右移显示下一列 inc di ;指向下一个行码 loop each pop dx ;恢复 pop cx pop bx pop ax ret ;子程序结束返回 displayname endp code ends end start
相关推荐
这是个花样变换的流水灯汇编程序,变换方式可自行设置,有需要的就下吧。
汇编语言实现彩灯花样变化,51单片机实验之一
经典单片机51花样流水灯程序代码,汇编基础
单片机 跑马灯实验 汇编语言 基于AT89C51的汇编语言
键盘控制LED灯的花样【汇编语言】.zip键盘控制LED灯的花样【汇编语言】.zip键盘控制LED灯的花样【汇编语言】.zip键盘控制LED灯的花样【汇编语言】.zip键盘控制LED灯的花样【汇编语言】.zip键盘控制LED灯的花样【汇编...
北京科技大学 微机原理课程设计 交通灯设计 汇编语言实现
汇编语言程序设计答案 汇编语言程序设计答案 汇编语言程序设计答案 汇编语言程序设计答案
汇编语言源程序 的设计
微机 汇编语言 跑马灯 可以循环闪烁 还有8255 8253 芯片的具体应用
第一次写汇编的程序,感觉汇编还是蛮好的
大二上课时老师发的案例实验,每个都非常基础,很适合新手...压缩包里包含:LED灯、走马灯、矩阵键盘、按键、液晶显示、通信、中断多个实验的C语言代码、汇编代码、接线图、局部原理图等;建议用proteus打开编程代码
交通灯规律: 状态1:南北绿灯通车,东西红灯; 状态2:南北绿灯闪烁3次转黄灯亮,东西仍然红灯,延时3秒; 状态3:东西绿灯通车,南北红灯; 状态4:东西绿灯闪烁3次转黄灯亮,延时3秒南北仍然红灯。 以开关控制正常...
设计内容:在Proteus8.6仿真平台上,使用Intel 8086芯片、并行接口芯片8255A、中断控制器8259A、计数器接口芯片8253、74LS373、74LS245、74LS138以及发光二极管,设计实现走马灯效果,同时可以通过按键控制走马灯的...
用8255、8254、8255A等芯片接口编程来实现的交通灯控制系统设计
交通灯设计汇编语言源代码汇编语言源代码 课程设计
模拟交通灯 汇编课程设计 交通灯 源程序 个人课程设计设计程序,功能要求完全,使用完整编译器
汇编语言程序设计习题答案\80x86汇编语言程序设计习题答案.zip
几个led的亮度不同,依次递减,循环左移或右移;几个led亮很短时间,左右移动,
本书为清华大学计算机汇编语言程序设计课教材,主要阐述IBM PC及其兼容机汇编语言程序程序设计的方法和技术。全书共13章:第一、二章介绍基础知识;第三、四章说明IBM PC机的指令系统及包括伪操作在内的汇编语言程序...
《汇编语言程序设计》汇编.pdf