- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DSP 原理及 C 程序开发
交通灯综合控制实验及程序代码 一、实验目的
◇ 熟悉使用 ICETECK-F2812-A 评估板控制 ICETECK-CTR 上交通灯的方法
◇ 掌握 TMS320F2812DSP 定时器的使用和编程
◇ 掌握 TMS320F2812DSP 外中断的使用和编程
二、实验要求
1、交通灯控制要求
◇ 交通灯分红黄绿三色,东、南、西、北各一组
◇ 计时显示:8*8 点阵显示两位计数
◇ 正常交通控制信号顺序
南北绿灯:东西红灯(20s)
南北绿灯闪烁
南北黄灯
南北红灯,东西黄灯
东西绿灯(20s)
东西绿灯闪烁
东西黄灯
返回 1 循环控制
◇ 紧急情况处理
当任意方向通行剩余时间多于 10s,将时间给为 10s
正常变换到四面红灯(20s)
直接返回正常信号顺序的下一个通行信号(跳过闪烁绿灯、黄灯状态)
2、交通灯模拟
利用 ICETECK-CTR 上的一组发光二极管(共 12 只,分为东西南北四组、红黄绿三色)的亮 灭实现交通信号的模拟;
3、计时显示
利用 ICETEK-CTR 上的发光二极管显示阵列模拟显示
4、计时
利用 TMS320F2812DSP 片上定时器,定时产生时钟计数,再利用此计数对应具体时间 5、紧急情况
利用 ICETECK-CTR 上键盘产生外中断,中断正常信号顺序,模拟突发情况
6、程序设计
由于控制是由不同的各种状态按顺序发生的,可采用状态机控制方法来实现、 ◇ 首先列举所有可能发生的状态
◇ 然后将这些状态编号,按顺序产生这些状态;状态延续的时间用程序控制
◇
对于突发情况,可采用在正常顺序的控制中插入特殊控制序列的方式完成
三、实验步骤
1.实验准备
连接实验设备:
连接实验箱附带的键盘的 PS2 插头到 ICETEK-CTR 的“键盘接口”P8。
将 ICETEK-CTR 板的供电电源开关拨动到“开”的位置。
.设置 Code Composer Studio3.3 在硬件仿真(Emulator)方式下运行。
.启动 Code Composer Studio 3.3,选择菜单 Debug→Connect ; Debug→Reset CPU。 4.打开工程文件,工程目录为: C:\ICETEK\F2812AES60\F2812AES60\DSP281x_examples\lab0601-TrafficLight。 5.编译并下载程序。
.运行程序观察结果。观察交通灯信号是否正常工作。
.突发事件控制
在 ICETEK-CTR 附带的小键盘上按下除“Enter”键外的按键,观察信号是否满足要求。 8.结束程序运行退出。
在 ICETEK-CTR 附带的小键盘上按下“Enter”键。
9.退出 CCS。
四、实验程序
#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
原创力文档


文档评论(0)