標(biāo)題:
LCD1602頭文件下載用于MSP430單片機(jī)
[打印本頁]
作者:
楊梓振
時(shí)間:
2017-7-14 08:45
標(biāo)題:
LCD1602頭文件下載用于MSP430單片機(jī)
LCD1602頭文件的源代碼
0.png
(37.66 KB, 下載次數(shù): 107)
下載附件
2017-7-14 16:47 上傳
LCD1602頭文件的MSP430單片機(jī)源程序如下:
/*********************************************************************
* 作者: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; //設(shè)置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; //設(shè)置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);
}
/****************************************************
* 說明:設(shè)置顯示地址
*****************************************************/
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);
}
/****************************************************************
* 說明:寫入數(shù)據(jù)
****************************************************************/
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豎坐標(biāo),Y橫坐標(biāo)
*******************************************************************************/
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豎坐標(biāo),y為橫坐標(biāo)
************************************************************************/
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延時(shí)函數(shù)
*
****************************************/
void delay_1us(void)
{
asm("nop");
}
/*****************************************
*
* N us延時(shí)函數(shù)
*
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
LCD1602頭文件.rar
(1.31 KB, 下載次數(shù): 32)
2017-7-14 08:44 上傳
點(diǎn)擊文件名下載附件
頭文件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1