1、 DSP实验报告 实验名称: 交通灯控制实验___ 系 部: 物理与机电工程学院_ 专业班级: 09电子信息工程(2) 学 号: 2009041645_ _ _ 学生姓名: _ __ 指导教师: 罗锦彬__ __ 完成时间: 2012年04月17日_ 报告成绩:___________ 评阅意见:
2、 评阅教师 日期________ 交通灯控制实验 一、 实验目的 1. 熟悉2812的指令系统; 2. 熟悉74HC573的使用方法; 3. 熟悉DSP的IO操作使用方法。 二、 实验设备 1. 一台装有CCS软件的计算机; 2.插上2812主控板的DSP实验箱; 3. DSP硬件仿真器。 三、 实验原理 此模块由发光二极管和一个锁存器组成。 数据由2812模块的低八位输入,锁存
3、器的控制信号由2812模块输出,但经由CPLD模块译码后再控制锁存器。 74HC573功能: 当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。 四、实验步骤 1.把2812模块小板插到大板上; 2.在CC2000环境中打开本实验工程编译Example_ crossled.prj,生成输出文件,用过仿真器把执行代码下载到DSP芯片; 3.运行程序,发光二极管按交通灯方式点亮熄灭; 4
4、参考源代码,自行修改程序,实现不同的交通灯控制方式。 五、实验现象及分析 实验运行程序后,发光二极管按交通灯方式点亮熄灭。交通控制灯有红黄绿三种颜色组成,红灯代表停止,黄灯代表警示,绿灯代表通行,在车辆逐渐增多的今天,交通灯的出现大大缓解了交通堵塞,以及减少了交通事故的发生。目前交通信号灯控制系统有多种的实现方法,比如可编程序控制器PLC、标准逻辑器件、单片机等方案来实现,本实验采用插上 2812 主控板的DSP 实验箱为核心器件配以数码显示管,发光二极管来进行交通控制灯的设计,采用CCS2000 软件来进行模拟仿真,提高了系统的可实用性,在教学过程中能够使授课内容及过程更加形象生动。
5、 六、实验心得 在本次实验中使我掌握了 2812的指令系统和74HC573的使用方法及IO口的操作使用方法、锁存器等硬件结构的工作原理。进一步掌握用C语言编写DSP程序的方法,及编译、除错能力。这次试验也遇到很多编程上的问题,例如在一句程序结束之后一定要注意要加分号,数据类型要设好等等。 附:实验原程序代码 #include "include/DSP281x_Device.h" // DSP281x Headerfile Include File #include "include/DSP281x_Examples.h" // DSP281x Examples Incl
6、ude File void delay_loop(void); void Gpio_select(void); main() { InitSysCtrl(); EALLOW; EDIS; Gpio_select(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; InitPieVectTable(); InitXintf(); // For this example, init the Xintf while(1) {
7、GpioDataRegs.GPADAT.all =0xdc80; Reg00=0x00;delay_loop(); GpioDataRegs.GPADAT.all =0xec40; Reg00=0x00; delay_loop(); GpioDataRegs.GPADAT.all =0xf0c0; Reg00=0x00; delay_loop(); GpioDataRegs.GPADAT.all =0xec40; Reg00=0x00; delay_l
8、oop(); } } void delay_loop() { short i,j; for (i = 0; i < 32767; i++) {for (j = 0; j < 50; j++);} } void Gpio_select(void) { Uint16 var1; Uint16 var2; Uint16 var3; var1= 0x0000; // sets GPIO Muxs as I/Os var2= 0xFFFF; // sets GPIO DIR as outputs
9、 var3= 0x0000; // sets the Input qualifier values EALLOW; GpioMuxRegs.GPAMUX.all=var1; GpioMuxRegs.GPBMUX.all=var1; GpioMuxRegs.GPDMUX.all=var1; GpioMuxRegs.GPFMUX.all=var1; GpioMuxRegs.GPEMUX.all=var1; GpioMuxRegs.GPGMUX.all=var1; GpioMuxRegs.GPADIR.al
10、l=var2; // GPIO PORTs as output GpioMuxRegs.GPBDIR.all=var2; // GPIO DIR select GPIOs as output GpioMuxRegs.GPDDIR.all=var2; GpioMuxRegs.GPEDIR.all=var2; GpioMuxRegs.GPFDIR.all=var2; GpioMuxRegs.GPGDIR.all=var2; GpioMuxRegs.GPAQUAL.all=var3; // Set GPIO input qualifier values GpioMuxRegs.GPBQUAL.all=var3; GpioMuxRegs.GPDQUAL.all=var3; GpioMuxRegs.GPEQUAL.all=var3; EDIS; }






