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)
|