完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#ifndef LCD1602_H_ #define LCD1602_H_ typedef unsigned char uchar; typedef unsigned int uint; uchar LCD_Check_busy(); void LCD_Write_Com(unsigned char com); void LCD_Write_data(unsigned int data); void LCD_Clear(); void LCDSetCursor(uchar x,uchar y); void LCDShowStr(uchar x, uchar y,uchar *str); void LCDOpenCursor(); void LcdCloseCursor(); void LCD_Init(); void Init_Port_LCD(); void Init_Clock(); #define RS BIT0 #define RW BIT1 #define E BIT2 #define data_dir P1DIR #define data_out P1OUT //|= 0xf0 #define data_in P1IN #define RS_1 P1OUT |= RS //rs = 1 #define RS_0 P1OUT &= ~RS//rs = 0 #define RW_1 P1OUT |= RW; #define RW_0 P1OUT &= ~RW; #define E_1 P1OUT |= E //e = 1 #define E_0 P1OUT &= ~E //e = 0 void delay_1us(uint i) { asm("nop"); } void delay_us(uint i) { uint j; for(j=0;j delay_1us(j); } //??????ms void delay_1ms() { uint i; for(i=0;i<1140;i++); } void delay_ms(uint i) { uint j; for(j=0;j delay_1ms(j); } void Init_Clock() { BCSCTL1 = RSEL2 + RSEL1+ RSEL0; BCSCTL2 = SELM1 + SELS; } void Init_Port_LCD() { P1SEL |= 0x00; P1DIR |= 0xf7; } uchar LCD_Check_busy() { char busy = 0; RS_0; RW_1; E_1; delay_ms(50); data_dir &= ~BIT7; busy = data_in & BIT7; data_dir |= BIT7; E_0; return busy; } void LCD_Write_Com(unsigned char com) { //while(LCD_Check_busy()); RS_0; RW_0; data_out &= 0x0f; data_out |= com & 0xf0; E_1; delay_ms(50); E_0; com = com << 4; data_out &= 0x0f; data_out |= com & 0xf0; E_1; delay_ms(50); E_0; } void LCD_Write_data(unsigned int data) { //while(LCD_Check_busy()); RS_1; RW_0; data_out &= 0x0f; data_out |= data & 0xf0; E_1; delay_ms(50); E_0; data <<= 4; data_out &= 0x0f; data_out |= data & 0xf0; E_1; delay_ms(5); E_0; } void LCD_Clear() { LCD_Write_Com(0x01); delay_ms(50); } void LCDSetCursor(uchar x,uchar y) { uchar addr; if(y == 0) addr = 0x00 + x; else addr = 0x40 +x; LCD_Write_Com(addr | 0x80); } void LCDShowStr(uchar x, uchar y,uchar *str) { LCDSetCursor(x,y); while (*str != ' |