用15单片机点亮LED
硬件电路
学习该课程之前,你应该已经掌握了用51单片机点亮LED的基本技巧
下面是和点亮一个LED相关的硬件电路,可以看到主要有四个部分
- 左侧:IAP15F2K61S2单片机
- 右上:74HC573锁存器
- 中下:74HC138译码器
- 右下:或非门
图中标注了点亮第一个LED需要的电平,红色为1,蓝色为0。
要想第一个LED亮<==74HC573锁存器的Q1应为0<==74HC573锁存器的OE_=0,LE = 1时,让D1 = 0。
代码1:因此点亮一个LED灯的代码如下
#include <STC15F2K60S2.h> //这里不需要再定义P00,因为15芯片在在头文件里都定义了 void main() { P00 = 0; P25 = 0; P26 =0; P27 = 1; while(1); }
点击后,编译,然后把板子连上电脑,按下图烧录程序
运行后灯会亮,蜂鸣器可能也会响,这是因为蜂鸣器是默认打开的,先不用管
点击显示图片
代码2:更紧凑的写法
#include <STC15F2K60S2.h> void main() { P00 = 0; P2 = (P2&0x1f)|0x80;//0x1f: 0001 1111; //P2&0x1f: &是逻辑与,结果使得P2的后5位不变,前三位变0; //(P2&0x1f)|0x80: |是逻辑或,(P2&0x1f)的前三位变为100 while(1); }
在proteus中仿真实现
proteus中没有15芯片,因此一般用我们更熟悉的STC89C52代替,两个的功能基本一致,但也略有不同
一个区别是51芯片的头文件reg52.h中没有对P00等引脚具体定义,需要在程序中再具体定义,如下所示
#include <reg52.h> sbit P00 = P0^0; sbit P25 = P2^5; sbit P26 = P2^6; sbit P27 = P2^7; sbit P36 = P3^6; void main() { P00 = 0; //下面的三句目的是让Y4引脚输出为低电平 P25 = 0; P26 = 0; P27 = 1; while(1); }============================找指导老师布置任务吧==============================