DSP LED跑马灯实验
- 格式:doc
- 大小:344.50 KB
- 文档页数:9
实验七LED跑马灯实验1 (点灯)一、实验目的1.掌握嵌入式ARM的I/O及其相关设置;2.继续熟悉ARM开发环境。
二、实验内容1.了解S3C6410实验板I/O接口原理。
2.利用ADS编译环境,用C语言编写点亮一盏灯主程序。
三、实验设备硬件:S3C6410实验板;PC机;串口通信线;软件:PC机操作系统(WINDOWS XP);ARM Developer Suite v1.2;超级终端四、实验步骤1.新建ARM工程:工程名字自拟启动ADS开发环境,选择File→New(Project)选项,使用ARM Executable Image工程模板创建一个工程。
2.新建C语言程序文件led.c(名字自拟),并将其添加到工程中选择File→New(File)选项,新建汇编源程序文件,并添加到工程中,定义被汇编程序调用的C函数g( )和全局变量sum添加到工程中,led.c源程序的参考代码如下:/*------------------------地址声明---------------------------*/#define GPQCON (*(volatile unsigned *)0x56000010)#define GPQDAT (*(volatile unsigned *)0x56000014)#define GPQUP (*(volatile unsigned *)0x56000018)#define uchar unsigned char#define uint unsigned int/*-----------------------定义全局变量------------------------*//*----------------------------------------------------------函数名称:ledMain功能描述:入口程序初始化后,进入跑马灯死循环传参:无返回值:int 0-------------------------------------------------------------*/int ledMain(void){GPQCON = ??????; //设置为输出GPQDAT =??????; //使LED全灭GPQUP = 0x00;while (1) // 死循环{GPQDAT = ?????; //LED0亮}return 0;}3.新建汇编程序文件Init.s,并将其添加到工程中选择File→New(File)选项,新建汇编源程序文件Init.s,并添加到工程中,参考代码如下:AREA DA TA,CODE,READONL YENTRYldr r13, =0x1000IMPORT ledMainb ledMainEND4.设置工程的编译和链接选项选择Edit→DebugRel Settings选项,打开DebugRel Settings对话框,设置工程编译和链接选项,在Target→Target Settings选项中,打开Post-linker选项,选择ARM fromELF,在Language Settings→ARM Assembler选项中,选择Target选项卡,修改处理器类型为ARM920T,在Linker→ARM Linker选项中,打开Output选项卡,在RO base里填写地址0x32000000,在Options选项卡中,填写Image entry point地址0x32000000,打开Lay Out选项卡,在Objec/symbol中填写你建立的汇编程序名.o。
竭诚为您提供优质文档/双击可除dsp跑马灯实验报告篇一:跑马灯实验报告山西大学数字电子技术基于硬件设计的跑马灯电路系别:电力工程系班级:电本1254班姓名:所谓伊人学号:12322454**一、实验目的1.熟悉ne555定时器,计数器cD4017的逻辑特性。
2.熟悉ne555构成多谐振荡器原理。
3.设计跑马灯电路并利用multisim软件仿真电路。
二、实验要求1.知道ne555、cD4017的管脚排列顺序。
2.利用ne555构成多谐振荡器。
3.知道电阻的主要参数及其标注方法。
(见实验指导书116页)。
4.知道电容器的主要作用。
(见实验指导书122页)。
5.了解有关焊接的知识。
三、实验器材电路板1块。
电容:1μF(1个)。
集成芯片:ne555(1个)、cD4017(1个)。
电阻:22K?、1K?、500?各一个。
二极管:In4148(8个)、发光二极管(10个)。
(自行提供)电池:5V四、电路的安装1.555用来定时,用它产生某种方波,相当于有的时钟信号2.4017是个十进制计数器,按照时钟信号从10个口依次输出1.检查集成芯片ne555,cD4017的安装位置有无错误.2.检查电解电容的极性有无错误;3.检查二极管In4148及发光二极管的安装方向有无错误;4.检查各个电阻的安装是否有误。
5.检查有无虚焊。
五、电路的调试1.电路焊接好后,先将电路板正负端接到直流电压5V 及地线处,观察发光二极管是否变亮。
2.适当改变电位器阻值,观察其对cD4017循环周期(发功二极管依次循环一周)的影响。
3.利用秒表记录cD4017一个合适循环周期的时间。
(分别测量电阻最大时、最小时、合适时的周期)附录1.跑马灯电路图分析电路输出图像2.cD4017的相关资料cD4017是5位Johnson计数器,具有10个译码输出端,cp,cR,Inh输入端,时钟输入端的斯密特触发器具有脉冲整形功能,对输入时钟脉冲上升和下降时间无限制。
在输出跑马灯的实验历程中/*led输出跑马灯实验,用软件延时方法循环点亮发光管DS4-DS19*/#include "DSP281x_Device.h"#include "DSP281x_Device.h" // DSP281x头文件#include "DSP281x_Examples.h" // DSP281x Examples 头文件void LedOut(Uint16 led);void Delay(Uint16 data);unsigned int LedCount;Uint16 led=0x0001; //led初值void IOinit() //I/O口初始化{EALLOW;//将GPIOB8~GPIOB15配置为一般I/O口,D0~D7GpioMuxRegs.GPBMUX.all = GpioMuxRegs.GPBMUX.all&0x00ff;//将GPIOB8~GPIOB15配置为输出,D0~D7GpioMuxRegs.GPBDIR.all = GpioMuxRegs.GPBDIR.all|0xff00;//将GPIOE0~GPIOE2配置为一般I/O口输出,作138译码GpioMuxRegs.GPEMUX.all = GpioMuxRegs.GPEMUX.all&0xfff8;GpioMuxRegs.GPEDIR.all = GpioMuxRegs.GPEDIR.all|0x0007;EDIS;}void main(void){InitSysCtrl(); /*初始化系统*/DINT; /*关中断*/IER = 0x0000;IFR = 0x0000;IOinit(); //I/O口初始化while (1){LedOut(led);Delay(60000);Delay(60000);Delay(60000);Delay(60000);Delay(60000);Delay(60000);Delay(60000);Delay(60000);Delay(60000);Delay(60000);led =led << 1; //led的值左移1位LedCount++;if (LedCount>=16){LedCount=0 ;led=0x0001;}}}void LedOut(Uint16 led){Uint16 i;EALLOW;GpioMuxRegs.GPBDIR.all = GpioMuxRegs.GPBDIR.all|0xff00; //将GPIOB8~GPIOB15配置为输出,D0~D7EDIS;GpioDataRegs.GPEDA T.all = 0xfffb; //LEDB选通GpioDataRegs.GPBDA T.all = ~led; //显示高8位for (i=0; i<100; i++){} //延时GpioDataRegs.GPEDA T.all = 0xffff; //锁存高8位GpioDataRegs.GPEDA T.all = 0xfffa; //LEDA选通GpioDataRegs.GPBDA T.all = ~(led<<8);//显示低8位for (i=0; i<100; i++){}GpioDataRegs.GPEDA T.all = 0xffff; //锁存低8位}void Delay(Uint16 data){Uint16 i;for (i=0;i<data;i++) { ; }}红色的语句是什么意思呀那个延时程序中的data是什么,为什么要等于60000,最多可以多少谢谢各位高手!。
跑马灯实验报告引言跑马灯是一种常见的公共场所宣传和广告工具。
它通过不断闪烁的灯光来吸引人们的注意,向他们传达信息和内容。
在这个报告中,我们将通过一系列实验来研究跑马灯的工作原理、效果和可能的应用领域。
实验一:跑马灯的基本构造实验目的通过拆解和分析跑马灯的结构,理解其基本构造和工作原理。
实验步骤1.拆解一台跑马灯,将其分解为基本组成部分,如灯管、控制电路和外壳等。
2.分析每个组成部分的作用和功能。
实验结果根据我们的拆解和分析,我们得出了以下结论:•灯管:灯管是跑马灯的核心部件,它通过发光来吸引人们的注意。
•控制电路:控制电路负责控制灯管的闪烁频率和模式。
•外壳:外壳起到保护和美化跑马灯的作用。
实验二:跑马灯的效果分析实验目的评估不同频率和模式的跑马灯对人眼的刺激程度和注意力吸引效果。
实验步骤1.准备三台不同频率的跑马灯(低频、中频和高频)。
2.让一组实验参与者观察每种频率的灯光,并记录他们的感受和注意力集中程度。
3.对比不同频率下的实验结果,并做出分析和总结。
实验结果我们的实验结果表明:•高频率的跑马灯更容易引起人们的注意,但也会让他们感到疲劳或不适。
•低频率的跑马灯对人眼的刺激相对较轻,但可能不足以引起足够的关注。
•中频率的跑马灯在刺激度和注意力吸引效果之间取得了一个平衡,被认为是比较理想的选择。
实验三:跑马灯的应用展望实验目的探索跑马灯在不同场景和领域的应用潜力,并分析其优势和限制。
实验步骤1.分析跑马灯目前的主要应用领域,如商业广告、警示通知和信息发布等。
2.探寻跑马灯在其他领域中的潜在应用,如教育、娱乐和医疗等。
3.分析跑马灯在不同应用领域中的优势和限制。
实验结果我们的分析结果表明:•跑马灯在商业广告和公共通知中具有广泛应用的潜力,因为它能够吸引人们的注意并传达信息。
•跑马灯在教育领域中可以用于展示学生作品、提醒学生重要事项等,但需注意不要过度刺激学生眼睛。
•跑马灯在医疗领域中可以用于显示患者信息、提醒医生注意事项等,但需确保灯光不会对患者或医生造成不适。
跑马灯实验报告
实验目的,通过搭建一个简单的跑马灯电路,了解电子元件的基本原理和电路的工作方式。
实验器材,LED灯、电阻、导线、电池、开关、面包板。
实验步骤:
1. 将LED灯的正极与电池的正极通过导线连接起来,负极与电阻连接,然后再将电阻的另一端与电池的负极连接。
2. 将开关连接到电路中,使得可以通过开关控制电路的通断。
3. 将整个电路搭建在面包板上,确保连接牢固。
4. 打开开关,观察LED灯的亮灭情况。
实验结果:
经过搭建和观察,我们发现当开关闭合时,LED灯会亮起;当开关断开时,LED灯会熄灭。
通过不断地开合开关,我们可以看到LED灯会不断地亮灭,就像跑马灯一样在不同的位置闪烁。
实验分析:
跑马灯实验的原理是利用开关控制电路的通断,从而控制LED灯的亮灭。
当开关闭合时,电路闭合,电流可以流通,LED灯就会亮起;当开关断开时,电路断开,电流无法流通,LED灯就会熄灭。
通过不断地开合开关,就可以实现LED 灯的频繁闪烁,呈现出跑马灯的效果。
实验总结:
通过这个简单的跑马灯实验,我们了解了电子元件的基本原理和电路的工作方式。
同时,我们也体会到了实验中的观察和分析的重要性。
在今后的学习中,我们将进一步深入学习电子电路的知识,探索更多有趣的实验和应用。
以上就是本次跑马灯实验的实验报告,希望对大家有所帮助。
跑马灯效果的实现一能力拓展训练的内容和要求控制8个指示灯的循环点亮,包括指示灯控制、速度控制和点亮效果控制1.利用CPLD/FPGA器件实现简单的计算机逻辑接口电路(如地址译码电路、硬件加密电路等);2.基于可编程逻辑器件(CPLD或FPGA)实现DSP功能。
通过训练掌握相关的理论知识及实际处理方法,熟练使用常用EDA工具(如Quartus Ⅱ、Matlab/DSP Builder等)和硬件描述语言(如Verilog HDL等)设计所需应用程序、上机调试、模拟仿真、下载到目标芯片上运行验证,并对实验结果进行理论分析。
二设计思路:将8个彩灯共阴接地,阳极分别为EPIC3的8个I/O相连,I/O输出变化的电平来控制彩灯的点亮,流水灯分不同的时段,指示灯有不同的显示模式,开始时刻流水灯从右到左依次点亮,第二时间段LED流水灯从左向右依次熄灭,第三时间段LED流水灯从中间向两端依次点亮,第四时间段LED流水灯从中间到两边依次熄灭,第五时间段LED由1,4亮,然后2,5……以此类推,最后完成一次循环又回到开始时刻,进入第二轮循环,来实现LED流水灯的控制实验。
从LED流水灯的工作原理来看,无论是第一时间还是其他的时间段,LED流水灯点亮还是熄灭,都是一个频率来控制LED流水灯点亮和熄灭的快慢。
只不过这个频率可以在程序中控制,也可以在定义输入引脚时把频率选择不同的频率段。
三原理框图:(1)总体方框图如下:图1 总体方框图(2)细化框图:此次实验主要分两个大模块:控制模块以及功能模块,其中功能模块还有3个子模块,如下所示:图2 细化框图控制模块:主要是通过控制给定系统的时钟频率,可以改变灯亮暗的快慢。
功能模块:即为灯亮暗方式的选择。
四编写程序并仿真第一种方式波形图如下:图3第一个灯开始亮由上述仿真波形可知,仿真后所得的结果与希望的相同,进行下一步:对引脚的锁定。
图4 从左到右依次亮图5 从右向左依次熄灭第二种方式波形图:图6中间两个灯亮图7向两边扩散开来直至全亮图8从两边向中间熄灭第三种方式波形图:图91、4灯亮图101、4;2、5;3、6亮图11全亮后进入下一轮循环五引脚锁定以及功能预测各引脚锁定如下所示:图4 各引脚锁定图功能预测:当引脚锁定完成之后,再编译一次,然后进行下载,当下载完毕后可以发现试验箱上的灯会从左到右依次被点亮,然后又从右向左依次熄灭,之后灯从中间两个开始亮,向两边开始扩散,直至全亮后再从两边向中间逐次熄灭,然后就是灯会以1,4亮,2,5亮,3,6亮,4,7亮此种方式进行,当此次全亮之后,灯开始进入下一轮循环,从左到右依次点亮……如此反复。
单片机实验报告姓名: 学号:一、 实验实现功能:1:计数器功能2:流水灯二、 具体操作:1、计数器功能数码管的动态显示。
每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。
2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。
三、 程序流程图开始 定时器T0 设置初值,启动定时器,打开中断复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开四、程序#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16; //类型定义sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit P2_4 = P2^4; //位声明四个数码管开关sbit Key2 = P3^2;sbit Key3 = P3^3; //位声明2个按键K2和K3sbit Ledk = P2^0 ; //LED 开关void delay(uint16 i); //延时函数声明void refresh (); // 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main() //主函数{TMOD = 0x01; //定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18; //定时器初值使每次循环为1msTR0 = 0; //定时器0开始作ET0 = 0; // 定时器中断关EA = 0; // 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j; // 定义局部变量for(i;i>0;i--) //循环i*240 次for(j=240;j>0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j<4;j++) //四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20); //延时消抖}}/*************定时器的中断服务函数**************/void Timer0_Overflow() interrupt 1 //定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1; //中断开放ET0 = 1; //定时器0中断开while(1){Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{P0=~(1<<j++); //控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{j=0;}}}。
实验(SHÍYÀN)四 LED跑马灯实验(SHÍYÀN)一、实验(shíyàn)目的:1、掌握(zhǎngwò)EXYNOS 4412处理器与LED指示灯的电路(diànlù)原理。
2、掌握linux驱动对EXYNOS 4412 GPIO的控制原理及使用方法。
二、实验设备:TINY4412开发板、学生自带笔记本、USB转串口线、电源、网线。
三、实验地点及时间地点:A2-303a时间:教学周第八周四、实验内容:1、在ARM开发板上面,在驱动程序中利用linux定义的GPIO M4口编写对应管脚电平控制程序,并进行测试验证所学内容。
2、在ARM开发板上面,在上面程序的基础上采用动态IO映射的方法,编写程序,并进行测试验证所学内容。
3、在ARM开发板上面,在驱动程序中利用内核定时器,编写程序,并进行测试验证insmod module后LED跑2圈的结果。
4、在ARM开发板上面,利用2的驱动程序,编写应用程序测试验证LED跑马灯的结果。
五、实验原理:1、GPIO端口原理EXYNOS 4412有300多个输入/输出端口,这些端口都具有多功能,通过引脚配置寄存器,可以将其设置为所需要的功能,如:I/O功能、中断功能等等。
大多数采用EXYNOS 4412的典型LED指示灯电路设计基本都使用M4口(GPM4 共8个输入/输出口)作为其控制端口。
端口寄存器及引脚配置每一个端口都有6个寄存器,它们是:引脚配置寄存器、数据寄存器、引脚上拉寄存GPM4DAT 0x02E4 Port group GPM4 data register 数据寄存器0x00GPM4PUD 0x02E8 Port group GPM4 pull-up/ pull-downregister 上拉寄存器0x5555GPM4DRV 0x02EC Port group GPM4 drive strengthcontrol register0x00_0000GPM4CONPDN 0x02F0 Port group GPM4 power down modeconfiguration register0x0000GPM4PUDPDN 0x02F4 Port group GPM4 power down modepull-up/ pull-down register0x0000端口M4引脚配置(pèizhì)寄存器GPM4CON 0x110002E0 Base Address: 0x1100_0000端口M4数据(shùjù)寄存器 GPM4DAT 0x110002E4为准备(zhǔnbèi)输出或输入的数据,其值为8位[7:0]。
微控制器综合设计与实训实验名称:实验三跑马灯实验实验三:跑马灯实验1 实训任务(1) 编写程序,实现对LED1~LED8的轮流点亮;(2) 仿真调试,调整延时时间,利用仿真示波器观察延时时间长短;(3) 下载程序,观察跑马灯运行状况。
1.1 实验说明本实验将要实现的是控制实训平台上的8个LED灯实现一个类似跑马灯的效果,LED通过控制IO口的高低电平工作,因此实验的关键在于如何控制STM32的IO口输出。
1.2 实验步骤(1) 在实训平台上将IO口与LED(LED1~LED8)连接;(2) 复制工程模板文件夹,新建led.c和led.h文件,并将新建文件加入工程中;(3) 编写led.h文件,声明void LED_Init(void)初始化函数,宏定义LED1~LED8;(4) 编写led.c文件,建立void LED_Init(void)初始化函数,实现对LED灯用到的IO端口的配置,配置为推挽输出,速度为50MHZ;(5) 编写main()函数,实现对LED1~LED8的轮流点亮;(6) 软件仿真,调整延时时间,利用仿真示波器观察延时时间长短;(7) 下载程序,观察跑马灯的运行状况。
2 程序设计2.1 通过数组实现流水灯:2.2 通过宏定义实现流水灯:2.3 通过函数实现流水灯:2.4 通过SYSTICK中断实现流水灯:3硬件原理图设计4 总结通过数组实现流水灯:通过宏定义实现流水灯:通过函数实现流水灯:通过SYSTICK中断实现流水灯:实验心得:本次实验通过四种方法来实现流水灯,分别是通过数组实现流水灯,通过宏定义实现流水灯,通过函数实现流水灯,通过SYSTICK中断实现流水灯。
让我体会到单片机代码的多样性及强大的拓展功能。
MCU通过控制IO口的高低电平来直接控制LED的亮灭,所以本实验的关键是如何控制STM32的IO口输出,来达到我们想要的效果。
就比如灯光秀。
LED跑马灯实验初学者可先动手做下面的实验:发光二极管轮流点亮的实验,也就是通常所说的跑马灯实验,首先让我们来完成必须的硬件部分,我们需要焊接上8个发光二极管和8个限流电阻,可以参考下面的原理图和实物图像进行操作,需要注意的是LED是有极性的,引脚长的为正极,引脚短的为负极,负极和电阻一侧连接,如果接错那么相应的那一路可能在实验中不会点亮了,在焊接前要看仔细哦 D2D7D4D3D1D6D5D8R7R2R3R4R5R6R1R812345678STC89C51RC VCC +5V 下面我们来完成软件编程设计,这里我们没有采用高深的编程技巧,而是用了最笨、最直接的向端口送数的办法来实现,一来程序比较简单,没必要玩深沉,而且初学者看起来直观易懂。
ORG 0000H START:MOV P1,#01111111B;最下面的LED点亮 LCALL DELAY;延时1秒 MOV P1,#10111111B;最下面第二个的LED点亮 LCALL DELAY;延时1秒 MOV P1,#11011111B;最下面第三个的LED点亮 (以下省略) LCALL DELAY MOV P1,#11101111B LCALL DELAY MOV P1,#11110111B LCALL DELAY MOV P1,#11111011B LCALL DELAY MOV P1,#11111101B LCALL DELAY MOV P1,#11111110B LCALL DELAY MOV P1,#11111111B;完成第一次循环点亮,延时约0.25秒 AJMP START;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: MOV R4,#2 L3: MOV R2 ,#250 L1: MOV R3 ,#250 L2: DJNZ R3 ,L2 DJNZ R2 ,L1 DJNZ R4 ,L3 RET END 如何精确计算延时子程序的执行时间? 汇编语言的一大优势就是能够精确控制程序的执行时间,这在编写一些对时序要求严格的外围器件驱动时由为重要! ;延时子程序,12M晶振延时约253毫秒 DELAY: MOV R4,#2------执行1个机器周期,耗时1微秒 L3: MOV R2 ,#250---执行1个机器周期,耗时1微秒 L1: MOV R3 ,#251---执行1个机器周期,耗时1微秒 L2: DJNZ R3 ,L2---执行2个机器周期,反复执行251次(2x251)=502微秒) DJNZ R2 ,L1-----执行2个机器周期,反复执行250次(1+502+2)*250=126250微秒) DJNZ R4 ,L3-----执行2个机器周期,反复执行2次 (1+1+502+126250+2)*2=253512微秒) RET delay 加上第一条总共延时1+253512=253513微秒 。
《DSP技术与实验》实验报告
姓名:学号:学期:
实验名:LED跑马灯
一、实验目的
1.熟悉CCS4集成开发环境
2.掌握CCS4下TMS320VC5509A的编程方法
3.熟悉CSL库的使用
二、实验设备
1.一台装有CCS4软件的计算机
2.HX5509开发板
3.XDS100-USB V1仿真器
三、实验原理
LED实验是一个基础,主要为了熟悉开发环境和5509芯片基本编
程方式。
要实现LED跑马灯就首先要对芯片GPIO进行控制,GPIO为General Purpose Input Output 的缩写,即通用输入输出接口。
每个GPIO都可以配置为输入或输出。
HX5509开发板的LED硬件电路如图一所示。
对GPIO控制寄存器IODIP写1就可以设定GPIO为输出,然后对数据寄存器IODATA写1或0就可以控制LED状态。
GPIO寄存器表如图二所示。
在TI的5509编程过程中,我们不需要直接对寄存器地址操作,而是可以使用TI官方提供的CSL函数库,即Chip Support Library(片级支持库)。
有了它,可以简单方便的完成对DSP器件片上外设配置和控制的编程工作,从而简化了DSP片上外设开发工作,缩短开发周期,并且可以达成标准化控制的编程工作。
通过查阅TMS320C55x Chip Support Library API Reference Guide (Rev.G).pdf可知,GPIO操作函数原型为:
而且官方手册中提示REG include the registers IODIR,IOD ATA,GPIODIR,GPIODATA,GPIOEN,AGPIODIR,AGPIODATA,and AGPIOEN。
想了解更多信息请查阅 DSP5509开发板\应用资料\官方手册
\TMS320C55x Chip Support Library API Reference Guide (Rev.G).pdf。
四、实验步骤
1.打开 CCS4 ,将开发板上电,链接好仿真器;
2打开本实验工程,编译工程;
3.点击Target---->Launch TI Debugger;
4.点击Target---->Connect Target 或者点击工具栏图标连接开发板,当出现如图所示,则说明连接成功。
5.点击Target---->Load Program 或者工具栏图标下载程序
6.点击Target---->Run或者图标运行程序。
此时可以看到开发板上的LED灯开始闪烁。
五、实验结果及分析
1.记录本次实验的实验原理、设计过程、程序设计思想和实验结果、硬件测试结果。
2.LED的详细参数如工作电压,电流你知道吗?
3.熟悉了解CSL库的使用方法。
六、参考文献
1.《所有实验说明.PDF》
2.《TMS320C55xDSP 原理及应用。
》附件:程序及说明
gpio.c #include <csl.h>
#include <csl_pll.h>
#include <csl_chip.h>
#include <csl_gpio.h>
void delay();
/*锁相环的设置*/
PLL_Config myConfig = {
0, //IAI: the PLL locks using the same process that was underway
//before the idle mode was entered
1, //IOB: If the PLL indicates a break in the phase lock, //it switches to its bypass mode and restarts the PLL phase-locking
//sequence
24, //PLL multiply value; multiply 24 times
1 //Divide by
2 PLL divide value; it can be either PLL divide value
//(when PLL is enabled), or Bypass-mode divide value
//(PLL in bypass mode, if PLL multiply value is set to 1)
};
main()
{
int i = 0;
/*初始化CSL库*/
CSL_init();
/*设置系统的运行速度为144MHz*/ PLL_config(&myConfig);
/*确定方向为输出*/
GPIO_RSET(IODIR,0xFF);
for(i = 0;i<0x0a;i++)
{
/*全亮*/
GPIO_RSET(IODATA,0xff);
delay();
/*全灭*/
GPIO_RSET(IODATA,0x0);
delay();
}
/*循环闪烁*/
for(;;)
{
GPIO_RSET(IODATA,0x1);
delay();
delay();
GPIO_RSET(IODATA,0x2);
delay();
delay();
GPIO_RSET(IODATA,0x4);
delay();
delay();
GPIO_RSET(IODATA,0x8);
delay();
delay();
GPIO_RSET(IODATA,0x10);
delay();
delay();
GPIO_RSET(IODATA,0x40);
delay();
delay();
GPIO_RSET(IODATA,0x80);
delay();
delay();
}
}
void delay()
{
Uint32 j = 0,k = 0;
for(j = 0;j<0x0c;j++)
{
for(k= 0;k<0xffff;k++)
{}
}
}。