任务2-3声光报警器的实现
任务介绍任务:实现一个开关控制1个LED发光二极管和1个有源蜂鸣器。初始状态下,开关断开,LED灯熄灭,蜂鸣器不发声;当开关闭合时,LED灯闪烁并且蜂鸣器滴滴鸣叫,实现声光报警。
任务软件设计开关SW模块LED灯器件名称功能分配I/O口开关SW输入P3.2发光二极管LED输出P1.0蜂鸣器输出P3.6蜂鸣器
任务硬件设计开关控制多灯闪烁仿真器件清单序号名称Proteus中元件名参数数量1单片机STC15W4K32S412LED发光二极管LED-BIGY13PNP三极管2N70314有源蜂鸣器BUZZER15电阻RES1kΩ26电阻RES10kΩ17开关SWITCH1
任务硬件设计
任务软件设计01开始P1.0和P3.6跟随P3.2口的状态值P1.0和P3.6口置1延时延时
任务软件设计#includestc15.h//包含stc15头文件voiddelay_ms(unsignedintms);//函数声明#defineMAIN_Fosc//定时主时钟voidmain() //主函数 {bitsta_sw;P1M0=0x00;P1M1=0x00;P3M0=0x00;P3M1=0x00;}while(1){sta_sw=S1; }D1=sta_sw;BUZZ=sta_sw; delay_ms(500);sbitS1=P3^2;sbitD1=P1^0;sbitBUZZ=P3^6;开始P1.0和P3.6跟随P3.2口的状态值P1.0和P3.6口置1延时延时D1=1;BUZZ=1; delay_ms(500);
任务软件设计#includestc15.h//包含stc15头文件voiddelay_ms(unsignedintms);//函数声明#defineMAIN_Fosc//定时主时钟sbitS1=P3^2;sbitD1=P1^0;sbitBUZZ=P3^6;voidmain() //主函数 {bitsta_sw;P1M0=0x00;P1M1=0x00;P3M0=0x00;P3M1=0x00;while(1){ sta_sw=S1; D1=sta_sw;BUZZ=sta_sw; delay_ms(500); D1=1;BUZZ=1; delay_ms(500); }}//延时ms*1毫秒函数voiddelay_ms(unsignedintms){unsignedinti;do{ i=MAIN_Fosc/13000; while(--i); }while(--ms);}
软硬件调试
STC15W4KS32单片机的并行I/O口开关SW模块LED灯模块器件引脚输入开关SWP3.2输出LED发光二极管P1.0输出蜂鸣器P3.6I/O位名称P0P0.0~P0.7P1P1.0~P1.7P2P2.0~P2.7P3P3.0~P3.7P4P4.0~P4.7P5P5.3\P5.4蜂鸣器
STC15W4KS32单片机的并行I/O口PnM1[7:0](n=0,1,2,3,4,5)PnM0[7:0](n=0,1,2,3,4,5)工作模式00准双向口01推挽输出10高阻输入11开漏输出I/O口寄存器名称P0P0M1、P0M0P1P1M1、P1M0P2P2M1、P2M0P3P3M1、P3M0P4P4M1、P4M0P5P5M1、P5M0
STC15W4KS32单片机的并行I/O口工作模式描述准双向口传统8051单片机I/O口模式,灌电流可达20mA,拉电流为150uA~270uA。推挽输出强上拉输出,拉电流可达20mA,需外接限流电阻。高阻输入电流既不能流入也不能流出。开漏输出内部上拉电阻断开,开漏模式既可读外部状态也可对外输出(高电平或低电平)。如果要正确读外部状态或需要对外输出高电平,需要外加上拉电阻,否则读不到外部状态,也对外输不出高电平。
STC15W4KS32单片机的并行I/O口配置位配置值工作模式P0M1.7P0M0.700P0.7准双向口P0M1.6P0M0.610P0.6高阻输入P0M1.5P0M0.501P0.5推挽输出P0M1.4P0M0.411P0.4开漏输出P0M1.3(2/1/0)P0M0.3(2/1/0)00P0.3~P