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

📄 hnr_s3.c

📁 msp430开发版程序
💻 C
字号:
//1602字符型液晶显示实验
/*
需要将电路板16*2液晶模块接到J12的LCD接口上,注意引脚顺序。
*/

#include "msp430x14x.h"
#define  uchar unsigned char
#define  uint unsigned int
#define RS_HIGH P6OUT|=BIT5 //指令数据选择信号
#define RS_LOW P6OUT&=~BIT5 
#define RW_HIGH P6OUT|=BIT6 //读写信号
#define RW_LOW P6OUT&=~BIT6
#define E_HIGH P6OUT|=BIT7 //使能信号
#define E_LOW P6OUT&=~BIT7
#define BUSY_OUT P1DIR|=BIT7
#define BUSY_IN P1DIR&=~BIT7
#define BUSY_DATA P1IN&BIT7
uchar Data1[16]={" MSP430F149 kits"};
uchar Data2[16]={" www.huanor.com "};

//延时子程序
DelayMS(uint ms)
{
	uint i;
	while(ms--)
	{
		for(i=0; i<800;i++);
	}
}

// 测试LCD忙碌状态
void LcdBusy()
{
	RS_LOW;
	RW_HIGH;
	E_HIGH;
	_NOP();
	_NOP();
	BUSY_IN;
	while(BUSY_DATA);
	BUSY_OUT;
	E_LOW;
}

//写入指令到LCD
WriteCommand(uchar Command)
{
	LcdBusy();
	RS_LOW;
	RW_LOW;
	E_HIGH;
	_NOP();
	_NOP();
	P1OUT=Command;
	_NOP();_NOP();
	E_LOW;
}

//写入字符数据到LCD
WriteData(uchar Data)
{
	LcdBusy();
	RS_HIGH;
	RW_LOW;
	E_HIGH;
	_NOP();
	_NOP();
	P1OUT=Data;
	_NOP();
	_NOP();
	E_LOW;
}

//LCD初始化设定
LcdInit()
{
	WriteCommand(0x38);//8位数据端口,2行显示,5*7点阵
	DelayMS(5);
	WriteCommand(0x0c);//开启显示, 无光标
	DelayMS(5);
	WriteCommand(0x06);//AC递增, 画面不动
	DelayMS(5);
	WriteCommand(0x01);//清屏
	DelayMS(5);
}

main()
{
	uchar i;
	WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
	//端口初始化  
	P1DIR=0xFF;//P1口所有引脚设置为输出方向
	P6DIR=0xFF;//P6口所有引脚设置为输出方向
	//初始化时钟  
	BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频 最高的标称频率
	DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率
	do
	{
		IFG1&=~OFIFG;//清除振荡器失效标志
		for(uint i=255;i>0;i--);
	}while(IFG1&OFIFG);//判断XT2是否起振
	BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频
	
	LcdInit();//Lcd初始化
//	_DINT();//关闭中断
	while(1)
	{
		WriteCommand(0x80);//定位在第一行第一个位置
		for(i=0;i<16;i++) WriteData(Data1[i]);
		WriteCommand(0x80|0x40);//定位在第二行第一个位置
		for(i=0;i<16;i++) WriteData(Data2[i]); 
	};
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -