📄 1602.c
字号:
//-----------------------------------------
//IO说明:P3 DATA ,P40 RS , P41 RW ,P42 EN
//-----------------------------------------
#ifndef msp430f2274_h
#include "msp430x22x4.h"
#endif
#define uchar unsigned char
#define uint unsigned int
#define RS_HIGH P4OUT|=BIT0 //指令数据选择信号
#define RS_LOW P4OUT&=~BIT0
#define RW_HIGH P4OUT|=BIT1 //读写信号
#define RW_LOW P4OUT&=~BIT1
#define E_HIGH P4OUT|=BIT2 //使能信号
#define E_LOW P4OUT&=~BIT2
#define BUSY_OUT P3DIR|=BIT7
#define BUSY_IN P3DIR&=~BIT7
#define BUSY_DATA P3IN&BIT7
//延时子程序
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();
P3OUT=Command;
_NOP();_NOP();
E_LOW;
}
//写入字符数据到LCD
WriteData(uchar Data){
LcdBusy();
RS_HIGH;
RW_LOW;
E_HIGH;
_NOP();_NOP();
P3OUT=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);
}
//时钟初始化函数
void InitClock(void){
// 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不分频
DCOCTL=CALDCO_1MHZ;
BCSCTL1=CALBC1_1MHZ;
BCSCTL2|=DIVM_1+DIVS_3;///zhuyi
}
//端口初始化函数
void InitPort(void){
P3SEL=0x00;//P2口所有引脚设置为一般的IO口
P4SEL=0x00;//P4口所有引脚设置为一般的IO口
P3DIR=0xFF;//P2口所有引脚设置为输出方向
P4DIR=0xFF;//P4口所有引脚设置为输出方向
}
void intlcd()
{
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
InitClock();
InitPort();
LcdInit();//Lcd初始化
RS_LOW;
RW_LOW;
E_HIGH;
_NOP();_NOP();
P3OUT=0x38;
_NOP();_NOP();
E_LOW;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -