一种简易00-99计数器的设计与仿真

最新更新时间:2014-03-29来源: 21IC关键字:简易  00-99  计数器 手机看文章 扫描二维码
随时随地手机看文章

1 系统描述

本系统利用AT89C51 单片机来制作一个手动计数器,在AT89C51 单片机的P3.2 管脚和P3.3 管脚各接一个轻触开关K1和K2,作为手动计数的按钮,用单片机的P0.0 - P0.7 接一个两位绿色共阴极数码管(7SEG-COM-CAT-GRN),作为00 - 99 计数的个位数和十位数显示。系统正常运行后显示00,按一次K1 键,数字加1,当计数到 99 时,再按一次 K1 键,又从00 开始计数。当计数到 99 时,按一次K2,计数为98,继续按K2,直到计数为00,由此实现正计数和倒计数的功能。本系统可用于竞技比赛中的计分,或者用于重要事件将要到来的倒计时。

2 硬件电路设计

硬件电路的设计是本系统能否实现所需功能的关键环节,在设计过程中须注意电路的整体布局、元器件的摆放、元器件的参数选择及电路的优化,具体电路图如1-1 所示。其中,X1 为12MHZ 的晶体振荡器,RX8 为排阻。

图1-1 计数器电路原理图:

 

 

3 软件设计

根据硬件电路的结构及功能要求,在分析所需算法和功能模块的基础上编写本系统的代码,要求代码尽可能的简洁易懂,并有在必要的地方写明注释。具体代码如下所示:

#include// 导入头文件

unsigned b[10]={0x3f,0×06,0x5b,0x4f,0×66,0x6d,0x7d,0×07,0x7f,0x6f};//0-9 的编码

void delay(void)// 延时子程序,延时1 秒

{

unsigned char i,j,k;for(i=20;i>0;i- )

for(j=2;j>0;j-)

for( k=250; k>0; k-);

}

void Inc_CNT ( void )// 按K1 键正计数,可从0 计到99

{

unsigned char x, y, z;

for( x=0; x<10; x++){

for( y=0; y<10; y++){

if( (P3|0xfb)==0xfb ){

for( z=0; z<22; z++){

P2=0xf2;

P0=b[x];

delay( );// 调用延时子程序

P2=0xf1;

P0=b[y];

delay( );

}

}

else{

P0 = 0x3f;

P2 = 0×00;

break;}}}}

void Dec_CNT( void )// 按k2 键倒计数,可从99 计到00{

unsigned char x, y, z;

for( x=10; x>0; x-){

for( y=10; y>0; y-){

if((P3|0xf7)==0xf7){

for(z=0; z<22;z++){

P2=0xf2;

P0=b[x-1];

delay( );

P2=0xf1;

P0=b[y-1];

delay( );}// 调用延时子程序

}

else {

P0=0x3f;

P2=0×00;

break;}}}}

void main( void )// 主函数

{

unsigned char key;

P2=0×00;

P0=0x3f;

for(;;){

P3|=0xf3;

key=P3;

if(key==0xfb)Inc_CNT();// 调用正计数函数

else if(key==0xf7 )Dec_CNT();// 调用倒计数函数

else{

P2=0×00;

P0=0x3f;}}}

4 软硬件联调

单片机系统的硬件调试和软件调试是不能分开的,许多硬件错误是在软件调试过程中被发现和纠正的。但通常是先排除明显的硬件故障以后,再和软件结合起来调试以进一步排除故障。可见硬件的调试时基础,如果硬件调试不通过,软件设计则无从谈起。硬件的调试主要是把电路各种参数调整到符合设计要求。先排除硬件电路故障,包括设计性错误和公益性故障。一般原则是先静态后动态。利用万用表或逻辑测试仪器,检查电路中的各器件以及引脚是否连接正确,是否有短路故障。运行正确的仿真电路图如下所示。

 

 

5 结语

本系统利用AT89C51 单片机来制作一个手动计数器,在AT89C51 单片机的P3.2 管脚和P3.3 管脚各接一个轻触开关K1和K2,作为手动计数的按钮, 通过使用专业绘制电路图的软件和程序编译软件,不断进行测试和调试,从而证明了本系统可用于竞技比赛中的计分,或者用于重要事件将要到来的倒计时。

关键字:简易  00-99  计数器 编辑:探路者 引用地址:一种简易00-99计数器的设计与仿真

上一篇:三相智能电表开关电源解决方案
下一篇:基于STM32的智能参数测试仪的设计方案

推荐阅读最新更新时间:2023-10-12 22:37

基于单片机的简易多通道虚拟示波器的设计
  0 引言   虚拟仪器是基于PC技术发展起来的,所以完全 继承 了以现成即用的PC技术为主导的最新商业技术的优点,包括功能超卓的处理器和文件I/O,使在数据导入磁盘的同时就能实时地进行复杂的分析。为了实时、准确地测量输入波形的参数,本文采用自带8路10位ADC的单片机ATmega16,结合简单的外围电路,即可将输入波形实时传送给PC机进行处理。通过PC机上虚拟仪器平台LabVIEW开发的上位机软件对波形进行显示和处理,从而达到简易虚拟示波器的效果。   1 简易多通道虚拟示波器系统的设计   简易多通道虚拟示波器系统的原理方框图如图1所示,数据采集由主控芯片ATmega16进行,采集后的数据通过RS232串口通信
