液晶屏,C语言,单片机
哪位大侠能帮我解释一下每句的意思,非常感谢!//************128x64cogmodule*************************#include<...
哪位大侠能帮我解释一下每句的意思,非常感谢!
//************128x64 cog module*************************
#include <stc12.h>
#include <intrins.h>
//******************************************************
sbit cs =P2^0;
sbit rst =P2^1;
sbit a0 =P2^2;
sbit scl =P2^3;
sbit di =P2^4;
//******************************************************
#define nop() _nop_()
unsigned char code tab1[]=
{/*-- 宽度x高度=128x64 --*/
0xFF,0xFF,0xFF,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
0x07,0x07,0x07,0x87,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x87,0x87,
0x87,0x07,0x07,0x07,0x07,0x87,0x87,0x87,0x87,0x87,0x07,0x07,0x07,0x07,0x07,0x07,
};
//**************delay************************************
void delay_nms(unsigned int n)
{
unsigned int i,j;
for(i=n;i>0;i--)
{
for(j=125;j>0;j--)
{
}
}
}
//***************send_data********************************
void data_send(unsigned char dat)
{
unsigned char s,temp;
int i;
scl=0;
s=dat;
for(i=8;i>0;i--)
{ scl=0;
nop();
nop();
temp=s&0x80;
if(temp)
{di=1;
}
else
{di=0;
}
scl=1;
s=s<<1;
}
}
//***************write command*****************************
void wr_com(unsigned char com)
{
a0=0;
cs=0;
data_send(com);
cs=1;
}
//***************write data********************************
void wr_data(unsigned char dat)
{
a0=1;
cs=0;
data_send(dat);
cs=1;
}
//**********************************************************
void display_map(unsigned char *p)
{
unsigned char seg;
unsigned char page;
for(page=0xb0;page<0xb8;page++)
{
wr_com(page);
wr_com(0x10);
wr_com(0x00);
for(seg=0;seg<128;seg++)
{ wr_data(*p);
++p;
}
}
}
//**********************************************************
void main()
{
delay_nms(100);
rst=0;
delay_nms(100);
rst=1;
delay_nms(100);
wr_com(0xa0); //ADC normal
wr_com(0xc8); //com normal
wr_com(0xa2); //set partial display duty 1/65
wr_com(0x2c); //vc on
delay_nms(100);
wr_com(0x2e); //vr on
delay_nms(100);
wr_com(0x2f); //internal booster,follower,divided on
wr_com(0x24); //set rb/ra=5.29
wr_com(0x81); //set reference voltage select
wr_com(0x1d);
delay_nms(100);
wr_com(0xaf);
wr_com(0x40); //set start line 00
while(1)
{
display_map(tab1);
delay_nms(2000);
}
}
我实在看不懂。。。 展开
//************128x64 cog module*************************
#include <stc12.h>
#include <intrins.h>
//******************************************************
sbit cs =P2^0;
sbit rst =P2^1;
sbit a0 =P2^2;
sbit scl =P2^3;
sbit di =P2^4;
//******************************************************
#define nop() _nop_()
unsigned char code tab1[]=
{/*-- 宽度x高度=128x64 --*/
0xFF,0xFF,0xFF,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
0x07,0x07,0x07,0x87,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x87,0x87,
0x87,0x07,0x07,0x07,0x07,0x87,0x87,0x87,0x87,0x87,0x07,0x07,0x07,0x07,0x07,0x07,
};
//**************delay************************************
void delay_nms(unsigned int n)
{
unsigned int i,j;
for(i=n;i>0;i--)
{
for(j=125;j>0;j--)
{
}
}
}
//***************send_data********************************
void data_send(unsigned char dat)
{
unsigned char s,temp;
int i;
scl=0;
s=dat;
for(i=8;i>0;i--)
{ scl=0;
nop();
nop();
temp=s&0x80;
if(temp)
{di=1;
}
else
{di=0;
}
scl=1;
s=s<<1;
}
}
//***************write command*****************************
void wr_com(unsigned char com)
{
a0=0;
cs=0;
data_send(com);
cs=1;
}
//***************write data********************************
void wr_data(unsigned char dat)
{
a0=1;
cs=0;
data_send(dat);
cs=1;
}
//**********************************************************
void display_map(unsigned char *p)
{
unsigned char seg;
unsigned char page;
for(page=0xb0;page<0xb8;page++)
{
wr_com(page);
wr_com(0x10);
wr_com(0x00);
for(seg=0;seg<128;seg++)
{ wr_data(*p);
++p;
}
}
}
//**********************************************************
void main()
{
delay_nms(100);
rst=0;
delay_nms(100);
rst=1;
delay_nms(100);
wr_com(0xa0); //ADC normal
wr_com(0xc8); //com normal
wr_com(0xa2); //set partial display duty 1/65
wr_com(0x2c); //vc on
delay_nms(100);
wr_com(0x2e); //vr on
delay_nms(100);
wr_com(0x2f); //internal booster,follower,divided on
wr_com(0x24); //set rb/ra=5.29
wr_com(0x81); //set reference voltage select
wr_com(0x1d);
delay_nms(100);
wr_com(0xaf);
wr_com(0x40); //set start line 00
while(1)
{
display_map(tab1);
delay_nms(2000);
}
}
我实在看不懂。。。 展开
3个回答
展开全部
void delay_nms(unsigned int n) 是延时子程序
void data_send(unsigned char dat) 是端口控制子程序
void wr_com(unsigned char com) 是写命令子程序
void wr_data(unsigned char dat) 是写数据子程序
void display_map(unsigned char *p) 是显示子程序
void main() 是主程序
while(1) 是一个死循环
void data_send(unsigned char dat) 是端口控制子程序
void wr_com(unsigned char com) 是写命令子程序
void wr_data(unsigned char dat) 是写数据子程序
void display_map(unsigned char *p) 是显示子程序
void main() 是主程序
while(1) 是一个死循环
展开全部
请问你想问什么??
这个程序是串口传并口控制12864的程序!
void data_send(unsigned char dat)这个函数式串口形式把数据发送出去!
有其他的你可以看看,如果不会记得追问下
这个程序是串口传并口控制12864的程序!
void data_send(unsigned char dat)这个函数式串口形式把数据发送出去!
有其他的你可以看看,如果不会记得追问下
追问
这是一个显示图片的,但是我想显示汉字,不会做,做好后显示乱码。还有就是上面的程序看的不是很懂,可以帮我在每句的后面注释一下吗。谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
显示汉字要将汉字转换成字模的!就是跟你上面那个图片的一样,每个汉字是一个数组。你到网上去找一个字模转换工具
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询