📄 lcd.c
字号:
#include <iom128v.h>
#include "lcd.h"
#include <macros.h>
void Clear_Display(unsigned char color)
{
CMD = LCD_MODE_2;
DAT = color;
CMD = LCD_CLEAR_EN;
Delayx10ms(1);
CMD = LCD_CLEAR_DIS;
}
/* 编写:2005.11.29
编写者:赫树开
功能:画一个矩形
参数。 X为矩形左上角的X坐标,
Y为左上角Y坐标值,
lenth为矩形长度,
width 为矩形宽度
color为矩形的颜色,*/
void Dis_Rect(unsigned int x,unsigned char y,unsigned int lenth,unsigned char width,unsigned char color)
{
unsigned char i;
unsigned int j;
CMD = LCD_MODE_0+LCD_DOT1;
for(i=y;i<y+width;i++)
{
X_ADDR = x;
X_ADDR = x/256;
Y_ADDR = i;
for(j=0;j<lenth;j++)
{
DAT = color;
}
}
}
//单色字节扩展函数
void bytekzh( unsigned char datain,unsigned char front, unsigned char back )
{
unsigned char i,j;
for( i=0,j=0x80; i<8; i++,j=(j>>1))
{
DAT=datain&j ? front: back;
}
}
void Dis_Ascii(unsigned int x,unsigned char y,unsigned char dat,unsigned char front,unsigned back)
{
unsigned char j,k;
k = 0;
dat -= 0x20;
CMD = LCD_MODE_1;
DAT = front;
CMD = LCD_MODE_2;
DAT = back;
CMD = LCD_MODE_0+LCD_DOT8;
for(j=y;j<y+16;j++)
{
Y_ADDR = j;
X_ADDR = x;
X_ADDR = x/256;
DAT = ASC_MSK[dat][k++];
}
}
/*
16*24 字符单个字符显示
*/
void Dis_Ascii_Big(unsigned int x,unsigned char y,unsigned char dat,unsigned char front,unsigned back)
{
unsigned char j,k;
k=0;
dat-=0x20;
CMD = LCD_MODE_1;
DAT = front;
CMD = LCD_MODE_2;
DAT = back;
CMD = LCD_MODE_0+LCD_DOT8;
for(j=y;j<y+24;j++)
{
Y_ADDR = j;
X_ADDR = x;
X_ADDR = x/256;
DAT = Cdot1624[dat][k++];
DAT = Cdot1624[dat][k++];
}
}
void Dis_Chinese(unsigned int x,unsigned char y,unsigned int dat,unsigned char front,unsigned back)
{
unsigned char j,k;
k = 0;
CMD = LCD_MODE_1;
DAT = front;
CMD = LCD_MODE_2;
DAT = back;
CMD = LCD_MODE_0+LCD_DOT8;
for(j=y;j<y+16;j++)
{
Y_ADDR = j;
X_ADDR = x;
X_ADDR = x/256;
DAT = Cdotlib[dat].Msk[k++];
DAT = Cdotlib[dat].Msk[k++];
}
}
/*
显示dat[32]数组中的汉字
输入:显示汉字位置,汉字点阵指针、着色
输入:无
编者:赫树开
日期:二○○六年三月十一日
*/
/*=============================================================================
ASCII(8*16) 及 汉字(16*16) 混合字符串显示函数
输入参数约定:
x,y显示字符串的左上角xy坐标.x..8点一字节位置; y..一条扫描线定位
*ptr...字符串指针,本函数所指的是flash字串
cursor 为光标标志,1 为光标 0 为不是光标
返回参数:输出字串长度,留意汉字一个算两个
其它假定:调用时汉字必须在字库数组中已经存在,否则将输出不正确的结果
==============================================================================*/
void Display(unsigned int x,unsigned char y,unsigned char *ptr,unsigned char font,unsigned char front,unsigned char back)
{
unsigned char uLen,i=0;
unsigned int dat;
uLen=0;
while ( (unsigned char)ptr[uLen] >= 0x10 ){uLen++;}; //探测字串长度
//uLen = strlen(ptr);
while(i<uLen)
{
if((unsigned char)ptr[i]<128) //ascii字符与汉字内码的区别在于128做分界,大于界线的为汉字码
{ //此字符为ascii
if(font == BIG)
{
Dis_Ascii_Big(x,y,ptr[i],front,back);
x+=16;
i++;
if(x>319)
{
y+=24;
x=0;
}
}
else
{
Dis_Ascii(x,y,ptr[i],front,back);
x += 8;
i++;
if(x>319)
{
y += 16;
x = 0;
}
}
}
else //此字符为汉字
{
for(dat=0;dat<MAX_HZ;dat++)
{
if(Cdotlib[dat].Index[0] == (unsigned char)ptr[i])
{
if(Cdotlib[dat].Index[1] == (unsigned char)ptr[i+1])
{
i+=2;
break;
}
}
}
if(dat >= MAX_HZ)//若字库不存在该字则显示空白
{
i += 2;
dat = 0;
}
Dis_Chinese(x,y,dat,front,back);
x += 16;
if(x>319)
{
y += 16;
x = 0;
}
}
}
}
/* 日期:2005.12.1
编写者:赫树开
功能:显示一个16X24的ASCII字符串
参数: x 为起点x坐标
y 为起点y坐标
ptr 为字符串内容
front 是字符前景色
back 是字符串背景色
*/
void Dis_Asc_1624(unsigned int x,unsigned char y,unsigned char *ptr,unsigned char front,unsigned char back)
{
unsigned char uLen,i=0;
unsigned char j,k;
unsigned int dat;
uLen=0;
while ( (unsigned char)ptr[uLen] >= 0x10 ){uLen++;}; //探测字串长度
//uLen = strlen(ptr);
CMD = LCD_MODE_1;
DAT = front;
CMD = LCD_MODE_2;
DAT = back;
CMD = LCD_MODE_0+LCD_DOT8;
while(i<uLen)
{
dat = ptr[i] - 0x20;
k = 0;
for(j=y;j<y+24;j++)
{
Y_ADDR = j;
X_ADDR = x;
X_ADDR = x/256;
DAT = Cdot1624[dat][k++];
DAT = Cdot1624[dat][k++];
}
x += 16;
if(x>319)
{
y += 24;
x = 0;
}
i++;
}
CMD = LCD_MODE_0+LCD_DOT1;
}
void Dis_Menu(struct Command const *cmd,unsigned char size)
{ unsigned char i;
for(i = 0;i<size;i++)
{
Dis_Command(cmd[i]);
}
}
unsigned char const ASC_MSK[][16]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x3C,0x3C,0x3C,0x18, /*-- ! --*/
0x18,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x66,0x66,0x66,0x00,0x00, /*-- " --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x36,0x36,0x7F,0x36,0x36, /*-- # --*/
0x36,0x7F,0x36,0x36,0x00,0x00,0x00,0x00,
0x00,0x18,0x18,0x3C,0x66,0x60,0x30,0x18, /*-- $ --*/
0x0C,0x06,0x66,0x3C,0x18,0x18,0x00,0x00,
0x00,0x00,0x70,0xD8,0xDA,0x76,0x0C,0x18, /*-- % --*/
0x30,0x6E,0x5B,0x1B,0x0E,0x00,0x00,0x00,
0x00,0x00,0x00,0x38,0x6C,0x6C,0x38,0x60, /*-- & --*/
0x6F,0x66,0x66,0x3B,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x18,0x18,0x00,0x00, /*-- ' --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x18,0x18,0x30,0x30, /*-- ( --*/
0x30,0x30,0x30,0x18,0x18,0x0C,0x00,0x00,
0x00,0x00,0x00,0x30,0x18,0x18,0x0C,0x0C, /*-- ) --*/
0x0C,0x0C,0x0C,0x18,0x18,0x30,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x36,0x1C,0x7F, /*-- * --*/
0x1C,0x36,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x7E, /*-- + --*/
0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- , --*/
0x00,0x00,0x1C,0x1C,0x0C,0x18,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E, /*-- - --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*-- . --*/
0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x06,0x06,0x0C,0x0C,0x18, /*-- / --*/
0x18,0x30,0x30,0x60,0x60,0x00,0x00,0x00,
0x00,0x00,0x00,0x1E,0x33,0x37,0x37,0x33, /*-- 0 --*/
0x3B,0x3B,0x33,0x1E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0C,0x1C,0x7C,0x0C,0x0C, /*-- 1 --*/
0x0C,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x0C, /*-- 2 --*/
0x18,0x30,0x60,0x7E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x06,0x1C, /*-- 3 --*/
0x06,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x30,0x30,0x36,0x36,0x36, /*-- 4 --*/
0x66,0x7F,0x06,0x06,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x60,0x60,0x60,0x7C, /*-- 5 --*/
0x06,0x06,0x0C,0x78,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1C,0x18,0x30,0x7C,0x66, /*-- 6 --*/
0x66,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7E,0x06,0x0C,0x0C,0x18, /*-- 7 --*/
0x18,0x30,0x30,0x30,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x76,0x3C, /*-- 8 --*/
0x6E,0x66,0x66,0x3C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x66,0x66,0x66,0x66, /*-- 9 --*/
0x3E,0x0C,0x18,0x38,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x00, /*-- : --*/
0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1C,0x1C,0x00, /*-- ; --*/
0x00,0x00,0x1C,0x1C,0x0C,0x18,0x00,0x00,
0x00,0x00,0x00,0x06,0x0C,0x18,0x30,0x60, /*-- < --*/
0x30,0x18,0x0C,0x06,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00, /*-- = --*/
0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0x30,0x18,0x0C,0x06, /*-- > --*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -