『壹』 设计一个LED数码管显示器的静态显示电路并设计程序实现以下功能:完成2位显示,要求两位分别正序和逆
可以用仿真图来实现,用两位共阳数码管,分别接在P0,P2口,组成两位静态显示电路。先做加法计数,计数到99,自动改为减法计数,计数到0,再变为加法计数。由此循环。
仿真图
程序如下
#include<reg51.h>
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay()
{
unsigned int j;
for(j=20000;j>0;j--);//修改j 的初值,可改变计数的速度
}
void main()
{
char n,x=1;//先加法计数
while(1)
{
P0=tab[n/10];//显示十位
P2=tab[n%10];//显示个位
delay();
n+=x;
if(n>=99)
x=-1;//减法计数
if(n==0)
x=1;//加法计数
}
}
『贰』 推荐个LED数码显示的两位的计数器电路,用什么单片机和源程序
两位数的最大到99,用一个计数100的计数器就可以了。没有的话可以级联,比如两个10进制的,一个20,一个5的,都可以。也可以两个16进制的,然后记到9的时候马上清零也可以。总之选择多多。而且,不需要编程,简单的数字电路。
比如74160是一个10进制计数芯片,用两个就可以了。看看芯片手册,很简单的。
『叁』 将定时/计数器0外部输入的脉冲进行计数,计数结果送显示器显示。
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit P2_0=P2^0;
uint Time_5ms=10000;
void ini() //定时器初始化
{
TMOD=TMOD|0x01;
TMOD=TMOD&0xF1;
ET0=1; //定时器0的中断控制位
EX0=1; //外部的中断0控制位
IT0=1; //外部中断0为下降沿触发方式
EA=1;
}
void xianshi( ) //进行显示的子程序,不知道你用什么来显示的
{......}
void main()
{
P2_0=0;
ini();
while(1)
{
if (显示的条件) {xianshi();}
}
}
void int0() interrupt 0 // 外部的中断函数
{
static uint i;
TR0=0;
P2_0=0;
i=0x10000-Time_5ms;
TH0=i/256;
TL0=i%256;
TR0=1;
}
『肆』 如何用D触发器实现2位2进制计数器电路图
该设计主要思路为时钟分频和逻辑运算。也可以理解为计数器设计和进位提取。
需要建立对D触发器的工作方式和各种逻辑门电路的工作方式的正确认识和使用
1、观察该系统输入输出波形可以确定该系统为时钟的四分频(2位2进制)
观察仿真结果可以发现输出信号D(8)高电平持续时间位半个CP,4个CP为一个周期,符合设计要求。
注意:仿真使用的D触发器为边沿触发,边沿触发D触发器工作过程如下:
当时钟CP上升沿到达时,D输入端的状态被送到Q输出端。
当时钟CP上升沿完成后,Q输出端保持原有的状态,等待下一个CP上升沿。
部分触发器带有复位端和置位端,根据其有效电平可以对Q端进行清0或者置1的操作。
『伍』 自动计数器
好想法!
这个计数器较容易实现,需要用到单片机!逻辑上没问题就可以!
采用此车人数上限手动输入;超出人数开始报警并且车子无法行驶!
上、下车采用红外线检测,并相互减数;人员高矮不一,采用多路检测,另做一个红外线检测车门,如有人在车门范围内,车门无法关闭。
有一问题,上车需要走前门,下车走后面这样比较容易实现逻辑电路。
这样电路功率不大应该在10W以内,电流范围可以做到直流6~36V,可适用不同车型。
呵呵!不错想法!现在校车出问题多多,这也是一方面。
『陆』 设计一个二位显示的自动|手动计数电路装置,芯片有(555)(CD4518)(CD4543)(数码管)
弄完没有,弄完了拿来参考参考,我在607,发给我也行[email protected]
『柒』 智能计数器说明书介绍
计数器是什么?计数器采用的是比较简单的运算设计,属于逻辑电路。计数器的作用是什么呢?计数器主要是在电子科技中应用的,这是一种运用得比较多的时序逻辑电路。计数器可以对数字进行运算,是一种没有办法显示计算结果的显示器。随着电子科技的发展,现在的计数器是有智能功能的。但是很多人不知道智能计数器是如何使用的。下面我们就来看一下智能计数器的使用说明。
智能计数器说明书:
1.性能指标
计数范围:999999
计数频率:0-1000HZ
输入电压:220VAC±5%
输出形式(可选):TTL电平输出
继电器输出
通讯模式:支持RS485接口基于MODEM-BUS协议
波特率1200bit/s-9600bit/s
功能特点:三种清零方式
2.工作模式
工作模式1:当计数达到计数上限时,计数器停止计数,输出报警信号.
工作模式2:当计数达到计数上限时,计数器继续计数,输出报警信号.
工作模式3:当计数达到计数上限时,计数器自动清零,同时输出报警信号.(注:
报警信号只维持10ms左右.)
工作模式4:不停止计数,每间隔计数报警上限的整数倍时,输出报警信号.(注:报警信号只维持10ms左右.)
3.键盘操作说明
面板键盘有四个键,可完成控制器的功能设置与工作模式的转换.
复位键:当系统死机或工作不正常时,可以按压复位键强制计数器复位.
设置键:按压设置键进行页选择,每一页代表一项功能项.
上下键:在设置状态时,完成数据的修改.
下键与设置键组合:在计数状态时,可完成计数器清零.
上键:在计数状态时,可完成启停计数器计数.
按压设置键可以使计数器进入设置状态.在计数器为设置状态时,不按任何键2S后,计数器返回计数状态.
计数器共有6个设置页.计数器第二行的两位LED表示哪一个设置页。
1)清零方式选择:
按压设置键直到功能页显示1.后,按压上下↑或↓可加减设置值.
00:表示使用手动清零.即在计数状态时,按压下键与设置键组合完成计数器清零.
01:表示使用外部引脚清零.即在计数状态时,将FWR与FERG短接150ms即可完成计数器清零.
02:表示使用串口清零.即在计数状态时,由上位机发送清零命令,即可完成计数器清零.
2)计数器启停方式选择:
按压设置键直到功能页显示2.后,按压上下↑或↓可加减设置值.
00:表示使用手动启停.即在计数状态时,按压上键即可启停计数器计数.
01:表示使用外部引脚启停.即在计数状态时,将WSS与WSSG短接150ms即可启停计数器计数.
02:表示使用串口启停.即在计数状态时,由上位机发送启停命令,即可启停计数器计数。
智能计数器是非常容易操作的,因为智能计数器的计算范围一般是从1到9万的。智能计数器一般是有四个键的,我们可以通过这四个功能键进行设计和转换。使用智能计数器的时候要进行设置,因为智能计数器和普通的计数器是不一样的。智能计数器一般是有记忆功能的,所以我们在使用完之后最好是清除数据重新设置。智能计数器的品牌也有很多,我们可以选择一些进口的计数器品牌。
『捌』 电玩城的投篮机自动计数装置是什么原理用到的是什么传感器
铁定不是红外,因为篮球不会散发热量,应该类似接近传感器那种,有物体从传感器前经过就会记数。
『玖』 分别用静态和动态显示方法设计两位计数器(0-99)
/*XL600七段数码管相关定义*/
#ifndef __LED_H__
#define __LED_H__
#define LEDBLACK 20
#define LEDSLINE 21
unsigned char LED7TAB[] = { 0x28, 0x7E, 0xA2, 0x62, // 0 1 2 3
0x74, 0x61, 0x21, 0x7A, // 4 5 6 7
0x20, 0x60, 0x30, 0x25, // 8 9 A b
0xA9, 0x26, 0xA1, 0xB1, // c d E F
0,0,0,0, // 预留4个空位,16 17 18 19
0xFF, // 20 是全黑
0xF7 // 21 是中短横线
};
unsigned char dis_buf[8];
void LedDynamicScanInit(void);
void LedClearDisplay(unsigned char value);
void Number2Led(unsigned long int number);
//数字输给8个LED
//
void Number2Led(unsigned long int number)
{
unsigned char i, j;
i = 7;
while(1)
{
dis_buf[i--] = LED7TAB[number % 10];
if(number > 10)
{
number /= 10;
}
else
{
if(i == 255) //--0 = 255 :即最高(前)位都用上了,所以全是亮的
{
return;
}
break;
}
}
for(j = 0; j <= i; j++)
{
dis_buf[j] = LED7TAB[LEDBLACK];
}
}
//清8LED为value
//
void LedClearDisplay(unsigned char value)
{
unsigned char index;
for(index = 0; index < 8; index++)
{
dis_buf[index] = LED7TAB[value];
}
}
//为动态扫描初始化定时器,这里使用了Timer0
//
void LedDynamicScanInit(void)
{
TMOD |= 0x02;
TH0 = 0xA0;
TL0 = 0xA0;
IE |= 0x82;
TR0 = 1;
}
//动态扫描
//
void LedDisplay() interrupt 1 //动态扫描显示数码管,放在中断里就是最好的方案
{
static unsigned char dis_digit = 0xFE; // P2的二进制掩码选通第几个数码管,从0位即最左边扫描起
static unsigned char dis_index = 0; // 逻辑第几个数码管
P2 = 0xFF; // 先关闭所有数码管
P0 = dis_buf[dis_index]; // 从第0个数码管开始,即最左边开始
P2 = dis_digit; //
dis_digit = _crol_(dis_digit, 1); // 循环左移
dis_index++;
dis_index &= 0x07; // 技巧: 掩码:0111,当1000时变成0
}
#endif
这是我以前写的,希望对你有参考价值