1项目一、流水灯的设计任务1流水灯的设计(软件定时)任务2流水灯的设计(硬件定时)2任务1流水灯的设计(软件定时)★一、系统仿真★二、系统设计思路★三、拓展训练——汽车转向灯控制3一、系统仿真1、系统设计要求及效果演示利用8个发光二极管设计流水灯,要求小灯从左到右依次循环闪烁。2、硬件电路连接3、程序编写4、系统仿真41、发光二极管的控制原理——单向导通性低电平点亮发光二极管二、系统设计思路52、准备工作——单片机最小系统电路3、系统硬件电路系统硬件电路64、程序设计(1)流程图(2)程序编写开始第1个小灯闪烁第2个小灯闪烁第3个小灯闪烁第4个小灯闪烁第5个小灯闪烁第6个小灯闪烁第7个小灯闪烁第8个小灯闪烁第x个小灯亮延时第x个小灯灭延时#includeat89x51.hvoidmain(){unsignedinta;P2=0xff;while(1){P2_0=0;for(a=0;a10000;a++);P2_0=1;for(a=0;a10000;a++);………..P2_7=0;for(a=0;a10000;a++);P2_7=1;for(a=0;a10000;a++);}}7开始第1个小灯闪烁第2个小灯闪烁第3个小灯闪烁第4个小灯闪烁第5个小灯闪烁第6个小灯闪烁第7个小灯闪烁第8个小灯闪烁第x个小灯亮延时第x个小灯灭延时voiddelay(unsignedintz){unsignedinta;for(a=0;az;a++);}voidmain(){unsignedinta;P2=0xff;while(1){P2_0=0;delay(10000);P2_0=1;delay(10000);………..P2_7=0;delay(10000);P2_7=1;delay(10000);}}(3)简化18(3)简化2开始第1个小灯闪烁第2个小灯闪烁第3个小灯闪烁第4个小灯闪烁第5个小灯闪烁第6个小灯闪烁第7个小灯闪烁第8个小灯闪烁第x个小灯亮延时第x个小灯灭延时重复操作部分P2=1111111011111101111110111111011111101111110111111011111101111111相当于0左移但左移时空缺位补09(3)简化2开始第1个小灯闪烁第2个小灯闪烁第3个小灯闪烁第4个小灯闪烁第5个小灯闪烁第6个小灯闪烁第7个小灯闪烁第8个小灯闪烁第x个小灯亮延时第x个小灯灭延时重复操作部分P2=0000000100000010000001000000100000010000001000000100000010000000硬件电路修改为:发光二极管高电平点亮。初始值P2=0x01下个灯点亮即左移1位10#includeAT89X51.hvoiddelay(unsignedintz);voidmain(){while(1){P2=0X01;delay(10000);do{P2=P21;delay(10000);}while(P2!=0x00);}}P2!=00?假(0)真(非0)开始设置初始值P2=0X01延时P2值左移1位延时(3)简化2P2=100000000000000011#includeAT89X51.hvoiddelay(unsignedintz);voidmain(){while(1){P2=0X01;for(i=1;i8;i++){delay(10000);P2=P21;}delay(10000);}}i8?假(0)真(非0)开始设置初始值P2=0X01,i=1延时P2值左移1位计数变量i++(3)简化312三、拓展训练1——扬声器控制1、任务要求编程产生方波,驱动扬声器发出蜂鸣声,并粗略计算波形频率。13三、拓展训练1——扬声器控制2、硬件电路设计扬声器控制电路示波器检查波形14三、拓展训练1——扬声器控制3、程序设计#includeAT89X51.htypedefunsignedintUINT;voiddelay(UINTz){UINTi;for(i=0;iz;i++);}main(){while(1){P2_0=~P2_0;delay(10000);}}开始P2_0=0延时P2_0=1延时15三、拓展训练1——扬声器控制4、系统仿真50ms约4.8格频率计算:T=4.8*50ms=0.24sf=1/T=4.2Hz16三、拓展训练2——汽车转向灯控制1、任务要求汽车转向灯控制系统如下表所示,驾驶员命令由按键K1、K2发出左、右转命令。转向灯显示状态驾驶员命令按键模拟左转灯右转灯故障灯灭灭灭正常行进K1、K2均不按闪烁灭灭左转K1按下灭闪烁灭右转K2按下灭灭闪烁故障命令K1、K2均按下17三、拓展训练2——汽车转向灯控制2、硬件电路设计汽车转向灯由2个发光二极管模拟,驾驶员发出左、右转命令由按键K1、K2模拟,出现故障由小灯闪烁提示。183、程序设计(1)k1按下?假真开始故障右转k2按下?k2按下?真真假左转假正常K1键不按下k1=1K1键按下k1=0K1键P2_1左转灯(低电平点亮)K2键P2_0右转灯sbitk1=P3^3;//左键sbitk2=P3^2;//右键sbitzuo=P2^1;//左转灯sbityou=P2^0;//右转灯main(){inti;while(1){if(k1==0){if(k2==0){zuo=1;you=1;for(i=0;i6;i++){P2_7=~P2_7;delay(10000);}}else{you=1;P2_7=1;for(i=0;i6;i++){zuo=~zuo;delay(10000);}}}193、程序设计(1)三、拓展训练2——汽车转向灯控制k1按下?假真开始故障右转k2按下?k2按下?真真假左转假正常else{if(k2==0){zuo=1;P2_7=1;for(i=0;i6;i++){you=~you;delay(10000);}}else{zuo=1;P2_7=1;you=1;}}}}203、程序设计(2)sbitk1=P3^3;//左键sbitk2=P3^2;//右键sbitzuo=P2^1;//左转灯sbityou=P2^0;//右转灯main(){inti;while(1){if(k1==1&&k2==1){zuo=1;you=1;P2_7=1;}elseif(k1==0&&k2==1){you=1;P2_7=1;for(i=0;i6;i++){zuo=~zuo;delay(10000);}}三、拓展训练2——汽车转向灯控制K1键不按下k1=1K1键按下k1=0K1键P2_1左转灯(低电平点亮)K2键P2_0右转灯k1K2不按假真开始左转右转K1不按k2按k1按K2不按真真假故障假正常21elseif(k1==1&&k2==0){zuo=1;P2_7=1;for(i=0;i6;i++){you=~you;delay(10000);}}else{you=1;zuo=1;for(i=0;i6;i++){P2_7=~P2_7;//故障灯闪烁3次delay(10000);}}}3、程序设计三、拓展训练2——汽车转向灯控制k1K2不按假真开始左转右转K1不按k2按k1按K2不按真真假故障假正常22任务1小结流水灯系统设计的方法及流程。程序设计的方法。