|
1602程序:不知道怎么改
- #include "1602.h"
- #include "delay.h"
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define _NOP() _nop_()
- sbit RS = P2^4;
- sbit RW = P2^5;
- sbit EN = P2^6;
- #define DataPort P0
- #define DataPIN P0
- #define CLR_RS (RS=0)
- #define SET_RS (RS=1)
- #define CLR_RW (RW=0)
- #define SET_RW (RW=1)
- #define CLR_EN (EN=0)
- #define SET_EN (EN=1)
- void DispStr(uchar x,uchar y,uchar *ptr)
- {
- uchar *temp;
- uchar i,n = 0;
- temp = ptr;
- while(*ptr++ != '\0') n++;
- for (i=0;i<n;i++)
- {
- Disp1Char(x++,y,temp[i]);
- if (x == 0x10)
- {
- break;
- }
- }
- }
- void LocateXY(uchar x,uchar y)
- {
- uchar temp;
- temp = x&0x0f;
- y &= 0x01;
- if(y) temp |= 0x40;
- temp |= 0x80;
- LcdWriteCommand(temp,1);
- }
- void Disp1Char(uchar x,uchar y,uchar data1)
- {
- LocateXY( x, y );
- LcdWriteData( data1 );
- }
- void LcdReset(void)
- {
- // DataDir = 0xFF;
- LcdWriteCommand(0x38, 0);
- DelayMs(5);
- LcdWriteCommand(0x38, 0);
- DelayMs(5);
- LcdWriteCommand(0x38, 0);
- DelayMs(5);
- LcdWriteCommand(0x38, 1);
- LcdWriteCommand(0x08, 1);
- LcdWriteCommand(0x01, 1);
- LcdWriteCommand(0x06, 1);
- LcdWriteCommand(0x0c, 1);
- }
- void LcdClear(void)
- {
- LcdWriteCommand(0x01,1);
- DelayMs(5);
- }
- void LcdWriteCommand(uchar cmd,uchar chk)
- {
- if (chk) WaitForEnable();
- CLR_RS;
- CLR_RW;
- _NOP();
- DataPort = cmd;
- _NOP();
- SET_EN;
- _NOP();
- _NOP();
- CLR_EN;
- }
- void LcdWriteData( uchar data1 )
- {
- WaitForEnable();
- SET_RS;
- CLR_RW;
- SET_EN;
-
- _NOP();
- DataPort = data1;
- _NOP();
-
- _NOP();
- _NOP();
- CLR_EN;
- }
- void WaitForEnable(void)
- {
- unsigned int later=0;
- DataPort=0xff;
- CLR_RS;
- SET_RW;
- _NOP();
- SET_EN;
- _NOP();
- _NOP();
- // while((DataPIN&Busy)!=0);
- while(((DataPIN&0x80)!=0)&&(later<1000))
- {
- DelayUs2x(2);
- later++;
- }
- CLR_EN;
- // DataDir|=0xFF;
- }
复制代码
|
|