ARM基本接口之数码管显示实验

实验名称:数码管显示实验

实验目的

1掌握JXARM9-244(1)0教学实验平台系统使用。

2. 熟悉ADT IDE ARM开发环境。

实验内容(含步骤)

1. 总体步骤:先编译,启动目标机,待显示2410后,进行创建链接,下载,运行

2. 实验过程:在编译过程中,编译失败,显示硬件连接失败,组员认为是目标机与电脑

连接问题,拔了插过,但仍然不行,后来换了一台电脑连接,编译成功,创建链接, 下载,运行就成功显示效果了。理解原理后,通过简单的修改地址20007000的内 容为0x80,知道最高位控制风扇的转停,推理后六位控制对应六个数码管的亮暗, 定义HELLOO的字符编码(HGFEDCBA对应每一段小管和小数点),数码管的

状态编码,利用视觉差成功显示HELLOO,然后通过j的计数和条件来实现了led 流水灯的伪同步

3.代码如下:

/****************************************************************************/

 

/*文件名称: LEDSEG7.C                                                      */

/*实验现象: 共阳数码管显示HELLOO,同时led流水灯1357亮(灭)2468灭(亮)交替闪烁  */

/****************************************************************************/

#define U8 unsigned char

/*HELLOO的字符编码*/

unsigned char hello[6] = {

0x89, 0x86, 0xc7, 0xc7, 0xc0, 0xc0,

};

/*六个数码管只亮一个的状态编码*/

unsigned char con[6] = {

0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe

};

 

void Delay(int time);

 

void Test_Seg7(void) {    

int i, j;

 

int flag = 1;

 

for(j=0; ; j++)	{

*((U8*) 0x20007000) = 0x80;

/* 数码管从HELLOO依次将字符显示出来 */

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

/* 查表并输出数据 */

*((U8*) 0x20007000) = con[i] ;

    	*((U8*) 0x20006000) = hello[i];

    	Delay(1);

    

   	}

   	/*led流水灯1357亮(灭)2468灭(亮)交替闪烁*/

   	if (j%10==0){

   if (flag==1)	*((U8*) 0x20005000) = 0xaa;

   else *((U8*) 0x20005000) = 0x55;

   flag = !flag;

}

 }

}

 

/****************************************************************************/

/* Function name : 循环延时子程序                                           */

/* Description : 循环 'time' 次                                             */

/* Return type :void                                                       */

/* Argument      : 循环延时计数器                                           */

/****************************************************************************/

void Delay(int time) {

    int i;

int delayLoopCount=100;

 

      for(;time>0;time--);

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

}

 

 

实验总结

XX:这次实验的课题是数码管显示实验,在这次实验中,我们学会了如何用代码操控数码管的显示,并按照自己的意愿用数码显示出hello的字样,感受到了用代码控制硬件的乐趣所在,这充分激起了我对嵌入式系统开发的兴趣,很高兴能以这样的实验来帮助我们入门。

 

XX:这次实验的课题是数码管显示实验,做一名软件班学生,这是第一次直接用软件操纵硬件,有趣。小组一起讨论如何用代码操控数码管的显示出HELLOO(利用视觉欺骗,快速闪过每个字母)并使8个小红灯有韵律的闪烁(为了好看)。其中用到了很多的16位地址(平时用的较少),本来在其中可以用到移位运算使其更灵活,但因为种种原因没做,嗯,听老师说,下次要用。

 

XX:本次实验题为数码管显示实验,从操作上及技术来讲,可谓是相当简单的一次实验,作为本嵌入式入门课程的第一次实验也是相当合理且充满趣味。(给老师点赞)本人也很荣幸能够作为荣获百分小组的组员之一。本次试验认识了我们需要操作的目标机,明白机器中每个组件其实映射到真实的物理地址之中,了解了其中部分组件的物理地址(如6位数码管)。这样由地址再来进行数码管变换显示程序的编写就便是逻辑和策略了。

 

XX:结合软硬件进行编程和以前在只在软件上编程有很大的不同。很多以前软件上比较简单的东西直接挪到硬件上实现会有一些问题。像LED刷新的速率过快了,LED显示的hello会不明显。我觉得应该是LED访问那个内存段的时候,内存正在被修改,LED灯读到了脏数据,导致了LED灯有时候会显示一些不该显示的东西。我加了延迟函数后效果明显好了很多。

 

XX:通过操控某个地址的内容来实现数码管的内容,熄亮状态,led流水灯的闪灭等转变,只是简单的映射,但也很巧妙。六个数码管的地址都是相同,地址只有一个,六个数码管每一刻显示的内容都相同,而每个数码管的状态亮或者灭是可以分别控制的,先第一个显示H,后面全灭,再第二个显示E,其他全灭,这样如果两次显示的时间极短,利用视觉停留效果实现HELLOO的显示。同时下面的led流水灯闪烁,arm不支持多线程,可以通过中断,条件语句等来实现并发。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、实验目的   (1)通过实验掌握 LED 的显示控制方法;   (2)巩固实验 4.1 中所掌握的对存储区进行访问的方法;   二、实验设备   硬件: Embest EduKit-III 实验平台, Embest ARM 标准/ 增强型仿真器套件,PC 机   软件:Embest IDE Pro ARM集 成开发环境, Windows 98/2000/NT/XP     三、实验内容   编写程序使实验板上八段数码管循环显示 0 到 9 字符   四、实验原理   嵌入式系统中,经常使用八段数码管来显示数字或符号,由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。   (1)结构   八段数码管由八个发光二极管组成,其中七个长条形的发光管排列成“日”字形,右下角一个点形的发光管作为显示小数点用,八段数码管能显示所有数字及部份英文字母   (2)工作原理   以共阳极八段数码管为例,当控制某段发光二极管的信号为低电平时,对应的发光二极管点亮,当需要显示某字符时,就将该字符对应的所有二极管点亮;共阴极二极管则相反,控制信号为高电平时点亮。电平信号按照dp,g,e, a 的顺序组合形成的数据字称为该字符对应的段码,常用字符的段码表   (3)显示方式   八段数码管的显示方式有两种,分别是静态显示和动态显示。静态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管控制信号一直保持有效。动态显示是指当八段数码管显示一个字符时,该字符对应段的发光二极管是轮流点亮的,即控制信号按一定周期有效,在轮流点亮的过程中,点亮时间是极为短暂的(约 1ms),由于人的视觉暂留现象及发光二极管的余辉效应,数码管的显示依然是非常稳定的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值