请教一个关于12864显示屏程序的问题 一下程序烧录进
单片机后屏幕会亮 但没有显示 不知道哪里出了问题 (12864被我用一块
电路板引了出来 串并行端口已经强行接地即默认已经使用串行)
#include<reg52.h>
#include<intrins.h>
sbit CS=P0^1; //片选
sbit SID=P0^2; //数据
sbit SCLK=P0^3; //时钟信号端口
unsigned char code disp[]={"01234567"};
void delay(unsigned int s)
{
unsigned int i,j;
for(i=0; i<s; i++)
for(j=0; j<10; j++);
}
void senddata (unsigned char sdata)
{
unsigned int i;
for(i=0;i<8;i++)
{
if( (sdata << i) & 0x80 )
{
SID = 1;
}
else
{
SID = 0;
}
SCLK = 0;
SCLK =1;
SCLK = 0;
}
}
void write_com(unsigned char cmdcode)
{
CS = 1;
senddata(0xf8); //写指令信号
senddata(cmdcode &0xf0); //发送高四位
senddata((cmdcode<<4)&0xf0); //发送第四位
delay(2);
CS = 0;
}
void write_data(unsigned char dispdata)
{
CS = 1;
senddata(0xfa); //写数据指令
senddata(dispdata&0xf0); //发送高四位
senddata((dispdata<<4)&0xf0); //发送第四位
delay(2);
CS = 0;
}
void lcdinit()
{
write_com(0x30); //设置8位数据接口,基本指令模式
delay(50);
write_com(0x0c); //整体显示开,反白关,游标关
delay(50);
write_com(0x02); //清除DDRAM
delay(50);
write_com(0x01); //写入空格清除屏幕
delay(50);
}
void posi
tion() //位置定义子函数
{
write_com(0x03);
delay(50);
write_com(0x89);
}
void main()
{
int i;
lcdinit();
delay(50);
while(1)
{
position();
for(i=0;i<7;i++)
{
write_data(disp
);
delay(50);
}
}
}
果然 谢谢了
一周热门 更多>