由于开发板上电后蜂鸣器会鸣叫,继电器会干扰系统的正常运行,所以首先我们要关闭蜂鸣器和继电器。 Y4、Y5被74HC138译码器进行控制. 74HC138译码器的原理为:
| P27 | P26 | P27 | Y7 | Y6 | Y5 | Y4 | Y3 | Y2 | Y1 | Y0 |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
要让Y5制1,就要使得高三位P2.7、P2.6、P2.5改成为101:
//关闭蜂鸣器、继电器(关闭外设)
void cls_buzz(void)
{
P2 = (P2&0x1F|0xA0); //打开锁存器,需要高三位P2.7、P2.6、P2.5改成为101,最后的结果是1011 1111
P0 = 0x00; //P0^6 = 0;蜂鸣器关闭以及P0^4 = 0;继电器关闭
P2 &= 0x1F; //关闭锁存器 0001 1111
}
接着就是LED的亮灭。 要让Y4制1,就要使得高三位P2.7、P2.6、P2.5改成为100:
void main(void)
{
cls_buzz();
while(1)
{
P2 = ((P2&0x1f)|0x80); //打开锁存器,高三位为100,1001 1111
P0 = 0xff; //LED 关 1111 1111
P2 &= 0x1f;
P2 = ((P2&0x1f)|0x80); //高三位为100,1001 1111
P0 = 0x00; //LED 开 0000 0000
P2 &= 0x1f;
}
}