原创 单片机在超级终端上显示彩色字符画汇编程序例子

2008-11-7 13:49 6603 2 3 分类: MCU/ 嵌入式

点击看大图


;在电脑附件里面的超级终端界面上以彩色显示一幅字符画,并且有一个旋转光标动态显示
;注意程序后面的超级终端转义字符的定义说明
;11.0592M晶振,串口比特率57600


ORG 0000H
SJMP MAIN


ORG 0030H
MAIN:
MOV SP,#40H
MOV TMOD,#20h   ;T1为常数自动重装入的8位定时计数器,既波特率发生器,T0为16位的定时计数器
MOV PCON,#80h   ;SMOD=1
MOV TH1,#0FFH   ;初始化波特率,11.0592下,且SMOD=1加倍情况下,0FFH=57600,0FDH=19200 ,0FAH=9600 
MOV SCON,#50h   ;Standard UART settings
SETB TR1 ;T1开始工作
SETB EA  ;开全部中断


ACALL SEND


LOOP:
ACALL XZGB
SJMP LOOP


 


XZGB:;旋转光标显示
ACALL TG  ;发送退格
MOV A,#5CH  ;把"\"送入A
ACALL SENDA  ;把A发送出去
ACALL YS  ;延时


ACALL TG
MOV A,#7CH  ;把"|"送入A
ACALL SENDA
ACALL YS


ACALL TG
MOV A,#2FH  ;把"/"送入A
ACALL SENDA
ACALL YS


ACALL TG
MOV A,#2DH   ;把"-"送入A
ACALL SENDA
ACALL YS


RET


TG:      ;发送退格命令
MOV A,#08H
ACALL SENDA
RET


SENDA:     ;把A发送到串口出去
MOV SBUF,A
JNB TI,$
CLR TI
RET



YS: ;通用延时子程序
MOV 02H,#35   ;较合适的旋转速度
YS1:  PUSH    02H
YS2:  PUSH    02H
YS3:  PUSH    02H
DJNZ    R2,$
POP     02H
DJNZ    R2,YS3
POP     02H
DJNZ    R2,YS2
POP     02H
DJNZ    R2,YS1
RET



SEND:;发送字符画
MOV A,#0CH    ;发送清屏命令
MOV SBUF,A
JNB TI,$
CLR TI
   
MOV DPTR,#ST2 ;暂存字符画结束位置
MOV R0,DPL
MOV R1,DPH
MOV DPTR,#ST1 ;字符画开始位置
SEND1:
CLR A
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
INC DPL
MOV A,DPL
CJNE A,#00H,SEND2
INC DPH
SEND2:
MOV A,DPH
CJNE A,01H,SEND1   ;判断是否到了字符画末尾了
MOV A,DPL
CJNE A,00H,SEND1


RET


ST1:
DB 1BH,"[1;33;46m"   ;这句就是转义字符定义,1BH代表“ESC”转义字符开始,1代表高亮显示,33代表黄色前景,46代表青蓝色背景
;    前景            背景              颜色
;    ---------------------------------------
;    30                40              黑色
;    31                41              紅色
;    32                42              綠色
;    33                43              黃色
;    34                44              藍色
;    35                45              紫紅色
;    36                46              青藍色
;    37                47              白色
;    代码              意义
;    -------------------------
;    0                终端默认设置(一般的默认为黑底白字)
;    1                高亮显示
;    4                使用下划线
;    5                闪烁
;    7                反白显示
;    8                不可见


;字符画,注意每句末尾要加两个控制字符
DB "   ***      ***      *****     ******    ****  ",0AH,0DH   
DB "  *   *    *   *    *     *    *        *   *  ",0AH,0DH     
DB " *     *  *     *  *       *   *       *     * ",0AH,0DH     
DB " *     *  *     *  *          *              * ",0AH,0DH     
DB "  *   *   *     *   *         *****          * ",0AH,0DH     
DB "   ***    *     *    ***      *    *        *  ",0AH,0DH     
DB "  *   *    *   **       ***         *       *  ",0AH,0DH     
DB " *     *    *** *          *        *      *   ",0AH,0DH     
DB " *     *        *          *        *     *    ",0AH,0DH     
DB " *     *  *     *  *       *  *     *    *     ",0AH,0DH     
DB "  *   *    *   *    *     *    *   *    *      ",0AH,0DH     
DB "   ***      ***      *****      ***    ******* ",0AH,0DH     
ST2:;字符画末尾
END

文章评论1条评论)

登录后参与讨论

kinglove45_901410103 2012-9-24 16:55

kinglove45@163.com 谢谢!!请给我发一份好么 我是做汽车电子硬件工程师!非常感谢

craftor 2008-11-7 22:15

不错,顶一下!
相关推荐阅读
weitongguo 2016-03-20 11:08
请玩diy航模的朋友们注意杜邦插头接触不良问题
请玩diy航模的朋友们注意杜邦插头接触不良问题   最近看好多玩DIY航模的摔机视频,不知道他们有没有想到,那些飞控使用的杜邦头子长期振动氧化腐蚀造成接触不良引起飞控失效问题,航模也不便宜...
weitongguo 2016-02-21 16:12
拆解一个废罗斯蒙特控制卡看到的工业PCB设计
这是一块双块电路板叠加起来的模块,整体布局分布清楚,左侧是模拟量转换通道,16通道分布上下两端,中间是信号处理单元,右侧整版是控制部分,具体咱也不知道咋回事,外行看个热闹吧!哈哈! ...
weitongguo 2016-02-21 15:05
用电视机消磁线圈DIY手动消磁器
我有台老式20M双踪示波器,被上面的小台钻给磁干扰了,表现为垂直线条全部都歪了,看波形很别扭,终于我家的29寸大彩电今年"退休"了,里面的电路板和消磁线圈被我拿下当备件,消磁线圈挺大的,电路板上是...
weitongguo 2016-02-21 14:17
罗斯蒙特变送器液晶表头驱动
  /************************************************************...
weitongguo 2015-09-22 19:09
电位器控制三色LED单片机PWM驱动的简单程序
朋友问能否用模拟量控制PWM,这么简单当然easy了,我用STC15W408AS的DIP20脚的单片机,因为这种单片机具有AD输入通道和PWM输出,很快做好了一个单通道的实验,完事想这个单片机有三...
weitongguo 2015-07-23 11:37
【博客大赛】DIY 100V耐压测试器
手里零件挺多的,昨天做个东西,本来应该用IN4148做二极管用,随手拿了两个玻封管,也没仔细看就焊上去了,上电不能正常工作,仔细检查后才发现拿了稳压管当二极管用了,废了半天劲,早知道测试一下...
我要评论
1
2
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /3 下一条