pic16f877控制hs12864液晶问题,请高手来回答
#include <pic.h>
#define uchar unsigned char
#define uint unsigned int
#define ulint unsigned long
#define PORTIT(adr,bit) ((unsigned)(&adr)*8+(bit))
//hs12864
static bit D_I @ PORTIT(PORTB,5); //RB5
static bit R_W @ PORTIT(PORTB,6);
static bit E @ PORTIT(PORTB,7);
static bit CS1 @ PORTIT(PORTB,3);
static bit CS2 @ PORTIT(PORTB,4);
static bit RET @ PORTIT(PORTB,2); //疑问
void sleep(unsigned int i)
{
unsigned int j,k;
for(j=0;j <i;j++)
{
for(k=0;k <4000;k++)
{
;
}
}
}
/************************************************************/
// HS12864函数
/************************************************************/
void LCD_C_D(uchar flag,uchar data)
{
D_I=!flag;
E=0 ;
R_W=0;
PORTD=data;
sleep(1);
E=1;
sleep(1);
E=0;
D_I=1;
R_W=1;
sleep(1);
}
void CLRLCD(uchar number)
{
uchar i,j;
CS1=CS2=1;
for(i=0xb8;i <0xc0;i++)
{
LCD_C_D(1,i);
LCD_C_D(1,0x40);
for(j=0;j <0x40;j++)
LCD_C_D(0,number);
}
CS1=CS2=0;
}
/************************************************************/
//主函数
/************************************************************/
void main()
{
// Init();
// MAX7219_Init();
sleep(20);
TRISB=0X00;
TRISC=0X00;
TRISD=0X00;
RC5 = 1;
RET=0;
sleep(100);
RET=1;
sleep(100);
sleep(10);
LCD_C_D(1,0X3E); //关显示
// sleep(100);
// LCD_C_D(1,0X3f); //开显示放在这儿也是没用
sleep(10);
LCD_C_D(1,0XC0); //设置显示行
sleep(10);
LCD_C_D(1,0Xb8); //设置页
sleep(10);
LCD_C_D(1,0X40); //设置y地址
sleep(100);
LCD_C_D(1,0X3f); //开显示
sleep(10);
CLRLCD(0X55);
while(1);
}
以上是源程序,但是液晶死活就不理我!
有做过得没有呀?
发表时间:2004年8月11日13:08:11