资源简介
研究目的: 模拟交通灯控制器就是使用单片机来控制一些LED和数码管,模拟真实交通灯的功能。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等。利用所学知识设计一款基于单片机的交通信号灯的控制系统。主要功能如下:东西向与南北向信号灯定时20秒交换一次、每次交换时点亮黄灯5s提醒行人。

代码片段和文件信息
#include
//--定义你要使用的IO口--//
#define GPIO_DIG P0
#define GPIO_PLACE P1 //1111-1101
//定义颜色
#define RED 1
#define YELLOW 2
#define GREEN 3
#define YELLOW_1 4
unsigned char Time;
//--定义全局变量--//
//RAMROM
unsigned char code DIG_CODE[16]={0x3F 0x06 0x5B 0x4F 0x66 0x6D 0x7D 0x07
0x7F 0x6F 0x77 0x7C 0x39 0x5E 0x79 0x71};
unsigned char code DIG_PLACE[4]={
0xFE0xFD0xFB0xF7};//位选控制 查表的方法控制
unsigned char MyData[4]={0000};
//init
unsigned char x_R_val = 8;
unsigned char x_Y_val = 0;
unsigned char x_G_val = 0;
unsigned char y_R_val = 0;
unsigned char y_Y_val = 0;
unsigned char y_G_val = 15;
unsigned char x_static = 0;
unsigned char y_static = 0;
sbit x_R_LED = P2^2;
sbit x_Y_LED = P2^1;
sbit x_G_LED = P2^0;
sbit y_R_LED = P2^4;
sbit y_Y_LED = P2^5;
sbit y_G_LED = P2^3;
#define x_R_Work() x_R_LED = 0; x_Y_LED = 1; x_G_LED = 1;
#define x_Y_Work() x_R_LED = 1; x_Y_LED = 0; x_G_LED = 1;
#define x_G_Work() x_R_LED = 1; x_Y_LED = 1; x_G_LED = 0;
#define y_R_Work() y_R_LED = 0; y_Y_LED = 1; y_G_LED = 1;
#define y_Y_Work() y_R_LED = 1; y_Y_LED = 0; y_G_LED = 1;
#define y_G_Work() y_R_LED = 1; y_Y_LED = 1; y_G_LED = 0;
/*******************************************************************************
* 函数名 : DigDisplay
* 函数功能 : 使用数码管显示
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void DigDisplay()
{
unsigned char i;
unsigned int j;
for(i=0;i<4;i++)
{
GPIO_PLACE=DIG_PLACE[i];
GPIO_DIG=DIG_CODE[MyData[i]];//发送段码
j=10; //扫描间隔时间设定
while(j--);
GPIO_DIG=0x00;//消隐
}
}
/*******************************************************************************
* 函数名 : TimerConfiguration()
* 函数功能 : 配置定时器值
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void TimerConfiguration()
{
TMOD = 0x01; //选择工作方式1
TH0 = 0x3C; //设置初始值定时50MS
TL0 = 0xB0;
EA = 1; //打开总中断
ET0 = 1; //打开定时器0中断
TR0 = 1; //启动定时器0
}
/*******************************************************************************
* 函数名 : Timer0()
* 函数功能 : 定时器0中断函数
* 输入 : 无
* 输出 : 无
*******************************************************************************/
void Timer0() interrupt 1
{
TH0 = 0x3C; //设置初始值
TL0 = 0xB0;
Time++;
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
TimerConfiguration();
Time = 0;//初始化时间
//自动判断当前状态
//1:R 2:Y 3:G
if((x_R_val!=0)&&(x_Y_val==0)&&(x_G_val==0))
{
x_static = RED;
}
if((x_R_val==0)&&(x_Y_val!=0)&&(x_G_val==0
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-09 11:37 原理图\
文件 117784 2017-03-19 22:21 原理图\Sheet1.PDF
文件 250368 2017-03-19 22:20 原理图\Sheet1.SchDoc
目录 0 2017-06-04 04:24 实物照片\
文件 2604237 2017-03-19 22:05 实物照片\IMG_1300.JPG
文件 2826829 2017-03-19 21:29 实物照片\IMG_1301.JPG
文件 1533880 2017-03-19 21:29 实物照片\IMG_1302.JPG
文件 1763133 2017-03-19 21:29 实物照片\IMG_1303.JPG
文件 2276310 2017-03-19 22:36 实物照片\IMG_1304.JPG
目录 0 2017-06-04 04:24 源代码\
目录 0 2017-06-04 04:24 源代码\Listings\
文件 15234 2017-03-19 22:31 源代码\Listings\main.lst
文件 11911 2017-03-19 22:31 源代码\Listings\Project.m51
文件 14155 2017-03-19 22:31 源代码\Listings\STARTUP.lst
文件 5668 2017-03-19 22:31 源代码\main.c
目录 0 2017-06-04 04:24 源代码\ob
文件 9472 2017-03-19 22:31 源代码\ob
文件 8780 2017-03-19 22:31 源代码\ob
文件 991 2017-03-19 22:31 源代码\ob
文件 2065 2017-03-19 22:31 源代码\ob
文件 105 2017-03-19 22:31 源代码\ob
文件 819 2017-03-19 22:31 源代码\ob
文件 71083 2017-03-19 22:31 源代码\Project.uvgui.Tanghua
文件 5389 2017-03-19 21:29 源代码\Project.uvopt
文件 14031 2017-03-19 21:29 源代码\Project.uvproj
文件 6376 2016-03-14 08:58 源代码\STARTUP.A51
相关资源
- 2018西门子杯中国智能制造挑战赛逻辑
- AsyncTask文件控制暂停和继续,在状态
- DV泵加罗茨泵独立控制系统PID.smart
- F28335无刷直流电机开闭环控制
- 模糊PID控制 c
- 基于MSP430G2553的蓝牙控制小车
- Verilog FPGA UART串口控制器
- SG3525频率PWM控制均可调模块
- 51单片机控制舵机程序
- Qt Creator opengl实现四元数鼠标控制轨迹
- 机器人单机械臂滑模控制程序
- ply格式文件的读写程序
- [免费]msp430f149控制PS2键盘并用1602显示
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- vhdl与lcd1602实现的多控制电子钟
- 欧姆龙控制2个伺服
- 远程桌面(带C 源码)
- 8259A中断控制实验
- nVidia 控制面板 API
- 单片机 DS18B20 温度控制系统
- 单片机AT89s52控制GSM模块TC35i发短信,
- 课程设计蔬菜大棚自动控制系统,包
- 基于proteus的单片机仿真--交通灯控制
- 带时间温度显示的室内灯光控制系统
- 单片机控制的步进电机正反转和加速
- 单片机控制74ls164程序
- 张力控制变频收卷程序
- 基于EWB软件的数码管显示控制器
- 学生成绩管理系统C 源码(很完整)
- pb (powerbuilder) 编写的自动转台控制
评论
共有 条评论