一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 2037|回复: 7
收起左侧

求解惑:C51+74HC595驱动数码管显示程序

[复制链接]
发表于 2017-1-27 15:41 | 显示全部楼层 |阅读模式
最近,网上下载了个如题程序,看到注解显示数码管是用的共阴极显示码,但proteus仿真里的数码管选用的是共阳极数码管,这就不明白了,用共阴的反而不行?怎么回事?请看明白了的指点一二。谢谢。顺祝坛友新春快乐!!
#include <AT89X51.h>
#define uchar unsigned char
#define uint unsigned int
#define SH_CP1  P3_0
#define DS   P3_1
#define ST_CP1  P3_2
#define OE1  P3_3
#define SH_CP2  P3_4
#define ST_CP2  P3_5
#define OE2  P3_6
uchar code seg_tab[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};//共阴数码管显示码
uchar code wei_tab[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};
uchar dispbuf[8]={0,1,2,3,4,5,6,7};
void SendByte_595_1(uchar dat);
void SendByte_595_2(uchar dat);
void InitTimer0(void)
{
    TMOD = 0x01;
    TH0 = 0x0EC;
    TL0 = 0x78;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}
void display(void)
{
static uchar i;
if(i>=8) i=0;
SendByte_595_2(~0xff);
SendByte_595_1(~seg_tab[dispbuf]);
SendByte_595_2(~wei_tab);   
i++;
}
void Timer0Interrupt(void) interrupt 1
{
    TH0 = 0x0EC;
    TL0 = 0x78;
    //add your code here!
    display();
}
void main(void)
{
InitTimer0();
while(1)
{
}
}
void SendByte_595_1(uchar dat)
{
uchar i,dat_temp;
OE1=0;//低电平有效
dat_temp=dat;
for(i=0;i<8;i++)
{
  
  DS=0;
  if(dat_temp&0x80)
  {
    DS=1;
  }
  dat_temp=dat_temp<<1;
  SH_CP1=0;
  SH_CP1=1;//上升沿发生移位
  SH_CP1=0;
}
ST_CP1=0;
ST_CP1=1;//上升沿将将移位寄存器内的数据送到输出锁存器
ST_CP1=0;
}
void SendByte_595_2(uchar dat)
{
uchar i,dat_temp;
OE2=0;//低电平有效
dat_temp=dat;
for(i=0;i<8;i++)
{
  
  DS=0;
  if(dat_temp&0x80)
  {
    DS=1;
  }
  dat_temp=dat_temp<<1;
  SH_CP2=0;
  SH_CP2=1;//上升沿发生移位
  SH_CP2=0;
}
ST_CP2=0;
ST_CP2=1;//上升沿将将移位寄存器内的数据送到输出锁存器
ST_CP2=0;
}
无标题.jpg 无标题1.jpg

74HC595.rar

208.79 KB, 下载次数: 115, 下载积分: 一乐金币 -1

发表于 2017-1-27 16:12 | 显示全部楼层
其实没人回去看楼主的源代码的。

楼主问问题最好是问重点。
 楼主| 发表于 2017-1-27 16:36 | 显示全部楼层
我的问题是:显示数码管与显示码,不一定是匹配使用吗?
发表于 2017-1-27 16:54 | 显示全部楼层
本帖最后由 钟义亭 于 2017-1-27 17:21 编辑

1.png

http://swf.com.tw/?p=715

http://swf.com.tw/?p=949


1.png



 楼主| 发表于 2017-1-27 18:19 | 显示全部楼层
钟义亭 发表于 2017-1-27 16:54
http://swf.com.tw/?p=715

http://swf.com.tw/?p=949

谢谢,很形象。
发表于 2017-1-27 21:35 | 显示全部楼层
display 函数里面  有三个 ~ (字节取反)可以把共阴码转出共阳码
发表于 2017-1-30 19:37 | 显示全部楼层
注释错误的,编码明明是共阳
发表于 2017-1-30 19:38 | 显示全部楼层
ylwwp 发表于 2017-1-27 16:36
我的问题是:显示数码管与显示码,不一定是匹配使用吗?

这个倒是不一定,学会灵活应用

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-26 18:06 , Processed in 0.058188 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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