主题:紧急求助交通灯四个状态控制程序
图片不能显示啊,麻烦请高手看下这里http://bbs.unsp.com/showtopic.aspx?page=end&topicid=31670#93399
主程序比较简单,初始化完成后,调用按键扫描程序,取得键值,并根据当前系统状态调用相应的子程序。这里有四个基本的子程序供调用,分别对应系统的失重状态。这四个子程序是正常运行子程序、紧急状态子程序、设置子程序和查询子程序,它们的流程图 5.2下所示。
[align=center]
图 5.2 紧急状态子程序
[/align]在紧急状态下,所有的LED都被置为红灯。在这种状态下,只有Key3才可以把状态改为正常运行状态。
[align=center]
图 5.3 设置状态子程序
[/align]在设置状态,按下Key1开始设置南北的红灯时间,按下Key2设置南北的绿灯时间,按下Key3返回正常运行状态。红灯和绿灯的时间最大可以设为99,超出99的时候会从20开始重新计数。
[align=center]
图 5.4 查询状态子程序
[/align]在查询状态,按下Key1播报南北路口的车流量,按下Key2播报东西路口的车流量,按下Key3返回正常运行状态。
语音播报采用凌阳公司提供的SACM-S480。
SACM-S480压缩算法压缩比较大80:3,存储容量大,适用于语音播放, 如“文曲星”词库。
其相关API函数如下所示:
int SACM_S480_Initial(int Init_Index) //初始化
void SACM_ S480_ServiceLoop(void) //获取语音资料,填入译码队列
void SACM_ S480_Play(int Speech_Index, int Channel, int Ramp_Set)
void SACM_ S480_Stop(void) //停止播放
void SACM_S480_Pause (void) //暂停播放
void SACM_S480_Resume(void) //暂停后恢复
void SACM_S480_Volume(Volume_Index) //音量的控制
unsigned int SACM_S480_Status(void) //获取模块的状态
Call F_FIQ_Service_ SACM_S480 //中断服务函数
图 5.5 正常运行状态子程序
在正常运行状态下,首先进行按键处理。若按键为Key1会进入紧急状态,若按键为Key2会进入设置状态,若按键为Key3会进入查询状态。然后是流量检测和显示控制。每秒钟去查询子状态,根据子状态的标记去刷新相应的发光二极管和数码管控制单元。流量检测和显示控制的子程序如图 5.6图 5.7所示。 [url=http://bbs.unsp.com/attachment.aspx?attachmentid=678]http://bbs.unsp.com/attachment.aspx?attachmentid=678[/url]
主程序比较简单,初始化完成后,调用按键扫描程序,取得键值,并根据当前系统状态调用相应的子程序。这里有四个基本的子程序供调用,分别对应系统的失重状态。这四个子程序是正常运行子程序、紧急状态子程序、设置子程序和查询子程序,它们的流程图 5.2下所示。
[align=center]
图 5.2 紧急状态子程序
[/align]在紧急状态下,所有的LED都被置为红灯。在这种状态下,只有Key3才可以把状态改为正常运行状态。
[align=center]
图 5.3 设置状态子程序
[/align]在设置状态,按下Key1开始设置南北的红灯时间,按下Key2设置南北的绿灯时间,按下Key3返回正常运行状态。红灯和绿灯的时间最大可以设为99,超出99的时候会从20开始重新计数。
[align=center]
图 5.4 查询状态子程序
[/align]在查询状态,按下Key1播报南北路口的车流量,按下Key2播报东西路口的车流量,按下Key3返回正常运行状态。
语音播报采用凌阳公司提供的SACM-S480。
SACM-S480压缩算法压缩比较大80:3,存储容量大,适用于语音播放, 如“文曲星”词库。
其相关API函数如下所示:
int SACM_S480_Initial(int Init_Index) //初始化
void SACM_ S480_ServiceLoop(void) //获取语音资料,填入译码队列
void SACM_ S480_Play(int Speech_Index, int Channel, int Ramp_Set)
void SACM_ S480_Stop(void) //停止播放
void SACM_S480_Pause (void) //暂停播放
void SACM_S480_Resume(void) //暂停后恢复
void SACM_S480_Volume(Volume_Index) //音量的控制
unsigned int SACM_S480_Status(void) //获取模块的状态
Call F_FIQ_Service_ SACM_S480 //中断服务函数
图 5.5 正常运行状态子程序
在正常运行状态下,首先进行按键处理。若按键为Key1会进入紧急状态,若按键为Key2会进入设置状态,若按键为Key3会进入查询状态。然后是流量检测和显示控制。每秒钟去查询子状态,根据子状态的标记去刷新相应的发光二极管和数码管控制单元。流量检测和显示控制的子程序如图 5.6图 5.7所示。 [url=http://bbs.unsp.com/attachment.aspx?attachmentid=678]http://bbs.unsp.com/attachment.aspx?attachmentid=678[/url]