嵌入式编程 交通灯显示

article/2025/10/30 14:17:29

要求:

实验平台:MDK5 Proteus8 单片机:AT89C51
1、当A、B道均有车时轮流放行。A道放行10秒,B道放行10秒,转换时黄灯亮0.5秒。时间显示采用数码管显示。
2、一道有车时,另一道无车时,立即让有车的道放行。
3、当有紧急车辆时(如警车,救护车)通行时,禁止普通的车辆通行(A、B道皆亮红灯)。

说明:外部中断0 -¬¬¬¬------救护车、警车通行时,全亮红灯
外部中断1 -------只有一个车道有车时,有车车道处亮绿灯,无车车道亮红灯。
定时器1-------A,B两车道轮流放行,红绿黄三色灯按规定点亮

源代码:

;交通信号灯实验程序LED_BIT  EQU   P1DIG_TUBE EQU   P2DIS_RAM  EQU   30HCLOCK    EQU   40HNUM      EQU   20LEN      EQU   10HINIT_LED EQU   20HORG      0000HLJMP     MAINORG      0003HLJMP     EXINT_0 ;外部中断0 救护车服务函数ORG      0013HLJMP     EXINT_1 ;外部中断1 只有一车道有车服务函数ORG      001BHLJMP     TIMER1   ;定时器1 延时服务函数  
MAIN:MOV      LEN,  #9MOV      LED_BIT,#0FFH ;    LEDOFF  ;熄灭led灯MOV      CLOCK, #00H ;软时钟初始化MOV      P1,    #0EEH  ;初始化交通灯MOV      DIG_TUBE,#6FH  ;初始化数码管读数 高电平点亮 9;定时器1初始化MOV      TMOD,  #10HMOV      TL1,   #0B0HMOV      TH1,   #3CHSETB     TR1  ;启动定时器SETB     ET1  ;开T1中断 ;外部中断初始化SETB     IT0 ;下降沿触发SETB     IT1SETB     EX0  ;使能INT_0SETB     EX1SETB     EA   ;使能总中断 SJMP     $
EXINT_0:   ;救护车通行时MOV      LED_BIT,#0EDH  ;点亮A B的红灯JNB      P3.2,   $CJNE     R6, #00H,TIM2MOV      LED_BIT,#0DBH TIM2:CJNE     R5, #01H,TIM1MOV      LED_BIT,#0EEH    RETITIM1:MOV      LED_BIT,#0F5HRETI  
EXINT_1:   ;只有一车道有车时JB       P0.6,   TIM3  MOV      LED_BIT,#0F5H JNB      P3.2,   TIM4JNB      P0.6,   $TIM3:  JNB      P0.7,   A_CHRETIA_CH:MOV      LED_BIT,#0EEHJNB      P3.2,   TIM4JNB      P0.7,   $TIM4:RETI
TIMER1:     ;正常的交通模式INC      CLOCKMOV      A,     CLOCKCJNE     A,     #NUM,GOON  ;累加次数未到,进GOON;定时时间到处理   MOV      CLOCK,#00H  ;软时钟清零 JNB      P1.0, SAVE1 ;绿灯1点亮时JNB      P1.3, SAVE2 ;绿灯2点亮时JNB      P1.2, TRANS ;黄灯点亮时 SAVE1:MOV      R5,   #1  ;SETB     PSW.5  ;PSW.5 第一个绿灯时为1MOV      R6,   #1SJMP     CLOCK_T1SAVE2:MOV      R5,   #0  ;CLR      PSW.5  ;第二个灯点亮时MOV      R6,   #1SJMP     CLOCK_T1TRANS:    ;黄灯执行程序MOV      R6,#00HCJNE     R5,#01H,NEXT2     ;上一次第一个绿灯亮MOV      LED_BIT,#0F5H    MOV      LEN,#9SJMP     CLOCK_T1NEXT2:    ;第二个灯点亮时  MOV      LED_BIT,#0EEH  MOV      LEN,#9CLOCK_T1:MOV      R0,   #LENMOV      A,    @R0MOV      DPTR, #TABMOVC     A,    @A+DPTRMOV      DIG_TUBE,A DJNZ     LEN,GOONMOV      LED_BIT,#0DBHGOON:MOV      TL1,#0B0H  MOV      TH1,#3CH  RETI    TAB: DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND

