- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机控制系统运行与维护
单片机控制系统运行与维护
PAGE 1
单灯闪烁程序设计
一、学习目的与要求
1.理解单灯闪烁程序设计思路。
2.掌握单灯闪烁程序设计方法。
二、学习方法
1.学习本课程,首先要精读教材和讲义,理解单灯闪烁程序设计思路。
2.根据教材内容,利用Keil C51、Proteus软件,设计单灯闪烁程序。
三、授课内容
1.闪烁控制流程
为了实现闪烁控制,就是让发光二极管交替亮灭,单片机的指令执行速度为μs级,根本无法点亮发光二极管,因此必须使用延时程序让发光二极管能持续导通一段时间,再持续断开一段时间。这样就可以实现闪烁控制,如图1所示。
2.单灯闪烁控制程序
以P1.0所连接的发光二极管为例,控制其实现每隔0.5s闪烁。按上述流程可写出如下程序:
#includereg52.h
sbit P1_0=P1^0;
/*************************************************/
// 函数名:delayms
// 功 能:精确延时1mS
// 参 数:输入延时毫秒数 图1 闪烁控制流程图
// 返回值:
使用12MHz 晶振时,循环次数是123;使用11.0592MHz晶振时,循环次数114。
******************************************************************/
void delayms(unsigned int i) //使用12MHz时的延时循环次数
{
unsigned int j;
for(;i!=0;i--)
{
for(j = 0; j 123; j++);
}
}
int main(void)
{
while(1)
{
P1_0=0;
delayms(500);
P1_0=1;
delayms(500);
}
return 0;
}
在上面的C51程序中,#includereg52是文件包含语句,表示把语句中指定文件的全部内容复制到此处,与当前的源程序文件链接成一个源文件。该语句中指定的文件reg52.h是keil C51编译器提供的头文件,保存在文件夹“keil\c51\inc”下,该文件包含了对MCS-51系列单片机特殊功能寄存器SFR和位名称的定义。
如果需要使用reg52文件中没有定义的SFR或位名称,可以自行在该文件中添加定义,也可以在源程序中定义。例如,我们自行定义了如下位名称:
sbit P1_0=P1^0; //定义位名称P1_0,对应P1口的第0位
void delayms(unsigned int i) 为延时函数的定义,这里的延时函数delayms使用了双重循环,外循环的循环次数由形式参数i提供,内循环是延时1ms的循环次数,使用12MHz 晶振时,循环次数是123;使用11.0592MHz晶振时,循环次数114。
int main(void)为主函数定义,main函数是C51程序中必不可少的主函数,也是程序开始执行的函数。
原创力文档


文档评论(0)