?? 用msp430驅動1621芯片的段碼液晶.txt
字號:
/*用msp430驅動1621芯片的段碼液晶-----------------------------------------------------------
功能:用msp430驅動1621芯片的段碼液晶
作者:徐世龍(網名:清風徐徐)
說明:源創(調試絕對能用)
----------------------------------------------------
[清風單片機]網站獨家發布,如需轉載或用于商業用途,請
聯系作者和著名網站的出處
----------------------------------------------------
本程序收錄在[液晶資料光盤]的[液晶程序盤]中,如要需要
請聯系 QQ:78779514 XSL88888@tom.com
----------------------------------------------------
更多資料、更多源程序、更多器件盡在清風單片機
主站點: http://www.qfmcu.com
輔站點: http://www.qfmcu.home.sunbo.net
論壇: http://www.qfmcu.com/bbs
發貨查詢:http://www.qfmcu.com/fh/
留言: http://www.qfmcu.com/ly/
----------------------------------------------------
cs-----p65
wr-----p64
dat----p63
mcu----msp430f135
------------------------------------------------------------*/
/*------------------------
功能:延時
參數:uint y
返回:無
說明:無
-------------------------*/
void dely(uint y)
{
uchar j,i;
while(y--)
for(j=250;j>0;j--)
{
i=0;
}
}
void delay(uint n)
{
uchar j,i;
for(j=0;j<n;j++)
{
i=0;
}
}
/*------------------------
功能:寫字節
參數:uchar k,uchar N
返回:無
說明:無
-------------------------*/
void write_byte(uchar k,uchar n)
{
uchar i,j;
for(i=0;i<n;i++)
{
//dat=k&0x80;
if(k&0x80) //p6.3
P6OUT|=0x08;
else
P6OUT&=0xf7;
delay(20);
P6OUT|=0x10; //wr=1;
j=0;
k=k<<1;
j=0;
P6OUT&=0xef; //wr=0;
}
}
void write_byte1(uchar k,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
//dat=k&0x01;
if(k&0x01)
P6OUT|=0x08;
else
P6OUT&=0xf7;
//dely(2);
P6OUT|=0x10; //wr=1;
//dely(2);
k=k>>1;
//dely(2);
P6OUT&=0xef; //wr=0;
}
}
/*------------------------
功能:寫命令
-------------------------*/
void write_com(uchar com)
{
P6OUT&=0xdf;//cs=0;
//dely(2);
write_byte(0x80,3); //寫100
write_byte(com,8);
P6OUT|=0x10; //wr=1
//dely(2);
P6OUT&=0xef; //wr=0
//dely(2);
P6OUT|=0x20;// cs=1;
}
/*------------------------
功能:寫數據
-------------------------*/
void write_dat(uchar add,uchar mdata)
{
P6OUT&=0xdf;//cs=0;
//dely(2);
add=add<<2;
write_byte(0xa0,3); //寫101
write_byte(add,6);
write_byte1(mdata,4);
//dely(2);
P6OUT|=0x20;// cs=1;
}
/*------------------------
功能:清屏
-------------------------*/
void display_clr(void)
{
uchar i;
for(i=0;i<32;i++)
{
write_dat(i,0);
}
}
/*-------------------------
功能:初始化液晶
-------------------------*/
void int1621(void)
{
P6OUT|=0x20;// cs=1;
//dely(2);
P6OUT&=0xef; //wr=0
//dely(2);
P6OUT|=0x08;//dat=1;
//dely(2);
write_com(0x29); //BIAS1/3
write_com(0x18); //RC256K
write_com(0x06); //WDT溢出標志失效
write_com(0x04); //時基輸出失效
write_com(0x01); //SYS EN,打開系統振蕩器
write_com(0x03); //打開LCD偏壓發生器
display_clr();
}
/*-------------------------
功能:顯示
-------------------------*/
void display(uchar add,uchar dat)
{
write_dat(add,dat>>4);
write_dat(add+1,dat);
}
void main (void)
{
ulong zs;
/*----------------------*/
WDTCTL = WDTPW + WDTHOLD; // 停止看門狗
DCOCTL=0XE0; //初始化時鐘
BCSCTL1=0X86;
BCSCTL2=0X00;
/*---------------------*/
P6DIR=0xff;
P6OUT=0x00;
/*-------*/
dely(100);
int1621();
_EINT(); // Enable interrupts
while (1) // 主循環
{
write_dat(0,oxff); //k9,k10,k11,k12
display(1,0xff); //第一位 k8, c,b,a,d,e,g,f
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -