(
课件网) 实例15 倒车警示器 《单片机基础与应用(C语言版)》 高等教育-出卷网- PART 01 一、任务导入 任务要求 要求用一个开关做为“倒车”挡控制开关,2个黄色的LED做为汽车尾部倒车警示灯,控制电路中再接入一个蜂鸣器。当“倒车”开关闭合时,汽车发出倒车警示信号———通过蜂鸣器发出警示音,并且2个LED不停地闪烁发出黄色警示灯光。 PART 02 二、任务分析 使用单片机做为控制器实现倒车警示器设计。将“倒车”挡控制开关SW接入P0.0引脚,2个黄色LED1、LED2分别接入P1.1、P1.2引脚,一个蜂鸣器 BEEP接入P1.0引脚。倒车时,开关SW闭合(ON),LED1和LED2闪烁,BEEP发声。 PART 03 三、硬件电路 倒车警示器单片机控制电路 PART 04 四、控制程序 倒车警示灯主函数流程图 beep_alarm()函数流程图 程序演示 //程序:ex17.c //功能:倒车警示器控制程序 #include
//包含头文件REGX51.H,定义了51单片机的所有SFR #define ON 0 //定义符号常量ON #define OFF 1 //定义符号常量OFF sbit BEEP=P1^0; //定义位变量BEEP,蜂鸣器BEEP接P1.0引脚 sbit LED1=P1^1; //定义位变量LED1,警示灯LED1接P1.1引脚 sbit LED2=P1^2; //定义位变量LED2,警示灯LED2接P1.2引脚 sbit SW=P0^0; //定义位变量SW,倒车开关SW接P0.0引脚 //函数名:delay //函数功能:实现软件延时 //形式参数:无符号整型变量i,控制空循环的循环次数 //返回值:无 void delay(unsigned int i) { while(i--); //i次空操作 } 程序演示 //函数名:light_alarm //函数功能:实现倒车光警示 //形式参数:无 //返回值:无 void light_alarm() { LED1=~LED1; //LED1闪动 LED2=~LED2; //LED2闪动 } //函数名:beep_alarm //函数功能:实现蜂鸣器发“嘀嘀……”声警示 //形式参数:无 //返回值:无 void beep_alarm() { unsigned int i; for(i=0;i<100;i++) { BEEP=~BEEP; //BEEP发声 delay(100); } for(i=0;i<100;i++) { BEEP=OFF; //BEEP不发声 delay(100); } } 程序演示 void main() //主函数 { while(1) //无限循环 { if(SW==ON) //判断倒车开关SW是不是闭合 { light_alarm(); //倒车状态,倒车灯闪烁 beep_alarm(); //倒车状态,倒车蜂鸣器发声 } else { LED1=OFF; //非倒车状态,倒车灯LED1熄灭 LED2=OFF; //非倒车状态,倒车灯LED2熄灭 BEEP=OFF; //非倒车状态,蜂鸣器BEEP关闭 } } } 感谢您的观看 Thanks for your attention. (课件网) 实例16 LED循环闪烁控制 《单片机基础与应用(C语言版)》 高等教育-出卷网- 一、任务导入 任务要求 用单片机控制8个LED循环闪烁,第1个LED点亮0.5s熄灭1s,闪动10次;然后,第2个LED点亮0.5s熄灭1s,闪动10次;循环8次,第8个LED闪动10次结束,再从第1个开始,如此循环下去。假定晶振频率为12MHz。 二、任务分析 这里采用定时器/计数器来完成0.5 s和1s精确定时,是用硬件加1计数器直接对机器周期进行计数。 三、硬件电路 单片机控制8个LED电路 四、控制程序 程序演示 //程序:ex18.c //功能:8个LED循环闪烁控制程序 #include //包含头文件REGX51.H,定义了51单片机的所有SFR #include //包含头文件INTRINS.h,定义了移位函数 //函数名:time50ms //函数功能:在T1工作方式1下定时50ms,采用查询方式实现 //形式参数:无符号整型变量i,控制定时时间,i*50ms //返回值:无 void time50ms(unsigned char i) { unsigned char k; for(k=0;k