版主
  
主题
帖子
积分38239
阅读权限200
注册时间2009-11-23
最后登录1970-1-1
在线时间 小时
|
得,俺拿草版的源程序来说吧~~
蓝色的是草版的源程序,红色是俺说的~
#define DISP_EN() L_OE=1 //4094高电平输出使能
#define DISP_DIS() L_OE=0 //这两行的意思就是把DISP_EN()定义为L_OE=0,如果要反相的话就是这个两行0换1,1换0
..............
void main(void)
{
Initial_DS1302();
.........
display(disp_mode);
DISP_DIS(); //兄弟对不住了,main函数里是这样调用的,俺记错了.....
set_row(disrow); //行4094的输出.依次点亮1~16行.
L_STB=1;
DISP_EN();
delay_nms(1); //此处延时,请根据点阵闪烁状况加以调整,仿真时候无法仿真闪烁.
}
..........
}
...........
void sendRbyte(unsigned char wdata) //模拟spi的方式往列4094传送字模数据
{
unsigned char i;
for(i=0;i<8;i++)
{
L_CLK=0; //时钟拉低
L_D=wdata&0x80; //这个地方,如果想反相的话就改成L_D=~wdata&0x80;
L_CLK=1; //时钟拉高,产生上升沿
wdata <<= 1; //左移一位
}
}
void sendR2byte(unsigned char wdata,unsigned char n) //模拟spi的方式往列4094传送字模数据
{
unsigned char i;
for(i=0;i<n;i++)
{
L_CLK=0; //时钟拉低
L_D=wdata&0x80; //这个地方,如果想反相的话就改成“L_D=~wdata&0x80;” 加“~”的意思就是把wdata&0x80的结果取反,然后放到L_D上。
L_CLK=1; //时钟拉高,产生上升沿
wdata <<= 1; //左移一位
}
}
不知道兄弟能看明白不,如果不明白再问,呵呵~~ |
|