当前位置:文档之家› 走马灯花样实验设计

走马灯花样实验设计

走马灯花样实验设计实验报告实验人:______________ 学号:_________ 日期:—院(系):软件学院软件工程__________ 专业(班级):实验题目:走马灯花样实验设计____________________一.实验目的1.进一步了解和掌握计算机各部分的组成及相互关系;2.了解微指令的执行过程,掌握微程序的设计方法;3.进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的运行原理;二.实验内容P27(实验四)在走马灯花样实验设计的基础上,增加在七段数码显示器上滚动显示自己的学号、8X8 点阵上滚动显示自己的名字并控制滚动速度(有些同学姓名笔画较多应简化或用别名)。

用到的芯片为8255、8253、8259 (中断)、ADC0809、点阵等三. 实验器材(1) 装有TPC-USB 并连接好TPC-USB 的电脑 —一台 (2) TPC-USB 机四. 实验原理1.关于ADC0809的连接:KUl lBkl2.关于8255的接法:1 NHZJITLTL^1 3kN m+ £.\ 12QI______ 13 r~~ITEi s 281 N i|reft +) VCCreft 7>CLDCK IsIN-2ADD-CAPD-B IM-i ADD-AEOCALE START IN-0ENABLEEOC1234567S 7- - z z - 2222222276543210 210 DDD-DDDDD AAA299H* 29FH74LS023.关于74LS273的接法:I QU4. 关于双色点阵发光二极管显示器的接法:CS1连接:程序中的ROW 端口,也就是290H CS2连接: 程序中的COL 端口,也就是298H 5. 关于七段数码管的接法:KOKIK2K3 K-lK5K6K7PCO PAO ■PC1 PAI PC2 PA2 PC 3 l J A3PCIPAIPC? PA5 PC6 PA6PC 7PA7CS• LO・11• L2• L3 * Lt• L5 * L6 ■ L7tlH K255»1174LS273 ®njD"…&3•- D 4 »'■■ D5»- D6•- D?*->CUKCLRE £1 279HL0 L i L 2 L 3L 4L5 L6 L71 8因为74LS273有Q1-Q8八个接口,Q1-Q7接七段数码管a-g,dp 控制小数点的显示,我将其接地,不显示。

而Q8 将用来控制十位和个位的显示,Q8 接s1,Q8取非接sO。

因为我将学号显示变成12 23 33 30 0330 05,十位的数字我将其段码增加了8,此时Q8为1, S1为1,显示十位,SO为0,个位不显示。

个位的数字没有改动段码,此时Q8 为0,S1为0,十位不显示,S0为1,显示个位。

五. 实验分析与设计1. 主程序用了一个大循环, 首先显示花灯, 再显示学号,最后显示姓名。

花灯:C 口输入,8种花灯分别用8个16进制数表示,用8 个循环显示8 个16进制数,花灯便变化8 次,达到闪烁的效果。

通过判断K0 到K7 的输入,执行不同的命令,显示不同的花灯,另外,若是count1 比7 大,即count 达到8 时,让count归0使花灯回到循环开始。

学号:用count2定位并且判断是否越界,若是越界,归0 回到初始状态。

首先显示第一位,此时把数字与80h 做或运算,让最高位接s1 控制显示的位,然后显示第二位,用7fh做与运算,最高位依然是做控制位。

在si 接非门再接s0 的情况下,传入数据与80h 做或运算的数显示在高位上,与7fh 做与运算的数显示在低位上。

点阵:用count3 定位并且判断是否越界,若是越界,归0 回到初始状态。

一列一列显示名字,并判断末尾时再接着继续一个循环。

最后判断是否有按键按下,以及旋钮是否扭动,若有则按情况令count都加1,以此完成大循环。

2.汇编代码:・*************************** ;****************** ********* ; 考试题目三・*************************** ;***************** ********** io0809a equ 298h proth equ 2a0h protlr equ 2a8h ls273 equ 280hio8255a equ 288hio8255b equ 28bhio8255c equ 28ahdata segmentled1 db 80h,40h,20h,10h,08h,04h,02h,01hled2 db7Fh,0bfh,0dfh,0efh,0f7h,0fbh,0fdh,0feh led3 db0aah,55h,0aah,55h,0aah,55h,0aah,55hled4 db 18h,24h,42h,81h,18h,24h,42h,81hled5 db 81h,42h,24h,18h,81h,42h,24h,18h led6 db 0ffh,00h,0ffh,00h,0ffh,00h,0ffh,00h led7 db 0f0h,0fh,0f0h,0fh,0f0h,0fh,0f0h,0fh led8 db81h,0c3h,0e7h,0ffh,81h,0c3h,0e7h,0ffhcount1 db 0count2 db 0count4 db 0count3 db 0buff db 0h,60h,60h,7eh,7eh,60h,60h,0h,0h,3ch,42h,42h,42h,42h,3ch,0h,0h,7eh,20h,10h,10h,20h,7eh,0h,0ffh seg7 db 06h,5bh,4fh,4fh,3fh,4fh,3fh,6fh,0ffh data endscode segmentassume cs:code, ds:data start:mov ax,data ;初始化mov ds,axbegin:mov dx,io0809aout dx,almov cx,10hdelay:loop delayin al,dxmov bh,al;****task1************mov dx,io8255bmov al,8bhout dx,almov dx,io8255c ;c 口输入in al,dxcmp al,01h ;判断花灯样式jne con2mov si,offset led1jmp next con2: cmp al,02hjne con3mov si,offset led2 jmp next con3: cmp al,04hjne con4mov si,offset led3 jmp next con4: cmp al,08hjne con5mov si,offset led4 jmp next con5: cmp al,10hjne con6mov si,offset led5 jmp next con6: cmp al,20hjne con7mov si,offset led6 jmp next con7: cmp al,40hjne con8mov si,offset led7jmp nextcon8: mov si,offset led8 next: mov bl,count1 cmp bl,8jne nthmov bl,0mov count1,blnth: push bx ; 把8 个数显示8次mov bh,00hadd si,bxpop bxmov al,[si]mov dx,io8255aout dx,almov cl,bh mov ch,00h delay1:loop delay1 ・************** ;**************task2・ **************;**************mov bl,count2 断是否越界cmp bl,8 jne next2 mov bl,0 movcount2,bl next2:movcl,30hmov ch,00hloop1:mov di,offset seg7 示学号push bxmov bh,00h add di,bx pop bx mov al,[di] mov dx,ls273 or al,80h 变成1out dx,alinc di push cx;定位并判;送数据并显;或运算,让s1mov cx,0ffffh delay2:loop delay2 pop cx 最后位mov al,[di]cmp al,0ffh jnenext3mov di,offset seg7 着显示第一位mov al,[di]next3:mov dx,ls273and al,7fh 变成0out dx,al push cx delay3:loop delay3pop cx・ *********************** ;***********************; task3・ ***********************;***********************;判断是否到;若到最后位接;显示第二位;与运算,让s1mov bl,count3 ;判断位置和越cmp bl,24 jne next4 mov bl,0mov count3,bl next4:mov cl,0ffhmov ch,01hmov si,offset buff push bx mov bh,00h add si,bx pop bx push cx movcx,08h mov ah,01h loop2:mov al,[si]cmp al,0ffh jne next5mov si,offset buff mov al,[si] next5:mov dx,prothout dx,al mov dx,protlr mov al,ah out dx,al push cx mov cx,01ffh delay4:loop delay4 pop cx mov al,00h out dx,al shl ah,01 inc si loop loop2 pop cx・ ***********;***********mov ah,01int 16h jnz last mov;有无键按下bl,count4 cmp bl,bhjb next6mov bl,0mov count4,0所有count 加1mov bl,count1 add bl,1mov count1,bl mov bl,count2 add bl,1mov count2,bl mov bl,count3 add bl,1mov count3,bl next6:mov bl,count4add bl,1mov count4,bl jmp begin last: mov ah,4chint 21h code ends end start3.实验心得1. 该实验融合了8255 芯片和ADC0809 以及双色点阵发光二极管显示器,用8255 进行输入并输出走马灯花样,并同时进行在双色点阵发光二极管显示器上滚动显示姓名,利用ADC0809 进行显示延迟的控制和在七段数码管上滚动显示学号。

相关主题