精华内容
下载资源
问答
  • 单片机计时器

    2019-05-05 08:45:25
    单片机计时器,时分秒计时,锁存器控制数码管6个数码管显示,程序工程+protues仿真
  • 用软件延时实现00-59秒单片机计时器:在AT89S51单片机的P0和P2端口分别接有两个共阴数码管,P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位。
  • 单片机计时器100000秒以内 硬件连接: 代码: #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int uchar Count; sbit Dot = P0^7; uchar code DSY_CODE...

    单片机计时器100000秒以内

    硬件连接:
    在这里插入图片描述
    代码:

    #include <reg52.h>
    #include <intrins.h>
    #define uchar unsigned char
    #define uint unsigned int
    uchar Count;
    sbit Dot = P0^7;
    uchar code DSY_CODE[]=
    {
     	0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
    };
    
    uchar Digits_of_6DSY[]={0,0,0,0,0,0};
    
    void DelayMS(uint x)
    {
     	uchar i;
    	while(--x)
    	{
    	 	for(i=0;i<120;i++);
    	}
    }
    
    void main()
    {
     	uchar i,j;
    	P0 = 0x00;
    	P3 = 0xff;
    	Count =0;
    	TMOD = 0x01;
    	TH0  = (65535-50000)/256;
    	TL0  = (65535-50000)%256;
    	IE = 0x82;
    	TR0 = 1;
    	while(1)
    	{
    	 	j = 0x7f;
    		for(i=5;i!=-1;i--)
    		{
    		 	j=_crol_(j,1);
    			P3 = j;
    			P0 = DSY_CODE[Digits_of_6DSY[i]];
    			if(i==1) P0 |= 0x80;
    			DelayMS(2);
    		}
    	}
    }
    
    void Time0() interrupt 1
    {
     	uchar i;
    	TH0  = (65535-50000)/256;
    	TL0  = (65535-50000)%256;
    	if(++Count !=2) return;
    	Count = 0;
    	Digits_of_6DSY[0]++;
    	for(i=0;i<=5;i++)
    	{
    	 	if(Digits_of_6DSY[i] == 10)
    		{
    		 	Digits_of_6DSY[i] = 0;
    			if(i != 5) Digits_of_6DSY[i+1]++;
    		}
    		else break;
    	}
    }
    
    展开全文
  • 51单片机计时器

    2014-05-22 17:56:09
    51单片机制作赛道计时器程序,用红外对管
  • 利用单片机制作的计时器,使其更加智能化。  利用单片机制作的计时器更加智能化,当计时停止时,可发出声光报警进行提示。本系统采用Proteus与Keil软件结合构建实验平台。首先在计算机上利用Proteus制作硬件电路...
  • 基于C51单片机计时器

    2019-05-02 17:07:06
    1)上电启动后,时钟计时,显示器显示00:00,并开始计时,每过1秒加1,直至59:59,再加1回到00:00,循环一次是60分钟,计时结束后蜂鸣响一声报警提示。 2)按下K1键后,选择秒表计时,显示器显示00:00,每过1秒加1...
  • 利用单片机制作的计时器,使其更加智能化。  利用单片机制作的计时器更加智能化,当计时停止时,可发出声光报警进行提示。本系统采用Proteus与Keil软件结合构建实验平台。首先在计算机上利用Proteus制作硬件电路...
  • 51单片机 计时器

    2013-01-09 20:02:32
    51单片机上用汇编语言实现的计时器的程序
  • 51单片机计时器中断

    千次阅读 2017-10-12 08:40:17
    单片机中,中断算是一个比较重要的部分,在51单片机中有八种中断方式 ,其中常用的的有五种,分别是外部中断0,计时器中断0,外部中断1,计时器中断1,和串口中断。今天主要介绍的是计时器中断。  51单片机给...

     单片机中,中断算是一个比较重要的部分,在51单片机中有八种中断方式 ,其中常用的的有五种,分别是外部中断0,计时器中断0,外部中断1,计时器中断1,和串口中断。今天主要介绍的是计时器中断。

        51单片机给我们提供了2个计时器中断,分别是计时器0和计时器1,他们对应的优先级分别是1和3,开启计时器并允许其中断后,计时器会从给定的初始值开始,每个指令周期加1,直到加到65535,再加一时计时器溢出,计时器此时会进入中断,并执行中断服务函数。

        在编程过程中发现有许多人搞不清中断服务函数与一般函数的区别,他们总是问出诸如中断服务函数在程序中哪一句之前或哪一句之后执行的问题。其实中断服务函数虽然也是个函数,但是它与一般函数还是有一定的区别的。一般函数想使用时,必须要在主函数或其他函数中调用。而中断服务函数,只要在主函数中初始化计时器后,当计时器进入中断时会中止单片机进行的所有操作,开始执行中断服务函数,在执行完中断服务函数后再回到执行中断服务函数前执行的地方继续执行。其实中断服务函数也是被调用了,但它不是被程序中的某一句话调用了,而是被单片机调用了。

        单片机单片机存储程序并不是从0地址开始保存,而是在中端向量表后保存,中断向量表中保存的是中断的优先级和中断服务函数的地址。程序执行后一旦计时器进入中断状态,单片机会回到中断向量表查询中断的优先级和中断服务函数的地址,然后跳转到中断服务函数所在地址开始执行,执行完成后回到中断向量表,然后回到中断前的地方执行。

        单片机的初始化有5步:

        1.打开总中断。

        2.选择工作方式。

        3.计时器初始化。

        4.打开计时器中断允许。

        5.开始计时。

     

       下面以定时器0为例就按照上面五个步骤写一个1ms执行一次中断函数的初始化函数。

        void tiemr0_init()

       {

              EA = 1;        //打开总中断

              TMOD |= 0x01;   //选择工作方式1      *注1

              TH0 = (65536 - 1000) / 256;     //定时器高八位初始化

              TL0 = (65536 - 1000) %256;    // 定时器低八位初始化

              ET0 = 1;  //打开定时器0中断允许

              TR0 = 1; //定时器0开始计时

        }

    注1:TMOD寄存器有八位,其中高八位用于选择定时器1的工作方式,低八位用于选择定时器0 的工作方式,定时器1有三种工作方式,定时器1有四种工作方式。

    一般定时器中断时使用方式一,也就是用定时器0(T0)时 TMOD |= 0x01,用定时器1(T1)时 TMOD |= 0x10,方式2一般用于串口中断,其余两种涉及不多。

    中断服务函数只需要在函数名后加interrupt X ,X就是中断对应的优先级,如定时器0中断对应的优先级是1,那他的中断服务函数名后面就加interrupt 1,下面就以定时器0为例编写一个使count一毫秒加一的中断服务函数(晶振为12M)

    unsigned char count = 0;

    void timer0_isr() interrupt 1

    {   

          TH0 = (65536 - 1000) / 256;

          TL0 = (65536 - 1000) % 256;   

          count++;

    }

    展开全文
  • 本文主要讲了利用单片机的定时/计数器设计一个计时器,下面一起来看看
  • 用来计算51单片机计时器初值。该程序要在命令行模式(CMD)下运行。若程序不能运行,请安装.net3.5。
  • 单片机计时器代码

    2012-04-26 09:01:17
    //功能:在STC89C51实验平台的4位数码管上实现动态显示0000-9999,每隔1s切换显示内容,当显示9999时,蜂鸣发声,独立按键控制暂停和启动,用中断延时,C语言代码
  • 是新朋友吗?记得先点蓝字关注我哦~【本文已由 面包板授权转载(原创)作者:Ofweek...采用软件设计和硬件设计相结合,设计了该便携式篮球计时器,利用Keil μVision 3运行程序、调试时间、运行步骤,将写好的程序导...
    99fa912e49fd839c5703deb9b729b249.gif

    是新朋友吗?记得先点蓝字关注我哦~

    【本文已由 面包板 授权转载(原创)作者:Ofweek,转载请联系出处】

    摘要

    随着篮球运动的普及,为了解决偏远贫困山区篮球比赛和小团体外出比赛的计时问题,利用AT89C51芯片控制能力强,设计灵活,以及编程语言易于修改等优点,采用软件设计和硬件设计相结合,设计了该便携式篮球计时器,利用Keil μVision 3运行程序、调试时间、运行步骤,将写好的程序导入仿真硬件电路中,查看是否与设计要求一致。该设计具有性能稳定,功耗低,价格便宜,易于携带等特点。

    0. 引言

    本设计利用单片机AT89C51完成了计时的功能,详细地介绍了系统硬件与软件的设计过程,设计由AT89C51编程控制LED七段数码管作显示的篮球计时系统。该系统具有赛程时间设定,计时启动,暂停,报警,24 s及复位等功能。

    1. 系统原理

    篮球比赛计时的准确性和计时的精确度是要求很高的,而单片机在这方面有着出色的表现。该系统采用频率为12 MHz的芯片,整个系统由按键、计时显示、报警,箭头方向等部分组成。该系统组成方框图如图1所示。

    f6f6ac876b05cccd7759def40e37b67f.png

    单片机是该系统电路的核心组成部分,系统的各种功能都是在单片机内通过编程来实现。单片机选用AT89C51。它的X1(19脚)和X2(18脚)外接12MHz晶振,为单片机提供时钟信号。晶振的2个引脚分别串一个瓷片电容,电容值为20~50 pF,用于提高晶振频率的稳定性。共接入6个4寸7段共阳极数码管显示器,用于赛程的时间和记录24 s违规计时显示。

    2. 系统硬件设计

    2.1 定时控制部件设计

    定时控制部件是在规定的时刻发出各种操作所需的全部内部和外部控制信号,使各功能元件协调工作,完成指令所规定的功能。主要任务是产生一个工作时序,其工作需要时钟电路提供一个工作频率。

    MCS-51内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入端和输出端分别是XTAL1和XTAL2,在XTAL1和XTAL2上外接时钟源可构成时钟电路。在XTAL1和XTAL2两端跨接晶体或陶瓷谐振器,与内部反向器构成稳定的自激振荡器,它发出的脉冲直接送入片内的定时控制部件。

    2.2 系统的复位

    设计采用的是12 V电磁式铁振膜蜂鸣器作为报警器。当单片机送一个高电平延时一段时间,经过三极管将信号放大后驱动中间继电器,再由中间继电器驱动12 V电磁式铁振膜蜂鸣器,使得电磁线圈产生了一个磁场。振动膜片在电磁线圈和磁铁的相互作用下振动发声。

    3. 篮球计时器软件设计

    首先在比赛之前,接通电源,系统自动复位,首先设置时间,通过上下拨动“设置时间”的按钮来设置比赛的时间,本设计已设好12 min和10 min一节的两种时间,按下启动按钮,计时器面板的计时电路共阳极数码管计时部分显示为“12-00”或“10:00”;24 s计时器显示为“24”。当比赛开始时,按下“运行”按钮计时器计时部分和24 s部分同时开始运行。

    在比赛过程中可以通过球权按键来控制箭头的指向,从而显示比赛中拥有球权的队。若控球方在24 s内未违规,则只需按一下“24 s复位”按钮即可,当24 s违规时,该蜂鸣器会发出2 s的报警声音。

    当小节比赛到最后10 min时,计时器向蜂鸣器发出信号,蜂鸣器报警提示1 s,此时计时器的计时显示面板由“00-10”变为“10—00”,当24 s显示面板此时变为毫秒计时,这时就进入1/10 s倒计时。

    当比赛结束时蜂鸣器报警提示4 s,计时器面板计时部分显示为“00-00”,24 s显示器显示为“00”。此时本场比赛结束。流程图如图2所示。

    3e5afaec713652cd21ee5d8f7df6bf81.png

    4. 系统调试

    4.1 软件调试

    利用Keil μVision 3进行仿真调试,根据设计要求运行程序、调试时间、运行的步骤等,最终调试到设计需要的参数。

    (1)程序编完后,对代码仔细逐行检查。检查代码的错误,建立自己的代码检查表,对经常易错的地方进行检查。检查代码是否符合编程规范。

    (2)对各个子程序进行仿真测试。仿真测试的方法:用程序测试程序,编制一个调用该子程序的代码,建立要测试子程序的入口条件,再看看它是否按预期输出结果。

    (3)如果代码有修改,再次对代码进行检查。

    4.2 硬件调试

    在Proteus Professional 7.1 SP2单片机仿真与设计软件中绘制电路原理图,在搭接好基本电路后根据设计要求设置参数,之后将写好的程序导入仿真硬件电路中,然后运行,观察仿真现象是否与设计要求的一致。

    主要需要调试的是电路的输入电压,计算电路中的电流来设置具体的通过每个元件的允许电流,即Imax,在调试稳压电源的时候需根据计算结果,选择变压器的参数,即能够提供的最大电流、功率。合理选用电容参数的大小以保证稳压电路的稳压系数。仿真得到的效果和制作出来的实物之间有一定的差距,因为实际电路存在电损耗,所以在搭接硬件电路时必须考虑这些方面的影响。

    5 注意事项

    (1)根据硬件电路原理图和装配图仔细检查线路的正确性,并检查元器件安装是否正确。常要注意的是芯片及开关管的型号、放大器和开关管的极性、电容器的耐压和极性、电阻的阻值和功率是否与设计图纸相符,重点检查系统总线间或总线与其他信号线间是否存在短路。

    (2)检查焊接点是否牢固,特别要仔细检查有无漏焊和错焊;对于靠得很近的相邻焊点,要注意检查金属毛刺和是否短路,必要时可用万用表进行测量。调试过程有时可能要重复多次。另外,在烧录程序的时候,一定要注意到AT89系列单片机默认得有芯片加密。

    (3)在制作过程中需考虑电流、电压、磁场对单片机的影响,做好防护措施,可外接保护电路,从而消除灌流、尖峰电流的等对单片机运行的影响。

    6. 结语

    AT89C51使电路更为简化,器件减少,结构紧凑,降低了成本,提高了灵敏度和可靠性,符合集成化、模块化的发展趋势。同时该计时器的时间设定操作简单,功能齐全,体积小,易于方便携带等优点。能广泛应用于学校,篮球俱乐部,体育馆或者小团体作为赛程的计时。

    3cdd90ac60977b0364b2caed00ba16e4.gif

    无论您远走何方

    请点击蓝字,想念我们

    40a92e01f380f8c5d4620b194c4c8621.png

    智能创新俱乐部(IIC)

    eade3e0d5a1c8ed926b5ec1797c1d55e.png

    关注我们

    请相信

    我们一直都在

    展开全文
  • 在51单片机上设计一个连续的计时器(对时、分、秒累计,计秒的范围为0~60,计分的范围为1~60,计时的范围为0~9999),并在数码管上采用计时单元和显示缓冲单元分开显示.用C语言编写
  • 计时器2、计时器中断 1S 闪光灯 1.计时器 因为51单片机的机器周期计算公式是12/晶振频率MHz,若晶振为12MHz,则机器周期就是12/(12×10^6)=1us,也就是说计数器没1us计数一次。 一般来说,12MHz晶振下,16位定时器...

    1.计时器

    因为51单片机的机器周期计算公式是12/晶振频率MHz,若晶振为12MHz,则机器周期就是12/(12×10^6)=1us,也就是说计数器没1us计数一次。
    一般来说,12MHz晶振下,16位定时器满计数是65536次,每次1us,最大就能计时65.536ms,则65536减去多少就是定时多少,如(65536-X)/256,就是定时X微秒。
    那么T=1/(X/12)就是一个机器周期 ,(65536-Z(初值))*T就是定时的时间
    比如是12M的晶振那么 设置TMOD=0x01, 计时器模式

    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;就是设置了50ms的定时

    2、计时器中断 1S 闪光灯

    我们使用计时器中断来设置 1S 闪光灯

    #include <reg52.h> //51头文件
    
    sbit LED1 = P1^0; //位定义 LED1硬件接口
    
    int num = 0;
    //中断服务特殊功能寄存器配置
    void init()
    {
    	
    	TMOD = 0x01;  //定时器16为计数工作模式
    	TH0 =(65536-50000)/256;;
    	TL0 =(65536-50000)%256; //50ms  定时
    	ET0 = 1; //开定时器0中断
    	TR0 = 1;//启动定时器0
    	EA = 1;	//开总中断
    }
    //定时器0中断服务程序 不用软件延时
    void timer0() interrupt 1
    {
    	TH0 =(65536-50000)/256;;
    	TL0 =(65536-50000)%256; //50ms  定时  模式1非自动重装需要手动重装再次定时
    
    	num++;
    	if (num == 20) { // 20 * 50ms 为 1s
        	num = 0;
    	   LED1 = ~LED1;
    	}
    }
    
    void main()
    {
    	LED1 = 0;  //拉低IO点亮LED1
    	init();//初始化定时器0
    	while(1);//程序停留	
    }
    

    在这里插入图片描述

    文档参考:
    关于51单片机的定时器T0、T1总结
    http://www.51hei.com/bbs/dpj-103111-1.html

    展开全文
  • 重邮课程设计你懂得.....芯片后三位50E
  • 本资源仅适用于 51单片机的定时器初值设定
  • 想做上位机吗,想做建来的职场高人吗,想花更少的精力学习更多的东西吗,来这里看一看吧
  • 基于89c52的计时器,主要用到计时计数中断,提供详细的编程,仅供学习参考
  • ;name: ELECTRONIC CLOCK data segment mess1 db 'Press C or c to correct the time',0ah,0dh db 'Press R or r to SET the RING time',0ah,0dh db 'Press ESC button to exit',0ah,0dh,'$' ...
  • 程序效果:利用单片机的定时/计数器设计一个计时器,按key0后启动,要求精确显示到百分之一秒。发挥部分:1:定时结束后有提示音报警,并可重新定时2:定时时间可设置,最多30s3:定时过程中可暂停4:按下key1暂停...
  • 要求从P1.1引脚输出1000HZ方波,晶振频率12MHZ,试设计程序.采用查询方式..采用汇编及C语言两种方式,在proteus中仿真实现..
  • #include &lt;reg51.h&gt;#include &lt;intrins.h&gt;unsigned char code LED7Code[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,//0-9字模0x88,0x83,0xc6,0xa1,0x86,0x8e};...
  • 满意答案xiongwei2301推荐于 2017.11.25TMOD:定时器方式寄存器TH0:定时器0寄存器高位TL0:定时器0寄存器低位ORG 0000HSJMP STAORG 000BHLJMP T0ISRORG 0050HSTA:MOV SP,#5FHMOV TMOD,#11HMOV TL0,#LOW(65536-50000)...
  • 单片机中一个程序的运行过程分为取指令,分析指令和执行指令几个步骤。取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。分析指令阶段的任务是:将指令寄存器中的指令操作码取出后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,129
精华内容 451
关键字:

单片机计时器