[单片机]
基于单片机的<font color='red'>简易</font>多通道虚拟示波器的设计
基于FPGA的多种形式分频的设计与实现
   引言   分频器是数字系统设计中的基本电路,根据不同设计的需要,我们会遇到偶数分频、奇数分频、半整数分频等,有时要求等占空比,有时要求非等占空比。在同一个设计中有时要求多种形式的分频。通常由计数器或计数器的级联构成各种形式的偶数分频及非等占空比的奇数分频,实现较为简单。但对半整数分频及等占空比的奇数分频实现较为困难。本文利用VHDL硬件描述语言,通过QuartusⅡ3.0开发平台,使用Altera公司的FPGA,设计了一种能够满足上述各种要求的较为通用的分频器。 一、电路设计   采用FPGA实现半整数分频器,可以采用以下方法:设计一个模N的计数器,再设计一个脉冲扣除电路,每来两个脉冲扣除一个脉冲,即
[应用]
针对脉冲负载应用的简易太阳能电池板最大功率
  许多太阳能电池板供电型应用只需功率脉冲便可运行。我们需要频繁地开启数据收集或者测量采样系统,执行测量或者其他任务,发送经过处理或者测量的数据,然后再回到睡眠模式。在许多情况下,以无线方式发送这些数据消耗掉了大部分输出功率。如太阳能电池板等小功率电源,通常难以支持系统本身或者数据发送所需的这些功率脉冲。通过让太阳能电池板工作在最大功率点 (MPP),并且智能地从电池板获取功率,以实现对电能的管理,从而顺利地驱动脉冲负载。本文将为您介绍一种简单且高成本效益的最大功率点追踪 (MPPT) 解决方案,以供这类脉冲负载系统使用。   太阳能电池板特性   在最大功率点工作时,太阳能电池板可提供峰值输出功率。最大功率点是一个与电池
[电源管理]
针对脉冲负载应用的<font color='red'>简易</font>太阳能电池板最大功率
DS1318并行接口历时计数器(ETC)
DS1318并行接口历时 计数器 (ETC)是一款44位计数器,可记录器件在主电源和/或备用电源供电时的工作时间,或是一个外部事件的持续时间。计数器时钟的内部频率为4.096kHz,可提供244µs分辨率,最长计时可达136年。内置电源检测电路可以检测到电源失效状态,自动切换到备用电源并控制定时器。如果需要外部事件定时器,控制输入EXT可以控制计数器工作。漏极开路输出可提供一个中断信号,方波输出提供可编程信号。DS1318通过一个单字节宽的并行接口访问,工作在工业级温度范围。   关键特性   单字节宽度并行接口   44位二进制计数器提供244µs分辨率的定时器   自动电源失效检测,切换电路可自动
[模拟电子]
DS1318并行接口历时<font color='red'>计数器</font>(ETC)
三菱PLC内部计数器编程
三菱PLC计数器软元件的OUT、RST指令助记符与功能 内部计数器编程 C0对X011的OFF-ON次数进行增计数,当它达到设定值K10时,输出输出点C0动作,以后即使X011从OFF-ON,计数器的当前值不变,输出触点依然动作。 为了清除这些当前值,让输出触点复位,则应令X010为ON。 有必要在OUT指令后面指定常数K或用数据寄存器的地址号作间接设定。 对于掉电保持用计数器,即使停电,也能保持当前值,以及输出触点的工作状态或复位状态。 高速计数器的编程 在C235-C245的单相单输入计数器中,为了指定计数方向,采用特殊辅助继电器M8234-M8245。 当X010为ON时,对应C***的M8***也ON,
[嵌入式]
三菱PLC内部<font color='red'>计数器</font>编程
AVR/Arduino定时/计数器、中断入门
在Arduino中,可以使用AnalogWrite来使用硬件产生490Hz/980Hz的pwm波,并可根据参数来设定占空比。不了解这个的同学可以去AnalogWrite学习下,SecretsOfArduinoPWM也是讲了Arduino在avr的定时/计数器上做的封装,我们这里并不讲Arduino相关,而是讲AVR的定时/计数器,如何产生更多PWM波和定时/计数器的中断使用。 AVR Timer/Counter(以下统称Timer) 以ATmega358p为例,其内部拥有一个16位计时器,两个8位计时器,下图则为16位计时器的大致图解: 对于没有接触过avr内部的Arduino同学来说,这张图看不出来任何意思,别急,这些都是AV
[单片机]
AVR/Arduino定时/<font color='red'>计数器</font>、中断入门
汽车智能MP3无线发射器的设计
引言 汽车MP3无线发射器可以将MP3播放器内存储的音乐通过FM广播方式发送,再通过FM调频收音机接收,通过汽车音响播放。本文采用单片机AT89C52及数字锁相环MC145152等芯片设计了汽车MP3无线发射器,从仿真结果与目标样机的运行情况来看,均达到了预期效果。 系统组成 图1为汽车智能MP3无线发射器的系统组成框图,它主要由MC145152、MC1648组成数字锁相环频率合成器,采用变容二极管MV209调频。用户可使用简易的按键,通过单片机AT89C52控制并监测发射频率,同时利用液晶显示器显示反馈信息。另外,可使用串行口实现单片机与计算机的通信,从而通过计算机对发射机进行智能控制。音源不仅可以从车载MP3播放器获取,
[汽车电子]
基于CPLD的任意波形发生器
引言 任意波形发生器(Arbitrary Wave Generator,以下简称AWG)在通信系统、测试系统等方面得到广泛应用。本文利用自主研制的150 MSPS (Million Sampling Per Second)12位DAC(Digital Analog Converter)和300MSPS 12位DAC,基于CPLD技术,设计了一种AWG。要产生的波形通过上位机软件设置,然后将波形数据下载到AWG,AWG在CPLD的高速控制电路下将波形数据送高速DAC进行转换形成所要的波形。下面先分析AWG的硬件结构。 ? 任意波形发生器的硬件结构 AWG的工作过程是,首先接收上位机送来的波形数字信号存储到SRAM,然后启动控制电
[应用]
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved