📄 dispdemo.c
字号:
/*************************************************/
/*192*64液晶模块显示例子程序和应用函数 */
/*用户可以调用lcd_rst函数清屏 */
/* 调用disp_str函数显示一串字符 */
/*printf 函数也可以显示字符,一般用于调试信息输出*/
/*04-1-14 14:42 蓝宇科技,赵崇伟 */
/*************************************************/
#include "dos.h"
#include "stdio.h"
#include "conio.h"
#include "string.h"
/*清除屏幕,包括虚拟显示和LCD模块*/
void lcd_rst(void);
/*显示字符串,带属性,光标不动*/
void disp_str(unsigned char x, /*行坐标=0~3*/
unsigned char y, /*列坐标=0~24*/
char *str, /*指向字符串的指针*/
int count, /*字符串长度(字节),一个汉字占2个字节,英文占1个字节*/
unsigned char attr);/*字符属性,0x70=黑底白字,其他=白底黑字*/
void main(void)
{
char str[]={"液晶例子程序和应用函数"};
char cur[]={" "};/*用空格作为光标*/
char InKey;
unsigned char i,attr=0x70;
lcd_rst();/*液晶模块清屏,清屏后光标在左上角*/
printf("在当前光标处显示文字 \n");/*光标会自动移动*/
printf("0123456789abcdefABCDEF \n");/*光标会自动移动*/
for(;;)
{
disp_str(2,0,str,22,attr);
disp_str(3,0,cur,1,attr);/*显示空格*/
InKey=getch(); /*等待键盘按键*/
if(InKey==0x1b) /*Esc键,程序结束退出,其他键继续演示*/
{
break;
}
attr=~attr;
}
}
/*清除屏幕,包括虚拟显示和LCD模块*/
void lcd_rst(void)
{
struct REGPACK r; /*定义寄存器变量,以便直接读写寄存器*/
r.r_ax=0x0; /*AH=0,清屏*/
intr(0x10,&r); /*INT 10H,调用BIOS显示中断*/
}
/*显示字符串,带属性,光标不动*/
void disp_str(unsigned char x, /*行坐标=0~3*/
unsigned char y, /*列坐标=0~24*/
char *str, /*指向字符串的指针*/
int count, /*字符串长度(字节),一个汉字占2个字节,英文占1个字节*/
unsigned char attr)/*字符属性,0x70=黑底白字,其他=白底黑字*/
{
struct REGPACK r; /*定义寄存器变量,以便直接读写寄存器*/
unsigned int temp;
int n;
for(n=0;n<count;n++)
{
/*设置光标*/
temp=x<<8; /*DH=x*/
temp=temp|y; /*DL=y*/
r.r_dx=temp; /*DX*/
r.r_ax=0x0200; /*AH=02H(设置光标),AL=00H*/
intr(0x10,&r); /*INT 10H,调用BIOS显示中断*/
/*显示一个带属性的字符*/
temp=(*(str++))&0x00ff;
r.r_ax=temp|0x0900;/*AH=09H(显示字符),AL=字符*/
r.r_cx=1; /*字符个数*/
r.r_bx=0x0000|attr; /*BH=0(显示页号),BL=属性*/
intr(0x10,&r); /*INT 10H,调用BIOS显示中断*/
/*坐标向后移动*/
y++;
if(y>=24) /*如果超过液晶宽度,则换行*/
{
y=0;
x++;
}
if(x>=4)x=0;/*如果超出右下脚,则返回到左上脚*/
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -