(十)单片机扩展 8255 芯片 控制 交通灯

目的: 单片机扩展82C55 芯片 用作 输出口,控制 12只 发光二极管亮灭, 模拟对交通灯的管理。

// 执行程序,初始化状态, 4个红灯全亮后, 东西路口的绿灯亮,南北路口的红灯亮,东西方向通车
// 延迟一段时间后, 东西路口绿灯熄灭, 黄灯开始闪烁,闪烁几次后,东西路口红灯亮,同时南北路口绿灯亮,南北通车。
// 延迟一段时间,南北路口的绿灯熄灭, 黄灯开始闪烁,再切换到东西路口绿灯亮,重复上述过程

仿真电路图:

参考代码:

 1
 2
 3 #include<reg52.h>
 4 #include<absacc.h>
 5 #define uint16 unsigned int
 6 #define uchar8 unsigned char
 7
 8 #define LED1 0x01
 9 #define LED2 0x02
10 #define LED3 0x04
11 #define LED4 0x08
12
13 #define LED5 0x10
14 #define LED6 0x20
15 #define LED7 0x40
16 #define LED8 0x80
17
18
19 #define LED9 0x01
20 #define LED10 0x02
21 #define LED11 0x04
22 #define LED12 0x08
23
24 #define PA XBYTE[0x0000]     // PA 、PB 、PC 及    命令端口地址定义   ,看图分析,他妈的看不懂啊
25 #define PB XBYTE[0x0001]
26 #define PC XBYTE[0x0002]
27 #define COM XBYTE[0x0003]
28
29 void DelayMs(uint16 ms)
30 {
31     uchar8 i;
32     while(ms--) for(i=0;i<120;i++);
33
34 }
35
36 void main()
37 {
38      uchar8 i;
39      COM = 0x80;   // 设置 8255 芯片的工作方式、 PA、PB 口 均为 方式0
40
41      for(i=0;i<5;i++)          //  输出 四个红灯都亮,到底怎么回事,调试很凌乱啊,最好自己做一个实物
42      {
43         PA=0xFF & (~LED3)&(~LED6);
44         PB=0xFF & (~LED12)&(~LED9);
45         DelayMs(500);
46      }
47
48      while(1)
49      {
50              // 东西方向绿灯亮,南北方向红灯亮
51              for(i=0;i<10;i++)
52              {
53                PA=0xff&(~LED1)&(~LED6)&(~LED7);
54                PB=0xff&(~LED12);
55                DelayMs(500);
56              }
57
58
59              // 东西方向绿灯灭,黄灯开始闪烁, 南北方向红灯亮,
60              for(i=0;i<5;i++)
61              {
62                PA=0xff&(~LED2)&(~LED6)&(~LED8);
63                PB=0xFF&(~LED12);
64                DelayMs(300);
65
66                PA=0xFF &(~LED6);
67                PB=0xFF &(~LED12);
68                DelayMs(300);
69              }
70
71              // 东西方向红灯亮,南北方向绿灯亮,
72                   for(i=0;i<10;i++)
73
74              {
75                PA=0xff&(~LED3)&(~LED4);
76                PB=0xff&(~LED9)&(~LED10);
77                DelayMs(500);
78              }
79
80
81              // 东西方向红灯亮,南北方向黄灯闪烁
82              for(i=0;i<5;i++)
83              {
84                PA=0xff&(~LED3)&(~LED5);
85                PB=0xFF&(~LED9)&(~LED11);
86                DelayMs(300);
87
88                PA=0xFF &(~LED3);
89                PB=0xFF &(~LED9);
90                DelayMs(300);
91              }
92
93        }
94
95
96 }

总结疑问:

仿真现象,

初始化的时候,等全部亮了,居然,不太懂为什么????

for(i=0;i<5;i++) // 输出 四个红灯都亮,到底怎么回事,调试很凌乱啊,最好自己做一个实物
{
PA=0xFF & (~LED3)&(~LED6);
PB=0xFF & (~LED12)&(~LED9);
DelayMs(500);
}

还是要明白

8255 工作方式 以及 命令端口地址的定义,是最主要的,但是他妈的,不太懂啊??????

时间: 2024-10-08 00:48:15

(十)单片机扩展 8255 芯片 控制 交通灯的相关文章

黑马程序员_交通灯管理系统

(1)项目的需求 模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 例如: 由南向而来去往北向的车辆 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 平时开车过十字路口红绿灯的时候,也知道红绿灯运行的顺序 (1)任何方向的车,向右边转弯的时候,是不需要看红绿灯 (2)在十字路口,相对方向的红绿灯的工作方式是一样的,南相对与北,东相对与西,这把它分成两对 (3)红绿灯顺序,一对直行通道绿灯直行车辆,等直行变红,还是这对的车辆可以左转,等左转变红,就轮到下一对了.所以在设计程序的时候,只

