您的位置 首页 观点

串行2_pin 12864液晶移植到s12

Createdon:2012-10-17Author:zhangbin学习笔记forMC9S12XS128lcd12864ser_2_pinredesignedbyzhangbin2012-10-17

Createdon:2012-10-17

Author:zhangbin

学习笔记

forMC9S12XS128lcd12864ser_2_pin

redesignedbyzhangbin

2012-10-17

versions:V-0.1

AllRightsReserved

Ser_12864.h文件如下注释的比较具体:

#ifndefSER_12864_H_

#defineSER_12864_H_

//设定wr为PA0

//设定en为PA1

//在main()中开输出

/

#include“derivative.h”

/

//2空函数

#definenop()_NOP();

//3*数据输进口给各个口加了界说能够直接从位的引脚读出0/1的状况

#defineip10(P1IN&0x01)/0x01

#defineip11(P1IN&0x02)/0x02

#defineip12(P1IN&0x04)/0x04

#defineip13(P1IN&0x08)/0x08

#defineip14(P1IN&0x10)/0x10

#defineip15(P1IN&0x20)/0x20

#defineip16(P1IN&0x40)/0x40

#defineip17(P1IN&0x80)/0x80

#defineip20(P2IN&0x01)/0x01

#defineip21(P2IN&0x02)/0x02

#defineip22(P2IN&0x04)/0x04

#defineip23(P2IN&0x08)/0x08

#defineip24(P2IN&0x10)/0x10

#defineip25(P2IN&0x20)/0x20

#defineip26(P2IN&0x40)/0x40

#defineip27(P2IN&0x80)/0x80

/

voiddelay_us(intdelaytime)

{//软件延时,16M总线频率时延时时刻约为10us

//体系的晶振为16M的,没有运用PLL倍频

inti;unsignedcharj;

for(i=0;i

for(j=0;j<16;j++)

;

}

voiddelay_ms(intdelaytime)

{//软件延时,16M总线频率时延时时刻约为1ms

inti;

for(i=0;i

delay_us(100);

}

voidinit_lcd(void)/

//——–position为任一方位的开始地址–*/

//–length为长度,取值为1-64—/若只清一行最大为16//

voidclr_lcd(ucharx,uchary0,ucharlength)//

{//要写的数据

uchara,i,j;

delay_us(50);

a=content;

LCD_SCLK0;//en=0;

LCD_SID1;//wr=1

for(i=0;i<5;i++)//数据时序*****************8

{

LCD_SCLK1;

LCD_SCLK0;

}

LCD_SID0;//wr=0

LCD_SCLK1;//en=1

LCD_SCLK0;//en=0

if(dat_comm)LCD_SID1;

elseLCD_SID0;

LCD_SCLK1;

LCD_SCLK0;

LCD_SID0;

LCD_SCLK1;

LCD_SCLK0;

for(j=0;j<2;j++)//

{

ucharpos=0;

switch(y0)

{

case0:pos=0x80+x;break;

case1:pos=0x90+x;break;

case2:pos=0x88+x;break;

case3:pos=0x98+x;break;

default:break;

}

wr_lcd(comm,pos);

}

//

{

ucharpos=0;

switch(y0)

{

case0:pos=0x80+x;break;

case1:pos=0x90+x;break;

case2:pos=0x88+x;break;

case3:pos=0x98+x;break;

default:break;

}

wr_lcd(comm,pos);//comm为零。函数意思是移动光标到此

wr_lcd(dat,data);//写入这个数据dat和comm是1,0的标志

}

////

{

ucharpos=0;//初始化

ucharcnt=0;//传递过来的是指针,cnt为偏移量,然后一个字符一个字符的写入。

switch(y0)

{

case0:pos=0x80+x;break;

case1:pos=0x90+x;break;

case2:pos=0x88+x;break;

case3:pos=0x98+x;break;

default:break;

}

wr_lcd(comm,pos);//写地址

while(*(p+cnt)!=)

{

wr_lcd(dat,*(p+cnt));//写数据

cnt++;

};

}

/

Mian()函数如下:

//本程序中没有运用PLL倍频,体系的晶振为16M的

#include

#include“derivative.h”

#include“ser_12864.h”

voidmain(void)

{

unsignedchars1[]={“汉字显现LCD“};

unsignedchars2[]={“MC9S12开发体系”};

unsignedchars3[]={“goodgoodstudy“};

unsignedchars4[]={“2012-10-10-H23木”};

DDRA|=0x03;//液晶的两条线

EnableInterrupts;

for(;;)

{

init_lcd();

delay_ms(10);

//wr_string(ucharx,uchary0,uchar*p);

wr_string(0,0,s1);//榜首行榜首个方位显现s1

delay_ms(1000);

wr_string(0,1,s2);//第二行榜首个方位显现s2

delay_ms(1000);

wr_string(0,2,s3);//第三行榜首个方位显现s3

delay_ms(1000);

wr_string(0,3,s4);//第四行榜首个方位显现s4

delay_ms(1000);

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/256261.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部