循环彩灯实验c语言程序,实验3LED指示灯循环控制.doc

实验3LED指示灯循环控制

洛阳理工学院实验 告

系部计算机系班级B100508学 姓名王彪课程名称单片机原理及应用实验日期2012.5.26实验名称LED指示灯循环控制成绩【实验目的】熟悉uVision3编译软件,掌握C51编程与调试【实验条件】

如下图为LED指示灯循环控制电路原理图。图中LED指示灯外接于P0口。由于P0口作为I/O口使用时是漏极开路的,需要外接上拉电阻,因而图中还加有8只100欧的电阻。图中的时钟电路和复位电路与实验1相同。

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

【原理图】

【实验内容】

(1)熟悉uVision3编译软件,了解软件的结构组成与功能。

(2)学习C51语言的程序设计方法。

(3)学会在uVision3中进行C51程序录入、编译和调试。

(4)理解Proteus与Keil联合的仿真原理,实现LED指示灯循环控制功能。

【实验步骤】

在uVision3中用c语言编写c51程序。

利用uVision3的编译调试功能检查程序的语法和逻辑错误。

下载可执行文件,在Proteus中观察仿真的结果,检查程序的正确性。

Category

Reference

Value

Microprocessor

U1

80C51

Data converter

U3

ADC0808

Miscellaneous

X1

CRYSTAL

Capacitors

C2、C3

CAP

CapacitorsC1/22uF

CAP-ELEC

Resistors

R2~R8/200

RES

Resistors

R1~R18/100

RES

Optoelectronics

D1~D8

LED-YELLOW

【C语言程序】

#include

int flag=0;

int count=0;

char led_mod[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

void timer0 (void) interrupt 1{

if(flag==0&&count!=7){

count++;

P0=led_mod[count];

flag=count/7;

}

if(flag==1&&count!=0){

count–;

P0=led_mod[count];

if(count==0) flag=0;

}

}

void main(){

TMOD=0x01;

TH0=-(50000/256);

TL0=-(50000%256);

P0=0x00;

EA=1;

ET0=1;

TR0=1;

while(1);

} 【仿真图】

【实验总结】

通过本实验更加熟悉了uVision3编译软件的使用,掌握了C51编程与调试方法。

在本实验中LED灯的后面的保护电阻和p0口的上拉电阻不能太大,否则会导致LED的亮度看不出来。

通过本实验,加深了对C51编译软件的认识, 有很大的收获。

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

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

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

相关推荐