精华内容
下载资源
问答
  • 877936419 13823726765 深圳职业技术学院 王静霞 教授 单片机时钟电路 单片机应用技术适用于应用型...单片机时钟电路 单片机时钟节拍 晶振的振荡脉冲信号 fosc Tosc=1/ fosc Tosc 把振荡脉冲的周期定义节拍用P表示 状
  •  在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端XTAL1,输出端XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部...
  • 单片机时钟电路

    2013-05-02 18:08:38
    单片机时钟电路
  • 作为单片机研发设计的项目,它的最小电路工作系统包含电源电路、复位电路时钟频率电路;其中电源电路与复位电路,相信工程师都非常容易理解与设计。然而时钟频率电路,由于不同的开发项目功能需求不一样,设计的...
  • 作为单片机研发设计的项目,它的最小电路工作系统包含电源电路、复位电路时钟频率电路;其中电源电路与复位电路,相信工程师都非常容易理解与设计。然而时钟频率电路,由于不同的开发项目功能需求不一样,设计的...
  • 在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端XTAL1,输出端XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部...
  • PIC32MX单片机的无同步时钟电路HBS通信设计.pdf
  • 本文主要51单片机数码管动态时钟电路图,下面一起来学习一下
  • 单片机控制时钟电路设计用单片机控制的时钟电路
  • 本文内容是关于单片机时钟电路程序的设计。
  • 本文主要讲了单片机时钟电路的作用,下面一起来学习一下
  • 在MCS-51单片机片内有一个高增益的反相放大器,反相放大器的输入端XTAL1,输出端XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式。根据硬件电路的不同,单片机的时钟连接方式可分为内部...
  • 一般的单片机具备两个外围电路:时钟电路和复位电路 时钟电路 主要由一个晶振和两个电容组成。晶振的大小决定这单片机的时钟信号 (按我的理解就是:单片机编程时,同一个延时函数,晶振决定着它们的延时时间...

    一般的单片机都要具备两个外围电路:时钟电路和复位电路

    时钟电路
    主要由一个晶振和两个电容组成。晶振的大小决定这单片机的时钟信号
    (按我的理解就是:单片机编程时,同一个延时函数,晶振决定着它们的延时时间长短)

    复位电路
    分为上电复位和按键复位
    主要由一个电阻、一个电容,如果按键复位的话,就再加个微动开关就成。都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。

    至于怎么连接,我就直接上图(仿真软件)
    在这里插入图片描述
    连接着单片机的XTAL1和XTAL2的是时钟电路,单片机实物两个引脚是在左侧第18和19两个引脚(左下倒数第2和第3)。

    连接着RST的是复位电路(上图是按键复位,如果上电复位可以直接把按键去掉就成),实物中RST在左侧第10个引脚。

    以上两个电路在任何项目中最好都接上。

    展开全文
  • 本文主要对51单片机时钟电路原理图进行了解析,下面一起来学习一下
  • 本文主要对单片机时钟电路原理图进行了解析,希望对你的学习有所帮助。
  • 基于51单片机的数码管显示时钟电路图与c程序 有原理图和PCB 源代码 调试成功,保证好用。
  • 该资源是用DXP画的基于单片机的电子时钟电路
  • 单片机时钟电路.rar

    2009-09-21 00:08:53
    详细单片机时钟电路 各种精确算法 rar
  • 汇编的时钟、直流稳压电源的设计、时钟电路.Ddb、Backup of 165.PCB、主控板.Ddb、计数器
  • 基于单片机时钟电路设计.pdf
  • 51单片机时钟电路详细资料说明
  • 51单片机八位数码管时钟电路仿真

    千次阅读 多人点赞 2020-07-03 10:43:38
    器件选型有:AT89C51模块,八位阳极数码管显示模块,两个独立按键模块,还有P1口作为I/O口需要外加上拉电阻的电阻排,由于仿真的单片机模块内有时钟电路以及复位电路,这里省略了。 2、硬件设计与分析 电路原理图如...

    电路图文件以及详细视频介绍请到B站评论区拿取
    https://www.bilibili.com/video/BV1Ht4y1975h
    仿真电路图
    在这里插入图片描述
    系统设计
    1、方案(系统结构框图、器件选型)

    在这里插入图片描述

    器件选型有:AT89C51模块,八位阳极数码管显示模块,两个独立按键模块,还有P1口作为I/O口需要外加上拉电阻的电阻排,由于仿真的单片机模块内有时钟电路以及复位电路,这里省略了。

    2、硬件设计与分析

    在这里插入图片描述

    电路原理图如图所示,P0口作为I/O口时需要外加上拉电阻,外接了一个电阻排,P2口接两个锁存器,分别控制数码管的位选和段选,给它的使能端口LE送高电平就开始工作,还要注意数码管采用的是共阴极接法。
    这两个锁存器的工作原理是通过单片机控制。
    先打开一个锁存器,选择一个位码,然后关闭,再打开另一个锁存器,选择一个要显示的断码, 采用独立按键接口电路控制8位共阴极数码管,采用中断方式K1按下调时,K2按下时调分,数码管初始显示时间为08-30-59.

    3、软件设计与分析(流程图、代码)
    流程图如下:

    下面是代码:

    #include <reg51.h>
    sbit key1 = P1^0;
    bit flag1s = 0;
    bit KeySta = 1;
    unsigned char hour = 8;
    unsigned char minute = 31;
    unsigned char second = 59;
    unsigned char mode = 0;
    void FreshTime();
    void TimeInit();
    void IntInit();
    void InitLedBuff();
    void keyscan();
      
    unsigned char code LedChar[] = {  //共阴数码管显示字符转换表
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x00};
    unsigned char LedBuff[8] = {  //数码管显示缓冲区
        0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
    
    void main()
    {
       
        TimeInit();
        IntInit();
        InitLedBuff();
      while(1)//显示内容处理
      {
      
       if(flag1s&&!mode) //时间显示模式
        {
          flag1s = 0;
    	  	FreshTime();
        }
         else if(mode == 1)  //校准分钟
        {
          LedBuff[0] = 17;
          LedBuff[1] = 17;
          LedBuff[4] = 17;
          LedBuff[5] = 17;//不显示
    	  LedBuff[6] = 17;
          LedBuff[7] = 17;
          LedBuff[2] = minute/10;
          LedBuff[3] = minute%10;
        }
        else if(mode == 2)  //校准小时
        {
          LedBuff[2] = 17;
          LedBuff[3] = 17;
          LedBuff[4] = 17;
          LedBuff[5] = 17;//不显示
    	   LedBuff[6] = 17;
          LedBuff[7] = 17;
          LedBuff[0] = hour/10;
          LedBuff[1] = hour%10;
        }
        else if(mode == 3)  //校准完成重新显示
        {
          InitLedBuff();
          mode = 0;
        }
        keyscan();
      }
    }
    
    void InitLedBuff()//初始化时间到显示缓冲区
    {
      LedBuff[0] = hour/10;
      LedBuff[1] = hour%10;
      LedBuff[2] = minute/10;
      LedBuff[3] = minute%10;
      LedBuff[4] = second/10;
      LedBuff[5] = second%10;
    }
    void FreshTime()//刷新时间到显示缓冲区
    {
      second++;
      if(second == 60)//进位
      {
        second = 0;
        minute++;
        
        if(minute==60)//进位
        {
          minute=0;//上次分钟会显示到60,改进后我分钟的显示移动到清零之后,这样就不会出现分钟显示到60的情况
          LedBuff[2] = minute/10;
          LedBuff[3] = minute%10;
          hour++;
          if(hour == 24)
            hour = 0;
          LedBuff[0] = hour/10;
          LedBuff[1] = hour%10;
        }  
      }
      LedBuff[4] = second/10;
      LedBuff[5] = second%10;
    }
    
    void TimeInit()//定时器初始化
    {
      TMOD = 0X11;    //设置定时器为模式1
      TL0 = 0xB0; 
      TH0 = 0x3C;     //定时初值 50ms
      TL1 = 0x18;		//
    TH1 = 0xFC;		//定时初值 1ms
      TR0 = 1;    //定时器0开始计时
      TR1 = 1;    //定时器1开始计时
      ET1 = 1;    //使能定时器1
      ET0 = 1;    //使能定时器0
      PT0 = 1;    //提高计时准确性,提高定时器0中断优先级
      EA = 1;     //打开总中断
    }
    void IntInit()//外部中断初始化
    {
      IT0 = 1;     //下降沿触发
      EX0 = 1;    //使能外部中断0
    }
    
    void keyscan() //按键扫描及处理
    {
      static bit backup = 1;
      if (KeySta != backup)  //当前值与前次值不相等说明此时按键有动作
      {
        if (backup == 0)   //如果前次值为0,则说明当前是弹起动作
        {
          if(mode == 1)   //校准分钟时,分钟加一
          {
            minute++;
            if(minute==60)
              minute = 0;
          }
          else if(mode == 2)    //校准小时,小时加一
          {
            hour++;
            if(hour==24)
              hour = 0;
          }
        }
        backup = KeySta;   //更新备份为当前值,以备进行下次比较
      }
    }
    void Int0() interrupt 0 
    {
      mode++;
      if(mode == 4)
      {
        mode = 0;
      }
    }
    void Ledfresh() //数码管显示刷新
    {
      static unsigned char i = 0;
      switch(i)
      {
        case 0 : P2 = ~(0x01<<i);P0 = LedChar[LedBuff[0]];i++;break;
        case 1 : P2 = ~(0x01<<i);P0 = LedChar[LedBuff[1]];i++;break;
        case 2 : P2 = ~(0x01<<i);P0 = 0x40;i++;break;//时分间隔线
        case 3 : P2 = ~(0x01<<i);P0 = LedChar[LedBuff[2]];i++;break;
        case 4 : P2 = ~(0x01<<i);P0 = LedChar[LedBuff[3]];i++;break;
        case 5 : P2 = ~(0x01<<i);P0 = 0x40;i++;break;//分秒间隔线
        case 6 : P2 = ~(0x01<<i);P0 = LedChar[LedBuff[4]];i++;break;
        case 7 : P2 = ~(0x01<<i);P0 = LedChar[LedBuff[5]];i=0;break;
      }
    }
    void Time0() interrupt 1 // 50ms 
    {
      static unsigned char n = 0;
      TL0 = 0xB0;
      TH0 = 0x3C;
      n++;
      if(n==20)
      {
        n=0;
        flag1s = 1;//1s标志位
      }
    }
    
    void Time1() interrupt 3  // 1ms
    {
      static unsigned char keybuff = 0xff;
      TL1 = 0x18;		//
    	TH1 = 0xFC;		//定时初值 1ms
      Ledfresh();
      keybuff = (keybuff<<1)|key1;
      if (keybuff == 0x00)
      {   //连续8次扫描值都为0,即16ms内都只检测到按下状态时,可认为按键已按下
          KeySta = 0;
      }
      else if (keybuff == 0xFF)
      {   //连续8次扫描值都为1,即16ms内都只检测到弹起状态时,可认为按键已弹起
          KeySta = 1;
      }
      else
      {}  //其它情况则说明按键状态尚未稳定,则不对KeySta变量值进行更新
    }
    //电路图文件以及详细视频介绍请到B站评论区拿取https://www.bilibili.com/video/BV1Ht4y1975h``
    
    展开全文
  • 一个基于51单片机时钟电路设计源代码,还包括了电路图、PCB、源程序
  • 参考资料\电子时钟-《基于单片机的多功能时钟控制电路

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,699
精华内容 6,679
关键字:

单片机为什么要时钟电路