欢迎来到天天文库
浏览记录
ID:44021546
大小:15.38 KB
页数:11页
时间:2019-10-18
《8个发光管来回流动,第5个管亮100ms,流动时让蜂鸣器发出滴滴声》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、//3.8个发光管来回流动,第5个管亮100ms,流动时让蜂鸣器发出“滴滴”声。/*#include#include//调用库函数_cror_的头文件要包含进来#defineuintunsignedint//宏定义uint#defineucharunsignedchar//宏定义ucharuintz,f;//定义全局变量z,f延时子函数用到ucharLED;//定义全局变量LED,主函数用到,因为不能直接对P0口从操作,要经过中间变量LEDsbitFM=P1^0;//特殊功能位声明(用于控制蜂鸣器)voiddelay
2、(uintz);//声明延时子函数//延时子程序//若z=1,则延时2.17+1000.37us=1002.54us=>1ms;//若z=2,则延时2.17+1000.37*2us=2002.91us=>2ms,//若z=3,则延时2.17+1000.37*3us=3003.28us=>3ms,每次f加1,则延时增加8.68us,以此类推)voiddelay_1(uintf);//声明延时子函数//延时子程序//若f=1,则延时2.17+97.65us=99.82us=>100us;//若f=2,则延时2.17+97.65*2us=197.47us=>20
3、0us,//若f=3,则延时2.17+97.65*3us=295.12us=>300us,每次f加1,则延时增加8.68us,以此类推)voidmain()//主函数{uinti;//定义变量i的数据类型为unsignedint型P0=0x00;//电路图显示LED为高电平点亮,故先要灭掉LEDP0=0x01;//点亮第一盏LED灯LED=P0;//把P0的值赋给变量LED,以便下面程序使用delay(500);//延时500ms//以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i>0;i--)//使蜂鸣器发出1
4、25ms滴声(仿真时间为122.07574ms){FM=0;//蜂鸣器响第一次4.34us,第二次及以后1.93usdelay_1(1);//延时100us116.1usFM=1;//蜂鸣器不响1.09usdelay_1(1);//延时100us115.02us}delay(250);//延时250ms(精确时间为250.93641ms)for(i=500;i>0;i--)//使蜂鸣器发出125ms滴声(仿真时间为122.07574ms){FM=0;//蜂鸣器响delay_1(1);//延时100usFM=1;//蜂鸣器不响delay_1(1);//延时1
5、00us}while(1)//锁死程序,使程序始终执行while的内容{LED=_crol_(LED,1);//让00000001中的1向左移动if(LED==0x10)//当00010000时,LED亮100ms,滴滴100ms,否则LED亮500ms,滴滴500ms{P0=LED;//把左移后的数据赋值给P0口执行delay(100);//延时100ms//以下两个for函数加一个延时函数,使蜂鸣器在100ms内发出“滴滴”声for(i=100;i>0;i--){FM=0;delay_1(1);FM=1;delay_1(1);}delay(50);fo
6、r(i=100;i>0;i--){FM=0;delay_1(1);FM=1;delay_1(1);}}else{P0=LED;//把左移后的数据赋值给P0口执行delay(500);//以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i>0;i--){FM=0;delay_1(1);FM=1;delay_1(1);}delay(250);for(i=500;i>0;i--){FM=0;delay_1(1);FM=1;delay_1(1);}};if(LED==0x80)//当10000000时,让1向右移动{LED
7、=_cror_(LED,1);//让10000000向右移动一位P0=LED;//01000000让第7个灯亮delay(500);//延时500ms//以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i>0;i--){FM=0;delay_1(1);FM=1;delay_1(1);}delay(250);for(i=500;i>0;i--){FM=0;delay_1(1);FM=1;delay_1(1);}LED=_cror_(LED,1);//让01000000中的1向右移动1位P0=LED;//0010000
8、0让第6个灯亮delay(500);//延时500ms//以下两个
此文档下载收益归作者所有