|
发表于 2011-11-14 23:55:01
|
显示全部楼层
那个各位前辈能否请教个问题 我的12864 51的时候都好使到AVR上就出现了问题什么也不显示
#include<iom16v.h>
#include<macros.h>
#define uchar unsigned char
#define uint unsigned int
#define SSH PORTB|=(1<<PB4)
#define SSL PORTB&=~(1<<PB4)
void delay(uint MS)
{
uint i,j;
for( i=0;i<MS;i++)
for(j=0;j<1141;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
}
void LCDCMD(uchar z)
{
SSH;
SPDR=0XF8;
while(!(SPSR&(1<<SPIF)));
SPDR=(z&0XF0);
while(!(SPSR&(1<<SPIF)));
SPDR=(z<<4);
while(!(SPSR&(1<<SPIF)));
SSL;
}
void LCDDAT(uchar z)
{
SSH;
SPDR=0XFA;
while(!(SPSR&(1<<SPIF)));
SPDR=(z&0XF0);
while(!(SPSR&(1<<SPIF)));
SPDR=(z<<4);
while(!(SPSR&(1<<SPIF)));
SSL;
}
void Word(uchar x,uchar y,uchar *p)
{
uchar xydate;
switch(x)
{
case 1: xydate=0x80; break;
}
xydate+=y;
LCDCMD(xydate);
while(*p)
{
LCDDAT(*p);
p++;
}
}
void initLCD(void)
{
SSL;
DDRB=(1<<PB4)|(1<<PB5)|(1<<PB7); ///ISP模式
SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0);
LCDCMD(0x30); /*选择基本指令集*/
delay(1);
LCDCMD(0x20); /*DDRAM的 AC清0*/
delay(1);
LCDCMD(0x0e); /*整体显示 游标开*/
delay(1);
}
void main(void)
{
initLCD();
Word(1,2,"my AVR");
while(1);
}
程序在此麻烦 前辈帮看一下 并口串口都写过了就是无效 |
|