16*16点阵程序,行用单片机的P1和P0端口,列用两个74hc595串联。程序写到这儿不会了,求大侠来补充一下

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit sck=P2^0;//11脚,上升沿时数据寄存器的数据移位
sbit rck=P2^1;//12脚,上升沿时移位寄存器的数据进入数据存储器
sbit outbyte=P2^3;//14脚,串行数据输入口
uchar code table[]={
0x08,0x20,0x08,0x24,0xFF,0xFE,0x08,0x20,
0x0A,0x20,0x02,0x10,0x3F,0xF8,0x02,0x10,
0x02,0x10,0x22,0x18,0x24,0x16,0x44,0x12,
0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20
};//这里是一个汉字的字模
void delay(uchar i);
void send(uchar dat);
void del(uchar i);
/////////////////
void main()
{
uchar i=0;
while(1)
{
还缺少行扫面和将字模送到74hc595里面的程序,一次送两个数据(如:0x08,0x20,)怎么写?帮忙补充一下和修正一下。
}
}
////////////////////////
void delay(uchar i)
{
uchar x;
for(i;i>0;i--)
for(x=100;x>0;x--);
}
void del(uchar i)
{
for(i;i>0;i--);
}
////////////////////////
void send(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
if((dat=dat<<i)&0x80==0)
outbyte=0;
else outbyte=1;
sck=0;
del(5);
sck=1;
}
rck=0;
del(5);
rck=1;
}

调试成功,帮你简化了下程序,加了点注释
#include <reg52.h>
#define uchar unsigned char
sbit sck=P2^0;//11脚,上升沿时数据寄存器的数据移位
sbit rck=P2^1;//12脚,上升沿时移位寄存器的数据进入数据存储器
sbit outbyte=P2^3;//14脚,串行数据输入口

uchar code table[]={
0x08,0x20,0x08,0x24,0xFF,0xFE,0x08,0x20,
0x0A,0x20,0x02,0x10,0x3F,0xF8,0x02,0x10,
0x02,0x10,0x22,0x18,0x24,0x16,0x44,0x12,
0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20
};//这里是一个汉字的字模
////////////////////////

void del(uchar i)
{
for(i;i>0;i--);
}
////////////////////////
void hscan(uchar i)
{//假设你用P0^1第一行,P1^0第9行,且你的点阵是按行为0,列为1的方式设计
if(i<8)
P0=~(0x01<<i),P1=0xff;
else
P0=0xff,P1=~(0x01<<(i-8));

}
void send(uchar dat1,uchar dat2)
{
uchar i;
for(i=0;i<8;i++)
{ outbyte=(dat1<<i)&0x80;//可改为outbyte=(dat1>>i)&0x01; //从低位开始串行

sck=0,sck=1; //这里del()延时一般可以不要
}

for(i=0;i<8;i++)
{ outbyte=(dat2<<i)&0x80;//可改为outbyte=(dat1>>i)&0x01;//从低位开始串行

sck=0,sck=1;
}
rck=0;
del(1);
rck=1;
}
/////////////////
void main()
{
uchar i=0;
while(1)
{ for(i=0;i<16;i++)send(0xf0,0xf0),hscan(i),del(10);

}
}
另外P0口要加上拉电阻
行不行,给个反应啊追问

还是不行呀,你可以加我扣扣告诉我吗,854149876

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-01
我学过好久啦 不好意思 不太记得啦
第2个回答  2011-06-01
我写过很多,有仿真图,可以发给你追问

[email protected]

第3个回答  2011-06-02
我来帮你搞定!!追问

好呀,你把程序写出来,谢谢

相似回答