高级会员
主题
帖子
积分1959
阅读权限30
注册时间2009-3-5
最后登录1970-1-1
在线时间 小时
|
回复 50# litchiate
就是把4094送数据的时序改为595的时序:
下面程序是行选和595送数据:
我不明白:sendRbyte和sendR2byte各有什么作用,就按程序直接改了
void set_row(unsigned char row) //选定显示行
{
H_PORT=(row&0x0f); //138输出
}
void sendRbyte(unsigned char wdata) //模拟spi的方式往列595传送字模数据
{
unsigned char i;
for(i=0;i<8;i++)
{
L_CLK=0; //时钟拉低
RData=wdata&0x80;
_nop_();
_nop_();
_nop_();
//GData=wdata&0x80;
L_CLK=1; //时钟拉高,产生上升沿
wdata <<= 1; //左移一位
}
}
void sendR2byte(unsigned char wdata,unsigned char n) //模拟spi的方式往列595传送字模数据
{
unsigned char i;
for(i=0;i<n;i++)
{
L_CLK=0; //时钟拉低
RData=wdata&0x80;
_nop_();
_nop_();
_nop_();
//GData=wdata&0x80;
L_CLK=1; //时钟拉高,产生上升沿
wdata <<= 1; //左移一位
}
}
以下程序是定时器的设置:
void Timer_init(void)
{
EA=0;
ET0=1; //开定时器中断
ET1=1;
TMOD=0x11; //定时器0,1模式1
TH0=0x3c; //24M晶振 25ms中断
TL0=0xb0;
TH1=0xf6; //24M晶振 1.25ms中断
TL1=0x3c;
TR0=1; //开定时器运行
TR1=1;
EA=1;
} |
|