实验三交通管制信号灯模拟实验

上传人:j****9 文档编号:47856567 上传时间:2018-07-05 格式:PDF 页数:3 大小:91.12KB
返回 下载 相关 举报
实验三交通管制信号灯模拟实验_第1页
第1页 / 共3页
实验三交通管制信号灯模拟实验_第2页
第2页 / 共3页
实验三交通管制信号灯模拟实验_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《实验三交通管制信号灯模拟实验》由会员分享,可在线阅读,更多相关《实验三交通管制信号灯模拟实验(3页珍藏版)》请在金锄头文库上搜索。

1、实验三:交通管制信号灯模拟实验实验三:交通管制信号灯模拟实验I/O 接口接口 一、实验目的一、实验目的 1学习 LED 显示方法 2学习并掌握基于 ARM 开发板的对 I/O 编程 的方法 3了解在 uC/OS-II 操作系统上实现多任务过 程及任务间基本的通讯方式 二、实验内容二、实验内容 用ARM扩展板上的LED和七段数码管模拟十 字路口的交通灯。 将扩展板上的 LED 和数码管分成 两组,分别代表一个路口的双向红黄绿三色灯和记 时器显示, 红绿各显示 20 秒, 黄灯在转换过程中显 示 3 秒。再设一个按钮,按一下表示警察下班了, 双向黄灯开始慢慢闪烁。 提示:提示: 1、有关实验原理请

2、参考实验指导书中实 验五(I/O 实验)以及实验五所对应的源码。 2、硬件结构 发光二极管由 8255 的 c 口控制,左边对应低 位。 数码管片选信号由 8255 的 b 口控制,左边对 应低位。 数码管段选信号由 8255 的 a 口控制。 8255 的各口工作在方式 0。 3、软件结构 可以创建三个任务: Main_Task 负责接收键盘信息,执行工作 状态的决定; LED_Task 负责发光二极管的显示; Dynamic_Display_Task 负责数码管的动态 显示。 4、操作 按“确定”表示开始工作。 按“取消”表示下班。 主任务主任务注:Is_worktime 决定是工作时间或

3、下班时间。 数码管动态显示任务数码管动态显示任务 开始 工作时间? 时间 =10? 显示十位 延时一毫秒 不显示十位 时间=0? 显示个位 延时一毫秒 不显示个位 数码管熄灭 是否 否是 否是 Is worktime=TRUE 键盘消息? 确定键? 取消键? 否是Is worktime=FALSEIs worktime=TRUE是是 否否红绿灯显示任务红绿灯显示任务 说明:说明: EXIO_8255A_CTRL:8255 控制字寄存器 EXIO_8255A_CTRL=0x80,请均使用这种控制字 EXIO_8255A_PORTA:数码管段选 EXIO_8255A_PORTB:数码管位选 EXI

4、O_8255A_PORTC:发光二极管 数码管段选码数组: unsigned char led=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71 延时 1 毫秒 for(j=0;j0?红灯亮? 红灯亮 绿灯亮 计时器减一; 延时一秒; 计时器=20; 黄灯亮; 数码管熄灭 延时一秒 黄灯灭 延时一秒 灯亮标志取反 计时器=20 黄灯亮 延时三秒 否 是是否否 是数码管的控制: 由于八个数码管共用一个数据寄存器 EXIO_8255A_PORTA, 由 EXIO_8255A_PORTB 来

5、决定某一个数码管 亮。EXIO_8255A_PORTA 实验上就是数码管的段选择,只要将 LED数组中对应下标的数值送到 EXIO_8255A_PORTA 中,便可显示相应的值。如 EXIO_8255A_PORTALED2时,则把 2 所对应的 数码管的码段亮暗控制位发送到了数据总线上,再用 EXIO_8255A_PORTB 来决定这时在哪个数码管上把 2 显示出来,确定的方法与 LED 的控制一样,比如 EXIO_8255A_PORTB0xf0 时,则低四位数码管全部 显示出 2。 静态显示与动态显示: 如果只使用一位数码管,则只要选定某一数码管(位选)后,再依次改其中的值(段选) ,就可实

6、现。这 种方式叫静态显示。 但如果要同时在多位上显示不同的值,则需要动态地进行扫描,即依次在每一位上显示不同的值,当高描 反复进行时,人眼看到的就是静态的多位值的显示, 但实际上一个瞬间只有一个数码管亮着。 这种情况下, 可遵循这种流程:给 EXIO_8255A_PORTA 赋值给 EXIO_8255A_PORTB 赋值,决定那个亮延时 一定时间EXIO_8255A_PORTB 赋值 0XFF,关断所有数码管改变 EXIO_8255A_PORTA 中的值, 再给 EXIO_8255A_PORTB 赋值,决定那个亮延时一定时间给 EXIO_8255A_PORTB 赋值 0XFF, 关断所有数码管,依次重复上述过程,便可以实现在多个数码管上显示出不同的值来。 注意:注意:多任务中一定注意 OSTimeDly 的使用,使低优先级的任务可以执行。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号