
#include<iom16v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
#define RS_ PORTB&=~BIT(0)
#define RS PORTB|=BIT(0)
#define RW_ PORTB&=~BIT(1)
#define RW PORTB|=BIT(1)
#define EN_ PORTB&=~BIT(2)
#define EN PORTB|=BIT(2)
#define PSB_ PORTB&=~BIT(3)
#define PSB PORTB|=BIT(3)
#define CS2_ PORTB&=~BIT(4)
#define CS2 PORTB|=BIT(4)
#define RET_ PORTB&=~BIT(5)
#define RET PORTB|=BIT(5)
#define DATA PORTA
void delay(uint z)
{
while(z--);
}
void write_dat(uchar dat)
{
EN_;//????????
RS;//????????????????
RW_;//????
delay(3);
DATA=dat;
delay(3);
EN;
delay(3);
EN_;
delay(8);
}
void write_com(uchar com)
{
EN_;
RS_;//??????????ü????
RW_;
delay(3);
DATA=com;
delay(3);
EN;
delay(3);
EN_;
delay(8);
}
void init()
{
RET;
delay(3);
RET_;
delay(9);
RET;
delay(5);
PSB;
CS2_;
write_com(0x30);
write_com(0x0c);
write_com(0x01);
write_com(0x02);
write_com(0X08);
}
void set_xy(uchar xpop,char ypop)
{
switch(ypop)
{
case 1:
write_com(0x80|xpop);break;
case 2:
write_com(0x90|xpop);break;
case 3:
write_com(0x88|xpop);break;
case 4:
write_com(0x98|xpop);break;
default :break;
}
}
void printf(uchar x,uchar y,uchar *str)
{
uchar temp;
set_xy(x,y);
temp=*str;
while(temp!=0x00)
{
write_dat(temp);
temp=*(++str);
}
}
main()
{
DDRA=0XFF;
DDRB=0XFF;
init();
printf(8,3,“ ??????????????????ú??ü??????????????ù??????????????±??????????×??ù??????±??????????ò??é??????ê??????????????????????????????á??ò????????????????????????????????");
上行為漢字取碼,不知怎地復制過來就出問題了
while(1)
{
}
} |