液晶显示屏驱动程序头文件

//液晶显示屏驱动程序头文件*
//         liuhy          *
//       2003.01.08       ********
//********************************

#define LCD_CADD (*(volatile unsigned char *)0x7C01)
#define LCD_DADD (*(volatile unsigned char *)0x7C00)

//读状态字子程序
unsigned char ReadSta()
{
  unsigned char sta=LCD_CADD;
   return sta;
}

//判状态位STA1,STA0子程序
void lcdsta01(void)
{
 while((ReadSta()&0x3)<3);
}

//判状态位STA2子程序
void lcdsta2(void)
{
   while((ReadSta()&0x4)==0);
}

//判状态位STA3子程序
void lcdsta3(void)
{
   while((ReadSta()&0x8)==0);
}

//判状态位STA6子程序
void lcdsta6(void)
{
   while((ReadSta()&0x40)==0);
}

//写数据子程序
void lcdwrd(unsigned char data)
{
 lcdsta01();
 LCD_DADD=data;
}
 
//写命令子程序
void lcdwrc(unsigned char com)
{
 lcdsta01();
 LCD_CADD=com;
}

//双字节参数指令写入子程序
void lcdpr2(unsigned char data1,unsigned char data2,unsigned char com)
{
    lcdwrd(data1);
  lcdwrd(data2);
  lcdwrc(com);

//单字节参数指令写入子程序
void lcdpr1(unsigned char data1,unsigned char com)
{
    lcdwrd(data1);
  lcdwrc(com);
}

//液晶屏读数据子程序
unsigned char lcdrd(void)
{
    unsigned char data;
  lcdsta01();
  data=LCD_DADD;
}

//液晶屏初始化子程序
void lcdini(void)
{
    lcdpr2(0,0,0x40);
  lcdpr2(0x1e,0,0x41);
  lcdpr2(0,0x10,0x42);
  lcdpr2(0x1e,0,0x43);
  lcdwrc(0xa7);
  lcdwrc(0x81);
  lcdwrc(0x9c);
  //lcdwrc(0xa0);
}

//液晶屏清屏子程序
void lcdclear(void)
{
    unsigned int i;
  lcdpr2(0,0,0x24);
  lcdwrc(0xb0);
  for(i=0;i<480;i++)
  { 
    lcdsta3();
    LCD_DADD=0;
  }
  lcdwrc(0xb2);
 
  lcdpr2(0,0x10,0x24);
  lcdwrc(0xb0);
  for(i=0;i<3840;i++)
  { 
    lcdsta3();
   LCD_DADD=0;
  }
  lcdwrc(0xb2);
}

//建立CGRAM子程序
void cgram(unsigned int count,unsigned char *pwbhz)
{
  unsigned int i;
  lcdpr2(8,0,0x22);
  lcdpr2(0,0x44,0x24);
  count*=32;
  lcdwrc(0xb0);
  for(i=0;i<count;i++)
  {
      lcdsta3();
   LCD_DADD=*(pwbhz++);
  }
  lcdwrc(0xb2);
}

//图形方式下写汉字子程序
void lcdwri_cc(unsigned char o_x,unsigned char o_y,
       unsigned char code)//,const unsigned char *ptxhz)
{
     extern unsigned char TuXing[2688];
   unsigned int inadd;
  unsigned char *hzadd;
  unsigned char i;
  inadd=o_y*0x1e +o_x+0x1000;
  hzadd=code*0x20+TuXing;//ptxhz;
  for(i=0;i<0x10;i++,hzadd++)
  {
     lcdpr2(inadd%256,(unsigned char)(inadd/256),0x24);
     lcdpr1(*hzadd,0xc0);
   lcdpr1(*(hzadd+0x10),0xc0);
   inadd+=0x1e;
  }
}

//文本方式下写汉字子程序(不带文本属性)
void lcdwri_ct(unsigned char o_x,unsigned char o_y,
       unsigned char code)
{
     unsigned int inadd;
  inadd=o_y*30+o_x;
  lcdpr2(inadd%256,(unsigned char)(inadd/256),0x24);
  lcdpr1(code,0xc0);
  lcdpr1(code+2,0xc0);
  inadd+=0x1e;
  lcdpr2(inadd%256,(unsigned char)(inadd/256),0x24);
  lcdpr1(code+1,0xc0);
  lcdpr1(code+3,0xc0);
}

//文本方式下写西文子程序(不带文本属性)
void lcdwri_c(unsigned char o_x,unsigned char o_y,
      unsigned char code)
{
     unsigned int inadd;
  inadd=o_y*0x1e +o_x;
  lcdpr2(inadd%256,(unsigned char)(inadd/256),0x24);
  lcdpr1(code,0xc0);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值