指示灯循环控制C语言代码,中國石油大学-单片机-实验三_LED指示灯循环控制.doc…

中國石油大学-单片机-实验三_LED指示灯循环控制

中国石油大学(北京)

实验课程: 单片机原理及应用

实验名称: 实验三—— LED指示灯循环控制

总学时: 48 教师: 林 立 成绩:

实验日期: 2012 年 10 月 23 日

实验目的

熟悉μVision3编译软件、掌握C51编程与调试方法。

实验内容

1、按照教材P227的图A.32,绘制实验三电路原理图;

2、根据功能要求,编写C51程序;

3、练习μVision3程序动态调试方法,并最终实现8个LED灯依次点亮的功能: P0.0→P0.1→P0.2→P0.3→ ┅ →P0.7→P0.6→P0.5→ ┅ →P0.0的顺序,无限循环,间隔约50ms;

4、观察仿真结果,完成实验报告。

实验要求

1、采用proteus + Keil联合仿真法运行C51程序,并练习采用单步、断点以及监视窗等手段进行程序调试;

2、提交的实验报告中应包括:电路分析及原理图、编程思路及C51源程序、调试过程简述,仿真运行效果以及实验小结。

3、提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验三。

电路分析及原理图

图1 为LED指示灯循环控制电路原理图

图1 LED指示灯循环控制电路原理图

图中LED指示灯外接于P0口。由于P0口作为I/O口使用时是漏极开路的需要外接上拉电阻因而图中还加有8只100的电阻。此外,还包括时钟电路和复位电路,图中的时钟电路和复位电路与实验1计数显示器相同。

编程思路及C51源程序

编程要求:程序启动后8只发光二极管做循环点亮控制,其中灯亮顺序为P0.0→P0.1→P0.2→P0.3→……P0.7→P0.6→P0.5→……→P0.0,无限循环,两次LED灯亮的时间间隔约为0.5秒。

根据题目要求,程序中应该有一个延时子程序用来每次延时0.5秒,还要有两个循环结构分别控制由上到下和由下到上,还应该有一个控制LED发光的数据。

LED指示灯循环控制程序如下:

#include”reg51.h” //预处理命令,单片机头文件

char led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //LED灯花样数据

void delay(unsigned int time) //延时函数delay声明

{

unsigned int j=0; //定义无符号整形变量初值为0

for(;time>0;time–) //采用for结构的外层循

for(j=0;j<125;j++); //采用for结构的内层循

}

void main() //主函数

{

char i;

while(1) //采用while结构的无限循环体

{

for(i=0;i<=7;i++) //由上向下循环控制

{

P0=led[i];

delay(200); //调用函数delay,延时50ms

}

for(i=7;i>=2;i–) //由下向上循环控制

{

P0=led[i-1];

delay(200); //调用函数delay,延时50ms

}

}

}

调试过程简述

采用proteus + Keil联合仿真法运行C51程序基本方法:输入源程序→建立工程→对工程进行详细设置→ 将源程序变为目标代码→运行调试 。

(1)建立工程文件

点击“Project->New Project… ”菜单,在编缉框中输入一个名字。选择目标CPU(Intel系列的80C51BH)。

(2)源文件的建立

点击新建文件按钮打开一个新的文本编缉窗口,输入程序源代码,以*.c保存该文件。

(3)添加源程序 (右击“Source

文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览113137 人正在系统学习中 相关资源:专业LED灯光动画制作软件(安装后直接用!)_setup安装包-Delphi工具…

来源:weixin_39907596

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月22日
下一篇 2021年4月22日

相关推荐