cc1989summer 发表于 2011-4-25 21:45:15

最简洁的LCD1602四线显示程序(仅需6个I/O口且为同一个p口)基于msp430

#include "io430.h"

void LcdWriteCommand(char cmd);
void LcdWriteData( char data );

//P2.4--P2.7为数据口
#define CLR_RS P2OUT&=~BIT0;        //RS = P2.0RW接地
#define SET_RS P2OUT|=BIT0;   

#define CLR_EN P2OUT&=~BIT1;    //EN = P2.1
#define SET_EN P2OUT|=BIT1;       

void Delay(void)
{
    int i=200;
    while (i != 0)
    {i--;}
}

void LCD_init(void)
{
    P2SEL = 0x00;   
    P2DIR = 0xFF;
    P2OUT = 0x00;
    Delay();
    LcdWriteCommand(0x38);          //规定的复位操作
    Delay();
    LcdWriteCommand(0x38);               
    Delay();
    LcdWriteCommand(0x38);
    Delay();
    LcdWriteCommand(0x28);                //显示模式设置四线
    LcdWriteCommand(0x80);                //关闭显示
    LcdWriteCommand(0x06);                //写字符时整体不移动
    LcdWriteCommand(0x0c);                //显示开,不开光标,不闪烁
    LcdWriteCommand(0x01);                  //显示清屏
}

void LcdWriteCommand(char cmd)
{
   Delay();
   CLR_RS;       
P2OUT=(cmd & 0xF0);                     //清低四位
    SET_EN;                           //产生使能脉冲信号
    CLR_EN;
P2OUT=(cmd<<4) & 0xF0;                  //清高四位
    SET_EN;                              //产生使能脉冲信号
    CLR_EN;                       
}

void LcdWriteData( char data )
{
    Delay();
    SET_RS;                              //P2.0-->RS
P2OUT=(data & 0xF0) | BIT0 ;            //清低四位
    SET_EN;                               //产生使能脉冲信号
    CLR_EN;       
P2OUT=((data<<4) & 0xF0) | BIT0;
    SET_EN;                              //产生使能脉冲信号
    CLR_EN;       
}

void main( void )
{
    WDTCTL=WDTPW+WDTHOLD;
    LCD_init();
    LcdWriteCommand(0x80+0x00);   //设置显示地址
      LcdWriteData('t');            //地址自动累加
      LcdWriteData('e');
      LcdWriteData('a');
      LcdWriteData('s');
      LcdWriteData('h');
      LcdWriteData('a');
      LcdWriteData('r');
      LcdWriteData('k');

while(1);
      
}


**********************************************************************************************************************
说明:以上程序已测,完全没问题。其中接线方法已经标注,P2口可换成其他P口,但应注意对应关系。

cc1989summer 发表于 2011-5-11 10:32:34

顶一个

zhengdahe 发表于 2011-5-18 10:26:58

MARK

ccmj4708 发表于 2011-5-19 08:22:27

mark
页: [1]
查看完整版本: 最简洁的LCD1602四线显示程序(仅需6个I/O口且为同一个p口)基于msp430