/*
程序说明:
LCD驱动采用4位元(这个4位元方式,在网上搜索来看,还没有人采用,可以节省4位I/O口),并口方式,晶体4M,注意此LCD有点不同尽量很普通,没有CS1,CS2页选择脚,带串口方式,型号是TS-12864-3。IC 16F877A。
在屏幕上显示“Atilla tester”
“~_~”
RD7———-LCD D7
RD6———–LCD D6
RD5———–LCD D5
RD4———–LCD D4
RD3———–LCD E
RD2——– LCD RS
RD1———R/W
/*程序如下/
#include “pic.h”
#define lcd_cursor(x) lcd_write(((x)&0x7F)|0x80)//Set the cursor position
#define LCD_RS RD2#define LCD_EN RD3#define LCD_RW RD1
#define LCD_STROBE ((LCD_EN = 1),(LCD_EN=0))
void delay_10us(unsigned char x){while(x–);}
void delay_ms(unsigned char cnt){unsigned char i;do {i = 4;do {delay_10us(39);} while(–i);} while(–cnt);
}
/* write a byte to the LCD in 4 bit mode */
void lcd_write(unsigned char c){PORTD = (PORTD & 0x0F) | (c & 0xF0); //先送高位D7 D6 D5 D4LCD_STROBE;PORTD = (PORTD & 0x0F) | (c << 4); //再送低位LCD_STROBE;delay_10us(4);}
/* Clear and home the LCD */
void lcd_clear(void){LCD_RS = 0;lcd_write(0x1);delay_ms(2);}
/* write a string of chars to the LCD */
void lcd_puts(const char * s){LCD_RS = 1; // write characterswhile(*s)lcd_write(*s++);}
/* write one character to the LCD */
void lcd_putch(char c){LCD_RS = 1; // write charactersPORTD = (PORTD & 0x0F) | (c & 0xF0); //先送高位LCD_STROBE;PORTD = (PORTD & 0x0F) | (c << 4); //再送低位LCD_STROBE;delay_10us(4);}
/*Go to the specified position*/void lcd_goto(unsigned char pos){LCD_RS = 0;lcd_write(0x80+pos);}/* initialise the LCD – put into 4 bit mode *///严格按照LCD的复位要求。
void lcd_init(void){LCD_RS = 0; // write control bytesdelay_ms(40); // power on delay,wait time>40msPORTD = 0x20; // Function set,set 4 bit modeLCD_STROBE;delay_10us(10); //wait time >100uslcd_write(0x20); // Function set:4 bit mode.delay_10us(10); //wait time >100uslcd_write(0x0C); // display ON/OFF control.delay_10us(10); //wait time >100uslcd_write(0x01); // display cleardelay_ms(10); //wait time >10mslcd_write(0x06); // entry mode set}
void main(void)
{TRISD=0X00;PORTD=0X00;lcd_init();lcd_goto(0x00);lcd_puts(“Atilla tester”);lcd_goto(0x11);lcd_puts(“~_~”);while(1);}
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178028.html原文链接:https://javaforall.net
