简易led电子广告牌设计.doc
2022年-2023年建筑工程管理行业文档 齐鲁斌创作 报告评分批改老师电子与信息学院 微机原理及其应用课程设计报告 广告牌设计专 业 信息工程 班 级 1 学生姓名 陈宗成 实验台号 6 指导教师 宁更新 提交日期 2009 年 2月 27 日 设计内容: 实验箱上设有一个共阳极8×8点阵的红黄两色LED显示器。编程使LED显示器循环显示一条广告语,例如:北京你好。要求:广告语可以自己任意选择,但字数不少于3个;广告语的颜色红黄交替显示,例如:先显示红色广告语,再显示黄色广告语,如此交替循环;广告语中每个字符显示的时间由8253定时器控制,定时时间到显示下一个字符,设置每个字符显示的时间为数秒不等,可以自行设置;若键盘输入“R”则返回DOS,结束程序。硬件电路连接:LED1MHZ+5V8255CS0CS1CS2PA0 CS8253clk0 out0gate0 CS 重要芯片功能说明:8*8LED显示器:三个片选端,分别为行片选,红色列片选,黄色列片选。8253可编程定时/计数器:本实验中只使用计数器0,并将其设置为工作方式0,16为计数。8255可编程并行接口:8255有3种工作方式,在8255中有一个控制字用来选择工作方式和A、B、C三个端口。D6D5工作方式00方式001方式110方式211方式2本实验中使A口作为简单的输入口。做查询方式的输入信号使用。程序流程图:主程序流程图开始红列片选有效CX 10HPUSH CXCX 8H取行代码,显示一行CX=0?NYNCX=0?YY有建按下?N调用退出程序黄片选有效程序跳转子程序开始BX指向“可”字?Y将BX指向“口”字?NBX指向“口”字?Y将BX指向“可”字?N将BX指向“乐”字?BX指向“可”字?YNBX指向“乐”字?将BX指向“可”字?Y返回主程序延时子程序开始设计数器0为方式0设PA口为输入写计数初值开始计数从PA口读输入值N计数到0Y返回源程序及注释:ioport equ 0c400h-0280h proth equ ioport+280h protlr equ ioport+288h protly equ ioport+290h DATA SEGMENT MESS DB 'Strike R return to dos!',0AH,0DH,'$'min1 DB 00h,01h,02h,03h,04h,05h,06h,07h count db 0 KE DB 80H,0FFH,82H,0B8H,0A8H,0B8H,80H,80HKOU DB 00H,7EH,42H,42H,42H,42H,7EH,00HLEE DB 02H,14H,90H,0FFH,92H,0F4H,02H,00HDATA ENDS ;- CODE SEGMENT ASSUME CS:CODE,DS:DATA ;- START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MESS MOV AH,09 INT 21H ;显示提示信息 ;- agn_ke: mov cx,0600hd2_ke: mov ah,01h push cx mov cx,0008h mov si,offset min1 next_ke: mov al,si mov bx,offset ke xlat ;得到第一行码 mov dx,proth out dx,al mov al,ah mov dx,protlr out dx,al ;显示第一行红 shl ah,01 inc si push cx mov cx,0ffffhdelay2_ke: loop delay2_ke ;延时 pop cx loop next_ke pop cx call delay loop d2_ke mov al,00 mov dx,protlr out dx,al mov ah,01 ;有无键按下 int 16h jz agn_kou mov ah,0 int 16h cmp al,52h je t1 ;检测8253,到时间就到JINGagn_kou: mov cx,0600hd2_kou: mov ah,01h push cx mov cx,0008h mov si,offset min1 next_kou: mov al,si mov bx,offset kou xlat ;得到第一行码 mov dx,proth out dx,al mov al,ah mov dx,protlr out dx,al ;显示第一行红 shl ah,01 inc si push cx mov cx,0ffffhdelay2_kou: loop delay2_kou ;延时 pop cx loop next_kou pop cx call delay loop d2_kou mov al,00 mov dx,protlr out dx,al mov ah,01 ;有无键按下 int 16h jz agn_ke1 mov ah,0 int 16h cmp al,52ht1: je t2 ;检测8253,到时间就到niagn_ke1: mov cx,0600hd2_ke1: mov ah,01h push cx mov cx,0008h mov si,offset min1 next_ke1: mov al,si mov bx,offset ke xlat ;得到第一行码 mov dx,proth out dx,al mov al,ah mov dx,protlr out dx,al ;显示第一行红 shl ah,01 inc si push cx mov cx,0ffffhdelay2_ke1: loop delay2_ke1 ;延时 pop cx loop next_ke1 pop cx call delay loop d2_ke1 mov al,00 mov dx,protlr out dx,al mov ah,01 ;有无键按下 int 16h jz agn_lee mov ah,0 int 16h cmp al,52ht2: je tiao ;检测8253,到时间就到haoagn_lee: mov cx,0600hd2_lee: mov ah,01h push cx mov cx,0008h mov si,offset min1 next_lee: mov al,si mov bx,offset lee xlat ;得到第一行码 mov dx,proth out dx,al mov al,ah mov dx,protlr out dx,al ;显示第一行红 shl ah,01 inc si push cx mov cx,0ffffhdelay2_lee: loop delay2_lee ;延时 pop cx loop next_lee pop cx call delay loop d2_lee mov al,00 mov dx,protlr out dx,al mov ah,01 ;有无键按下 int 16h jz agn1_ke mov ah,0 int 16h cmp al,52h je tiao jmp agn1_ke;= tiao: jmp exit;= agn1_ke: mov cx,0600h ;agn1 为显示黄色d1_ke: mov si,offset min1 mov ah,01 push cx mov cx,0008h next1_ke: mov al,si mov bx,offset ke xlat mov dx,proth out dx,al mov al,ah mov dx,protly out dx,al shl ah,01 inc si push cx mov cx,0ffffhdelay1_ke: loop delay1_ke pop cx loop next1_ke pop cx call delay loop d1_ke mov al,00 mov dx,protly out dx,al mov ah,01 int 16h jz agn1_kou mov ah,0 int 16h cmp al,52h je t11agn1_kou: mov cx,0600h ;agn1 为显示黄色d1_kou: mov si,offset min1 mov ah,01 push cx mov cx,0008h next1_kou: mov al,si mov bx,offset kou xlat mov dx,proth out dx,al mov al,ah mov dx,protly out dx,al shl ah,01 inc si push cx mov cx,0ffffhdelay1_kou: loop delay1_kou pop cx loop next1_kou pop cx call delay loop d1_kou mov al,00 mov dx,protly out dx,al mov ah,01 int 16h jz agn1_ke1 mov ah,0 int 16h cmp al,52ht11:je t22 ;8253,dao jiu shun xu zhi xing ,fou ze jiu dao jingagn1_ke1: mov cx,0600h ;agn1 为显示黄色d1_ke1: mov si,offset min1 mov ah,01 push cx mov cx,0008h next1_ke1: mov al,si mov bx,offset ke xlat mov dx,proth out dx,al mov al,ah mov dx,protly out dx,al shl ah,01 inc si push cx mov cx,0ffffhdelay1_ke1: loop delay1_ke1 pop cx loop next1_ke1 pop cx call delay loop d1_ke1 mov al,00 mov dx,protly out dx,al mov ah,01 int 16h jz agn1_lee mov ah,0 int 16h cmp al,52h t22: je t33 ;8253,dao jiu shun xu zhi xing ,fou ze jiu dao ni agn1_lee: mov cx,0600h ;agn1 为显示黄色d1_lee: mov si,offset min1 mov ah,01 push cx mov cx,0008h next1_lee: mov al,si mov bx,offset lee xlat mov dx,proth out dx,al mov al,ah mov dx,protly out dx,al shl ah,01 inc si push cx mov cx,0ffffhdelay1_lee: loop delay1_lee pop cx loop next1_lee pop cx call delay loop d1_lee mov al,00 mov dx,protly out dx,al mov ah,01 int 16h jz back mov ah,0 int 16h cmp al,52h t33: je exit jmp back ;8253,dao jiu shun xu zhi xing ,fou ze jiu dao hao ;= back: jmp agn_ke ;黄色红色交替显示;- DELAY PROC NEAR ;延迟子程序 push cx mov cx,0ffffhccc: loop ccc pop cx retDELAY ENDP exit: mov ah,4ch int 21hCODE ENDS END START ;-