刚调好LCD1602之后,又做了个PC串口与单片机的通信的程序,实现了基本的COM口的功能,从PC机上通过串口发出来的字符,可以在1602液晶上面显示出来。
实现的基本功能是:
1,BACKSPACE功能,支持删除键,但是仅限于本行;
2,ENTER功能,回车&换行功能,当一行输入的时候按下ENTER键,即可切换并且清空新行;
3,ESC键功能,所有的显示清除,光标清零;
4,单行循环显示,拥有自动回车功能,当一行中的字符到末尾是自动清空本行,并且在本行的开头显示输入的字符;
5,回显字母'A',表示接收的数据顺利。
拟定增加的功能有:
1,陆续增加方向键(Up,Down,left,right),PageDown,PageUp,Insert,Home,End等按键;
2,增加欢迎和帮助功能;
3,增加显示字符的自动筛选功能;
4,增加按键字符上传到PC串口。
目前已知的bug:
1,只接受单字节的按键;
2,对于ESC功能,其它有0x1B的按键均能实现此功能,需要另加甄别;
源程序如下:
160的配置文件:
------------------------------------1602.h开始---------------------------------------------
#define uchar unsigned char
#define uint unsigned int
#define RS 5 //PA5
#define RW 6 //PA6
#define EN 7 //PA7
#define INDATA PIND //data port
#define OUTDATA PORTD //data port
/
uchar lcd_bz(void)
{
uchar result = 1;
PORTA &= ~(1< //RS = 0
PORTA |= (1< //RW = 1
DDRD = 0x00; //PORTD as input
PORTD = 0xff; //pull-up enable
PORTA |= (1< //EN = 1
_delay_ms(2);
if((INDATA & 0x80)==0x80)
result = 1;
else
result = 0;
PORTA &= ~(1< //EN = 0
DDRD = 0xff; //PORTD as output