自制51单片机常用头文件(T6963C)
uchar column; // 横坐标
uchar line; // 纵坐标
uchar code1; // 代码寄存器
sbit LCD_WR = P3^2; // 写操作信号
sbit LCD_RD = P3^3; // 读操作信号
sbit LCD_CD = P3^4; // 通道选择信号
sbit LCD_DATA = P1; // 数据端口
//指令&数据读写状态
void CheckRW(void)
{
do
{
LCD_DATA = 0XFF; // LCD_DATA口置"1"
LCD_CD = 0X01; // 指令写入通道
LCD_RD = 0X00; // RD=0
ACC = LCD_DATA; // 读操作
LCD_RD = 0X01; // RD=1
}
while ((ACC&0x03) != 0X03); // 低电平忙
}
//数据自动写状态
void AutoWrite(void)
{
do
{
LCD_DATA = 0XFF; // LCD_DATA口置"1"
LCD_CD= 0X01; // 指令写入通道
LCD_RD = 0X00; // RD=0
ACC = LCD_DATA; // 读操作
LCD_RD = 0X01; // RD=1
}
while((ACC&0X08)!= 0x08); // 低电平忙
}
//数据写入函数
void WriteData(uchar uData)
{
CheckRW(); // 指令&数据读写状态
ACC = uData; // 暂存累加器
LCD_CD = 0X00; // 数据写入通道
LCD_DATA = ACC; // 读取数据
LCD_WR = 0X00; // WR=0
LCD_WR = 0X01; // WR=1
}
//无参指令写入函数
void WriteCom(uchar Command)
{
CheckRW(); // 检测指令读写状态
LCD_DATA = Command; // 指令写入
LCD_WR = 0X00; // WR=0
LCD_WR = 0X01; // WR=1
}
//单参数指令写入函数
void WriteCom1(uchar Par,uchar Com)
{
CheckRW(); // 检测指令读写
WriteData(Par); // 数据写入
CheckRW(); // 检测指令读写
WriteCom(Com); // 指令写入
}
//双参数指令写入函数
void WriteCom2(uchar Par1,uchar Par2,uchar Comd)
{
CheckRW(); // 检测指令读写
WriteData(Par1); // 数据写入
CheckRW(); // 检测指令读写
WriteData(Par2); // 数据写入
CheckRW(); // 检测指令读写
WriteCom(Comd); // 指令写入
}
//LCM初始化函数
void LcmInit( void )
{
WriteCom2(0x00,0x00,0x40); // 设置文本显示区首地址
WriteCom2(0x10,0x00,0x41); // 设置文本显示区宽度
WriteCom2(0x00,0x08,0x42); // 设置图形显示区首地址0x0800
WriteCom2(0x10,0x00,0x43); // 设置图形显示区宽度
WriteCom(0xA7); // 设置光标形状 8x8方块
WriteCom(0x80); // 显示方式设置 文本xor图形
WriteCom(0x98); // 显示开关设置 文本开,图形开,光标闪烁关
}
//清显示存储器函数
void LcmClear( uchar FillByte )
{
uint i = 8192; // 此处仅清8K RAM,如果32K RAM都使用,请修改i=32768
WriteCom2(0x00,0x08,0x24);
WriteCom(0xB0); // 进入自动写
while(i--)
{
AutoWrite(); // 数据自动写状态
WriteData( FillByte ); // 写入数据
}
WriteCom(0xB2); // 退出自动写
}
//设定显示地址函数
void LocateXY(uchar x,uchar y,uchar mode)
{
if (mode) // mode=1为图形方式
{
y += 0x08; // 如果图形模式要加上图形区首地址0x0800
column = x;
line = y;
}
else
{
; // 否则什么都不做
}
}
//图形写入函数
void WriteTX( void )
{
uint i = 0;
LocateXY(0x00,0x00,1); // 计算图形显示区首地址为0800H
WriteCom2(column,line,0x24); // 设置显示RAM地址
while (i < 1024)
{
WriteCom1(CCTAB[i++],0xC0);
}
}
//主程序
void main( )
{
P3 = 0X1C; // 间接控制方式控制线初始化
LcmInit (); // 初始化
LcmClear (0X00); // 清屏
WriteTX(); // 图形演示
while(1)
{
;
}
}
51单片机头文件T6963 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)