1、微机原理课程设计报告简易电子广告牌设计South China U ni versify of Technology本科实验报告微机原理课稈设计报告学 院电子和信息学院专 业 信息工程1班学生姓名 李土荣 指导教师 提交日期 10年01月18日学 号2 座位号 21 一课程设计题目介绍题目:简易电子广告牌设计功能:“实验箱上设有一个共阳极8X 8点阵的红黄两色LED显示器。编程使LED显示器循环显示一条广告语,例如:北京你好。要求:广告语可以自己任意选择, 但字数不少于3个;广告语的颜色红黄交替显示,例如:先显示红色广告语,再 显示黄色广告语,如此交替循环;广告语中每个字符显示的时间由8253定
2、时器控 制,定时时间到显示下一个字符,设置每个字符显示的时间为数秒不等, 可以自 行设置;若键盘输入“ R则返回DOS结束程序。设计说明:点阵LEE显示器是将许多LED类似矩阵一样排列在一起组成的显示器件, 双色 点阵LED是在每一个点阵的位置上有红绿或红黄或红白两种不同颜色的发光二极 管。当微机输出的控制信号使得点阵中有些 LE发光,有些不发光,即可显示出 特定的信息,包括汉字、图形等。实验箱上是一个共阳极8X 8点阵的红黄两色LED 显示器,其点阵结构参考教师实验指导书实验 24。该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。若使 某一种颜色、某一个LED发光,只要将和
3、其相连的行线加高电平,列线加低电平 即可。例如欲显示汉字“年”,采用逐列循环发光。首先由“年”的点阵轮廓,确定点阵代码(如图所示)根据“年”的点阵代码,确定逐列循环发光的顺序如下:1行代码输出44H;红色列代码输01H ;第一列2个红色LED发光。2行代码输出54H;红色列代码输02H ;第二列3个红色LED发光。3行代码输出54H;红色列代码输04H ;第三列3个红色LED发光。4行代码输出7FH;红色列代码输08H ;第四列7个红色LED发光。5行代码输出54H;红色列代码输10H ;第五列3个红色LED发光。6行代码输出DCH 红色列代码输20 H ;第六列5个红色LED发光。7行代码输
4、出44H;红色列代码输40 H ;第七列2个红色LED发光。8行代码输出24H;红色列代码输80 H ;第八列2个红色LED发光。在步骤之间可插入几 m啲延时,重复进行即可在LED上稳定的显示 出红色“年”字。若想显示黄色“年”,只需把红色列码改为黄色列码即可。实验仪上的点阵LED及驱动电路参考教师实验指导书实验 24,行代码、红色 列代码、黄色列代码各用一片74LS273锁存。行代码输出的数据通过行驱动器7407 加至点阵的8条行线上,红和黄列代码的输出数据通过驱动器DS7545反相后分别 加至红和黄的列线上。行锁存器片选信号为 CS1,红色列锁存器片选信号为CS2 黄色列锁存器片选信号为C
5、S3接线方法:行片选信号 CS1接280H;红列片选 信号CS2接288H;黄列片选信号CS3接290H。电路图:7IXlIJJTi二课程设计的目的进行一次综合的小型微机使用系统的软硬件设计。通过课程设计,进一步 巩固所学的知识,并将所学的内容加以综合运用。将所学的理论和实际问题或使 用相结合,进一步培养自主学习的能力,综合运用知识的能力,以及创新实践的 能力。并且了解双色点阵LED显示器的基本原理,掌握P(机控制双色点阵LED显 示程序的设计方法。三硬件设计:8253的基本工作原理和编程方法:按图1虚线连接电路,将计数器0设置为方式0,计数器初值为N (N OFH),用手动逐个输入单脉冲,编
6、程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0 电平变化(当输入N+1个脉冲后OUT0变高电平)CLKGR 6 T F R1 1 CS0UT0U5 8253280H* * ,.”一.叱按图2连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为可编程定时器/计数器(8253)参考流程图:幵皓1- , /设计飒器D为 工雅方金3向订数野0送初值1000先送诋字节后送高字节设计般器l为工作方式3向计数耦1送初值L0D0先送诋字节后晟字节绪朿2 8255方式0的工作原理:(1) 三个数据端口 A、B、C,每个端口均为8位,可选择输入或输出操作;(2) A组控制和B组控制:端口 A和端口 C
7、的高4位构成A组端口 B和断 口 C的低4位构成B组,分别又A组和B组控制电路控制。两组控制电路内各 有一个控制寄存器,接受CPU输出的控制字,决定各端口的工作方式;(3) 数据总线缓冲器:这是个三态双向的 8位缓冲器,起着8255A和CPU 数据总线接口的作用,用来传送输入/输出的数据、CPU发出的控制字及状态信 息;(4) 读/写控制逻辑接收CPU发出的地址A1、A0及控制(、RESET)和片选()信号,产生给A组、B组的控制信号,以完成对数据、状态及控制信 息的传送。实验电路:k 0 * k 1 kZ - k3 i-k5 ik? 288H -参考流程图:F C9P A F C 1F A
8、1P C 2FP C3Ph3P C 4P 4PCSP C 6FACF G 7F A Vcs1J18S255 L0 LZ L4L7设量8255C 口 输入A 口输出* F从c 口输入戳据开始将此数据自直口输出3实验系统原理图及硬件原理说明:1、 用8253的计数器0和计数器1作为1MHz时间的的分频,使间脉冲变 成1Hz,由计数器1的OUT 口输出,并把OUT 口接到8255的PA0端口,目的 是让8255去读这个端口的值,为程序中的定时,当时间到时就变换字。2、 8253的两个计数器用工作方式 2(分频器)和工作方式3(方波发生器), 8255采用工作方式0,输出口为 A 口的第一个口 PA0
9、。3、 显示块的三个片选端口分别接的是实验板上 I/O 口地址的298h(行显示), 288h(红色列显示线),290h(黄色列显示线)4、 接通电源,运行测试程序,由 8253计时,8255检测8253OUT 口的电 平值,直到低电平就显示下一个字,并且中间有一定的器件延时。五软件设计流程图:主程序子程序:六讨论和感想:七 源程序的清单:ioport equ 0c400h-0280h proth equ ioport+280h protlr equ ioport+288h protly equ ioport+290h io8253a equ ioport+29bh io8253b equ i
10、oport+298h io8253c equ ioport+299h io8255a equ ioport+2a3h io8255b equ ioport+2a0h;实验箱的端口地址;行片选信号 CS1 端口地址 ;红列片选信号 CS2 端口地址 ; 黄列片选信号 CS3 端口地址;8253 控制字端口地 址;计数器 0 端口地址;计数器 1 端口地址;8255 控制字端口地址;8255 P0 口地址DATA SEGMENTMESS DB Strike the r key ,return to DOS!,0AH,0DH,$ ; 运行界面信息提示min1 DB 00h,01h,02h,03h,0
11、4h,05h,06h,07hcount2 db ? ;定义计字变量BUFF dw ? ; 定义行码地址变量BUFF1 DB 43h,21h,11H,0ffh,00h,0ffh,24h,22h ;“北”字BUFF2 DB 00H,41H,07AH,68H,0EFH,69H,7AH,41H ;“京”字BUFF3 DB 0C2H,84H,0FFH,85H,42H,80H,7FH,20HBUFF4 DB 48H,68H,5FH,49H,3DH,0E2H,3DH,20HDATA ENDS;“你”字;“好” 字CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,
12、DATAMOV DS,AXMOV DX,OFFSET MESSMOV AH,09INT 21H ;显示提示信息mov dx,io8255amov al,9bh out dx,almov al,16hmov dx,io8253a out dx,almov al,70h;设 8255A 口输入;设置 8253 通道 0 为工作方式3,二进制计数;设置 8253 通道 1 为工作方式 0,先低后高,二进制计数mov dx,io8253aout dx,almov dx,io8253b mov al,0fh out dx,alagn: mov count2,04h mov bx,offset buff1
13、 mov buff,bx c2: mov dx,io8253c mov al,0ffh out dx,al mov al,0ffh out dx,ald2: mov ah,01h mov cx,0008h mov si,offset min1 next: mov dh,count2 cmp dh,00h jz agn1d4: mov al,simov bx, buff;计数器 0 的端口地址; 写低 8 位计数值;赋值给计字变量;给行赋初值;计数器 1 的端口地址;先写低 8 位计数值;再写高 8 位计数值;列初值;列循环次数;判断字变量是否已经为 0;是 ,转向 agn1 显示黄色字xlat
14、;得到第一行码mov dx,prothout dx,al;显示第一行码mov al,ahmov dx,protlrout dx,al;显示第一列 ,红色字shl ah,01;左移 1 位inc sipush cxmov cx,0ffffhdelay2: loop delay2;延时mov cx,0ffffhdelay5: loop delay5;延时mov dx,io8255bin al,dx;从 8255A 口读一字节test al,01;判 PA0 口是否为 0jz d5;若不为 0, 表示定时时间未到 ,则转 d5dec count2;为 0,则计字变量减 1mov dx,buffadd
15、 dx,08h;把下一个字的行代码地址给 buffmov buff,dxmov al,00; 不为 0,则继续往下执行mov dx,protlr;关闭所有列显示out dx,aljmp c2;跳转回去 ,循环显示d5: pop cxloop next;循环显示mov al,00;不为 0,则继续往下执行mov dx,protlr;关闭所有列显示out dx,almov ah,01int 16h; 判断是否按了 rjz b1call PANDUANb1: jmp d2;不是,则循环显示a8: jmp a3Ja6: jmp agnJa7: jmp a3J;显示黄色字体agn1: mov count
16、2,04h;赋值给计字变量mov bx,offset buff1mov buff,bx c1: mov dx,io8253c mov al,0ffh out dx,al mov al,0ffh out dx,al d1: mov ah,01h mov cx,0008h mov si,offset min1 next1: mov dh,count2 cmp dh,00h jz a6 d7: mov al,simov bx, buff xlat mov dx,proth out dx,al mov al,ah mov dx,protly out dx,al shl ah,01;给行赋初值;计数器
17、1 的端口地址;先写低 8 位计数值;再写高 8 位计数值;列初值;列循环次数;判断字变量是否已经为 0 ; 是,转向 agn 显示红色字;得到第一行码;显示第一行码;显示第一列 ,黄色字;左移 1 位inc si push cxmov cx,0ffffhdelay3: loop delay3;延时mov cx,0ffffhdelay4: loop delay4;延时mov dx,io8255bin al,dx;从 8255A 口读一字节test al,01;判 PA0 口是否为 0jz d8;若不为 0, 则转 d8dec count2;为 0,则表示定时时间已到 ,计字变量减 1mov d
18、x,buffadd dx,08h;把下一个字的行代码地址给 buffmov buff,dxmov al,00;不为 0,则继续往下执行mov dx,protly;关闭所有列显示out dx,aljmp c1;调回循环显示d8: pop cxloop next1;循环显示mov al,00;不为 0,则继续往下执行mov dx,protly;关闭所有列显示out dx,almov ah,01int 16hjz b2call PANDUANb2: jmp d1;不是,则循环显示DELAY PROC NEAR ;延迟子程序push cxmov cx,0ffhccc: loop cccpop cxretDELAY ENDP;判断是否按了 rPANDUAN PROC NEAR mov ah,00 int 16hCMP AL,52HJZ a3retPANDUAN ENDPa3: MOV AH,4CHINT 21HCODE ENDS;是r,返回; 整个程序结束END START
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1