感悟网 导航

基于51单片机的红绿灯设计 基于89C51单片机的交通灯设计报告

作者&投稿:舒项 (若有异议请与网页底部的电邮联系)
基于89C51单片机的交通灯设计报告~

可能不是很符合你的要求,看一看能不能用。
功能:红灯10秒,黄灯2秒。 照着你的要求改一改。
看不清的话,留下邮箱,发给你。
#include"reg51.h"
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^1;
sbit wela=P2^2;
sbit p1_0=P1^0;
uchar code dat[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
uchar code tem[]={0x01,0x02,0x04,0x08,0x10,0x20};
uint i;
uchar num,st;
void delay(uint);
void init();
void main()
{
init();
dula=1;
P0=0xc0;
dula=0;
while(1)
{
if(i==1000)
{
i=0;
num++;
if(st==0)
{
if(num==10)
{
num=0;
st=1;
P2=0x40;
}
}
if(st==1)
{
if(num==2)
{
num=0;
st=2;
P2=0x30;
}
}
if(st==2)
{
if(num==10)
{
num=0;
st=3;
P2=0x40;
}
}

if(st==3)
{
if(num==2)
{
num=0;
st=0;
P2=0x88;
}
}
dula=1;
P0=dat[num];
dula=0;
delay(5);
}
}
}
//程序初始化
void init()
{
EA=1;//开总中断允许
EX0=1;//外部中断0允许
IT0=0;//外部中断0为低电平触发方式
TMOD=0X01;//设定T0为16位定时器
ET0=1;//定时器T0中断允许
TR0=1;//启动定时器T0
TH0=0XFC;
TL0=0X66;
i=0;
num=0;
st=0;
p1_0=1;
wela=1;
P0=0x01;
wela=0;
P0=0xff;
P2=0x88;
}
//延时约为Z毫秒
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=113;y>0;y--);
}
//外部中断0
void int0() interrupt 0
{
P2=0x28;
st=0;
i=0;
num=0;
dula=1;
P0=0xc0;
dula=0;
delay(10);
P2=0x88;
}
//定时器T0精确1ms
void timer0() interrupt 1
{
TH0=0XFC;
TL0=0X66;
i++;
}

我这里有一个用HOLTEK单片机汇编写的,利用查表程序完成,你可以参考一下.


include HT48R10A-1.inc;
;-------------------------------------

data .section 'data' ;资料段

COUNT1 db ? ;延时变数1
count2 db ? ;延时变数2
count3 db ? ;延时变数3
flash db ? ;LED闪烁控制暂存器
rglight db ? ;LED控制暂存器

;---------------------------------------

code .section at 0 'code' ;程序段
org 0H ;程式初始入口地址
jmp start ;

start : ; 程序开始
mov a, 0h
mov pac, a ;设PA为输出口
mov pa,a ;PA清零
;*********************************

loop: ;LED灯循环
mov a, 0 ;
mov tblp, a ;表格指标初始化
tabrdl rglight ;读取最后一页表格内容放入LED控制寄存器
mov a,rglight ;
mov pa, a ;把LED寄存器的内容输出到PA
call delay1 ;调用延时子程序DELAY1
inc tblp ;递增表格内容
mov a, 6 ;
mov flash, a ;设LED闪烁控制寄存器的内容为6次

; ;;;;;;;;;;;;;

flashlamp: ;LED闪烁循环?
tabrdl rglight ;读取最后一页表格内容放入LED控制寄存?
mov a,rglight ;
mov pa,a ;将LED寄存器的内容输出到PA
call delays ;
inc tblp ;递增表格指标
sdz flash ;检LED闪烁是否结束
jmp flashlamp ;闪烁没有结束,跳至LED闪烁循环
tabrdl rglight ;读取最后一页表格内容,放入LED控制寄存器
mov a,rglight ;?
mov pa,a ;将LED寄存器的内容输出到PA
call delaym ;呼叫延时子程序
inc tblp ;递增表格指标
;----------------
tabrdl rglight ;读取最后一页表格内容,放入LED控制寄存器
mov a, rglight
mov pa, a ;将LED寄存器的内容输出到PA
call delay1 ;呼叫延时子程序
inc tblp ;递增表格指标
mov a, 6 ;设LED闪烁次数
mov flash,a ;将闪烁次数放入LED闪烁控制寄存器
flash2: ;LED闪烁循环次数
tabrdl rglight ;读取最后一页表格内容,放入LED控制寄存器
mov a,rglight ;?
mov pa,a ;将LED寄存器的内容输出到PA
call delays ;调用延时子程序
inc tblp ;递增表格指标
sdz flash ;检查LED闪烁是否结束
jmp flash2 ;闪烁没有结束,中央电视台跳至LED闪烁循环2
tabrdl rglight ;读取最后一页表格内容,放入LED控制寄存器
mov a,rglight ;?
mov pa,a ;将LED寄存器的内容输出到PA
call delaym ;呼叫延时子程序DELAYM
jmp loop ;?
;======================== ;?
delay1 proc ; 延时子程序DELAY1
mov a,0fh ;?
mov count1,a ;?
mov count2,a ;?
mov count3,a ;?
d1: ;?
sdz count2
jmp d1 ;?
sdz count2
jmp d1
sdz count1
jmp d1
ret
delay1 endp
;;;;;;;;;;;;;;;;;;;;;;;;;;
delaym proc ;延时子程序DELAYM
mov a, 07h
mov count1 ,a
mov a, 0ffh
mov count2, a
mov count3,a
d2: sdz count3
jmp d2
sdz count2
jmp d2
sdz count1
jmp d2
ret
delaym endp
;------------------------
delays proc ;延时子程序DELAYS
mov a, 0ffh
mov count1, a
mov count2, a
d3: sdz count2
jmp d3
sdz count1
jmp d3
delays endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org 300h ;led表格

