02-蜂鸣器与继电器的基本控制
1.01-LED指示灯的基本控制
2.02-蜂鸣器与继电器的基本控制
3.05-独立按键的基本操作与扩展应用4.04-共阳数码管的动态显示5.03-共阳极数码管的静态显示6.06-矩阵键盘的基本操作7.07-中断系统与外部中断应用8.08-定时器的基本原理与应用9.09-定时器的进阶综合案例10.10-PWM脉宽调制信号的发生与控制11.11-串口通信的基本原理与应用12.12-串行接口的进阶应用13.13-io扩展技术与存储器映射扩展14.14-基础技能综合实训案例15.15-DS18B20温度传感器的基本应用16.16-DS1302的基本应用17.17-基于NE555的信号发生与频率测量18.18-PCF8591模块的基本使用19.19-AT24C02的基本应用由原理图可知:
copy#include <REGX52.H>
void Delay(unsigned int t) {
while(t--);
while(t--);
}
// 74HC138
void _74HC138(unsigned char n) {
switch(n) { // 0001 1111
case 4: // LED使能
P2 = (P2 & 0x1f) | 0x80; // Y4 == 1000 0000
break;
case 5: // 蜂鸣器和继电器 // Y5 == 1010 0000
P2 = (P2 & 0x1f) | 0xa0;
break;
case 6: // 数码管位选 Y6 == 1100 0000
P2 = (P2 & 0x1f) | 0xc0;
break;
case 7: // 数码管段选
P2 = (P2 & 0x1f) | 0xe0; // Y7 == 1110 0000
break;
case 0:
P2 = (P2 & 0x1f) | 0x00;
break;
}
}
void SystemInit(void) {
// 关闭蜂鸣器和继电器
_74HC138(5);
P0 = 0x00;
// 保持LED为初始状态
_74HC138(4);
P0 = 0xff; // LED低电平点亮
_74HC138(0);
}
void check_Led(void) {
unsigned char i;
_74HC138(4);
for(i = 0; i < 8;i++) { // 1111 1111 << i 1111 1110
P0 = 0xff << i;
Delay(10000);
}
for(i = 0; i < 8;i++) { // ~(1111 1111) << i ===> 1111 1110
P0 = ~(0xff << i);
Delay(10000);
}
_74HC138(0);
}
void cleak_Display(void) {
unsigned char i;
_74HC138(7);
P0 = 0x00;
for(i =0;i<8;i++) {
_74HC138(6); // 1111 1110
P0 = ~(0xfe << i); // 0000 0001 0000 0011
Delay(60000);
}
for(i = 0; i<8;i++) {
_74HC138(6); //
P0 = 0xfe << i; // 1111 1110
Delay(60000);
}
_74HC138(0);
}
// channel 为74HC138 使能端 dat 为接收的数据
void OutputP0(unsigned char channel,unsigned char dat) {
_74HC138(channel);
P0 = dat;
}
void main() {
unsigned char i;
//SystemInit();
//check_Led();
//cleak_Display();
SystemInit();
// LED闪烁三遍熄灭
//_74HC138(4);
for(i=0;i<3;i++) {
OutputP0(4,0x00);
Delay(60000);
OutputP0(4,0xff);
Delay(60000);
}
//依次点亮LED
//_74HC138(4);
for(i = 0;i<8;i++) {
OutputP0(4,(0xfe<<i));
//P0 = 0Xfe << i; //
Delay(60000);
}
// 继电器吸合
OutputP0(5,0x10);
Delay(20000);
//P0 = 0x00;
//Delay(20000);
// 一次循环熄灭LED
//_74HC138(4);
for(i = 0;i<8;i++) {
OutputP0(4,~(0xfe<<i));
//P0 = ~(0Xfe << i);
Delay(60000);
}
// 蜂鸣器鸣叫
OutputP0(5,0x40);
Delay(20000);
//P0 = 0x00;
//Delay(20000);
//_74HC138(0);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步