单片机第16课:简易交通灯

JP3接PO口。

JP1接P2口,J22接P3.0和P3.1口。

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uchar smg = 0;
uchar code table[] = {0xc0, 0xf9, 0xa4, 0xb0,
					  0x99, 0x92, 0x82, 0xf8,
					  0x80, 0x90, 0x88, 0x83,
					  0xc6, 0xa1, 0x86, 0x8e};
int flag_t0_green = 0;

sbit led_frag_green = P3^1;
sbit led_frag_red = P3^0;

void init_t0();
void init_traffic();

void main()
{
	init_t0();
	init_traffic();
	while(1)
	{

	}
}
//¶¨Ê±Æ÷³õʼ»¯
void init_t0()
{
	TMOD = 0x01;
	TH0 = (65536-50000)/256;
	TL0 = (65536-50000)%256;
	ET0 = 1;
	EA = 1;
	TR0 = 1;
}
//³õʼ»¯½»Í¨µÆ
void init_traffic()
{
	//Ö÷¸ÉµÀÂ̵ÆÁÁ£¬Ö§Â·ºìµÆÁÁ,	Ö÷¸ÉµÀ·½ÏòÉϵÄÈËÐеÀ¿ÉÒÔͨÐÐ
	P2 = 0xb3;
	led_frag_green = 1;
	led_frag_red = 0;
	P0 = table[0];
}
//ÖжϷþÎñ³ÌÐò
void timer0() interrupt 1
{
	TH0 = (65536-50000)/256;
	TL0 = (65536-50000)%256;
	flag_t0_green++;
	if(flag_t0_green%20 == 0)
		{
			smg++;
			P0 = table[smg];

		}
		if(flag_t0_green == 200)
		{
			P2 = 0xab;
			smg = 0;
		}
		if(flag_t0_green == 300)
		{
			smg = 0;
			P2 = 0x5e;
			led_frag_green = 0;
			led_frag_red = 1;
		}
		if(flag_t0_green == 400)
		{
			//½«Ö§Â·µÄ»ÆµÆµãÁÁ
			P2 = 0x5d;
			smg = 0;
		}
		if(flag_t0_green == 500)
		{
			init_traffic();
			flag_t0_green = 0;
			smg = 0;
		}
}
时间: 2024-10-16 06:36:10

单片机第16课:简易交通灯的相关文章

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

目的: 单片机扩展82C55 芯片 用作 输出口,控制 12只 发光二极管亮灭, 模拟对交通灯的管理. // 执行程序,初始化状态, 4个红灯全亮后, 东西路口的绿灯亮,南北路口的红灯亮,东西方向通车// 延迟一段时间后, 东西路口绿灯熄灭, 黄灯开始闪烁,闪烁几次后,东西路口红灯亮,同时南北路口绿灯亮,南北通车.// 延迟一段时间,南北路口的绿灯熄灭, 黄灯开始闪烁,再切换到东西路口绿灯亮,重复上述过程 仿真电路图: 参考代码: 1 2 3 #include<reg52.h> 4 #incl

EDA课设-交通灯-Verilog版

分得到析四个状态: S1: 主干道(绿灯亮) ,支干道(亮红灯):--40S S1: 主干道 (黄灯亮) ,支干道(亮红灯):--4S S1: 主干道 (亮红灯),支干道(绿灯亮):--20S S1: 主干道 (亮红灯),支干道(黄灯亮):--4S 代码:包括四部分:traffic_ligh_top(顶层例化).traffic_light(交通灯控制部分).led_input_display(把(交通灯控制部分的)数据打一拍(再送给74595)).led_74595_driver(串转并-进行显

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

交通灯汇编代码: 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

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高新技术】——案例:交通灯管理系统

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

[51单片机] nRF24L01 无线模块 测试 按键-灯-远程控制

哈哈,穷吊死一个,自己做的一个超简单的板还没有电源提供,只得借助我的大开发板啦.其实这2个模块是完全可以分开的,无线嘛,你懂得!进入正题,这个实验的功能就是一个发送模块(大的那个板)连接4个按键,通过按动这4个不同的按键来发送4种不同的命令,来控制接收端(小的板)点亮4个不同的灯. >_<!首先是发送模块: 1 void main() 2 { 3 uchar Tx_Buf1[]={1}; //发送的信息1 4 uchar Rx_Buf[32]; //接收到的数据暂存器,最多32字节数据 5 i

设计“十字路口交通灯管理系统”

项目:一条主干道,一条乡间公路.组成十字路口,要求优先保证主干道通行. 设计要求: (1)     有MR(主红).MY(主黄).MG(主绿).CR(乡红).CY(乡黄).CG(乡绿)六盏交通灯需要控制: (2)     交通灯由绿→红有4秒黄灯亮的间隔时间,由红→绿没有间隔时间: (3)     系统有MRCY.MRCG.MYCR.MGCR四个状态: (4)     乡间公路右侧各埋有一个传感器,当有车辆通过乡间公路时,发出请求信号S=1,其余时间S=0: (5)     平时系统停留在MGC