dc 0ebh, 0fbh, 0ebh, 0fbh, 0ebh, 0fbh, 0ebh, 0dbh
dc 0beh, 0bfh, 0beh, 0bfh, 0beh, 0bfh, 0beh, 0bdh


; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



end

ORG 0000H
MOV DPTR ,#0B00H ;选中8155的命令寄存器,P2.2接CE端,p2.1接I/O
MOV A,#01H ;命令寄存器设为01H=000000001B D0=1A口输出,D1=0B口输入
MOVX @DPTR,A
LOOP :MOV DPTR,#0B01H
LED0:MOV A,#0FFH ;第一组灯点亮
MOVX @DPTR,A
MOV R4,#09H
LOOP0:ACALL DELAY
DJNZ R4,LOOP0
MOV A,#11011110B
MOVX @DPTR,A
ACALL DELAY
ACALL DELAY
ACALL DELAY
LED1:ACALL DELAY ;第二组灯点亮
MOV A,#11101101B
MOVX @DPTR,A
ACALL DELAY
MOV A,#0FFH
MOVX @DPTR,A
ACALL DELAY
MOV A,#11101101B
MOVX @DPTR,A
ACALL DELAY
MOV A,#0FFH
MOVX @DPTR,A
ACALL DELAY
MOV A,#11101101B
MOVX @DPTR,A
ACALL DELAY

LED2:MOV R5,#09H ;第三组灯点亮
LOOP1:ACALL DELAY
DJNZ R5,LOOP1
MOV A,#11110011B
MOVX @DPTR,A
ACALL DELAY
ACALL DELAY
ACALL DELAY
SJMP LOOP
DELAY:MOV R3,#02H
LOP3:MOV R1,#85H
LOP1:MOV R2,#0FAH
LOP2:DJNZ R2,LOP2
DJNZ R1,LOP1
DJNZ R3,LOP3
RET
END

《MSC-51单片机交通灯论文》
答:1.1 交通灯设计方案选择与论证: 3 1.2设计要求及目的: 3 1.2.1基本要求: 3 1.2.2提高要求: 3 1.2.3设计目的: 4 1.3交通灯控制系统的简单说明: 4 2 系统总体方案及硬件设计 5 2.1 硬件电路各元件介绍: 5 2.1.1核心芯片AT89C51单片机的说明 5 2.1.2两位八段式数码管 7 ...

《基于51单片机的红绿灯设计》
答:/*** 十字路口交通灯控制 C 程序 / define uchar unsigned char#define uint unsigned int#include <reg52.h>/***定义控制位***/sbit Time_Show_LED2=P2^5;//Time_Show_LED2控制位sbit Time_Show_LED1=P2^4;//Time_Show_LED1控制位sbit EW_LED2=P2^3; //EW_LED2控制位sb...

《基于51单片机的交通灯设计中怎样实现红灯亮30秒绿灯亮25秒黄灯亮5秒...》
答:开一个定时器,定时周期1s,设置一个m=0,在定时服务函数里面m++,m=30执行红灯亮,m=55执行绿灯亮,m=60执行黄灯亮,然后m=0

《交通灯方面的研究论文》
答:交通灯方面的研究对于交通管理的发展有着重要的影响。下面就随我一起去阅读交通灯方面的研究论文,相信能带给大家启发。 交通灯方面的研究论文一 摘要: 该文引入了交通灯的系统设计和系统控制计划,此计划设计的交通灯控制系统是基于单片机的。本系统采用MSC-51系列单片机AT89S51为中心器件来设计交通灯控制器。本系统具...

《单片机交通灯的设计》
答:4.2.3 系统工作原理 (1)开关键盘输入交通灯初始时间,通过8051单片机P1输入到系统 (2) 由8051单片机的定时器每秒钟通过P0口向8255的数据口送信息,由8255的PA 口显示红、绿、黄灯的燃亮情况;由8255的PC口显示每个灯的燃亮时间。(3)8051通过 设置 各个信号等的燃亮时间、通过8031设置,绿、...

《单片机交通灯程序》
答:采用51单片机作为系统的MCU,基本完成控制两组交通指示灯交替亮 每个街口有左拐、直行及行人三种指示灯。直行灯每个灯有红、黄、绿三种颜色。自行车与汽车共用左拐和直行灯。首先东西向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒(同时南北向红灯亮95秒),然后东西向红灯亮95秒钟(同时首先南北...

《求高人帮忙单片机交通灯编程》
答:2.当南北为红灯,南北道车辆禁止通行,时间30秒;南北道为绿灯,南北道车辆通过时间38秒 。3.当东西道绿灯,东西道车辆通行,时间为28秒;东西道为红灯,东西道车辆禁止通过时间为40秒。4.这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。参考资料:此程序仿真过...

《单片机C语言红绿灯程序,要求:数码管显示时间倒计时、16*16LED点阵显示...》
答:{4,64,4,64,63,248,4,64,127,252,1,0,31,240,17,16,31,240,17,16,31,240,8,32,16,16,32,8,0,0,0,0}}; //字模表'红‘’绿‘‘黄’void main(){ register uchar i,j;SCON=0x00; //串口工作模式0:移位寄存器方式 TMOD=0x01; //定时器T0工作方式1:16位方式 P1...

《用51单片机制作红绿灯,要求按键能控制整个电路的启动和停止,用汇编语言...》
答:有2种方法:1.用继电器控制,2.把板子的地接在单片机的某一个I/O口上。只要对某个I/O口操作就行了,相信你会吧

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网