?? 12864-st7290-f149.c
字號:
//液晶12864(st7920控制器)msp430f149驅(qū)動 作者:[清風(fēng)徐徐]
//===========================================================================//
//名稱:帶字庫液晶顯示模塊12864(st7920控制器)msp430f149驅(qū)動程序//
//適用:在濟南清風(fēng)電子購買的12864k液晶模塊和所有7920驅(qū)動器的液晶模塊//
//作者:徐世龍(網(wǎng)名:清風(fēng)徐徐)//
//QQ:78779514//
//email:xsl88888@tom.comjnqfdz@yeah.net//
//web:http://www.qfmcu.com清風(fēng)單片機(作者主頁)//
//更多的原創(chuàng)程序和資料盡在[清風(fēng)單片機]//
//時間:2004年3月//
//聲明:1。軟件版權(quán)歸作者所有,轉(zhuǎn)載請保留所有信息,用于商業(yè)用途,請聯(lián)系作者//
//2。程序問題請到http://www.mcubbs.net(單片機技術(shù)論壇)尋求技術(shù)支持//
//===========================================================================//
//===========================================================================//
//mcumsp430f149//
//晶振內(nèi)部dco//
//p43rs//
//p42r/w//
//p41e//
//p40rst//
//p30-p37db//
//===========================================================================//
#include
/*************************/
#defineUcharunsignedchar
#defineUintunsignedint
#defineUlongunsignedlong
Ucharbusy,hang,lie;
/********************************/
//定義字符串?dāng)?shù)組*/
/********************************/
charSTR2[]="http://www.qfmcu.com";;
charSTR3[]="http://www.mcubbs.net";;
/**************************定義函數(shù)原型********************************/
voidDelayus(Ulongilinshi);/*延時函數(shù)*/
voidBUSYLOOP();//*判忙函數(shù)*//
voidWrite_command(UcharCMD,Ucharbb);//*發(fā)控制字函數(shù)*//
voidWrite_data(UcharCMD);//*發(fā)數(shù)據(jù)函數(shù)*//
voidCHUSHIHUA();//*初始化函數(shù)*//
voidCLEAR();//*清屏*//
voidDisplay(Uchar*ptr,Ucharddram);//**顯字符串函數(shù)**//
/*********************************************延時
**************************************/
//voidDelayus(Ulongt)
//{Ulongi,j;
//for(i=0;i//for(j=0;j//;
//}
voidDelayus(Ulongilinshi)
{Ulongii;
for(ii=0;ii}
//*********************判忙函數(shù)************************//
voidBUSYLOOP()
{//P1=0x0ff;
//do{
//P4OUT&=0xf7;//RS=0;
//P4OUT|=0x04;//RW=1;
//P4OUT|=0x02;//E=1;
//busy=P3IN;//BUSY=P1;
//P4OUT&=0xfd;//E=0;
//}
//while(busy>0x7f);
Delayus(10);
}
//*********************寫控制字函數(shù)****************************//
voidWrite_command(UcharCMD,Ucharbb)
{
if(bb)
{BUSYLOOP();}
P4OUT&=0xf7;//RS=0;
P4OUT&=0xfb;//RW=0;
P4OUT|=0x02;//E=1;
P3OUT=CMD;//P1=CMD;
Delayus(10);
P4OUT&=0xfd;//E=0;
}
//*********************寫數(shù)據(jù)函數(shù)****************************//
voidWrite_data(UcharCMD)
{BUSYLOOP();
//Delayus(1000);
P4OUT|=0x08;//RS=1;
P4OUT&=0xfb;//RW=0;
P4OUT|=0x02;//E=1;
P3OUT=CMD;//P1=CMD;
Delayus(10);
P4OUT&=0xfd;//E=0;
}
/***************************清屏*************************************/
voidCLEAR()
{P4OUT&=0xf7;//RS=0;
P4OUT&=0xfb;//RW=0;
P4OUT|=0x02;//E=1;
P3OUT=0x01;//P1=0x01;
Delayus(10);
P4OUT&=0xfd;//E=0;
}
//*************************液晶初始化********************************//
voidCHUSHIHUA()
{
Delayus(40000);
Write_command(0x30,0);
Delayus(1500);
Write_command(0x30,0);
Delayus(400);
Write_command(0x0C,1);
Delayus(1500);
Write_command(0x01,1);
Delayus(15000);
Write_command(0x06,1);
}
/*=======================================================
顯示字符串
=======================================================*/
voidDisplay(Uchar*ptr,Ucharddram)
{
Ucharl,i1,x;
l=0;
if(ddram<0x88)
{hang=0;}//定位行地址:第一行
elseif(ddram<0x90)
{hang=2;}//定位行地址:第三行
elseif(ddram<0x98)
{hang=1;}//定位行地址:第二行
else
{hang=3;}//定位行地址:第四行
lie=0x0f&ddram;//定位列地址
if(lie>0x07)
{lie=lie-0x08;}
x=lie*2;
Write_command(ddram,0);//定位顯示起始地址
while((ptr[l])!="\0")
{l++;}
for(i1=0;i1{Write_data(ptr[i1]);//輸出單個字符
x++;
if(x==0x10)
{x=0;
hang++;
switch(hang)
{
case0:Write_command(0x80,0);
break;
case1:Write_command(0x90,0);
break;
case2:Write_command(0x88,0);
break;
case3:Write_command(0x98,0);
}
if(hang>3)
{
Write_command(0x80,0);
hang=0;
}
}
}
}
/**************************主函數(shù)開始***********************************/
main()
{WDTCTL=WDTPW+WDTHOLD;//停止看門狗
DCOCTL=0XE0;//初始化時鐘
BCSCTL1=0X86;
BCSCTL2=0X00;
P3DIR=0xff;
P3OUT=0x00;
P4DIR=0x0f;
P4OUT=0x00;
////////////////////////////////
CLEAR();
CHUSHIHUA();//初始化函數(shù)//
Display(STR2,0x80);//上面一行顯示一個預(yù)定字符串
Display(STR3,0x88);
Delayus(200);
Write_command(0x9C,0);//將光標(biāo)移到0x9C
Write_command(0x0f,0);//光標(biāo)處反白閃爍
//write_command(0x08,0);//進(jìn)入睡眠狀態(tài)
//delayus(200);
//write_command(0x0C,0);//喚醒
while(1)
{;}
}
/*************************主函數(shù)結(jié)束*************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -