




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/3. 8个发光管来回流动,第5个管亮100ms,流动时让蜂鸣器发出“滴滴”声。/*#include#include /调用库函数_cror_的头文件要包含进来#define uint unsigned int /宏定义 uint#define uchar unsigned char /宏定义ucharuint z,f; /定义全局变量z,f延时子函数用到uchar LED; /定义全局变量LED,主函数用到,因为不能直接对P0口从操作,要经过中间变量LEDsbit FM=P10; /特殊功能位声明(用于控制蜂鸣器) void delay(uint z);/声明延时子函数 /延时子程序/若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,以此类推) void delay_1(uint f);/声明延时子函数 /延时子程序 /若f=1,则延时2.17+97.65us=99.82us=100us; /若f=2,则延时2.17+97.65*2us=197.47us=200us, /若f=3,则延时2.17+97.65*3us=295.12us=300us, 每次f加1,则延时增加8.68us,以此类推) void main() /主函数uint i; /定义变量i的数据类型为unsigned int型P0=0x00; /电路图显示LED为高电平点亮,故先要灭掉LEDP0=0x01; /点亮第一盏LED灯LED=P0; /把P0的值赋给变量LED,以便下面程序使用 delay(500); /延时500ms/以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i0;i-) /使蜂鸣器发出125ms滴声(仿真时间为122.07574ms) FM=0; /蜂鸣器响 第一次4.34us,第二次及以后1.93usdelay_1(1); /延时100us 116.1us FM=1; /蜂鸣器不响 1.09us delay_1(1); /延时100us 115.02us delay(250); /延时250ms(精确时间为250.93641ms)for(i=500;i0;i-) /使蜂鸣器发出125ms滴声(仿真时间为122.07574ms)FM=0; /蜂鸣器响delay_1(1); /延时100usFM=1; /蜂鸣器不响delay_1(1); /延时100uswhile(1) /锁死程序,使程序始终执行while的内容LED=_crol_(LED,1); /让0000 0001中的1向左移动 if(LED=0x10) /当0001 0000时,LED亮100ms,滴滴100ms,否则LED亮500ms,滴滴500msP0=LED; /把左移后的数据赋值给P0口执行delay(100); /延时100ms/以下两个for函数加一个延时函数,使蜂鸣器在100ms内发出“滴滴”声for(i=100;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1);delay(50);for(i=100;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1); elseP0=LED; /把左移后的数据赋值给P0口执行delay(500);/以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1);delay(250);for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1); ;if(LED=0x80)/当1000 0000时,让1向右移动 LED=_cror_(LED,1); /让1000 0000向右移动一位P0=LED; /0100 0000 让第7个灯亮delay(500); /延时500ms/以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声 for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1);delay(250);for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1); LED=_cror_(LED,1); /让0100 0000中的1向右移动1位P0=LED; /0010 0000让第6个灯亮delay(500); /延时500ms/以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1);delay(250);for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1); LED=_cror_(LED,1); /让0010 0000中的1向右移动1位P0=LED; /0001 0000 让第5个灯亮delay(100); /延时100ms/以下两个for函数加一个延时函数,使蜂鸣器在100ms内发出“滴滴”声for(i=100;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1);delay(50);for(i=100;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1); LED=_cror_(LED,1); /让0001 0000中的1向右移动1位P0=LED; /0000 1000 让第4个灯亮delay(500); /延时500ms/以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1);delay(250);for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1); LED=_cror_(LED,1); /让000 1000中的1向右移动1位P0=LED; /0000 0100 让第3个灯亮delay(500); /延时500ms/以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1);delay(250);for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1); LED=_cror_(LED,1); /让000 0100中的1向右移动1位P0=LED; /0000 0010 让第2个灯亮delay(500); /延时500ms/以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1);delay(250);for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1); LED=_cror_(LED,1); /让000 0010中的1向右移动1位P0=LED; /0000 0001 让第1个灯亮delay(500); /延时500ms/以下两个for函数加一个延时函数,使蜂鸣器在500ms内发出“滴滴”声for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1);delay(250);for(i=500;i0;i-)FM=0;delay_1(1);FM=1;delay_1(1); else; /结束右1000 0000右移程序void delay(uint z)/延时子程序 /若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,以此类推) uint x,y;/定义变量x、y数据类型为uintfor(x=z;x0;x-)/本语句,延时2.17usfor(y=114;y0;y-);/y等于1时,延时19.53us;/y等于2时,延时28.21us;/y等于3时,延时36.89us;/y等于113时,延时991.69us;/y等于114时,延时1000.37us;/每次y加1,则延时增加8.68us,以此类推void delay_1(uint f)/延时子程序 /若f=1,则延时2.17+97.65us=99.82us=100us;/若f=2,则延时2.17+97.65*2us=197.47us=200us, /若f=3,则延时2.17+97.65*3us=295.12us=300us, 每次f加1,则延时增加8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论