标题:
lcd12864驱动程序 用于MSP430
[打印本页]
作者:
苑意
时间:
2017-7-22 02:47
标题:
lcd12864驱动程序 用于MSP430
LCD函数库,可用于MSP430
单片机源程序如下:
/*
* LCD_BASIC_LIBRARY.C
*
* Created on: 2017年7月20日
* Author: Hasee
*/
#include <msp430.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define LCD_DataIn P8DIR=0x00 //数据口输入模式
#define LCD_DataOut P8DIR=0xFF //数据口输出模式
#define LCD2MCU_Data P8IN //LCD向芯片输入数据
#define MCU2LCD_Data P8OUT //芯片向LCD输出的数据
#define LCD_CmdOut P3DIR|=BIT0+BIT4+BIT5 //设置控制口低三位RS、RW、E为输出口
#define LCD_RS_L P3OUT&=~BIT0 //RS=P3.0
#define LCD_RS_H P3OUT|=BIT0
#define LCD_RW_L P3OUT&=~BIT5 //RW=P3.5
#define LCD_RW_H P3OUT|=BIT5
#define LCD_EN_L P3OUT&=~BIT4 //EN=P3.4
#define LCD_EN_H P3OUT|=BIT4
uchar LCD_AddrTable[32]={
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,
0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
};
/*******************************************
函数名称:LCD_WriteCmd
功 能:向液晶中写控制命令
参 数:cmd控制命令
返回值 :无
********************************************/
void LCD_WriteCmd(uchar cmd)
{
uchar LCD_TmpData=0x00;
LCD_RS_L;
LCD_RW_H;
LCD_DataIn;
do //忙检测
{
LCD_EN_H;
_NOP();
LCD_TmpData=LCD2MCU_Data;
LCD_EN_L;
}
while(LCD_TmpData & 0x80);
LCD_RS_L;
LCD_RW_L;
LCD_DataOut;
MCU2LCD_Data=cmd;
LCD_EN_H;
_NOP();
LCD_EN_L;
}
/*******************************************
函数名称:LCD_WriteData
功 能:向液晶中写数据
参 数:data数据
返回值 :无
********************************************/
void LCD_WriteData(uchar data)
{
uchar LCD_TmpData=0x00;
LCD_RS_L;
LCD_RW_H;
LCD_DataIn;
do //忙检测
{
LCD_EN_H;
_NOP();
LCD_TmpData=LCD2MCU_Data;
LCD_EN_L;
}
while(LCD_TmpData&0x80);
LCD_RS_H;
LCD_RW_L;
LCD_DataOut;
MCU2LCD_Data=data;
LCD_EN_H;
_NOP();
LCD_EN_L;
}
/*******************************************
函数名称:Delay_1ms
功 能:延迟1ms
参 数:无
返回值 :无
********************************************/
void Delay_1ms()
{
uchar i;
for(i=0;i<150;i++)_NOP();
}
/*******************************************
函数名称:Delay_Nms
功 能:延迟i ms
参 数:i
返回值 :无
********************************************/
void Delay_Nms(uchar i)
{
int j;
for(j=0;j<i;j++)
{
Delay_1ms();
}
}
/*******************************************
函数名称:LCD_Initial
功 能:LCD初始化
参 数:无
返回值 :无
********************************************/
void LCD_Initial()
{
LCD_CmdOut;
LCD_WriteCmd(0x30); //功能设置基本指令集
Delay_1ms();
LCD_WriteCmd(0x02); //DDRAM的地址计数器(AC)复位,游标复位
Delay_1ms();
LCD_WriteCmd(0x0c); //整体显示开,游标关闭
Delay_1ms();
LCD_WriteCmd(0x01); //清屏
Delay_1ms();
LCD_WriteCmd(0x06); //写入或者读取时游标自动右移
Delay_1ms();
LCD_WriteCmd(0x80); //设置显示初始位置,到AC值
}
/*******************************************
函数名称:Clear_GDRAM
功 能:清除液晶GDRAM中的随机数据
参 数:无
返回值 :无
********************************************/
void Clear_GDRAM(void)
{
uchar i,j,k;
LCD_WriteCmd(0x34);
i=0x80;
for(j=0;j<32;j++)
{
LCD_WriteCmd(i++);
LCD_WriteCmd(0x80);
for(k=0;k<16;k++)
{
LCD_WriteData(0x00);
}
}
i=0x80;
for(j=0;j<32;j++)
{
LCD_WriteCmd(i++);
LCD_WriteCmd(0x88);
for(k=0;k<16;k++)
{
LCD_WriteData(0x00);
}
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
LCD_BASIC_LIBRARY.zip
(1.39 KB, 下载次数: 71)
2017-7-22 02:47 上传
点击文件名下载附件
LCD函数库
下载积分: 黑币 -5
作者:
fuhui
时间:
2019-7-10 22:54
请问是IAR环境吗
作者:
Flyyyy
时间:
2019-7-12 15:50
感谢楼主分享
作者:
wliuxiaoxiaow
时间:
2019-12-17 17:35
是用的32768的晶振吗
作者:
yyyeees
时间:
2020-1-17 17:22
谢谢楼主的分享
作者:
hetui
时间:
2020-9-24 20:37
请问一下,这个要怎么连接?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1