嵌入式LED和数码管实验报告
时间:2026-01-19
时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:30年CPU架构发展史(一)
下一篇:怎样注册itunes账号1