📄 复件 main.c
字号:
#include "MSP430X20X3.h"
#define uchar unsigned char
#define BIAS 0x52
#define SYSEN 0x02
#define LCDON 0x06
#define LCDOFF 0x04
#define cs BIT1
#define wr BIT3
#define dat BIT4
#define rd BIT5
void SendBit_1621(uchar data,uchar cnt) //data的高cnt位写入HT1621,高位在前
{
uchar i;
for(i =0; i <cnt; i ++)
{
P1OUT&=~wr;
if((data&0x80)==0)
P1OUT&=~dat;
else
P1OUT|=dat;
_NOP();
P1OUT|=wr;
data<<=1;
}
}
void SendDataBit_1621(uchar data,uchar cnt) //data的低cnt位写入HT1621,低位在前
{
uchar i;
for(i =0; i <cnt; i ++)
{
P1OUT&=~wr;
if((data&0x01)==0)
P1OUT&=~dat;
else
P1OUT|=dat;
_NOP();
P1OUT|=wr;
data>>=1;
}
}
void SendCmd(uchar command)
{
P1OUT&=~cs;
_NOP();
SendBit_1621(0x80,4); //写入标志码"100"和9位command命令,由于
SendBit_1621(command,8); //没有使有到更改时钟输出等命令,为了编程方便
_NOP();
P1OUT|=cs; //直接将command的最高位写"0"
}
void Write_1621(uchar addr,uchar data)
{
P1OUT&=~cs;
_NOP();
SendBit_1621(0xa0,3); //写入标志码"101"
SendBit_1621(addr,6); //写入addr的高6位
SendDataBit_1621(data,4); //写入data的低4位
_NOP();
P1OUT|=cs;
}
void WriteAll_1621(uchar addr,uchar *p,uchar cnt)
{
uchar i;
P1OUT&=~cs;
SendBit_1621(0xa0,3); //写入标志码"101"
SendBit_1621(addr,6); //写入addr的高6位
for(i =0; i <cnt; i ++,p++) //连续写入数据
{
SendDataBit_1621(*p,8);
}
P1OUT|=cs;
}
void main()
{
unsigned char count;
WDTCTL=WDTPW+WDTHOLD;
DCOCTL = (0x00<<5); //设置DCO
BCSCTL1 = 0x00; //设置RSEL
// uchar a[10];
// a[0]=0x21;a[1]=0x43;a[2]=0x65;a[3]=0x87;a[4]=0xa9;
P1DIR=0xFF; //将端口设为输出
P1OUT=0xFF;
SendCmd(BIAS); //设置偏压和占空比
SendCmd(SYSEN); //打开系统振荡器
// SendCmd(0x38);
SendCmd(LCDON); //打开LCD偏压发生器
for(count=0;count<32;count++)
Write_1621(count,0x00);
//WriteAll_1621(0,a,5); //0:(起始地址)高6位有效,a:(写入数据的起始地址)8位
//都有效,6:为写入的字节数。连续写入"123456789a"
// SendCmd(LCDOFF); //关闭LCD显示
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -