#define SYSEN 0x02//打开系统振荡器
#define LCDON 0x06//打开LCD偏压发生器
#define RC256 0x30//片内RC振荡器
#define BIAS 0x52//LCD 1/3偏压 4个公共端口
#define SYSDIS 0x00
#define WDTDIS 0x0a
sbit cs=P1^7;
sbit rd=P3^2;
sbit wr=P3^3;
sbit dat=P3^4;
uchar table[]={
0x0f,0x0f,0x0f,0x0f,
0x0f,0x0f,0x0f,0x0f,
0x0f,0x0f,0x0f,0x0f,
0x0f,0x0f,0x0f,0x0f,0x0f,};
uchar table1[]={
0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xf0,};
uchar table2[]={
0xe6,0xf8,0xb0,0xb0,0xbe,};
uchar table3[]={
0x01,0x03,0x07,0x0f,};
uchar table4[]={
0xde,0x22,0xfe,0x22,
0x0e,0x22,0xfa,0x22,
0xda,0x22,0xc6,0x22,
0x5e,0x22,0x7c,0x22,
0x06,0x22,0xbe,0x22 ,};
uchar table5[]={
0xbe,0x06,0x7c,0x5e,
0xc6,0xda,0xfa,0x0e,
0xfe,0xde,};
void wr_data(uchar da,uchar cnt)//写数据函数
{
uchar i;
for(i=0;i
{
wr=0;
delayus(10);
dat=(bit)(da&0x80);/*if(da>=0x80)
dat=1;
else
dat=0;*/
delayus(10);
wr=1;
delayus(10);
da<<=1;
}
}
void wr_clearlcd()//清屏
{
uchar i;
cs=0;
delayus(10);
wr_data(0xa0,3);
wr_data(0x00<<2,6);
for(i=0;i<10;i++)
{
wr_data(0x00,8);
}
cs=1;
delayus(10);
}
void wr_com(uchar com)//写命令函数
{
cs=0;
delayus(10);
wr_data(0x80,4);
wr_data(com,8);
cs=1;
delayus(10);
}
void wr_all_lcd(uchar add,uchar *p,uchar cnt)//写连续地址
{
uchar i;
cs=0;
delayus(10);
wr_data(0xa0,3);
wr_data(add<<2,6);
for(i=0;i
{
wr_data(*p,8);
p++;
}
cs=1;
delayus(10);
}
void lcd_init()
{
cs=1;
wr=1;
dat=1;
delayms(20);
wr_com(BIAS);
wr_com(RC256);
wr_com(SYSDIS);
wr_com(WDTDIS);
wr_com(SYSEN);
wr_com(LCDON);
wr_clearlcd();
}
void wr_add_data(uchar add,uchar dat)
{
cs=0;
delayus(10);
wr_data(0xa0,3);
wr_data(add<<2,6);
wr_data(dat<<4,4);//数据位为4位
cs=1;
delayus(10);
}
void daoshu(uchar add,uchar *p,uchar cnt)
{
uchar i,a,b;
cs=0;
delayus(10);
wr_data(0xa0,3);
for(i=0;i
{
wr_data(add<<2,6);
for(a=0;a<6;a++)
wr_data(*p,8);
p++;
for(b=0;b<3;b++)
wr_data(*p,8);
p++;
delayms(1000);
wr_clearlcd();
cs=0;
delayus(10);
wr_data(0xa0,3);
}
cs=1;
delayus(10);
wr_clearlcd();
cs=0;
delayus(10);
wr_data(0xa0,3);
wr_data(0x08<<2,6);
for(i=0;i<2;i++)
wr_data(0xbe,8);
cs=1;
delayus(10);
wr_add_data(0x10,0x02);
}
void ceshi(uchar add)//一段一段点亮全屏测试
{
uchar i,num,*p=table3;
for(num=0;num<17;num++)
{
for(i=0;i<4;i++)
{
cs=0;
delayus(10);
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
本文发布于:2024-02-02 13:13:31,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685081044035.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |