标题:
msp430驱动LCD1602液晶显示C语言程序
[打印本页]
作者:
xueer
时间:
2013-7-14 16:17
标题:
msp430驱动LCD1602液晶显示C语言程序
#include "msp430x14x.h"
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F)*(double)x/2000000.0)
#define delay_ms(x) __delay_cycles((long)(CPU_F)*(double)x/20000.0)
#define uint unsigned int
#define uchar unsigned char
#define RS_H P5OUT|=BIT5
#define RS_L P5OUT&=~BIT5 //P1OUT&=~BIT0
#define RW_H P5OUT|=BIT6
#define RW_L P5OUT&=~BIT6
#define E_H P5OUT|=BIT7
#define E_L P5OUT&=~BIT7
#define BF BIT7
#define DataDIR P4DIR
#define DataOUT P4OUT
#define DataIN P4IN
uchar lcd_shuju[]="0123456789-";//定义字符数组显示数字
uchar lcd_tab[]="abcde";
uchar lcd_tab1[]="XYZ";
/*void LCDable(void) //忙检测不写也可以
{
DataDIR&=0X00;//数据端设置为输入(读取液晶状态字,判断液晶状态)
RS_L;
RW_H;
E_H;
delay_us(4);
while((DataIN & BF!=0));
E_L;
DataDIR|=0xff;
}*/
void shizhong()
{
BCSCTL1=0X37; //使用高速晶振XT2,低速模式,8分频
BCSCTL2=0XBE; //选择时钟源为XT2,8分频,DC0震荡电阻选择内部电阻
}
void WriteCommond(uchar Commond) //写指令
{
//LCDable();
DataDIR|=0xff;//数据端设置为输出
RS_L;
RW_L;
E_L;
delay_ms(4);
DataOUT=Commond;
delay_ms(4);
E_H;
delay_ms(4);
E_L;
RW_H;
RS_H;
}
void WriteAddress(uchar x) //写地址
{
WriteCommond(0x80|x);
}
void Writedata(uchar data) //写数据
{
//LCDable();
DataDIR|=0xff;//数据端设置为输出
RS_H;
RW_L;
E_L;
delay_ms(4);
DataOUT=data;
delay_ms(4);
E_H;
delay_ms(4);
E_L;
RW_H;
RS_L;
}
void LCD_Init()
{
DataDIR|=0xff;//数据口设置为输出
P5DIR|=0XE0;//控制端设置为输出
WriteCommond(0X38);//显示模式设置 16X2
WriteCommond(0X0C);//开显示,光标设置为不显示
WriteCommond(0X06);//开显示,光标移动模式设置为:读写一个字符后光标及地址指针加1
WriteCommond(0x80+0x00);//显示起始地址
WriteCommond(0X01);//清屏设置
}
void display_ZFC()
{
uchar i;
WriteAddress(0x05);//显示起始地址:第1行第6个位置
i=0;
while(lcd_tab[i]!='\0')
{
Writedata(lcd_tab[i]);
i++;
delay_ms(50);
}
}
void display_ZFC1()
{
uchar i;
WriteAddress(0x42);//显示起始地址:第2行第3个位置
i=0;
while(lcd_tab1[i]!='\0')
{
Writedata(lcd_tab1[i]);
i++;
delay_ms(50);
}
}
void display_SJ()
{
uchar i;
WriteAddress(0x03);//显示起始地址:第1行第1个位置
i=0;
while(lcd_shuju[i]!='\0')
{
Writedata(lcd_shuju[i]);
i++;
delay_ms(50);
}
}
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;//关闭看门狗
shizhong();//配置时钟
P5DIR=0xE0;//控制端设置为输出
LCD_Init();//液晶初始化
display_ZFC();//显示字符串
display_ZFC1();//显示字符串1
delay_ms(2000);
display_SJ();//显示数据串0123456789-
}
复制代码
完整代码下载:
http://www.51hei.com/bbs/dpj-78454-1.html
作者:
yanp
时间:
2013-7-30 00:09
谢谢分享
作者:
在云一方
时间:
2013-9-7 14:27
谢谢分享啊~
作者:
hgvh
时间:
2014-8-9 10:40
编译显示错误,自己又不会改。。。哎
作者:
Pathfinder
时间:
2014-8-10 17:40
看看
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1