(十) 单片机 扩展并行 I/O 接口芯片 8255芯片

1.仿真电路图 2. 讲解分析电路图 你发现了吗? 上面单片机只用到了 P0 口 不是很好吗,省去了 按键 所需要的 8 个 口 我们来讲讲 8255 芯片以及外围电路的扩展 82C55 芯片 ———可编程的通用并行接口电路(3个8位I/O口) D0-D7 :三态双向数据线,与 P0 口 连接, 用来与单片机传送信息 CS : 片选信号 RD :读信号, 低电平有效,用来读出 82C55 端口数据的控制信号 WR :写信号,低电平有效,用来向 82C55 写入端口数据的控制信号 A1,A0 :

单片机期末实训---- 密码锁和交通灯

交通灯汇编代码: ORG 0000H LJMP MAIN A_BIT EQU 20H B_BIT EQU 21H C_BIT EQU 22H D_BIT EQU 23H TEMP1 EQU 24H TEMP2 EQU 25H TEMP3 EQU 26H TEMP4 EQU 27H ORG 0003H LJMP INTER0 ORG 0013H LJMP INTER1 ORG 0050H MAIN: ;定义中断 MOV SP,#60H SETB IT0 ;边沿触发 SETB EX0;允许外部中断0

奶爸业余单片机学习之:用数码管及LED实现交通灯(初版)

/* * 人行道交通灯程序:LED2(红灯).LED3(黄灯).LED4(绿灯)* 红灯30秒,绿灯3秒,绿灯15秒,倒计时 灯亮时间显示在数码管上* 晶振11.0592MHz,LED.数码管由三八译码器控制,T0中断 *程序思路:由于三八译码器每次只能输出一个低电平,因此必须用动态扫描方式点亮数码管及LED,中断间隔1ms *亮灯时间倒数,红灯60秒,绿灯20秒,黄灯3秒,顺序:红 - 绿 -黄 -红循环,因此每经历1000次中断,实现数字递减. */ #include<reg52.h>un

十字路口交通灯控制——STEP7+S7300PLC

一.实验目的 熟练使用各基本指令,根据控制要求,掌握PLC的编程方法和程序调试方法. 二.控制要求 信号灯受一个启动开关控制,当启动开关接通时,信号灯系统开始工作,且先东西红灯亮,南北绿灯亮.当启动开关断开时,所有信号灯都熄灭. 东西红灯亮维持30秒,在东西红灯亮的同时南北绿灯也亮,并维持25秒.到25秒时,南北绿灯闪亮,闪亮3秒后熄灭.在南北绿灯熄灭时,南北黄灯亮,并维持2秒.到2秒时,南北黄灯熄灭,南北红灯亮,同时,东西红灯熄灭,绿灯亮. 南北红灯亮的情况同上. 三.实验步骤     在实验

VHDL交通灯

转载请注明出处. 很讨厌码迷这种爬虫网站爬取整篇程序,所以还是加些字会好一点: 做的期末EDA实训关于交通灯:题目要求的是要做一个东西南北向的交通灯:有数码管倒计时,LED定时换颜色:复位和交通管制等功能: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JTD IS PORT (CLK1KHZ : IN STD_LOGIC; --1KHZ输入 KEY : IN STD_LOGI

黑马程序员--交通灯管理

模拟实现十字路口的交通灯管理系统逻辑,具体需求如下: 异步随机生成按照各个路线行驶的车辆. 例如: 由南向而来去往北向的车辆 ---- 直行车辆 由西向而来去往南向的车辆 ---- 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 ... 信号灯忽略黄灯,只考虑红灯和绿灯. 应考虑左转车辆控制信号灯,右转车辆不受信号灯控制. 具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑. 注:南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆而后放行左转车辆

Java高级——交通灯管理系统

本方法模拟了现实生活中的交通信号灯的情况 1.先构建Road类,此类可以创建12个方向的路 代码如下: 1 package com.springtie.traffic; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Random; 6 import java.util.concurrent.ExecutorService; 7 import java.util.concurrent.Exec

黑马程序员——【Java高新技术】——案例:交通灯管理系统

一.交通灯管理系统的项目需求 Ø 异步随机生成按照各个路线行驶的车辆 例如: 由南向而来去往北向的车辆 ---- 直行车辆 由西向而来去往南向的车辆 ---- 右转车辆 由东向而来去往南向的车辆 ---- 左转车辆 …… Ø 信号灯忽略黄灯,只考虑红灯和绿灯. Ø 应考虑左转车辆控制信号灯,右转车辆不受信号灯控制. Ø 具体信号灯控制逻辑与现实生活中普通交通灯控制逻辑相同,不考虑特殊情况下的控制逻辑. 注:南北向车辆与东西向车辆交替放行,同方向等待车辆应先放行直行车辆,而后放行左转车辆. Ø 每