//串并行直接接串行 复位接高 片选信号接高
//小弟 检查了好几遍 思维定式了 求前辈 帮忙指点下
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit sid=P3^1;//数据口
sbit clk=P3^2;//时钟信号 void DelayMs(uchar n) //延时
{
uchar i;
while(n--)
{
for(i=0; i<200; i++)
_nop_();
}
}
void lcd_com(uchar dat,uchar str)
{
uint i,j,temp;
temp=str;
DelayMs(1);
//sid=0;
clk=0;
sid=1;
for(i=0;i<5;i++)
{
clk=1;
clk=0;
}
sid=0;
clk=1;
clk=0;
if(dat==1)
sid = 1;
else sid= 0;
clk = 1;
clk = 0;
sid=0;
clk=1;
clk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
//temp=str;
temp <<=1;
sid=CY;
clk=1;
clk=0;
}
sid=0;
for(i=0;i<4;i++)
{
clk=1;
clk=0;
}
}
//sid=0;
}
void init()
{
lcd_com(0,0x30);
lcd_com(0,0x0c);
lcd_com(0,0x01);
lcd_com(0,0x02);
lcd_com(0,0x80);
}
void Lcd_DisplayString(uchar x,uchar y,uchar *str)
{
unsigned char temp;
switch(y)
{
case 1:x|=0x80;break;
case 2:x|=0x90;break;
case 3:x|=0x88;break;
case 4:x|=0x98;break;
default:break;
};
// lcd_com(0,0x90);//行地址:首行地址:0x80,第二行地址:0x90,第三行地址:0x88,第四行0x98
lcd_com(0,x);
temp= *str;
while(temp!=0)
{
lcd_com(1,temp);
temp=*(++str);
}
}
void main()
{
init();
Lcd_DisplayString(0,2,"大连民族学院");
while(1);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>