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