实验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进行处理,非常感谢!