实验原理图:
注:
注:外部中断1处的电路是为了辅助程序上的较好的实现,并不影响实验现象。

写于 2020.06.25晚 端午节


http://chatgpt.dhexx.cn/article/QdfHTFS0.shtml

相关文章

嵌入式编程规范及注意事项

嵌入式系统已经在各行各业中得到了广泛的应用,随着人们的生活向信息化,智能化的发展,嵌入式技术将彻底融入到我们的生活,在我们的生活当中扮演越来越重要的角色。对于嵌入式系统来讲,嵌入式软件相当于嵌入式系统的灵魂…

嵌入式编程学习路线图-精心总结

大家好!我是木荣君,今天给大家分享一下嵌入式软件开发学习路线图。这是我按照自己最开始学习嵌入式的时候的学习路线,并且结合自己在多年开发工作中所涉及的知识精心总结的嵌入式软件开发思维导图。这是木荣君精心总结的,花费了不…

嵌入式软件编程模式

文章目录 嵌入式软件编程模式基于周期调用的运行模式基于中断的前后台运行模式基于事件队列的运行模式带时间信息的事件队列运行模式周期任务运行框架 整理自:《AI嵌入式系统:算法优化与实现》 本章介绍嵌入式软件编程模式和通用软件优化方案。嵌入式软件…

其实嵌入式编程还是很难很复杂的

关注、星标公众号,直达精彩内容 来源:coolbacon 能从PC机器编程去看嵌入式问题,那是第一步;学会用嵌入式编程思想,那是第二步;用PC的思想和嵌入式的思想结合在一起,应用于实际的项目&#xff0c…

嵌入式开发常用技巧及编程知识

嵌入式开发常用技巧及C/C知识 引言查询程序占据的内存大static 静态变量介绍static在函数中的用法 ‘##’连接符断言函数宏定义与条件变量#if...#else...#endif选择是否使用串口调试 memcpy函数void 指针指针大小 字符串小写转大写字符串大写转小写字符串命令处理将某几位清0&a…

嵌入式程序编写方法与规范

嵌入式程序编写方法与规范 前言 本文主要讲解嵌入式单片机程序的编写方法以及编写规范,以MSP430单片机作为例子,无论是51,AVR还是STM32单片机都同样适用,本文对C语言各种语法各种关键字进行详细解释,对操作物理地址的方法进行剖析…

嵌入式系统C语言编程基础

目录 关于本环节前言专栏为什么进行本环节 小测验解答 C语言复习1.循环与分支2.作用域与存储类3.内存与指针指针 4.位操作(1)位操作的用途(2)位运算符(3)用法:掩码(4)用法:打开位、关闭位、转置位(5)用法:查看某一位的值(6)用法:移…

密码学学习笔记三:同余定理

同余定理 我们在《密码学学习笔记二:RSA加密法》里面提到过同余,此处把同余作为补充知识,单独写一篇文章讲解一下。 同余定理是数论中的重要概念。给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除&a…

简单理解-同余定理

本文章仅用于笔记。部分知识点来源于网络,授权请联系作者(947043511qq.com)。 直接抛出自己的理解: 2个不同的整数a、b,被一个整数m相除时,得到相同的余数,那么我就可以称a、b同余。 因为a、b同…

以太坊EVM源码注释之执行流程

以太坊EVM源码分析之执行流程 业务流程概述 EVM是用来执行智能合约的。输入一笔交易,内部会将之转换成一个Message对象,传入 EVM 执行。在合约中,msg 全局变量记录了附带当前合约的交易的信息,可能是为了一致,这里也…

