您现在的位置: 主页 > MCU > 单片机技术应用 > LCM128645液晶范例(ST7920) -
本文所属标签:
为本文创立个标签吧:

LCM128645液晶范例(ST7920) -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
液晶使用ST7920控制器,串并行模式(本范例使用串行)/*M16驱动LCM128645,液晶芯片ST7920*/#include "j.h"#include #define light_oncbi(PORTB, 2);#define light_offsbi(PORTB, 2);void clear_all(vo

液晶使用ST7920控制器,串并行模式(本范例使用串行)

本文引用地址: http://www.21ic.com/app/mcu/201806/761708.htm

/*M16驱动LCM128645,液晶芯片ST7920

*/
#include "j.h"
#include

#define light_oncbi(PORTB, 2);
#define light_offsbi(PORTB, 2);

void clear_all(void);
//显示用指针变量
char *line1;
char *line2;
char *line3;
char *line4;


void cpu_init(void)
{
//----------- IO端口初始化 START -----------------
PORTA = 0x0;
DDRA = 0x0;

PORTB = 0xff;
DDRB = 0xff;

PORTC = 0x0;
DDRC = 0x0;

DDRD = 0x0;//D口配置为输入
PORTD = 0xff;//使能上拉电阻
//----------- IO端口初始化 END -----------------

wdt_enable(1);//看门狗使能 30MS
ACSR = 0x80;
}


/*****************************************
液晶发送子程序(串行)
输入数据:要发送的8位数据
输出:无
作者:
修改时间:2004-08-11
*****************************************/
void lcm_out(char a)
{
char i,d;
for(i=0;i<8;i++)
{
cbi(PORTB,1);
d=a&0x80;
if(d)
sbi(PORTB,0);
else
cbi(PORTB,0);
a<<=1;
sbi(PORTB,1);
}
}


/*****************************************
液晶写控制字程序
输入数据:要写入的8位数据
输出:无
作者:
修改时间:2004-08-11
*****************************************/
void wr_com(uchar a)
{
uchar s,i;
s=a&0xf0;
lcm_out(0xf8);
lcm_out(s);
s=a&0x0f;
s<<=4;
lcm_out(s);

for( i=0;i<254;i++ )//延时
{
asm("nop");
}
}
/*****************************************
液晶写数据字程序
输入数据:要写入的8位数据
输出:无
作者:
修改时间:2004-08-11
*****************************************/
void wr_date(uchar a)
{
uchar s,i;
s=a&0xf0;
lcm_out(0xfa);
lcm_out(s);
s=a&0x0f;
s<<=4;
lcm_out(s);

for( i=0;i<254;i++ )//延时
{
asm("nop");
}
}
/*****************************************
液晶初始化程序
输入数据:无
输出:无
作者:
修改时间:2004-08-11
*****************************************/
void lcm_init(void)
{
wr_com(0x30);
delay(1,8000);
wr_com(0x30);
delay(1,8000);
wr_com(0x0c);
delay(1,8000);
wr_com(0x01);//清屏
delay(10,8000);//清屏
wr_com(0x60);
delay(1,8000);
}

void clear_all(void)
{
wr_com(0x01);//清屏
delay(1,8000);//清屏
}

//----------- 整行显示函数 START -----------------
void display(void)
{
wr_com(0x80);
while( *line1!=0x00 )
{
wr_date(*line1);
line1++;
}

wr_com(0x90);
while( *line2!=0x00 )
{
wr_date(*line2);
line2++;
}

wr_com(0x88);
while( *line3!=0x00 )
{
wr_date(*line3);
line3++;
}

wr_com(0x98);
while( *line4!=0x00 )
{
wr_date(*line4);
line4++;
}
line1 = "";
line2 = "";
line3 = "";
line4 = "";
}
//----------- 整行显示函数 END -----------------


//----------- 系统初始化函数 START -----------------
void system_init(void)
{
line1 = "";
line2 = "";
line3 = "";
line4 = "";
light_on
lcm_init();
}
//----------- 系统初始化函数 END -----------------


int main(void)
{
delay(200,8000);
cpu_init();
system_init();
while(1)
{
line1 = " 欢迎光临 ";
line2 = "";
line3 = "东创科技 ";
line4 = " www.dycxin.com.cn ";
display();

delay(800,8000);
}
}




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > LCM128645液晶范例(ST7920) -
 

"LCM128645液晶范例(ST7920) -"的相关文章

网站地图

围观()