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

📄 lcd1602.c

📁 MSP430x14x的有关1602开发源代码
💻 C
字号:
/*******************************************************************
                                                                              	
                   1602字符型液晶显示实验
                 网址:http://www.www.eda121.com 
                                          
                 功能:在第一行显示  Model:WJ89S52	
                      在第二行显示  www.eda121.com
          			                     
********************************************************************/
#include "msp430x14x.h"
#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 P2DIR|=BIT7
#define BUSY_IN P2DIR&=~BIT7
#define BUSY_DATA P2IN&BIT7
uchar Data1[16]={" Model:WJ430F149"};
uchar Data2[16]={"www.eda121.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();
  P2OUT=Command;
  _NOP();_NOP();
  E_LOW;
}
//写入字符数据到LCD
WriteData(uchar Data){
  LcdBusy();
  RS_HIGH;
  RW_LOW;
  E_HIGH;
  _NOP();_NOP();
  P2OUT=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不分频
}
//端口初始化函数
void InitPort(void){
  P2SEL=0x00;//P2口所有引脚设置为一般的IO口
  P4SEL=0x00;//P4口所有引脚设置为一般的IO口
  P2DIR=0xFF;//P2口所有引脚设置为输出方向
  P4DIR=0xFF;//P4口所有引脚设置为输出方向
}
//主程序
main(){
  uchar i;
  WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
  InitClock();
  InitPort();
  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 + -