嵌入式led灯亮灭实验报告

      

一、     实验目的

通过在ARM7TDI实验机上,使D7~D8两个灯如下进行亮灭:开始时D7灯亮,D8灯灭;而后D7灯灭,D8灯亮;最后两个灯均亮。

按此顺序循环交替使D7~D8亮。

二、     实验原理

通过查实验手册说明书可知:

1)   D7~D8通过IOB口控制的第四位和第五位控制,将pcomb的第4、5位置为0,可以使该两个灯为输出。

2)   pcomb的地址是:0x01d20008

3)   D7-D8的亮灭可由Pdata控制,地址为0x01d2000c,将相应的位置0,该灯既可以亮。

三、     实验步骤

1)   使用ARM Developer Suite v1.2软件,新建一个工程。

2)   在新建一个源文件,为.c的文件,编写所需的代码。

3)   将ARM Developer Suite v1.2的初始化代码放在新建的工程中。

四、     实验代码

void delay()

{

    int i;

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

}

void main()

{

    #define pbcon *((volatile unsigned int *)0x01d20008)

    #define pbdat *((volatile unsigned int *)0x01d2000c)

int i=0;         

    pbcon = pbcon & ~(3 << 4);    

    while(1)

    {

      pbdat = pbdat & ~( 3 << 4 ) | ( i << 4 );

      i++;

           i = i % 4;

           delay();

    }

}

 

第二篇:led灯实验报告

MCS-51单片机接口技术实验

适用:电气类专业本科学生

实验报告

实验一 熟悉Proteus仿真模拟器,LED花样表演

一、实验目的

掌握以下方法:

1.在Proteus的环境下,设计硬件原理图;

2.在keilc集成环境下设计C51语言程序;

2.在Proteus的环境下,将硬件原理图与软件联接仿真运行。

二、实验环境

1.个人微机,Windows操作系统

2.Proteus仿真模拟器

3.Keilc编程

三、实验题目

基本题:使用8051的并口带动8个LED发光二极管显示一种花样表演。

提高题:使用一个键切换实现3种以上花样表演。

四、实验类型:

学习、模仿与简单设计型。

五、实验步骤:

0、进入ISIS,先选择需要的元件,然后设计电原理图,保存文件;

1、在keilc软件集成环境下编写源程序,编译工程文件;

2、将所设计的硬件原理图与目标代码程序相联接;

4、按play键,仿真运行程序。

附,可能用到的元件名称:

CPU:AT89C51或任一种MCS-51家族CPU;

晶振:Crystal;

电容器:Capacitors,选22pf

电解电容:CAP-ELEC或GENELECT10U16V

复位电阻:MINRES10K

限流电阻:MINRES330R

按键:BUTTON

LED:LED-BLUE/RED/YELLOW或DIODE-LED

(一)接线图如下:

https://upload.fanwen118.com/wk-img/img100/3596551_1.jpg

(二).基础花样

https://upload.fanwen118.com/wk-img/img100/3596551_2.jpghttps://upload.fanwen118.com/wk-img/img100/3596551_3.jpghttps://upload.fanwen118.com/wk-img/img100/3596551_4.jpghttps://upload.fanwen118.com/wk-img/img100/3596551_5.jpghttps://upload.fanwen118.com/wk-img/img100/3596551_6.jpg

(四)程序流程图

https://upload.fanwen118.com/wk-img/img100/3596551_7.jpg

(五)C程序

#include <reg52.h>

#define uint unsigned int

#define uchar unsigned char

const tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f, /*正向流水灯*/

0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,};/*反向流水灯*/

const tab2[]={0xff,0x00,0xff,0x00,0xff,0x00,};

void delay()

{

uint i,j;

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

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

{;}

}

void int1() interrupt 0

{

uchar i;

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

{ P0=tab2[i];

delay();

}

}

void main(void)

{

EX0=1;

IT0=1;

EA=1;

while(1)

{

uchar x;

for(x=0;x<15;x++)

{ P0=tab1[x];

delay();}

}

}

(六)总结

本次实验让我能够熟练的掌握和使用keil和proteus等软件进行编程和仿真,也对流水灯的原理和硬件结构有了更加深刻的认识。只会基础花样不懂变通。