基于单片机的课程设计
//秒,分, 时, 日, 月,星期,年,默认时间设置 #define delayNOP();
{_nop_();_nop_();_nop_();_nop_();}; /******************************************************************/ void delay1(int ms) {
unsigned char y; while(ms--) {
for(y = 0; y<250; y++) { _nop_(); _nop_(); _nop_(); _nop_(); } } }
/***********************************
/***********************************
**********************/ /*RS=L,RW=L,E=高脉冲,D0-D7=指令/*********************************************************/ void lcd_wcmd(uchar cmd) { while(lcd_busy()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P3 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; }
/*写指令数据到LCD
码。
*******************************/ /***********************************/*lcd_busy为1时,忙,等待。lcd-/******************************************************************/ bit lcd_busy()
{ bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP();
result = (bit)(P3&0x80); LCD_EN = 0; return(result); }
/*检查LCD忙状态 *********************/
/*写显示数据到LCD /********************************************************/ void lcd_wdat(uchar dat) { while(lcd_busy()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P3 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0;
busy为0时,闲,可写指令与数据。 /*RS=H,RW=L,E=高脉冲,D0-D7=数据。