文档详情

2022年DSP交通灯综合控制程序代码

科***
实名认证
店铺
DOCX
218.05KB
约16页
文档ID:310353599
2022年DSP交通灯综合控制程序代码_第1页
1/16

名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -. DSP原理及 C程序开发 交通灯综合掌握试验及程序代码一、试验目的 ◇ 熟识使用 ICETECK-F2812-A评估板掌握 ICETECK-CTR上交通灯的方法 ◇ 把握 TMS320F2812DSP 定时器的使用和编程 ◇ 把握 TMS320F2812DSP 外中断的使用和编程二、试验要求 1、交通灯掌握要求 ◇ 交通灯分红黄绿三色,东、南、西、北各一组 ◇ 计时显示: 8*8 点阵显示两位计数 ◇ 正常交通掌握信号次序 ① 南北绿灯:东西红灯 〔20s〕 ② 南北绿灯闪耀 ③ 南北黄灯 ④ 南北红灯,东西黄灯 ⑤ 东西绿灯 〔20s〕 ⑥ 东西绿灯闪耀 ⑦ 东西黄灯 ⑧ 返回 1 循环掌握 ◇ 紧急情形处理① 当任意方向通行剩余时间多于 ② 正常变换到四周红灯 〔20s〕 10s, 将时间给为 10s ③ 直接返回正常信号次序的下一个通行信号 〔 跳过闪耀绿灯、黄灯状态 〕 2、交通灯模拟 利用 ICETECK-CTR上的一组发光二极管 〔 共 12 只,分为东西南北四组、红黄绿三色 〕 的亮 灭实现交通信号的模拟;3、计时显示 利用 ICETEK-CTR上的发光二极管显示阵列模拟显示 4、计时 利用 TMS320F2812DSP 片上定时器,定时产生时钟计数,再利用此计数对应详细时间 5、紧急情形 利用 ICETECK-CTR上键盘产生外中断,中断正常信号次序,模拟突发情形 6、程序设计. 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -. 由于掌握是由不同的各种状态按次序发生的,可采纳状态机掌握方法来实现、◇ 第一列举全部可能发生的状态◇ 然后将这些状态编号,按次序产生这些状态;状态连续的时间用程序掌握◇ 对于突发情形,可采纳在正常次序的掌握中插入特别掌握序列的方式完成三、试验步骤1.试验预备(1)连接试验设备:(2)连接试验箱附带的键盘的PS2插头到 ICETEK-CTR的“ 键盘接口”P8;(3)将 ICETEK-CTR板的供电电源开关拨动到“ 开” 的位置;2.设置 Code Composer Studio3.3在硬件仿真 〔Emulator〕 方式下运行;3.启动 Code Composer Studio 3.3 ,挑选菜单 Debug→Connect ; Debug →Reset CPU;4.打开工程文件,工程目录;为:C:\ICETEK\F2812AES60\F2812AES60\DSP281x_examples\lab0601-TrafficLight5.编译并下载程序;6.运行程序观看结果;观看交通灯信号是否正常工作;7.突发大事掌握在 ICETEK-CTR附带的小键盘上按下除“8.终止程序运行退出;Enter ” 键外的按键,观看信号是否满意要求;在 ICETEK-CTR附带的小键盘上按下“ Enter ” 键;9.退出 CCS;. 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -. 四、试验程序#include "DSP281x_Device.h" // DSP281x Headerfile Include File #include "DSP281x_Examples.h" // DSP281x Examples Include File Uint16 var1 = 0; Uint16 var2 = 0; Uint16 var3 = 0; Uint16 test_count = 0; Uint16 Test_flag = 0; Uint16 Test_var = 0; Uint16 Test_status[32]; #define nStatusNSGreenEWRed 160 //用数字来区分每一个状态南北绿灯,东西红灯#define nStatusNSFlashEWRed 184 //南北绿灯闪耀,东西红灯#define nStatusNSYellowEWRed 200 //南北黄灯,东西红灯#define nStatusNSRedEWYellow 216 //南北红灯,东西黄灯#define nStatusNSRedEWGreen 376 //南北红灯,东西绿灯#define nStatusNSRedEWFlash 400 //南北红灯,东西绿灯闪耀#define nStatusNSRedEWYellow1 416 //南北红灯,东西黄灯#define nStatusNSYellowEWRed1 432 //南北黄灯,东西红灯#define nTotalTime 448 //正常次序一个循环#define nStatusHold 160 //突发情形#define statusNSGreenEWRed 0 //一共 7 个状态#define statusNSFlashEWRed 1 #define statusNSYellowEWRed 2 #define statusNSRedEWYellow 3 #define statusNSRedEWGreen 4 #define statusNSRedEWFlash 5 #define statusHold 6 int a=0; unsigned int uWork,nTimeCount,nTimeMS; // 计数时使用的变量unsigned int uLightStatusEW,uLightStatusSN; // unsigned int bHold; // 东西、南北红黄绿二极管的亮灭情形 用来说明是否处于突发情形unsigned char ledbuf[8],ledx[8]; // 二极管点阵显示用到unsigned char led[40]= { 0x7E,0x81,0x81,0x7E,0x00,0x02,0xFF,0x00, 0xE2,0x91,0x91,0x8E,0x42,0x89,0x89,0x76, 0x38,0x24,0x22,0xFF,0x4F,0x89,0x89,0x71, 0x7E,0x89,0x89,0x72,0x01,0xF1,0x09,0x07, 0x76,0x89,0x89,0x76,0x4E,0x91,0x91,0x7E }; void main〔void〕 . 细心整理归纳 精选学习资料 - - - - - - - - - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 名师归纳总结 精品学习资料 - - - - - - - - - - - - - - -. { int nWork1,nWork2,nWork3,nWork4,k; int nNowStatus,nOldStatus,nOldTimeCount,nSaveTimeCount,nSaveStatus; unsigned int nScanCode; nTimeCount=0; bHold=0; // 给各变量赋初值 uLightStatusEW=uLightStatusSN=0; nNowStatus=0; nOldStatus=1; nOldTimeCount=0; //InitSysCtrl〔〕;// 初始化 cpu InitPll〔0x0〕; //SYSCLKOUT=30 MHz /2=15MHz DINT;// 关中断 InitPieCtrl〔〕;// 初始化 pie 寄存器 CTRGR=0; // 初始化 ICETEK-CTR 详细说明见试验箱硬件编程CTRGR=0x80; CTRGR=0; CTRLR=0; // 关闭东西方向的交通灯CTRLR=0x40; // 关闭南北方向的交通灯CTRLR=0x0c1; // 开启示光二极管显示阵列for 〔 k=0;k<8;k++ 〕 { ledbuf[k]=0x0ff; // 显示为空白值为“1” 时灭;值为“0” 时点亮ledx[k]=〔k<<4〕; // 生成显示列掌握字} k=CTRLCDCR; // 清除键盘缓冲区 StartCpuTimer0〔〕;// 启动定时器 0 // 依据计时器计数切换状态// 依据状态设置计数和交通灯状态while 〔 1 〕 { if 〔 bHold && nNowStatus==statusHold 〕 //突发情形{ if 〔 nTimeCount>=nStatusHold 〕 { nNowStatus=nSaveStatus; nTimeCount=nSaveTimeCount; bHold=0; } }// 依据计数值来确定状态else if 〔 nTimeCount

下载提示
相似文档
正为您匹配相似的精品文档
相关文档