找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1468|回复: 1
打印 上一主题 下一主题
收起左侧

求单片机大神指点,为什么有的数码管不亮啊,用的是74ls164

[复制链接]
跳转到指定楼层
楼主
ID:592404 发表于 2019-7-30 15:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit AB=P3^0;    //串行输入端
sbit CLK=P3^1;    //时钟脉冲输入端,上升沿(高电平)有效
sbit CLR=P3^2;    //清零端
uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};   //共阴0~9
void delaynms(uint z)
{
uchar i,k;
while(z--)
{
  for(i=2;i>0;i--)
  {
   for(k=250;k>0;k--);
  }
}
}
void display(uchar h) //数码管显示
{
uchar num,j;
CLR=1;
num=dispcode[h];
for(j=0;j<8;j++)
{
  CLK=0;
  AB=num&0x01; //每一位的输出
  CLK=1; //每一次上升沿,输出一位数据
  num=num>>1; //右移位赋值 ,以供下一位的输出
}
}
void main()
{
uchar h;
while(1)
{
  for(h=0;h<10;h++)
  {
   display(h);
   delaynms(500);
  }
  h=0;
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:373095 发表于 2020-5-9 17:15 | 只看该作者
uchar num,j; CLR=1; num=dispcode[h];  这里为什么要给CLK高电平
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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