【密码学探秘】EVM链和并行执行交易

概述 在web3.0世界中,交易的处理性能一直是公链面临的一大技术挑战,如何在不降低安全性和去中心化程度的前提下显著的提升区块链交易的TPS无疑成为众多公链技术专家追逐的目标。以Solana、Aptos为代表的新一代公链的出现更是吹响了通过并行执行交易来攻…

MATLAB计算EVM函数

function [rmsEVM,maxEVM,pctEVM,numSym] EVMcalculate(RxSig,TxSig)%RxSig为接收信号解调后复基带信号;TxSig是发射信号的复基带信号。 %计算接收信号EVM和画星座图 %RxSig,TxSig长度要一样; evm comm.EVM(‘MaximumEVMOutputPort’,true,… ‘XPerce…

通信算法之149:EVM测量

1.星座图 h scatterplot(sqrt(sps)*txSig(sps*span1:end-sps*span),sps,offset); hold on scatterplot(rxSigFilt(span1:end-span),n,offset,bx,h) scatterplot(dataMod,n,offset,r,h) legend(Transmit Signal,Received Signal,Ideal,location,best) 2. 眼图 Eye Diagram D…

以太坊虚拟机 EVM(2)Solidity运行原理

作者:储雨知|FISCO BCOS 核心开发者 引 言 作为一门面向智能合约的语言,Solidity与其他经典语言既有差异也有相似之处。 一方面,服务于区块链的属性使其与其他语言存在差异。例如,合约的部署与调用均要经过区块链网…

IMA/EVM完整性检测代码分析

IMA/EVM完整性检测 IMA(Integrity Measurement Architecture)是一个内核安全子系统,用于检测文件或数据的完整性和安全性。IMA的hook机制指的是内核接口钩子(kernel interface hooks),用于向IMA注册和实现…

为何Cable Loss没补好 EVM会变差

当EVM不好 或是灵敏度不好时 先别急着找硬件问题 先检查Cable Loss 先说结论 先谈谈标题 为何Cable Loss没补好 EVM会变差 多数射频功放输出 会接一个耦合器 将输出功率 耦合到收发器 用意是校正时 侦测输出功率的正确性与否 假设天线头为20dBm Cable loss为5dB 假设天线头…

TI毫米波级联雷达评估板 MMWCAS-DSP-EVM 和MMWCAS-RF-EVM

1. 前言 本文主要是TI的MMWCAS-DSP-EVM 和MMWCAS-RF-EVM 两块评估板的一些使用心得和毫米波雷达的学习总结。 2. 相关原理 毫米波(mmWave)是一类使用短波长电磁波的特殊雷达技术。通过捕捉反射的信号,雷达系统可以确定物体的距离、速度和角度。毫米波雷达可发射波…

DCA1000EVM使用指南

DCA1000EVM使用指南 一、开发环境 1、硬件 AWR1243/xWR1443/xWR1642BOOST(本文以IWR1642BOOST为例)DCA1000EVM5V/2.5A(电流要求不小于2.5A)电源适配器1个或2个 micro USB线2条RJ45网线1根60引脚Samtec连接线(DCA100…

EVM误差矢量幅度

EVM误差矢量幅度是衡量调制精度的一个主要指标,镜像频率的抑制度对EVM的影响取决于镜像频率的抑制度,一般镜像频率抑制度达到31dBc时,对EVM的影响约为5%。镜像频率对信号的影响是因为镜像频率的信号带宽与所需信号的带宽一样,而无…

区块链 以太坊 虚拟机 EVM 详解

一、虚拟机 虚拟机用来 执行以太坊上的交易,更改以太坊状态。 交易分两种: 普通交易智能合约交易。 在执行交易时需要支付油费。 智能合约之间的调用有四种方式。 二、以太坊虚拟机 以太坊虚拟机,简称 EVM,是用来执行以太坊…