LCD1602頭文件的源代碼
0.png (37.66 KB, 下載次數: 107)
下載附件
2017-7-14 16:47 上傳
LCD1602頭文件的MSP430單片機源程序如下:
- /*********************************************************************
- * 作者:Z_XXX
- * 版本:v1.0(測試版本)
- *************************************************************************/
- #include<MSP430G2553.H>
- #include <intrinsics.h>
- #include<msp430.h>
- #define RS_HIGH P2OUT|=BIT0
- #define RS_LOW P2OUT&=~BIT0
- #define RW_HIGH P2OUT|=BIT1
- #define RW_LOW P2OUT&=~BIT1
- #define E_HIGH P2OUT|=BIT2
- #define E_LOW P2OUT&=~BIT2
- #define Lcd_Data_Port P1OUT
- void delay_nms(unsigned int n);
- void delay_1ms(void);
- void WaitForE();
- void Lcd_Com(unsigned char CMD);
- void Lcd_Clear();
- void Init_Lcd();
- void Lcd_Write_Data(unsigned char DATA);
- void Init_Port();
- void Lcd_XY(unsigned char x, unsigned char y );
- void Lcd_en_write1(void);
- void Lcd_en_write2(void);
- void delay_nus(unsigned int n);
- void delay_1us(void);
- void Lcd_Write_StrSetXY(unsigned char x,unsigned char y,unsigned char *p);
- void Lcd_Write_DataSetXY(unsigned char x,unsigned char y,unsigned char data);
- void Lcd_Write_Str(unsigned char *p);
- unsigned char sig[] = {"BOwen"};
- unsigned char sig1[] = {"BOwen"};
- unsigned char a = 'a';
- /*****************************************************
- * 說明:端口初始化
- * P2.0 P2.1 P2.2
- * RS RW E
- * P1.7 P1.6 P1.5 P1.4
- * DB7 DB6 DB5 DB4
- * 返回值:空
- *****************************************************/
- void Init_Port()
- {
- P1DIR |= BIT7+BIT6+BIT5+BIT4; //設置P1口全部為輸出口
- P2DIR |= BIT0+BIT1+BIT2;
- delay_nms(50);
- Lcd_Com(0x30);
- delay_nms(50);
- Lcd_Com(0x30);
- delay_nms(5);
- Lcd_Com(0x30);
- delay_nms(500);
- }
- /*****************************************************
- * 說明:LCD初始化
- *****************************************************/
- void Init_Lcd()
- {
- //Init_Port();
- P1DIR |= BIT7+BIT6+BIT5+BIT4; //設置P1口全部為輸出口
- P2DIR |= BIT0+BIT1+BIT2;
- delay_nms(10);
- Lcd_Com(0X28); //四位接口
- delay_nms(50);
- Lcd_Com(0X28);
- delay_nms(50);
- Lcd_Com(0X28);
- delay_nms(50);
- Lcd_en_write2();
- delay_nms(50);
- //WaitForE();
- Lcd_Com(0X28);
- delay_nms(500);
- Lcd_Com(0x01);
- Lcd_Com(0X0C);
- Lcd_Com(0X06);
- delay_nms(50);
- }
- /**************************************************
- *說明:寫入指令
- **************************************************/
- void Lcd_Com(unsigned char CMD)
- {
- RS_LOW;
- RW_LOW;
- P1SEL = 0X00;
- Lcd_en_write1();
- Lcd_Data_Port &= 0X0F;
- Lcd_Data_Port |= CMD&0XF0;
- delay_nms(16);
- Lcd_en_write2();
- CMD = CMD<<4;
- Lcd_en_write1();
- Lcd_Data_Port &= 0X0F;
- Lcd_Data_Port |= CMD&0XF0;
- Lcd_en_write2();
- //P2SEL
- }
- /***********************************************
- * 說明:清屏操作
- *************************************************/
- void Lcd_Clear()
- {
- Lcd_Com(0X01);
- }
- /****************************************************
- * 說明:設置顯示地址
- *****************************************************/
- void Lcd_XY(unsigned char x,unsigned char y)
- {
- unsigned char address;
- if (y == 0) address = 0x80 + x;
- else address = 0xC0 + x;
- Lcd_Com(address);
- }
- /****************************************************************
- * 說明:寫入數據
- ****************************************************************/
- void Lcd_Write_Data(unsigned char DATA)
- {
- RS_HIGH;
- RW_LOW;
- P1SEL = 0X00;
- Lcd_en_write1();
- Lcd_Data_Port &= 0X0F;//清空高四位
- Lcd_Data_Port |= DATA & 0XF0;//送入高四位
- delay_nms(16);
- Lcd_en_write2();
- DATA = DATA<<4;
- Lcd_en_write1();
- Lcd_Data_Port &=0X0F;
- Lcd_Data_Port |= DATA&0XF0;
- Lcd_en_write2();
- }
- /*********************************************************************************
- * 說明:寫入單個字符,X豎坐標,Y橫坐標
- *******************************************************************************/
- void Lcd_Write_DataSetXY(unsigned char x,unsigned char y,unsigned char data)
- {
- Lcd_XY(x,y);
- delay_nms(20);
- Lcd_Write_Data(data);
- }
- /******************************************************************************
- * 說明:寫入字符串,不指定地址
- ****************************************************************************/
- void Lcd_Write_Str(unsigned char *p)
- {
- while(*p)
- {
- Lcd_Write_Data(*p);
- p++;
- }
- }
- /***********************************************************************
- * 說明:寫入字符串,x為1602豎坐標,y為橫坐標
- ************************************************************************/
- void Lcd_Write_StrSetXY(unsigned char x,unsigned char y,unsigned char *p)
- {
- Lcd_XY(x,y);
- while(*p)
- {
- Lcd_Write_Data(*p);
- p++;
- }
- }
- /*****************************************
- *
- * 1us延時函數
- *
- ****************************************/
- void delay_1us(void)
- {
- asm("nop");
- }
- /*****************************************
- *
- * N us延時函數
- *
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
LCD1602頭文件.rar
(1.31 KB, 下載次數: 32)
2017-7-14 08:44 上傳
點擊文件名下載附件
頭文件 下載積分: 黑幣 -5
|