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

📄 lcm16.c

📁 msp430液晶显示
💻 C
字号:
#include "chip.h"
#include "lcdm.h"
#include "st7565.h"
#include "hzk16dot.h"
#include "hzk16idx.h"
#include "hzk16def.h"


extern const unsigned char asc16dot[];

void WriteRAMColumn16(unsigned char nPage,unsigned char column,const unsigned char *pramdata)
{
unsigned char cnt;  
  SetPage(nPage);//设置页
  SetColumn(column);//设置列数
  for(cnt=0;cnt<8;cnt++)
  {
    WriteRAMOneColumn(column+cnt,*(pramdata+cnt));//写前8列数据  
  }  
  SetPage(nPage+1);//设置为下一页
  SetColumn(column);//设置列数
  for(cnt=0;cnt<8;cnt++)
  {  
    WriteRAMOneColumn(column+cnt,*(pramdata+cnt+8));//写后8列数据
  }  
}

void LcdmDisplayChar16(unsigned char nPage,unsigned char column,unsigned char c)
{
unsigned int index;
  index=c;//设置索引
  index<<=4;//乘16
  WriteRAMColumn16(nPage,column,(const unsigned char *)&asc16dot[index]);//写16列数据
}

void DisplayASC16(unsigned char nPage,unsigned char column,unsigned char *pstr)
{
unsigned char *ptrs;
  ptrs=pstr;//复制指针
  while(*ptrs)//有字符
  {
    LcdmDisplayChar16(nPage,column,*ptrs);//在nPage页,column列显示字符串*ptrs内容    
    column+=8;//column移过8列
    ptrs++;//ptrs指向下一个字符
  }  
}

unsigned char GetHZKIndex(unsigned int chncode,unsigned int *indexno)
{
unsigned char fontcnt;
  for(fontcnt=0;fontcnt<HZK_SIZE_LEN;fontcnt++)
  {
    if(chncode==hzk16index[fontcnt][0])//如果检索到相应汉码 
    {
      *indexno=hzk16index[fontcnt][1];//通过*indexno返回索引号
      return 0xff;//返回0xff
    }
  }
  return 0x00;//返回0x00
}

void WriteRAMColumn16HZK(unsigned char nPage,unsigned char column,const unsigned char *pramdata)
{
unsigned char cnt;  
  SetPage(nPage);//设置nPage页
  SetColumn(column);//设置column列
  for(cnt=0;cnt<16;cnt++) 
  {
    WriteRAMOneColumn(column+cnt,*(pramdata+cnt));//写16列数据  
  }  
  SetPage(nPage+1);//设置nPage+1页 
  SetColumn(column);//设置column列
  for(cnt=0;cnt<16;cnt++)
  {  
    WriteRAMOneColumn(column+cnt,*(pramdata+cnt+16));//写后16列数据
  }  
}

void LcdmDisplayHZK16(unsigned char nPage,unsigned char colum,unsigned int chn)
{
unsigned int index;
  if(!GetHZKIndex(chn,&index)) return;//如果检索到相应的汉字,则返回
  index<<=5;//乘32
  WriteRAMColumn16HZK(nPage,colum,(const unsigned char *)&hzk16dot[index]);//写16列汉字
}


void LCMDisplay(unsigned char nPage,unsigned char colum,unsigned char *ptrs)
{
unsigned int chncode;
   while(*ptrs)
   {
    
     if(*ptrs>=0xA1) //如果字符串是汉字
     {
       chncode=*ptrs;//将字符存入chncode
       chncode<<=8;//将chncode左移8位
       ptrs++;//ptrs指向下一个字符
       chncode |=*ptrs;//下一个字符存入chncode的低8位
       ptrs++;//ptrs指向下一个字符
       LcdmDisplayHZK16(nPage,colum,chncode);//显示汉字       
       colum+=16;//右移16列
     }
     else 
     {
       LcdmDisplayChar16(nPage,colum,*ptrs);//显示字符
       ptrs++;//指针指向下一个字符
       colum+=8;//右移8列
       
     }  
   }  
  
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -