📄 msp430驱动1621.txt
字号:
/*-----------------------------------------------------------
功能:用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
}
(文章推荐人:Oldkey)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -