我是一个刚接触单片机的,我在写74HC595有关的程序时,遇到了一个问题,就是数码管的亮度会比正常显示时的亮度要暗很多,同时在亮“1”这一个数字时“1”会很亮,其他的数字就不会有这种情况,这是什么原因呢?我在检查代码是发现代码并没有什么不对的地方。
麻烦各位帮忙指点指点
#define SCLK PB0
#define RCLK PB1
#define DIO PB2
下面是主函数:
void main()
{
initialize(); //初始化的程序
while(1)
{
asm("clrwdt");
duan_wei_display();
}
}
一下是输入串行数据:
void input_serial_data(uchar data)
{
static uchar i;
for(i=0;i<8;i++)
{
if(data&0x80)
{
DIO = 1;
}
else
{
DIO = 0;
}
SCLK = 0;
SCLK = 1;
SCLK = 0;
data<<=1;
}
}
数码管扫描:
void duan_wei_display()
{
static uchar r_num_i;
num_progressive_increase();
//个位
input_serial_data(num1[num_plus%10]);
input_serial_data(0x01);
RCLK = 0;
RCLK = 1;
//十位
input_serial_data(num1[num_plus/10%10]);
input_serial_data(0x02);
RCLK = 0;
RCLK = 1;
//百位
input_serial_data(num1[num_plus/100%10]);
input_serial_data(0x04);
RCLK = 0;
RCLK = 1;
//千位
input_serial_data(num1[num_plus/1000%10]);
input_serial_data(0x08);
RCLK = 0;
RCLK = 1;
}
下面的是让数码管每秒递增1的程序
void num_progressive_increase()
{
if(F_595time_1s==1)
{
F_595time_1s = 0;
num_plus++;
if(num_plus>9999)
{
num_plus = 0;
}
}
}