⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 main.c

📁 基于MSP430F20XX系列控制LCD控制器HT1621的代码,带硬件原理图,液晶屏使用周立功的ZY886B IC卡水表LCD液晶显示模块,该程序控制7位数字显示
💻 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 + -