标题:
MSP430单片机驱动LCD1602液晶屏源程序
[打印本页]
作者:
51hei学习技术中
时间:
2017-3-7 01:28
标题:
MSP430单片机驱动LCD1602液晶屏源程序
MSP430单片机做的驱动常见的LCD1602液晶屏的源程序:
0.png
(67.55 KB, 下载次数: 105)
下载附件
2017-3-7 01:25 上传
完整的程序下载:
MSP430单片机驱动LCD1602液晶屏源程序.rar
(23.6 KB, 下载次数: 333)
2017-3-7 01:27 上传
点击文件名下载附件
下载积分: 黑币 -5
下面是部分源码预览:
#include <msp430x22x4.h> /*单片机寄存器头文件*/
#include "lcd1602.h" /*LCD驱动头文件*/
/*-////////////////////////////函数说明///////////////////////////////-*/
/*- 名 称:Serial_To_Parallel() -*/
/*- 功 能:输出通过74HC164由并行转为串行 -*/
/*- 输入变量:无 -*/
/*- 输出变量:无 -*/
/*-///////////////////////////////////////////////////////////////////-*/
void Serial_To_Parallel(char dat)
{
unsigned char i;
for(i=0;i<8;i++)
{
if(dat&0x80)
Data_OUT_H;
else
Data_OUT_L;
CLK_H;
_NOP();//空延迟
_NOP();
_NOP();
CLK_L;
dat<<=1;
}
}
/*-////////////////////////////函数说明///////////////////////////////-*/
/*- 名 称:Delay() -*/
/*- 功 能:延时 -*/
/*- 输入变量:无 -*/
/*- 输出变量:无 -*/
/*-///////////////////////////////////////////////////////////////////-*/
void Delay(unsigned int count)
{
unsigned int i=count;
while (i != 0)
{
i--;
}
}
/*-////////////////////////////函数说明///////////////////////////////-*/
/*- 名 称:LCD_WriteCommand(unsigned char Com) -*/
/*- 功 能:LCD写入命令 -*/
/*- 输入变量:unsigned char Com(命令字) -*/
/*- 输出变量:无 -*/
/*-///////////////////////////////////////////////////////////////////-*/
void LCD_WriteCommand(unsigned char Com)
{
RS_SET_L; //命令
RW_SET_L; //写操作
_NOP();
Serial_To_Parallel(Com);
_NOP();
E_SET_H;
_NOP();
E_SET_L;//使能端下降沿沿写入
Delay(Delay_Count);
}
/*-////////////////////////////函数说明///////////////////////////////-*/
/*- 名 称:LCD_WriteData(unsigned char Dat) -*/
/*- 功 能:LCD写入数据 -*/
/*- 输入变量:unsigned char Dat(数据) -*/
/*- 输出变量:无 -*/
/*-///////////////////////////////////////////////////////////////////-*/
void LCD_WriteData(unsigned char Dat)
{
RS_SET_H; //数据
RW_SET_L; //写操作
Serial_To_Parallel(Dat);
_NOP();
E_SET_H;
_NOP();
E_SET_L;//使能端下降沿沿写入
Delay(Delay_Count);
}
/*-////////////////////////////函数说明///////////////////////////////-*/
/*- 名 称:LCD_SetXY(char x,char y) -*/
/*- 功 能:设定LCD写入数据指针 -*/
/*- 输入变量:unsigned char Dat(数据) -*/
/*- 输出变量:无 -*/
/*-///////////////////////////////////////////////////////////////////-*/
void LCD_SetXY(char x,char y)
{
switch(y)//数据指针=80+地址码(0-27H,40-67H)
{
case 1:LCD_WriteCommand(0x7f + x);break; //第1行
case 2:LCD_WriteCommand(0xbf + x);break; //第2行
}
}
/*-////////////////////////////函数说明///////////////////////////////-*/
/*- 名 称: LCD_DispStr(...) -*/
/*- 功 能: LCD写入字符 -*/
/*- 输入变量:x(列数),y(行数),*p字符串指针,length(长度) -*/
/*- 特殊说明:x或者y为0时候,液晶显示使用默认地址(不指定新地址) -*/
/*- 输出变量:无 -*/
/*-///////////////////////////////////////////////////////////////////-*/
void LCD_DispCharArray(char x,char y,char *p,unsigned char length)
{
if (x !=0x00 && y!=0x00)
{
LCD_SetXY(x,y);//数据有效重新设置位置
}
while(length!=0)
{
LCD_WriteData(*p);
p++;
length--;
}
}
/*-////////////////////////////函数说明///////////////////////////////-*/
/*- 名 称: LCD_DispStr(...) -*/
/*- 功 能:LCD写入字符串,自动识别结束符号‘\0’ -*/
/*- 输入变量:x(列数),y(行数),*p(字符串指针) -*/
/*- 特殊说明:x或者y为0时候,液晶显示使用默认地址(不指定新地址) -*/
/*- 输出变量:无 -*/
/*-///////////////////////////////////////////////////////////////////-*/
void LCD_DispStr(char x,char y,char *p) //exp:LCD_DispStr(1,1,"LCD_Serial_test");
{
if (x !=0x00 && y!=0x00)
{
LCD_SetXY(x,y);//数据有效重新设置位置
}
while(*p!='\0')
{
LCD_WriteData(*p);
p++;
}
}
/*-////////////////////////////函数说明///////////////////////////////-*/
/*- 名 称:LCD_Init() -*/
/*- 功 能:LCD初始化 -*/
/*- 输入变量:无 -*/
/*- 输出变量:无 -*/
/*-///////////////////////////////////////////////////////////////////-*/
void LCD_Init()
{
E_SET_OUT; //输出端口初始化部分
RW_SET_OUT;
RS_SET_OUT;
DataPort_SET_OUT;
E_SET_L; //使能拉低
RW_SET_L; //读写拉低
RS_SET_L; //选择拉低
CLK_SET_OUT;
LCD_WriteCommand(0x38); //写命令部分
LCD_WriteCommand(0x01); //清屏
LCD_WriteCommand(0x06);
LCD_WriteCommand(0x0c); //开显示,不显示光标
LCD_WriteCommand(0x00);
}
/*-////////////////////////////函数说明///////////////////////////////-*/
/*- 名 称:LCD_CLR() -*/
/*- 功 能:LCD清屏 -*/
/*- 输入变量:无 -*/
/*- 输出变量:无 -*/
/*-///////////////////////////////////////////////////////////////////-*/
void LCD_CLR()
{
LCD_WriteCommand(0x01); //清屏
}
复制代码
作者:
++___aa
时间:
2018-5-8 16:37
试试,感觉应该可以
作者:
++___aa
时间:
2018-5-8 16:38
试一下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1