160128中文显示温度与时间(5)

2019-04-14 19:55

安徽财经大学信息工程学院本科课程论文(设计)

for(i=5;i>0;i--) {

if((LCMCW & 0x03) == 0x03) break; }

return i; // 若返回零,说明错误 }

uchar Status_BIT_3(void) // 状态位ST3判断(数据自动写状态) {

uchar i;

for(i=5;i>0;i--) {

if((LCMCW & 0x08) == 0x08) break; }

return i; // 若返回零,说明错误 }

uchar LCD_Write_Command_P2(uchar cmd,uchar para1,uchar para2) // 写双参数的指令 {

if(Status_BIT_01() == 0) return 1; LCMDW = para1;

if(Status_BIT_01() == 0) return 2; LCMDW = para2;

if(Status_BIT_01() == 0) return 3; LCMCW = cmd;

return 0; // 返回0成功 }

uchar LCD_Write_Command_P1(uchar cmd,uchar para1) // 写单参数的指令 {

if(Status_BIT_01() == 0) return 1; LCMDW = para1;

if(Status_BIT_01() == 0) return 2; LCMCW = cmd;

return 0; // 返回0成功 }

uchar LCD_Write_Command(uchar cmd) // 写无参数的指令 {

if(Status_BIT_01() == 0)

17

安徽财经大学信息工程学院本科课程论文(设计)

return 1; LCMCW = cmd;

return 0; // 返回0成功 }

uchar LCD_Write_Data(uchar dat) // 写数据 {

if(Status_BIT_3() == 0) return 1; LCMDW = dat;

return 0; // 返回0成功 }

uchar LCD_Read_Data() // 读数据 {

if(Status_BIT_01() == 0) return 1;

return LCMDW; }

void Set_LCD_Pos(uchar row, uchar col)reentrant//设置当前地址 {

uint Pos;

Pos = row * LCD_WIDTH+ col;

LCD_Write_Command_P2(LC_ADD_POS,Pos % 256,Pos / 256); //修改 gCurRow = row; gCurCol = col; }

// 清屏

void cls(void) {

uint i;

LCD_Write_Command_P2(LC_ADD_POS,0x00,0x00); // 置地址指针 LCD_Write_Command(LC_AUT_WR); // 自动写 for(i=0;i<0x2000;i++) {

Status_BIT_3();

LCD_Write_Data(0x00); // 写数据 }

LCD_Write_Command(LC_AUT_OVR); // 自动写结束

LCD_Write_Command_P2(LC_ADD_POS,0x00,0x00); // 重置地址指针 gCurRow = 0; // 置地址指针存储变量 gCurCol = 0;

18

安徽财经大学信息工程学院本科课程论文(设计)

}

// LCM 初始化

uchar LCD_Initialise() {

RESET=0; RESET=1;

LCD_Write_Command_P2(LC_TXT_STP,0x00,0x00); // 文本显示区首地址 LCD_Write_Command_P2(LC_TXT_WID,LCD_WIDTH,0x00); // 文本显示区宽度 LCD_Write_Command_P2(LC_GRH_STP,0x00,0x00); // 图形显示区首地址 LCD_Write_Command_P2(LC_GRH_WID,LCD_WIDTH,0x00); // 图形显示区宽度 LCD_Write_Command_P1(LC_CGR_POS,CGRAMSTART >> 11); LCD_Write_Command(LC_CUR_SHP | 0x01); // 光标形状 LCD_Write_Command(LC_MOD_OR); // 显示方式设置 LCD_Write_Command(LC_DIS_SW |0x08); grhome = GRSTART;

txthome = TXTSTART;

return 0; }

// ASCII及汉字显示函数

uchar Display_Str_at_xy(uchar x,uchar y,char *fmt) reentrant {

char c1,c2,cData; uchar i=0,j,uLen; uchar k;

uLen=strlen(fmt);

while(i

c1 = fmt[i]; c2 = fmt[i+1];

Set_LCD_Pos(y,x/8); if(c1 >= 0) {

// ASCII

if(c1 < 0x20) {

switch(c1) {

19

安徽财经大学信息工程学院本科课程论文(设计)

case CR:

case LF: // 回车或换行 i++; x=0;

if(y < 112)y+=HZ_CHR_HEIGHT; continue; case BS: // 退格 i++;

if(y>ASC_CHR_WIDTH)y-=ASC_CHR_WIDTH; cData = 0x00; break; } }

for(j=0;j

if(c1 >= 0x1f) {

cData= ASC_MSK[(c1-0x1f)*ASC_CHR_HEIGHT+j]; Set_LCD_Pos(y+j,x/8); if((x%8)==0) {

LCD_Write_Command(LC_AUT_WR); // 写数据 LCD_Write_Data(cData);

LCD_Write_Command(LC_AUT_OVR); } else

OutToLCD(cData,x,y+j); }

Set_LCD_Pos(y+j,x/8); }

if(c1 != BS) // 非退格 x+=ASC_CHR_WIDTH; } else

{ // 中文

for(j=0;j

if(c1 == GB_16[j].Index[0] && c2 == GB_16[j].Index[1]) break; }

for(k=0;k

20

安徽财经大学信息工程学院本科课程论文(设计)

Set_LCD_Pos(y+k,x/8);

if(j < sizeof(GB_16)/sizeof(GB_16[0])) {

c1=GB_16[j].Msk[k*2]; c2=GB_16[j].Msk[k*2+1]; }

else c1=c2=0;

if((x%8)==0) {

LCD_Write_Command(LC_AUT_WR); LCD_Write_Data(c1);

LCD_Write_Command(LC_AUT_OVR); } else

OutToLCD(c1,x,y+k);

if(((x+2+HZ_CHR_WIDTH/2)%8)==0) {

LCD_Write_Command(LC_AUT_WR); LCD_Write_Data(c2);

LCD_Write_Command(LC_AUT_OVR); } else

OutToLCD(c2,x+2+HZ_CHR_WIDTH/2,y+k); }

x+=HZ_CHR_WIDTH; i++; } i++; }

return uLen; }

void OutToLCD(uchar Dat,uchar x,uchar y) {

uchar dat1,dat2,a,b;

b=x%8;a=8-b;

Set_LCD_Pos(y,x/8);

LCD_Write_Command(LC_AUT_RD); // 读数据 dat1=LCD_Read_Data(); dat2=LCD_Read_Data();

dat1=(dat1&(0xFF<>b);

21


160128中文显示温度与时间(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:英美概况复习资料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: