指示灯循环控制C语言代码,指示灯循环控制.doc

《单片机原理与应用》课程实验 告

姓 名:

胡 莎 学 :

所在班级:

电信2班

实验时间:

2014年5月14

指导教师:

刘晓秋

记分及评价:

项目满分

5分

得 分

一、实验名称

实验3:LED指示灯循环控制(2课时)

二、实验目的

熟悉Keil μVision编程调试环境、掌握C51编程与调试方法

三、实验内容

1、按照教材图A.34,绘制实验2电路原理图;

2、编写实验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、完成的电路图;2、编写的C51源程序(含编程思路分析);3、使用的程序调试方法;4、实现的仿真效果(含运行截图与文字说明);5、实验小结(结论与体会)。

1、电路原理图

图1 指示灯循环控制原理图

实验分析:如图1所示,图中8只发光二极管外接在P0口,且外接排阻;由C2、C3、X1、接地点和XTAL1、XTAL2组成的时钟电路;C1、R1、VCC、接地点和RST引脚构成的复位电路;此外还有片选电路等。实现如下功能:D0→D2→D3→D4→ ┅ →D8→D7→D6→ ┅ →D1,无限循环,间隔约50ms。

2、C51源程序

#include //包含头文件reg51.h

Unsigned char led[]={0x01,0x02,0x04,0x08,0x10,0x20,

0x40,0x80,0x18,0x3c,0x7e,0xff,0x00}; //流水灯花样参数

void delay(unsigned int x) //延时函数定义

{

unsigned int j; //无符 整型j的定义

for(;x>0;x–)

for(j=0;j<250;j++); //循环控制语句

}

void main(void) //主函数,空语句

{

unsigned int i; //无符 整型i的定义

P0=0x00; //灯亮

delay(100); //延时

while(1)

{

for(i=8;i<=12;i++)

{

P0= led[i];

delay(500);

} //花样数据输出

for(i=0;i<=7;i++)

{

P0= led[i];

delay(100);

} //花样数据输出,从上往下循环一次

for(i=7;i>=0;i–)

{

P0= led[i];

delay(100);

} //花样数据输出,从下往上循环一次

}

}

3、程序调试方法

4、仿真运行效果

图2 指示灯循环控制仿真结果图

实验分析:在编程软件Keil vision的配合下,仿真显示以下结果D0→D2→D3→D4→ ┅ →D8→D7→D6→ ┅ →D1,无限循环,间隔约0.5s。

5、实验小结

本次实验成功实现8只发光二极管循环点亮控制,且亮灯的顺序为D0→D2→D3→D4→ ┅ →D8→D7→D6→ ┅ →D1,无限循环,间隔约0.5s。

都说“万事开头难、要勇敢迈出第一步”,我总认为用C语言编译源程序很难,不会用keil 软件,前几次总是只会用老师传送的hex文件,通过这几次的实验,我能看懂实验中所使用的源程序,并且也会编一些简单的源程序。其实遇到难题时,不要总给自己找借口,要相信自己能一步一步的解决难题的,不会编程,就先认真学习它, 上教程很多,可以先参考别人的程序,抄过来也无所谓的,写一些最简单的,让它运行起来,先培养自己的兴趣,知道写程序是怎么一回

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

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

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

相关推荐