/*****************************************************************
串行通迅 LCD1602显现
*************************************************************************
* 描绘:(用串口调试帮手软件调查)
* 主机发送123456给单片机,单片机接纳到数据后发送TX-MCU给主机。 *
*主机发送其它数据给单片机,单片机接纳到数据后,再发送给主机。 *
* LCD1602显现接纳数据的ASCII码。 波特率9600 *
* 注:当单片机收到数据只要凑够16个时才会一次在液晶上显现出来*
************************************************************************/
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS = P3^5;
sbit LCD_EN = P3^4;
sbit LCD_WR = P3^6;
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
uchar data RXDdata[ ] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 };
uchar temp,buf,m,count;
bit playflag=0;
uchar code cdis1[ ] = {” SERILA TRANFER “};
uchar code cdis2[ ] = {” “};
/**********************************************************
延时子程序
**********************************************************/
void delay1(uint ms)
{
uchar k;
while(ms–)
{
for(k = 0; k < 120; k++);
}
}
/******************************************************************/
/* */
/*查看LCD忙状况 */
/*lcd_busy为1时,忙,等候。lcd-busy为0时,闲,可写指令与数据。 */
/* */
/******************************************************************/
bitlcd_busy()
{
bit result;
LCD_RS = 0;
// LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0&0x80);
LCD_EN = 0;
return(result);
}
/*******************************************************************/
/* */
/*写指令数据到LCD */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
/* */
/*******************************************************************/
void lcd_wcmd(uchar cmd)
{
// while(lcd_busy());
LCD_RS = 0;
LCD_WR = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 =cmd;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}