|
LCD函數(shù)庫(kù),可用于MSP430
單片機(jī)源程序如下:
- /*
- * 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 //數(shù)據(jù)口輸入模式
- #define LCD_DataOut P8DIR=0xFF //數(shù)據(jù)口輸出模式
- #define LCD2MCU_Data P8IN //LCD向芯片輸入數(shù)據(jù)
- #define MCU2LCD_Data P8OUT //芯片向LCD輸出的數(shù)據(jù)
- #define LCD_CmdOut P3DIR|=BIT0+BIT4+BIT5 //設(shè)置控制口低三位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,
- };
- /*******************************************
- 函數(shù)名稱:LCD_WriteCmd
- 功 能:向液晶中寫(xiě)控制命令
- 參 數(shù):cmd控制命令
- 返回值 :無(wú)
- ********************************************/
- void LCD_WriteCmd(uchar cmd)
- {
- uchar LCD_TmpData=0x00;
- LCD_RS_L;
- LCD_RW_H;
- LCD_DataIn;
- do //忙檢測(cè)
- {
- 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;
- }
- /*******************************************
- 函數(shù)名稱:LCD_WriteData
- 功 能:向液晶中寫(xiě)數(shù)據(jù)
- 參 數(shù):data數(shù)據(jù)
- 返回值 :無(wú)
- ********************************************/
- void LCD_WriteData(uchar data)
- {
- uchar LCD_TmpData=0x00;
- LCD_RS_L;
- LCD_RW_H;
- LCD_DataIn;
- do //忙檢測(cè)
- {
- 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;
- }
- /*******************************************
- 函數(shù)名稱:Delay_1ms
- 功 能:延遲1ms
- 參 數(shù):無(wú)
- 返回值 :無(wú)
- ********************************************/
- void Delay_1ms()
- {
- uchar i;
- for(i=0;i<150;i++)_NOP();
- }
- /*******************************************
- 函數(shù)名稱:Delay_Nms
- 功 能:延遲i ms
- 參 數(shù):i
- 返回值 :無(wú)
- ********************************************/
- void Delay_Nms(uchar i)
- {
- int j;
- for(j=0;j<i;j++)
- {
- Delay_1ms();
- }
- }
- /*******************************************
- 函數(shù)名稱:LCD_Initial
- 功 能:LCD初始化
- 參 數(shù):無(wú)
- 返回值 :無(wú)
- ********************************************/
- void LCD_Initial()
- {
- LCD_CmdOut;
- LCD_WriteCmd(0x30); //功能設(shè)置基本指令集
- Delay_1ms();
- LCD_WriteCmd(0x02); //DDRAM的地址計(jì)數(shù)器(AC)復(fù)位,游標(biāo)復(fù)位
- Delay_1ms();
- LCD_WriteCmd(0x0c); //整體顯示開(kāi),游標(biāo)關(guān)閉
- Delay_1ms();
- LCD_WriteCmd(0x01); //清屏
- Delay_1ms();
- LCD_WriteCmd(0x06); //寫(xiě)入或者讀取時(shí)游標(biāo)自動(dòng)右移
- Delay_1ms();
- LCD_WriteCmd(0x80); //設(shè)置顯示初始位置,到AC值
- }
- /*******************************************
- 函數(shù)名稱:Clear_GDRAM
- 功 能:清除液晶GDRAM中的隨機(jī)數(shù)據(jù)
- 參 數(shù):無(wú)
- 返回值 :無(wú)
- ********************************************/
- 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);
- }
- }
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
LCD_BASIC_LIBRARY.zip
(1.39 KB, 下載次數(shù): 71)
2017-7-22 02:47 上傳
點(diǎn)擊文件名下載附件
LCD函數(shù)庫(kù)
|
|