zoukankan      html  css  js  c++  java
  • 蓝桥杯单片机类准备day2之复习+读基本例程

    仍然用到hc573锁存器的8个led灯灯组

    流水灯的主程序(延时函数省略)

    void main(void)
    {
        unsigned char i;
     
     cls_buzz();
       
        while(1)
        {
      for(i=0; i<8; i++)
      {
       P2 = ((P2&0x1f)|0x80);
       P0 = ~(0x01<<i);  
       P2 &= 0x1f;
       delay();
      }
        }
    }

    使用对整个端口赋值。

    考虑到Y4C,选择让锁存器工作的方式(与P2口高三位有关)

    可以单个io口定义,如:

    HC573_C = P2^7;      HC573_B=P2^6;     HC573_A=P2^5;

    HC573_ C = 1 ;       HC573_B = 0;   HC573_A   =  0;

    这样可以选通Y4C=1;

    跳帽决定单片机IO口是否拓展,若WR接地,P2口没有确定输出的情况,则会使或非门输出0;为了拓展功能,我们肯定要WR接P36哇。

    51单片机默认输出高电平。WR端默认高电平。

     蜂鸣器与继电器的控制:

     

     需要注意与这两个连接的不再是锁存器了,中间多了一个ULN2003。

    这个芯片起到一个驱动的作用,可以输出高电流。

     

     驱动电流500mA,最大600mA。用于驱动继电器和蜂鸣器。

    50V电压,且输入与输出电平相反。【输入输出是 非门】

    程序的写法可以参考驱动LED灯灯组。

    锁存器受Y5C控制,继电器对应P04,蜂鸣器对应P06。驱动着两个器件需要低电平。则需要对应的P0口输出高电平。

    可以采用

     P2 = ((P2&0x1f)|0xa0);          //驱动继电器
       P0 = 0x10; 
       P2 &= 0x1f;                         //关掉实时锁存,避免改变工作状态

    驱动蜂鸣器:

     P2 = ((P2&0x1f)|0xa0);          //驱动蜂鸣器
       P0 = 0x40; 
       P2 &= 0x1f;                         //关掉实时锁存,避免改变工作状态

  • 相关阅读:
    HDU 2045 不容易系列之(3)—— LELE的RPG难题 (递推)
    HDU 2050 折线分割平面 (递推)
    HDU 5441 Travel (并查集+数学+计数)
    HDU 4597 Play Game (DP,记忆化搜索,博弈)
    HDU 4599 Dice (概率DP+数学+快速幂)
    HDU 4497 GCD and LCM (数学,质数分解)
    UVa 1312 Cricket Field (枚举+离散化)
    HDU 4499 Cannon (暴力求解)
    HDU 4496 D-City (并查集)
    javascript你不知道的知识点
  • 原文地址:https://www.cnblogs.com/page71/p/13518565.html
Copyright © 2011-2022 走看看