❶ 单片机80c51设计一个两位计数器,能对外部的脉冲进行计数,能进行复位。
#include<reg51.h>
#define uchar unsigned char;
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f
uchar number,dat;
void ext0() interrupt 0
{
dat++;
dat%=100;
}
void t0isr() interrupt 1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
if(number>1)number=0;
switch(number)
{
case 0:P2=0x02;P0=distab[dat/10];
break;
case 1:P2=0x01;P0=distab[dat%10];
break;
default:break;
}
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR0=1;
ET0=1;
EX0=1;
IT0=1;
PX0=1;
EA=1;
while(1);
}
❷ 51单片机按键计数器设计
利用红外对管作感应器的话,只要将单片机设置为计数模式就行,然后红外接收管接到单片机的p3^4或者p3^5口,这是51系列单片机计数功能口,然后设置好tmod寄存器和tcon寄存器选择工作方式和触发方式即可,计数变量定义为全局变量,然后传递给显示函数。
如有不懂的地方随时回复我。
希望我的回答能帮助到你。
❸ 基于51单片机的简易计数器设计c程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9
uchar scanled;
uchar disdat[4];
uint ss,time;
sbit led=P1^0;
void dischg()
{
disdat[3]=ss%10;
disdat[2]=(ss/10)%10;
disdat[1]=(ss/100)%10;
disdat[0]=(ss/1000)%10;
}
void t0isr() interrupt 1
{
ss++;
dischg();
}
void t1isr() interrupt 3//显示
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
P2=1<<scanled;
P0=~ledtab[disdat[scanled]];
scanled++;
scanled%=4;
time++;
if(time>100){time=0;led=~led;}
}
main()
{
TMOD=0x16;
TH0=0xff;
TL0=0xff;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
led=0;
scanled=0;
ss=0;
dischg();
while(1);
}
❹ 基于51单片机的按键计数设计,4位,0到9999
数码管有四位一体的,只用一个就行了,你这用两个二位一体的数码管,电路就显得有些乱。
还有,你那数码管的段控端少接一条导线,就是数码管的G端也要连线哪。
更重要的是,共阳数码管位控端用三极管驱动,当写程序扫描时,数码管不亮。
❺ 基于单片机的光电传感器的计数器设计
计数显示电路可完成对上述脉冲信号的计数和显示。图3是由单片机构成的计数系统框图。 计数系统以MCS-51系列单片机的8031为核心,8013单片机的外围扩展了程序存储器27C256和数据存储器WM0016DRH,此外,用8255扩展了I/O口,同时具有时钟单元、掉电保护、看门狗单元、通信单元以及LED(发光二极管)显示器、键盘等。 1)8031单片机及存储器 8031内含4kb EEPROM程序存储器,具有功耗低、抗干扰能力强的特点,可安置于监测现场,数据存储器WM0016DRH是一种多功能非易失性SRAM,特点如下:高速高抗干扰自保持,不怕掉电,上下电百万次数据无丢失,断电保护10年有效,既可高速连续读写,也可任意地址单字节操作,无需拼凑页面,随机读写不需等待,立即有效,输入输出TTL/CMOS兼容,上电复位输出,掉电保护,内置看门狗,电源监测,不用外加电路和电池,且引脚与标准SRAM兼容。 2)计数及显示 多车道车流量数对应的脉冲通过光电隔离耦合并行输入至8031单片机的P1口,通过软件控制和键盘设定计数值并用LED加以显示,可自动循环显示或定点显示两种方式,且两者相互间可任意切换[4]。 当热释电传感器安装位置固定后,输入脉冲的脉宽和占空比均取决于高速公路上车辆的车速和车距(脉宽对应车辆传感器有效监视方位内的时间,车速和车距有限定),占空比q小于50%,为了准确拾取车流量信息,通过软件可实现单片机对每一路并行输入数据的读取周期小于脉宽,且将每路各自相邻的两读取周期读取的数据进行运算(暂存前一个周期读取的数据),若两数据为01,则自动计1,否则计0。其中0为前一个周期的读取数据,此时脉冲为低电平,1为后一个周期的读取数据,此时脉冲为高电平,从而避免了对脉冲的漏计和重复计数,再把4路的读数每一周期进行一次加运算,累加后的和就是总的车流量。 将8031单片机内的定时器/计数器设定为工作方式1,构成16位二进制计数器[5],采用动态扫描方式直接驱动5位十进制计数器[5]。采用动态扫描方式直接驱动5位十进制LED显示,最大计数值达到65536,可记录4车辆的车流量并显示一个月内的日流量,累计4车道一个月内的日流量总和,计数器内数据保护时间可达一个月之久。当计数器达到设定值时,声光报警,可存储数据,并手动复位。 3)时钟单元 采用DS12C887实时时钟芯片,具有显示具体时间信息的功能,若设计调整和设置按键,可方便地对时间进行调整和设置,从而为车流量的统计提供准确的时间数据。 4)串行通信单元 由于单片机系统的数据存储能力和数据处理能力有限,以及现场实时性要求较高,故单片机现场只能暂时存储采集到的数据和对数据进行简单处理,至于大量的数据存储和后续复杂的数据处理可交给上位机完成,由于大型机具有RS-232标准串行口,所以通过8031单片机TTL电平全双工串行口,附加RS-232电平转换电路MAX3232可与上位机实现数据通信。 3 软件设计 计数系统的程序主要包括系统自检程序、系统初始化程序、键盘扫描程序、按键处理程序、显示程序以及数据采集处理程序等,图4所示为主程序流程。 4 安装与调试
❻ 单片机设计计数器,为什么计数键和定时器T0(P3.4)连接而不和其它普通的I0口连接
在51单片机中P3.4是T0作为计数器模式的脉冲输入口,P3.5是T1作为计数器模式的脉冲输入口,这是单片机内部结构设计定死了的,不能更改,所以计数键只能接P3.4或者P3.5,这取决于采用T0或者T1,不能接其他IO。
❼ 求解:怎么在单片机中实现计数器
用74HC161设计一个四进制计数器,使用同步置数功能。当计数到最大数3时,用一个与非门74LS00,产生一个置数信号加到置数端LD即可。下图是逻辑图,也是仿真图,是计数到最大数3时的截图。你画逻辑图时,要省掉 那个数码管,那是为了显示仿真效果的。
❽ 单片机课程设计传送带产品计数器的设计
弄好了么可否参考一下
❾ 51单片机设计两位计数器C语言
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
#define dataport P1
sbit s1=P2^0;
sbit s2=P2^1;
sbit s3=P2^2;
sbit wei1=P2^4;
sbit wei2=P2^5;
signed char a=0;
uchar TABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//延时子程序
void delay1ms(uint t)
{
uint i;
uint j;
for(i=0;i<t;i++)
for(j=0;j<116;j++);
}
//显示子程序
void display(uchar n)
{
wei1=1;
dataport=TABLE[n/10];
delay1ms(1);
wei1=0;
wei2=1;
dataport=TABLE[n%10];
delay1ms(1);
wei2=0;
}
void main(void)//主程序
{
while(1)
{
if(s1==0)
{
delay1ms(20);
if(s1==0)
{
a++;
}
}
if(a=100)a=0;
if(s2==0)
{
delay1ms(20);
if(s2==0)
{
a--;
}
}
if(a<0)a=99;
if(s3==0)
{
delay1ms(20);
if(s3==0)
{
a=0;
}
}
display(a);
}
}
❿ MCS-51单片机,利用定时计数器设计一个程序,汇编语言,最好有注释,很简单的就可以
ORG
0000H
JMP
BEGIN
ORG
0030H
TABLE:
;
共阴极数码管显示代码表
DB
3FH,06H,5BH,4FH,66H
;01234
DB
6DH,7DH,07H,7FH,6fh
;56789
DELAY:
MOV
R5,#20
LOOP4:
MOV
R6,#50H
;延时20X20ms
LOOP5:
MOV
R7,#100
DJNZ
R7,$
DJNZ
R6,LOOP5
DJNZ
R5,LOOP4
RET
;---------------------------------------
BEGIN:
MOV
P2,#0FFH
;P2口置高电平,准备接收信号
MOV
R4,#0
MOV
A,R4
;R4位标志值送A寄存器
AGAIN:
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
MOV
P1,A
LOOP1:
MOV
A,P3
;
接收p3口的抢答信号
CPL
A
JZ
LOOP1
LOOP2:
RRC
A
;有人抢答信号则逐次移动判断哪一位抢答
INC
R4
JNC
LOOP2
;********************
MOV
A,R4
MOVC
A,@A+DPTR
;找到相应位显示代码
MOV
P1,A
LEDDIS:
MOV
A,#0FFH
CLR
C
LEDDIS1:
RLC
A
DJNZ
R4,LEDDIS1
MOV
P0,A
LOOP3:
JNB
P2.2,BEGIN
;若主持人按下复位信号键,则转向主程序
CPL
P2.0
;若没按复位信号键,则通过p2.2口给出高低信号驱动蜂鸣器
LCALL
DELAY
;调用延时子程序
SJMP
LOOP3
;p2.2口反复间隔0.4s变化,驱动蜂鸣器
END