求助89c52单片机交通灯程序!
当红灯时按下s2程序报警,但是本来显示十几秒的数码管,十位数突然消失,然后个位数卡住不动,当报警器响完后,十位数又会出现,然后程序就直接卡住不动。
`
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
sbit kaiguan=P3^0;
unsigned int pp;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar j,k,l=255;
uchar a1,a0;
uchar shijian,deng=2,dengL=2;
void delay(unsigned int i)
{
for(j=i;j>0;j–)
for(k=125;k>0;k–);
}
void delaytwo() //大概0.5ms左右的延时
{
uchar a;
for(a=450;a>0;a–)
{
nop();
}
}
void display(unsigned char sh_c,unsigned char g_c)
{
dula=0;
P0=table[sh_c];
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[g_c];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
}
void main()
{
TMOD=0x01;
TR0=1;
TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
TL0=(65536-46080)%256;//46080的来历,为5000011.0592/12
ET0=1;
EA=1;
while(1)
{
while(dengL==1 && !kaiguan)
{
uint m;
uint i;
for(i=5;i>0;i–)
{
for(m=800;m>0;m–) //持续时间0.5ms800
{
beep=~beep;
delaytwo(); //2000HZ的信号。
}
for(m=500;m>0;m–) //持续时间0.5ms2500
{
beep=~beep;
delaytwo();
delaytwo(); //1000HZ的信号。
}
}dengL=2;
}
if(shijian0)
{
switch(deng)
{
case 0: shijian=20; //红灯
deng=1;
dengL=1;
break;
case 1: shijian=5; //黄灯
deng=2;
dengL=2;
break;
case 2: shijian=8; //绿灯
deng=3;
dengL=2;
break;
case 3: shijian=5; //黄灯
deng=0;
dengL=2;
break;
}
}
if(pp20)
{ pp=0;
shijian–;
}
a0=shijian%10;
a1=shijian/10;
display(a1,a0);
switch(deng)
{
case 1: P1=0XEE; //红灯
break;
case 2: //黄灯
if(shijian%20)
P1=0xDD;
if(shijian%21)
P1=0xFF;
break;
case 3: //绿灯
if(shijian%20)
P1=0xBB;
if(shijian%21)
P1=0xFF;
break;
case 0: if(shijian%20) //黄灯
P1=0xDD;
if(shijian%21)
P1=0xFF;
break;
}
}
}
void time0() interrupt 1
{ TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
pp++;
}`
求助89c52单片机交通灯程序!相关推荐
- 8255A红绿灯c语言程序,51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序).doc...
51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序) 51单片机外接8255A做成的交通灯程序及PROTEUS仿真结果(附对应C语言程序)2010-04-21 22:0 ...
- 8255A红绿灯c语言程序,汇编语言的交通灯程序
汇编语言的交通灯程序,单片机采用51单片机,基本完成控制两组交通指示灯交替亮,每个路口有左拐.直行及行人三种指示灯.直行灯设有红.黄.绿三种颜色.非机动车与汽车共用左拐和直行灯.首先东西向直行绿灯和行 ...
- 52单片机交通灯课程设计
单片机交通灯课程设计 1. 实验目的和器件 1.1实验目的 (1)通过单片机课程设计,熟练掌握C语言的编写方法,将理论联系到实际中去,提高我们的动手和动脑能力. (2)通过交通信号灯控制系统的设计,掌 ...
- 89c52流水灯汇编语言,89c52单片机流水灯汇编程序
8路流水灯汇编语言程序的写法 汇编语言程序如下: ;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下: ORG 0000H MOV ...
- 简易交通灯控制系统设计c语言,基于单片机交通灯控制系统设计毕业设计.doc
您所在位置:网站首页 > 海量文档  > 计算机 > Java 基于单片机交通灯控制系统设计毕业设计.doc30页 本 ...
- 【Proteus】51单片机交通灯信号模拟仿真示例二
[Proteus]51单片机交通灯信号模拟仿真示例二 Proteus仿真效果 相关篇<[Proteus]51单片机交通灯信号模拟仿真示例一> 程序代码 /*---------------- ...
- 基于51单片机交通灯控制系统
51单片机交通灯控制系统 可调时间+紧急+行人+黄灯5s 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J008 目录标题 51单片机交通灯控制系统 ...
- 51单片机交通灯(定时器+38译码器+中断)
51单片机交通灯这个实例主要用到的知识点有: >如何点亮LED >38译码器位选与段选 >定时器控制 >中断控制 #include <reg52.h>/****** ...
- c语言流水灯程序详细讲解,用c语言编写单片机流水灯程序详解
用C语言编写的单片机流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. ? 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组 ...
最新文章
- 达观杯_构建模型(四)贝叶斯
- eclipse svn异常:RA layer request failed 的解决方案
- 单机杀毒软件仅是企业信息安全的时尚毛衣
- 不用python编程,制作词云图
- python 合并两个排序的链表
- java 正则 实例_Java正则表达式实例详解
- C 语言的标准输入对象是,《面向对象程序设计C+》期末试卷及标准答案
- 如何快速开发一个 Dubbo 应用?(含沙龙报名)
- 【详解Java中格式化处理】
- 47.leetcode36_valid_suduko
- pageResponse - 让H5适配移动设备全家(移动端适配)
- 突然发现一个很好用Golang的json库
- vue 一个组件内多个弹窗_使用vue实现各类弹出框组件
- 数百种 Windows 软件的免费替代品列表(转)
- 华为网络设备-NAT实验
- 五. 服务的注册 DiscoveryClient 与 ServiceRegistry 服务的发现的简单介绍
- 上电瞬间电容相当于短路
- 仿射密码 python实现
- 为王菲写的第二首歌《山河》
- java中for(;;)表示啥意思