oid write_command(uchar cmd)
{
uchar i;
CE_L;//允许写入数据
DC_L;//DC=0写入命令
for(i=0;i<8;i++)
{
if(cmd&0x80)
DIN_H;
else
DIN_L;
CLK_L; //上升沿采样
cmd<<=1;
CLK_H;
}
CE_H;//禁止写入
}
/**********************************************
**名称:write_data(uchar dat)
**功能:向液晶中写入数据
**说明:dat:待写入的数据
**备注:参考数据手册
**日期:2011年2月27日
**********************************************/
void write_data(uchar dat)
{
uchar i;
CE_L;//
DC_H;
for(i=0;i<8;i++)
{
if(dat&0x80)
DIN_H;
else
DIN_L;
CLK_L;
dat<<=1;
CLK_H;
}
CE_H;
}
/**********************************************
**名称:set_pos(uchar x,uchar y)
**功能:设置RAM地址
**说明:x:0-83
y:0-5
**备注:参考数据手册
**日期:2011年2月27日
**********************************************/
void set_pos(uchar x,uchar y)
{
write_command(0x40 | y);
write_command(0x80 | x);
}
/**********************************************
**名称:LCD_clear(void)
**功能:清屏
**说明:
**备注:
**日期:2011年2月27日
**********************************************/
void LCD_clear(void)
{
unsigned int i;
write_command(0x80);//起始列地址0
write_command(0x40);//起始行地址0
for (i=0;i<504;i++)
write_data(0);
}
/**********************************************
**名称:LCD_Init(void)
**功能:初始化液晶
**说明:
**备注:
**日期:2011年2月27日
**********************************************/
void LCD_Init(void)
{
P5DIR=BIT0+BIT1+BIT2+BIT3+BIT3;//设置P5口的方向
RST_L;//复位
RST_H;
write_command(0x21);//工作模式, 水平寻址, 扩展指令
write_command(0x13);//设置偏置系统(BSx) 1:48
write_command(0xc8);//设置电压VLCD = 3.06 + 0.06*Vop, 对比度调整
write_command(0x06);//VLCD温度系数2
write_command(0x20);//工作模式, 水平寻址, 常规指令
write_command(0x0c);//普通模式
write_command(0x40);//起始页地址0
write_command(0x80);//起始列地址0
LCD_clear(); //清全屏
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部1条评论
快来发表一下你的评论吧 !