WindowsCE实验七交通灯控制交通灯控制实验目的实验内容实验原理实验步骤结果与分析实验目的了解在生活中并行接口的实际应用进一步掌握8255的使用方法熟悉WinCE平台上的MFC编程实验内容正确连接实验电路编程实现对十字路口交通灯的模拟控制实验原理8255的工作原理及使用方法WinCE中实现延时的方法8255控制字1.工作方式控制字工作方式控制字用来设定A口、B口和C口的数据传送方向和工作方式。工作方式控制字格式8255控制字2.端口C的置位/复位控制字端口C的置位/复位控制字可实现对端口C的每一位进行控制。置位是使该位为1,复位是使该位为0。置位/复位控制字格式8255工作方式方式0——基本输入输出方式通过CPU向控制端口写入方式控制字,决定各端口是输入数据还是输出数据传送数据一般采用无条件传送方式或查询传送方式方式1——选通输入输出方式数据的输入输出操作要借助于选通信号完成利用专用中断请求和联络信号线控制数据传送端口A或端口B用于数据传送,而端口C的大部分I/O线作为联络控制线使用方式2——双向传送方式双向方式指同一组信号线可以两个方向传送数据,只有端口A能工作在此方式使用C口的5根线作为专用应答线应答信号线实际上是方式1输入、方式1输出应答线的组合WinCE中实现延时的方法利用系统的时间计数函数GetTickCount()DWORDGetTickCount(void)WinCE中实现延时的方法利用循环产生时间延迟利用反复进行的空循环来实现时间延迟测算出单位时间(如:每毫秒)内空循环的次数WinCE中实现延时的方法使用WindowsAPI函数Sleep函数voidSleep(DWORDdwMilliseconds)//时间延迟的毫秒数MsgWaitForMultipleObjects函数DWORDMsgWaitForMultipleObjects(DWORDnCount,//指针数组的大小LPHANDLEpHandles,//指向对象处理过程的指针数组BOOLfWaitAll,//等待单一或所有线程DWORDdwMilliseconds,//时间延迟的毫秒数DWORDdwWakeMask//指示等待输入事件的类型);实验步骤(一)连接实验电路(二)构建开发环境(三)编程实现交通灯控制(一)连接实验电路正确连接实验扩展板的相关电路L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。(二)构建开发环境正确连接目标机和宿主机建立WindowsCE平台确认平台的设置中“EnableKITL”选项被选上确认“PlatformManager”目录下的“PlatformManager”属性被加入平台确认“ApplicationsandServicesDevelopment”目录下的“MicrosoftFoundationClasses(MFC)”属性被加入平台正确设置EVC确认已安装针对实验仪的平台SDK确认已正确配置平台管理器(三)编程实现交通灯控制设计目标按下开始按纽,控制六个指示灯按交通灯变化规律燃灭单击停止按纽,停止控制指示灯燃灭十字路口交通灯的变化规律要求:•南北路口的绿灯、东西路口的红灯同时亮30秒左右•南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮•南北路口的红灯、东西路口的绿灯同时亮30秒左右•南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次(三)编程实现交通灯控制8255寄存器端口地址•控制寄存器端口地址28BH•C口地址28AH参考思路在EVC中使用MFC编程完成该程序。以对话框为例,描述参考思路如下:•在开始按纽的消息处理函数中,创建一个工作线程来对8255进行输入输出控制•在该工作线程中创建一个循环。在循环体中,按照交通灯的变化规律交替给8255的C口输出需要的数值;两次显示之间的时间间隔使用延时函数精确控制•在停止按纽的消息处理函数中,使用标志量通知工作线程自行终止,或者调用TerminateThread函数强行关闭工作线程(三)编程实现交通灯控制示例效果结果与分析实验结果记录截取程序运行效果图,并要求有实验指导老师的确认实验结果分析分析实验中所使用延时方法的优缺点指出程序中可以改进的地方并给出可能的解决方法