嵌入式LED和数码管实验报告

时间:2026-01-19

嵌入式系统课程的LED跑马灯和数码管显示的实验报告

实验报告一

一、实验内容

1、引导程序:Led跑马灯显示

在现有程序H1H2…H8(1对应最左面的LED)由左到右显示的基础上,改进为从右向左一次显示,然后改为先由左到右,再由右到左依次显示

2、数码管显示实验

(1)、显示四位学号

(2)、显示一组大于九位的十六进制数字,如A(10) b(11) c(12) d(13) E(14) F(15)

(3)、与实验1跑马灯的程序结合起来,同时显示LED和七段数码管。

二、实验目的

1、通过一个简单的引导程序熟悉汇编和C混合编程的编译原理和运行方法。

2、在实验一引导程序的基础上进一步了解ARM体系结构的编程方法

3、掌握外设访问的方法

4、 理解七段数码管的显示原理

三、实验原理图

1、片选原理

B_CS4 的地址为0x10000000

加上BA20,BA21 和BA22 组成的值,可得:LED_CS2的地址为0x10300000 LED_CS3的地址为

0c10400000

嵌入式系统课程的LED跑马灯和数码管显示的实验报告

LED_CS4 的地址为0x10500000

2、Led显示原理解释

BD0、BD1、BD2、BD3、BD4、BD5、BD6、BD7分别对应于试验箱的H1、H2、H3、H5、H5、H6、H7、H8。

Led灯是共阳极的,所以是低电平亮,即BDi(i=0~7)为0时对应的Led灯亮。

3、七段数码管的显示原理

(1)七段数码管原理图

嵌入式系统课程的LED跑马灯和数码管显示的实验报告

其中LED_CS2 为LED1 与LED2 的片选:地址为0x10300000

LED_CS3 为LED3 与LED4 的片选:地址为0x10400000

显示数据的高位D8作为控制端,0:七段数码管工作,1:七段数码管不工作。

四、实验设计思路

1、Led的显示

因为270实验平台的Led是共阳极,故当显示数据的某位为0时,对应的Led等才会亮。所以一次点亮H1、H2、H3、H4、H5、H6、H7、H8亮,送入的显示数据分别为:

0fe、0fd、0fb、0f7、0ef、0df、0bf、7f。

2、七段数码管显示

270实验平台的七段数码管采用共阳极接法,故显示数字0~9的显示数据的值(十六进制)分别为:40、79、24、30、19、12、02、78、00、10。显示大于九的十六进制数A、b、c、d、E、F的显示数据的值(十六进制)分别为:08、03、27、21、06、0e。

五、主要程序代码

嵌入式系统课程的LED跑马灯和数码管显示的实验报告

1、Led跑马灯实验:

(1)H1H2…H8(1对应最左面的LED)从左到右显示。

#define LED_CS4 (*((volatile unsigned char *)(0x10500000)))

#define LED_VALUE (0xff)

int i;

void Delay(unsigned int x)//延时函数

{

unsigned int i, j, k; for (i =0; i <=x; i++)

}

void dummyOs(void)

{

while (1) { LED_CS4 = 0xff; for (i = 0; i < 8; i++) for (j = 0; j <0xff; j++) for (k = 0; k <0xff; k++); { LED_CS4 = (LED_VALUE << i) -1; Delay(200); } } }

(2)H1H2…H8(1对应最左面的LED)从右到左显示。

#define LED_CS4 (*((volatile unsigned char *)(0x10500000)))

#define LED_VALUE (0xff)

int i;

void Delay(unsigned int x) //延时函数

嵌入式系统课程的LED跑马灯和数码管显示的实验报告

unsigned int i, j, k; for (i =0; i <=x; i++)

}

void dummyOs(void)

{

while (1) { LED_CS4 = 0xff; for (i = 7; i > = 0; i++) for (j = 0; j <0xff; j++) for (k = 0; k <0xff; k++); { LED_CS4 = (LED_VALUE << i) -1; Delay(200); } } }

(3)H1H2…H8(1对应最左面的LED)先由左到右,再由右到左依次显示

#define LED_CS4 (*((volatile unsigned char *)(0x10500000)))

#define LED_VALUE (0xff)

int i;

void Delay(unsigned int x) //延时函数

{

unsigned int i, j, k; for (i =0; i <=x; i++)

}

void dummyOs(void) for (j = 0; j <0xff; j++) for (k = 0; k <0xff; k++);

嵌入式系统课程的LED跑马灯和数码管显示的实验报告

while (1) { LED_CS4 = 0xff; for (i = 0; i < 8; i++) { LED_CS4 = (LED_VALUE << i) -1; Delay(200); }

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

{ LED_CS4 = (LED_VALUE << i) -1; Delay(200); } } }

2、数码管显示实验

#include <stdio.h>

#include "register_variant.h"

#define LED_CS2 (*((volatile unsigned short int *)(0x10300000))) #define LED_CS3 (*((volatile unsigned short int *)(0x10400000))) #define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff)

void Delay(unsigned int x)//延时程序

{

unsigned int i, j, k; for (i =0; i <=x; i++) for (j = 0; j <0xff; j++) for (k = 0; k <0xff; k++);

嵌入式系统课程的LED跑马灯和数码管显示的实验报告

}

void dummyOs(void)

{

int i,j=0; LED_CS2 = 0x4019;//4 0 LED_CS3 = 0x1940;//0 4 LED_CS4 = 0xff; while(1)

{

Delay(300); LED_CS2 = 0x4019; //4 0

LED_CS3 = 0x1940; //0 4 i=j%8; //设置显示哪个Led灯 LED_CS4 = (LED_VALUE << i) -1;//显示Led灯 j++; Delay(300); LED_CS3 = 0x0040; //0 8 i=j%8; LED_CS4 = (LED_VALUE << i) -1; j++; Delay(300); LED_CS2 = 0x0308; //a b LED_CS3 = 0x2127; //c d i=j%8; LED_CS4 = (LED_VALUE << i) -1; j++; Delay(300); LED_CS2 = 0x2703; //b c LED_CS3 = 0x0 …… 此处隐藏:2175字,全部文档内容请下载后查看。喜欢就下载吧 ……

嵌入式LED和数码管实验报告.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219