⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dispdemo.c

📁 在BC4.5平台上
💻 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 + -