西电自动化单片机实验报告 下载本文

内容发布更新时间 : 2024/5/13 2:10:34星期一 下面是文章的全部内容请认真阅读。

单片机实验报告

班级:

学号:

姓名:

实验一:数码管实验

一.实验目的

1.了解数码管的显示原理;

2.掌握JXARM9-2440 中数码管显示编程方法。 二.实验原理

7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。

LED显示器的接口一般有静态显示与动态显示接口两种方式。本实验中采用的是动态显示接口,其中数码管扫描控制地址为0x20007000,位0-位5每位分别对应一个数码管,将其中某位清0 来选择相应的数码管,地址0x20006000 为数码管的数据寄存器。数码管采用共阳方式,向该地址写一个数据就可以控制LED 的显示,其原理图如图所示。

三.实验内容及步骤

1、六个数码管同时正向显示0-F ,然后反向显示F-0。

1) 参照模板工程leddemo(modules\\leddemo\\leddemo.apj),添加相应的文件,并修改led 的工程设置;

2) 创建led.c 并加入到工程led 中;

3) 编写LED 显示函数void led_display(void),正向显示0-F 然后反向显示F-0,并循环执行以上动作,在每次显示之间延时一段时间; 4) 编译led,成功后,下载并运行,观察结果。 2、在六个数码管上依次显示“HELLO”,可分辨出轮流显示。步骤同上。 3、在六个数码管上依次显示“HELLO”,分辨不出轮流显示。步骤同上。 4、在每个数码管上递增显示0-9 。步骤同上。 四.实验程序

1、./****************************************************************

***/

/*文件名称: LEDSEG7.C */ /*实验现象: 数码管依次显示出0、1,2、??9、a、b、C、d、E、F */

/*******************************************************************/ #define U8 unsigned char

unsigned char seg7table[16] = {

/* 0 1 2 3 4 5 6 7*/

0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,

/* 8 9 A B C D E F*/ 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e, };

void Delay(int time);

/*******************************************************************/ /* 函数说明: JXARM9-2410 7段构共阳数码管测试 */ /* 功能描述: 依次在7段数码管上显示0123456789ABCDEF */ /* 返回代码: 无 */ /* 参数说明: 无 */ /*******************************************************************/ void Test_Seg7(void) {

int i;

*((U8*)0x20007000)=0x00; /*六个数码管都亮*/ for( ; ;) {

for(i=0;i<0x10;i++) /*数码管从0到F依次显示出来*/ {

*((U8*)0x20006000)=seg7table[i]; Delay(1000); }

for(0xf;i>=0x0;i--) /*数码管从F到0依次显示出来*/ {

*((U8*)0x20006000)=seg7table[i]; Delay(1000); } }

// TODO }

/*****************************************************************/ /* Function name : 循环延时子程序 */ /* Description : 循环 'time' 次 */ /* Return type :void */ /* Argument : 循环延时计数器 */ /*****************************************************************/ void Delay(int time) {