page71

导航

蓝桥杯单片机类准备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;                         //关掉实时锁存,避免改变工作状态

posted on 2020-08-17 16:50  page71  阅读(204)  评论(0编辑  收藏  举报