单片机原理与应用-KFIL_C项目教程(西电版)项目二_霓虹灯控制系统教材教学课件.ppt

单片机原理与应用-KFIL_C项目教程(西电版)项目二_霓虹灯控制系统教材教学课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
演示文稿演讲PPT学习教学课件医学文件教学培训课件

  主函数中先定义了i、j两个变量,在函数内部定义的变量为局部变量,然后执行while循环,由于while的表达式是1,永远为真,形成死循环,因此CPU将一直执行while的循环体语句。在while的循环体中,先点亮LED0,延时1 s,后熄灭,延时1 s,编译后下载至单片机就可以观察到LED0闪烁的效果。   例3 编程使图1-18中发光二极管LED0闪烁,点亮和熄灭的时间均为500 ms。   解:源程序     #include reg51.h //包含51系列单片机的头文件     #define uchar unsigned char     #define uint unsigned int     sbit LED0=P2^0; //定义P2.0为LED0 /*延时函数*/     void delay500 ms() //延时500 ms   { uint i,j; //定义局部变量i、j,用于延时 for(i=0;i50;i++) //外层for语句循环50次  for(j=0; j1827;j++); //内层for语句约延时10 ms,分号必须有   }   /*主函数*/   main()   { while(1) // while死循环,无数遍点亮、熄灭LED0     { LED0=0; //位寻址,点亮LED0 delay500ms(); //调用延时函数,延时500 ms        LED0=1; //位寻址,熄灭LED0 delay500ms(); //调用延时函数,延时500 ms       }     }   “/* */”也是C51的注释符,可以注释多行,而“//”只能注释一行。   由于关键字unsigned char、unsigned int较长,使用时会很麻烦,英文不好时也容易写错,这时可用#define命令给它们重新起一个比较简单的新名字,如:uchar、uint,当然也可以是其他名字,在后续程序中可直接用这个新名字定义变量,如:uint i,j;。   源程序中,在主函数之前定义了无参延时函数void delay500ms(),“void”表示该函数执行完后不需要返回任何数值,是一个无返回值的函数;“delay500ms”是延时函数的名字,表示它是一个延时500 ms的函数,函数名可以任意起,但是要注意两点:一是不能和C51中的关键字相同,二 是要做到见名知义;函数名后的括号中没有写任何参数,表示它是一个无参函数。延时函数delay500ms()的函数体内定义了i、j两个变量用于控制循环次数,它们均为局部变量。   在主函数中需要延时500 ms时,可以通过语句“delay500ms();”调用延时函数,CPU转去执行延时函数,从而实现延时功能,这样会使主函数看起来条理清晰,增强了程序的可读性。   例4 编程使图1-18中的发光二极管LED0闪烁,点亮500 ms、熄灭300 ms。   解:该题目要求发光二极管点亮与熄灭的时间不相同,如果编写无参延时函数,需将无参延时函数的时间设置为100 ms,调用3次实现300 ms的延时,调用5次实现500 ms的延时,方可实现题目要求。最好的方法是编写有参延时函数,在调用时给以不同的实参,这样就可以实现不同时间的延时了。     main()     {   while(1) // while死循环,无数遍点亮、熄灭LED0       { LED0=0; //位寻址,点亮LED0 delay10ms(50 ); //实参为50,延时500 ms        LED0=1; //位寻址,熄灭LED0 delay10ms(30 ); //实参为30,延时300 ms       }     }   由“void delay10ms(uchar a)”定义一个有参延时函数,括号中的“uchar a”表示a是该函数的一个形式参数,用a来控制函数体内第一个for语句的循环次数,两个for语句共执行a×1827次,约延时a×10 ms;在主函数中调用该函数时,需要对应给出一个具体的数据,即实参,当执行被调函数时,将函数体中的所有形参用实参代替。   主函数中通过调用语句“delay10 ms (50);”及“delay10ms (30);”调用delay10 ms函数,并将实参50或30传送给delay10 ms中的形参a,执行延时函数后可分别获得500 ms及 300 ms的延时,改变实参可以方便地改变延时时间。   延时函数是单片机编程中常用的一个函数,除了由for语句构成外,也可以由while语句构成;循环变量的

您可能关注的文档

文档评论(0)

youngyu0329 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档