标题: 数码管计数求助 两块573驱动两位共阴数码管 [打印本页]
作者: 驱蚊灯 时间: 2017-8-13 05:50
标题: 数码管计数求助 两块573驱动两位共阴数码管
两块573驱动两位共阴数码管,按键计数00——99,电路图如下
-
无标题.png
(30.6 KB, 下载次数: 103)
作者: 想飞的猪1 时间: 2017-9-8 16:47
这是要程序。。。
作者: cjjcjj1 时间: 2017-9-8 17:07
提示: 作者被禁止或删除 内容自动屏蔽
作者: zl2168 时间: 2017-9-9 17:01
本帖最后由 zl2168 于 2017-9-9 17:09 编辑
统计T0引脚上10分钟内的脉冲数
实例71 统计T0引脚上10分钟内脉冲数.rar
(52.96 KB, 下载次数: 4)
先Proteus仿真一下,确认有效。以上摘自张志良编著《单片机实验实训100例》 ISBN 978-7-5124-1603-1,北航社出版. 书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
作者: 常常常 时间: 2017-9-9 20:20
首先你要知道锁存器是怎么工作的,然后会数码管静态,动态显示。锁存器的原理如图,代码自己写吧C:\Users\Administrator\Desktop
作者: xfenghany 时间: 2017-9-10 20:02
给你程序自己修改吧,只是这个程序里是自动加1计数。两个573用来片选和段选分别锁存。
#include<reg52.h>
sbit selectWei=P2^7;
sbit selectDuan=P2^6;
unsigned char code selectPin[]={0x0e,0x0d,0x0b,0x07};
unsigned char code displayNum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int a;
unsigned int number;
void outPutNumber(unsigned int);
void delay();
void main()
{
number=0;
while(1)
{
outPutNumber(number);
number++;
}
}
void outPutNumber(unsigned int z)
{
if(z>9999) //取千位数
{
selectDuan=1; //先发送段字符
P1=displayNum[z%100000/10000];
selectDuan=0;
selectWei=1; //再开通位选 可消除重影
P0=selectPin[0];
selectWei=0;
delay();
}
if(z>999) //取千位数
{
selectDuan=1;
P1=displayNum[z%10000/1000];
selectDuan=0;
selectWei=1;
P0=selectPin[1];
selectWei=0;
delay();
}
if(z>99) //取百位数
{
selectDuan=1;
P1=displayNum[z%1000/100];
selectDuan=0;
selectWei=1;
P0=selectPin[2];
selectWei=0;
delay();
}
if(z>9) //取十位数
{
selectDuan=1;
P1=displayNum[z%100/10];
selectDuan=0;
selectWei=1;
P0=selectPin[3];
selectWei=0;
delay();
}
/*
if(z>0) //取个位数
{
selectDuan=1;
P1=displayNum[z%10];
selectDuan=0;
selectWei=1;
P0=selectPin[3];
selectWei=0;
delay();
}*/
}
void delay()
{
int i,j;
for(i=0;i<10;i++)
for(j=0;j<110;j++);
}
作者: wxc19960311 时间: 2017-9-26 20:19
#include<reg52.h>
sbit selectWei=P2^7;
sbit selectDuan=P2^6;
unsigned char code selectPin[]={0x0e,0x0d,0x0b,0x07};
unsigned char code displayNum[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
int a;
unsigned int number;
void outPutNumber(unsigned int);
void delay();
void main()
{
number=0;
while(1)
{
outPutNumber(number);
number++;
}
}
void outPutNumber(unsigned int z)
{
if(z>9999) //取千位数
{
selectDuan=1; //先发送段字符
P1=displayNum[z%100000/10000];
selectDuan=0;
selectWei=1; //再开通位选 可消除重影
P0=selectPin[0];
selectWei=0;
delay();
}
if(z>999) //取千位数
{
selectDuan=1;
P1=displayNum[z%10000/1000];
selectDuan=0;
selectWei=1;
P0=selectPin[1];
selectWei=0;
delay();
}
if(z>99) //取百位数
{
selectDuan=1;
P1=displayNum[z%1000/100];
selectDuan=0;
selectWei=1;
P0=selectPin[2];
selectWei=0;
delay();
}
if(z>9) //取十位数
{
selectDuan=1;
P1=displayNum[z%100/10];
selectDuan=0;
selectWei=1;
P0=selectPin[3];
selectWei=0;
delay();
}
/*
if(z>0) //取个位数
{
selectDuan=1;
P1=displayNum[z%10];
selectDuan=0;
selectWei=1;
P0=selectPin[3];
selectWei=0;
delay();
}*/
}
void delay()
{
int i,j;
for(i=0;i<10;i++)
for(j=0;j<110;j++);
}
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |