找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5382|回复: 0
收起左侧

74HC595驱动数码管显示的问题

[复制链接]
ID:51516 发表于 2013-7-5 19:57 | 显示全部楼层 |阅读模式
我利用锁存器74HC595调试了一个共阳极数码管静态显示0-9的程序,但是显示的时候仍有误差(即有几个数字显示不完整,还会有抖动),求解。。。




#include<reg51.h>                                       
#include<intrins.h>
#define uchar unsigned char                                 
#define uint unsigned int                                 

uint flag , i,c ;

sbit clk=P3^6;
sbit dat=P3^4;
sbit suo_cun=P3^5;
uchar volatile e,f;
uchar code tab[]={        0xC0,// 0 ,共阳极
        0xF9,/*1*/
        0xA4,/*2*/
        0xB0,/*3*/
        0x99,/*4*/
        0x92,/*5*/
        0x82,/*6*/
        0xF8,/*7*/
        0x80,/*8*/
        0x90,/*9*/
};

fa_shon(uchar k) //
{
//uchar i; //定义循环变量
  for(i=0;i<8;i++) //因为是1字节是8位,所以循环8次
  {
   dat=k&0x80; //将要发送的数据与上0X01送到数据引脚

   clk=0; //时钟引脚加低电平
   _nop_();
   _nop_();
   clk=1; //时钟引脚加高电平
   k<<=1; //将发送的数据左移1位

  }
  return(i) ;
}

void main()
{
/*TMOD=0x01;
TH0=15535/256;
TL0=15535%256;
EA=1;
ET0=1;
TR0=1;*/
while(1)
{
   //  uchar a;
   // for(a=0;a<3;a++)
  // {
    if(c++>=300)
        {  e++;
           c=0;
        }
    fa_shon(tab[e%10]);
  //  fa_shon(tab[e%100/10]);
  //  fa_shon(tab[e/100]);
  // }
  suo_cun=0; //锁存为低电平
  _nop_();
  _nop_();
  suo_cun=1; //锁存为高电平
  flag=1;
}
}
/*
void tt()interrupt 1
{
TH0=15535/256;
TL0=15535%256;
f++;
if(f>=20)
{
  f=0;
  if(flag==1&&i==8)
  {e++;
   flag=0;
   }
  if(e>9)e=0;
}
} */


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表