流水灯实验报告

  • 格式:doc
  • 大小:159.00 KB
  • 文档页数:12

实 验 报 告

课程名称 单片机实习

专业班级 电子1142

姓 名 戴秀锋

学 号 **********

电气与信息学院

和谐 勤奋 求是 创新

实验教学考核和成绩评定办法

1. 课内实验考核成绩,严格按照该课程教学大纲中明确规定的比重执行。实验成绩不合格者,不能参加课程考试,待补做合格后方能参加考试。

2. 单独设立的实验课考核按百分制评分,考核内容应包括基本理论、实验原理和实验。

3. 实验考核内容包括:1)实验预习;2)实验过程(包括实验操作、实验记录和实验态度、表现);3)实验报告;权重分别为0.2 、0.4 、 0.4;原则上根据上述三个方面进行综合评定。学生未取得1)和2)项成绩时,第3)项成绩无效。

4. 实验指导教师应严格按照考核内容分项给出评定成绩,并及时批改实验报告,给出综合成绩,反馈实验中出现的问题。实验成绩在教师手册中有记载。

实验报告主要内容

一. 实验目的

二. 实验仪器及设备

三. 实验原理

四. 实验步骤

五. 实验记录及原始记录

六. 数据处理及结论

七. 实验体会(可选项)

注:1. 为了节省纸张,保护环境,便于保管实验报告,统一采用A4纸,实验报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。

2. 实验类别指验证、演示、综合、设计、创新(研究)、操作六种类型实验。

3. 验证性实验:是指为了使学生巩固课程基本理论知识而开设的强调演示和证明,注重实验结果(事实、概念或理论)的实验。

4. 综合性实验:是指实验内容涉及本课程的综合知识或本课程相关的课程知识的实验。

5. 设计性实验:是指给定实验目的、要求和实验条件,由学生自行设计实验方案并加以实现的实验。

实验题目 花 样 流 水 灯

实验室 实验时间 2014年 4月 10日

实验类别 同组人数 1

成 绩 指导教师签字: 姜航

1. 摘要:

我们当今时代是一个技术层出不穷的时代,在电子领域尤其是自动化智能控

制领域中传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用 面广等诸多优点,可以说,智能控制与自动控制的核心就是单片机

关键字:单片机,流水灯,中断

2. 系统设计

硬件详细设计

1.硬件框图

At89c51 P0口接上拉电阻与led灯8个

外部中断接一个按键 晶振与复位电路

软件详细设计

1. 程序流程图

主程序流程图:

判断flag的值开始执行对应子程序

中断流程图:

flag自加中断服务开始

子程序功能部分流程图 : 功能实现部分程序开始flag=1flag=2flag=3flag=4全闪全灭循环左移循环右移循环左移加取反flag=5flag=6flag=7flag=8循环右移加取反读表显特殊状态循环上一现象的反状态半闪否否否否否否否是是是是是是是是无操作保持前一状态

2.Proteus仿真图

(1)8个流水灯:

3.仿真结果

(1)功能1截图:

(2)功能2,3截图:

(3)功能4,5截图:

(4)功能6截图:

(5)功能7截图:

(6)功能8截图:

4.程序部分

#include

#define uchar unsigned char

#define uint unsigned int

uchar flag=0;

uchar a=0x01;

uchar Data[6]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd};

uchar i;

void inital() {

EA=1;

EX0=1;

IT0=1;

}

void delay(uint xms)

{

unsigned int i,j;

for(i=0;i

for(j=0;j<1048;j++)

}

uchar Leftmove(uchar suba)

{

suba=suba<<1;

if(suba==0x00)suba=0x01;

return(suba);

}

uchar Rightmove(uchar suba)

{

suba=suba>>1;

if(suba==0x00)suba=0x80;

return(suba);

}

void Light_a()

{

P0=0x00;

delay(50);

P0=0xff;

delay(50);

}

void Light_b()

{

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

{

P0=Data[i];

delay(50);

if(i==5)i=0;

}

} void Light_d()

{

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

{

a=Data[i];

P0=~a;

delay(50);

if(i==5)i=0;

}

}

void main()

{

inital();

while(1)

{

if(flag==1)

{

Light_a();

}

if(flag==2)

{

a=Rightmove(a);

P0=~a;

delay(50);

}

if(flag==3)

{

a=Leftmove(a);

P0=~a;

delay(50);

}

if(flag==4)

{

a=Rightmove(a);

P0=~a;

delay(50);

P0=~P0;

delay(100);

}

if(flag==5)

{

a=Leftmove(a);

P0=~a; delay(50);

P0=~P0;

delay(100);

}

if(flag==6)

{

Light_b();

}

if(flag==7)

{

Light_d();

}

if(flag==8)

{P0=0x0f;

delay(50);

P0=~P0;

delay(50);

}

}

}

void inter() interrupt 0

{

flag++;

}

5.实验总结

通过这次实验,我对单片机的了解更加深入,应用起来也更加娴熟。并且对中断的应用和流水灯的状态控制都有了更好的理解。更重要的是,我学会了在问题出现时及时寻找对策的好习惯。比如在这次实验中我最初的主程序中在开中断那一块是顺便把定时器中断也打开了的,但实际上我并未用到定时器中断。后面的仿真过程中奇偶出现了无法进行仿真的问题。在分块检查程序后觉得应该是这一块应该会有干扰。只保留外部中断后仿真得以继续。其次是,实验中我们在做之前要把相关的知识彻底弄懂并且在做实验时要认真仔细,程序上要考虑周到。这些不仅对实验有用,对我们在其他方面培养好的习惯也很有帮助。