《单片机原理与应用》课程实验 告
姓 名:
胡 莎 学 :
所在班级:
电信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进行处理,非常感谢!