📄 main.c
字号:
//////////////////////////////////////////////////////////////////////////////////////////
/////ST7920串行控制128*64液晶
//QQ:178463135
//E-Mail:lyz803@163.com
//rst p4.0 复位
//rs p4.1 片选
//rw p3.1 数据
//E p3.3 时钟
//
#include <msp430x14x.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
uchar busy,hang,lie,flash_flag;
void Delayus(ulong ilinshi)
{ ulong ii;
for(ii=0;ii<=ilinshi;ii++);
}
void BUSYLOOP()
{
Delayus(1000);
}
void Write_command(uchar x,uchar bb)
{
uchar b,i=0;
BUSYLOOP();
b=x;
P4OUT|=BIT1; //cs=1;
P3OUT|=BIT1; //data=1;
for(i=0;i<5;i++) //5 个连续1 '11111'
{
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
}
P3OUT&=~BIT3; //clk=0
P3OUT&=~BIT1; //data=0;
for(i=0;i<3;i++) //RS,RW,0 Rs=Rw=0 //写命令
{
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
}
////////////////////////////////////上面是发送一个完整的启动数据'11111000'
for(i=0;i<4;i++) //发送高4位
{
if((x&0x80)?1:0) //1
P3OUT|=BIT1; //data=1;
else
P3OUT&=~BIT1; //data=0;
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
x=x<<1;
}
P3OUT&=~BIT1; //data=0;
for(i=0;i<4;i++) //RS,RW,0 发送4个0;
{
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
}
//////////////////////////////////////////////
for(i=0;i<4;i++) //发送低4位
{
if((b&0x08)?1:0) //1
P3OUT|=BIT1; //data=1;
else
P3OUT&=~BIT1; //data=0;
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
b=b<<1;
}
P3OUT&=~BIT1; //data=0;
for(i=0;i<4;i++) //RS,RW,0 发送4个0;
{
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
}
P4OUT|=BIT1; //cs=1;
Delayus(100);
}
void Write_data(uchar x)
{
uchar b,i=0;
BUSYLOOP();
b=x;
P4OUT|=BIT1; //cs=1;
P3OUT|=BIT1; //data=1;
for(i=0;i<5;i++) //5 个连续1 '11111'
{
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
}
P3OUT&=~BIT3; //clk=0 //RW=0
P3OUT&=~BIT1; //data=0;
P3OUT|=BIT3; //clk=1
P3OUT&=~BIT3; //clk=0 //RS=1
P3OUT|=BIT1; //data=0;
P3OUT|=BIT3; //clk=1
P3OUT&=~BIT3; //clk=0 //0
P3OUT&=~BIT1; //data=0;
P3OUT|=BIT3; //clk=1
////////////////////////////////////上面是发送一个完整的启动数据'11111010'
for(i=0;i<4;i++) //发送高4位
{
if((x&0x80)?1:0) //1
P3OUT|=BIT1; //data=1;
else
P3OUT&=~BIT1; //data=0;
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
x=x<<1;
}
P3OUT&=~BIT1; //data=0;
for(i=0;i<4;i++) //RS,RW,0 发送4个0;
{
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
}
//////////////////////////////////////////////
for(i=0;i<4;i++) //发送低4位
{
if((b&0x08)?1:0) //1
P3OUT|=BIT1; //data=1;
else
P3OUT&=~BIT1; //data=0;
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
b=b<<1;
}
P3OUT&=~BIT1; //data=0;
for(i=0;i<4;i++) //RS,RW,0 发送4个0;
{
P3OUT&=~BIT3; //clk=0
P3OUT|=BIT3; ; //clk=1
}
P4OUT|=BIT1; //cs=1;
Delayus(100);
}
void CLEAR()
{
Write_command(0x01,1);
Write_command(0x34,1);
Write_command(0x30,1);
}
void CHUSHIHUA()
{
P4OUT&=~BIT0;
Delayus(40000);
P4OUT|=BIT0; //rst=1
Delayus(40000);
Write_command(0x30,0);
Delayus(6000);
Write_command(0x30,0);
Delayus(200);
Write_command(0x30,0);
Write_command(0x30,0);
//--------------
Write_command(0x0c,1);
//Write_command(0x0C,1);
Delayus(100);
Write_command(0x01,1);
Delayus(1000);
Write_command(0x06,1);
}
void IO_Init(void) //初始化端口
{
P4DIR|=0x03; ///CS=1
P4OUT|=0x03;
P3DIR=0x0a; //P3.1,3.3=OUT
P3OUT|=0x0a;
}
void main(void)
{
WDTCTL=WDTPW+WDTHOLD;
// P3SEL = 0x00f; // Setup P3 for SPI mode
IO_Init();
CHUSHIHUA();//初始化函数//
CLEAR();
Write_command(0x80,1); //4行
Write_data('T'); //TEL:13156015636
Write_data('E');
Write_data('L');
Write_data(':');
Write_data('1');
Write_data('3');
Write_data('1');
Write_data('5');
Write_data('6');
Write_data('0');
Write_data('1');
Write_data('5');
Write_data('6');
Write_data('3');
Write_data('6');
/*
U0CTL = CHAR + SYNC + MM + SWRST; // 8-bit, SPI, Master
U0TCTL = CKPL + SSEL1 + STC; // Polarity, SMCLK, 3-wire
U0BR0 = 0x002; // SPICLK = SMCLK/2
U0BR1 = 0x000;
U0MCTL = 0x000;
ME1 = USPIE0; // Module enable
U0CTL &= ~SWRST; // SPI enable
IE1 |= URXIE0; // Recieve interrupt enable
_EINT(); // Enable interrupts
*/
_BIS_SR(LPM0_bits + GIE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -