|
想用1620做一个数码管显示,测试自动地址加1方式正常,测试固定地址模式怎么都通不过,表现为永远都是第一位显示为最后一位的数据,其它位的全部是乱的。附程序如下:
#include<reg52.h>
#define uchar unsigned char
uchar a[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
sbit STB=P1^3; //定义端口
sbit CLK=P1^2;
sbit DIN=P1^0;
void indate(unsigned char p)
{
unsigned int i;
STB=0;
for(i=8;i>0;i--)
{
CLK=0;
if((p&0x01)!=0)
{
DIN=1;
}
else
{
DIN=0;
}
CLK=1;
p=p>>1;
}
}
void display()
{
DIN=1;
CLK=1;
STB=1; //初始化
indate(0x44); //固定地址方式
STB=1;
indate(0xc0); //传地址
indate(a[0]); //传数据
indate(0xc1); //传地址
indate(a[1]); //传数据
indate(0xc2); //传地址
indate(a[2]); //传数据
indate(0xc3); //传地址
indate(a[3]); //传数据
indate(0xc4); //传地址
indate(a[4]); //传数据
indate(0xc5); //传地址
indate(a[5]); //传数据 第一位永远都是显示这里的数据
STB=1;
indate(0x8f); //显示控制命令
STB=1;
}
void main(void)
{
DIN=1;
CLK=1;
STB=1;
indate(0x00);//设置显示模式
STB=1;
display(); //传送地址数据
while(1);
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|