精华内容
下载资源
问答
  • 数码管显示的,和指示灯共同构成的交通灯51c程序
  • 51单片机用C语言实现交通灯(红绿灯)源程序2009-10-29 23:00交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。源程序如下:/*1、程序目的:使用定时器学习 倒计时 红绿灯原理 主要...

    51单片机用C语言实现交通灯(红绿灯)源程序

    2009-10-29 23:00

    交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。

    源程序如下:

    /*1、程序目的:使用定时器学习 倒计时 红绿灯原理 主要程序和倒计时一样2、硬件要求:数码管、晶振12M*/#include

    bit red,green,yellow,turnred;????????? //定义红、黄、绿及转红标志

    code unsigned char tab[]=??? {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; ??? //共阴数码管 0-9

    unsigned char Dis_Shiwei;//定义十位unsigned char Dis_Gewei; //定义个位void delay(unsigned int cnt)????????? //用于动态扫描数码管的延时程序{while(--cnt);}

    main(){

    TMOD |=0x01;//定时器设置 10ms in 12M crystal定时器0,工作方式1,16位定时器TH0=0xd8;??????????? //65535-10000=55535=D8F0(十六进制)TL0=0xf0;IE= 0x82; //中断控制,EA=1开总中断,ET0=1:定时器0中断允许TR0=1;??? //开定时器0中断

    P1=0xfc;//红灯亮,根据红黄绿接灯的顺序。red =1;while(1){P0=Dis_Shiwei;//显示十位,这里实现用8位数码管,即左1位P2=0;delay(300);//短暂延时P0=Dis_Gewei; //显示个位,左数,2位P2=1;delay(300);}

    }/********************************//*????? 定时中断??????????????? *//********************************/void tim(void) interrupt 1 using 1{static unsigned char second=60,count; //初值60

    TH0=0xd8;//重新赋值,10毫秒定时TL0=0xf0;count++;if (count==100)??? {??? count=0;??? second--;//秒减1if(second==0)??? { //这里添加定时到0的代码 ,可以是灯电路,继电器吸合等,或者执行一个程序?????? if(red)?? //红灭,先转黄????? {??? red=0;yellow=1;????????? second=4;??? P1=0xF3;//黄灯亮4秒,黄灯为过渡灯,再根据情况转绿或转红?? }??? else if(yellow && !turnred)????? {??? yellow=0;green=1;????????? second=25;??? P1=0xCF;//绿灯亮25秒,?? }??? else if(green)????? {?? yellow=1;green=0;???????? second=4;?? P1=0xF3;//黄灯亮4秒?? turnred=1;?? }?????? else if(yellow && turnred)?? //绿灯灭,转黄灯,后红灯,turnred=1时????? {????? red=1;yellow=0;?? P1=0xFC;//红灯亮60秒???????? second=60;?? turnred=0;?? //接下来是转黄,绿。?? }

    ??? }Dis_Shiwei=tab[second/10];//十位显示值处理??? Dis_Gewei=tab[second%10]; //个位显示处理???

    展开全文
  • 程序设计 #include "stm32f103_config.h" #define LED595_DATA PBout(7) #define LED595_CLK PBout(8) #define LED595_LATCH PBout(9) #define DXR PBout(0) #define DXG PBout(1) #define DXY PBout(10) #...

    硬件设计

    (末尾附文件)

    仿真图如下所示:
    在这里插入图片描述

    程序设计

    #include "stm32f103_config.h"
    
    
    #define LED595_DATA   	PBout(7)
    #define LED595_CLK		PBout(8)
    #define LED595_LATCH  	PBout(9)
    
    #define DXR  PBout(0)
    #define DXG  PBout(1)
    #define DXY  PBout(10)
    
    #define NBR  PBout(11)
    #define NBG  PBout(12)
    #define NBY  PBout(13)
    
    unsigned char duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
    
    void io_Init(void)//初始化GPIO
    {
    	GPIO_InitTypeDef  GPIO_InitStructure;	
    
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 
    
    	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;	//GPIO_PIN0-16		
    	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
    	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
    	GPIO_Init(GPIOB, &GPIO_InitStructure);					 
    	GPIO_ResetBits(GPIOB,GPIO_Pin_All);		
    }
    
    
    void _delay_ms(int i)//延时函数
    {
    	u16 j;
    	while(i--)
    	{
    		for(j=0;j<5600;j++);
    	}
    }
    
    void _delay_us(int i)//延时函数
    {
    	u16 j;
    	while(i--)
    	{
    		for(j=0;j<5;j++);
    	}
    }
    
    void inp(unsigned char OutData)
    {
    	unsigned char i; 
    	for(i=0; i<8; i++) //将8位数据按位发送,先发送高字节后发送低字节
    	{
    		LED595_CLK=0;//时钟线低电平
    		_delay_us(1);
    		if( (OutData & 0x80) == 0x80)//判断数据高低位
    		{
    			LED595_DATA=1;                   //数据线高电平
    		}
    		else
    		{
    			 LED595_DATA=0;          //数据线低电平
    		}
    		_delay_us(1);
    		OutData = OutData << 1;         //数据左移1位
    		LED595_CLK=1;                 //时钟线高电平
    		_delay_us(1);
    	}
    }
    
    void LED595SendData(int a,int b)
    {
    	inp(duan[b%10]);
    	inp(duan[b/10]);
    	
    	inp(duan[a%10]);
    	inp(duan[a/10]);
    	
        LED595_LATCH=0;  
    	_delay_us(1);
        LED595_LATCH=1;
    	_delay_us(1);
    }
    
    
    int main(void)//主函数
    {	
    	int state=0;
    	int num=30;
    	
    	
    	RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_5);//系统时钟初始化
    	io_Init();//引脚初始化
    	uart_init(9600);//串口初始化
    	sendDat(0x02);sendDat(0x04);
    	while(1)
    	{
    		num--;//倒计时
    		if(num==0)
    		{
    			state++;if(state==4)state=0;//四种模式对应
    			/*
    			(1)南北红灯 东西绿灯(30秒)
    			(2)南北红灯 东西黄灯(05秒)
    			(3)南北绿灯 东西红灯(30秒)
    			(4)南北黄灯 东西红灯(05秒)
    
    			*/
    			switch (state)//更新时间
    			{
    				case 0: num=30;sendDat(0x02);sendDat(0x04);break;
    				case 1: num= 5;sendDat(0x03);sendDat(0x04);break;
    				case 2: num=30;sendDat(0x01);sendDat(0x05);break;
    				case 3: num= 5;sendDat(0x01);sendDat(0x06);break;
    			}
    		}
    		
    		switch (state)//根据状态点亮LED
    		{
    			case 0: DXR=0;DXY=0;DXG=1;NBR=1;NBY=0;NBG=0;break;
    			case 1: DXR=0;DXY=1;DXG=0;NBR=1;NBY=0;NBG=0;break;
    			case 2: DXR=1;DXY=0;DXG=0;NBR=0;NBY=0;NBG=1;break;
    			case 3: DXR=1;DXY=0;DXG=0;NBR=0;NBY=1;NBG=0;break;
    		}
    		
    		switch (state)//根据状态显示当前倒计时
    		{
    			case 0: LED595SendData(num,num+5);break;
    			case 1: LED595SendData(num,num);break;
    			case 2: LED595SendData(num+5,num);break;
    			case 3: LED595SendData(num,num);break;
    		}
    				
    		_delay_ms(100);//延时  速度快慢调这里
    	}
    
    }
    
    
    
    
    
    
    
    
    
    
    
    

    .

    链接:https://pan.baidu.com/s/1wFrmwNwNZaIt_wF29_CHDg
    提取码:xz0b

    .

    展开全文
  • 程序的pdf格式的原理图下载:http://www.51hei.com/f/ks51.pdf ,是在51hei单片机开发板上面做的,只需要看数码管部分的原理图即可 其他的可以忽略./************************************************************...

    本程序的pdf格式的原理图下载: http://www.51hei.com/f/ks51.pdf  ,是在51hei单片机开发板上面做的,只需要看数码管部分的原理图即可 其他的可以忽略.

    /**

    ***********************************************************************************

    * @file    :  main.c

    * @author  :  xr

    * @date    :  2014年4月16日10:04:27 - 2014年4月16日11:09:50

    * @version :  V1.2.3

    * @brief   :  数码管交通灯 TrafficLight  单片机STC89C52RC MCU  晶振 11.0592MHZ

    ***********************************************************************************

    */

    #include

    //74HC138

    sbit ADDR0 = P1^0;

    sbit ADDR1 = P1^1;

    sbit ADDR2 = P1^2;

    sbit ADDR3 = P1^3;

    sbit ENLED = P1^4;

    //数码管编码真值表

    unsigned char code LedTable[] = {

    0xC0,  //"0"

    0xF9,  //"1"

    0xA4,  //"2"

    0xB0,  //"3"

    0x99,  //"4"

    0x92,  //"5"

    0x82,  //"6"

    0xF8,  //"7"

    0x80,  //"8"

    0x90,  //"9"

    0x88,  //"A"

    0x83,  //"B"

    0xC6,  //"C"

    0xA1,  //"D"

    0x86,  //"E"

    0x8E   //"F"

    };

    //数码管显示缓冲区+LED小灯显示缓冲区

    unsigned char LedBuff[7] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

    unsigned char thr0, tlr0;//Timer0定时初值高低字节

    bit flag1s = 0;

    unsigned char timer = 0;//倒计时时间

    enum TrafficLightColor

    {

    GREEN = 0, YELLOW = 1, RED = 2

    };

    static enum TrafficLightColor color = GREEN;//定义枚举变量color,表示红绿黄灯,开始时是黄灯

    /****************function definition************************/

    void TrafficLight();

    void ConfigTimer0(unsigned int xms);

    void Initial();

    /*主程序main()*/

    void main(void)

    {

    Initial();

    ConfigTimer0(1);//定时1ms

    while (1)

    {

    if (flag1s)

    {

    flag1s = 0;

    TrafficLight();//每过1s进行交通灯的切换或timer的倒计时,并分解timer到缓冲区

    }

    }

    }

    /*初始化*/

    void Initial()

    {

    ADDR3 = 1;

    ENLED = 0;//选择U3,即选择数码管显示+LED显示

    P0 = 0xFF;

    }

    /*定时器T0配置*/

    void ConfigTimer0(unsigned int xms)

    {

    unsigned long tmp;

    tmp = 11059200/12;//机器周期频率

    tmp = tmp * xms /1000;//定时xms需要的计数值(f*T=计数个数)

    tmp = 65536-tmp+18;//定时xms装入的初值

    thr0 = (unsigned char)(tmp >> 8);//重载值高字节

    tlr0 = (unsigned char)tmp; //重载值低字节

    TMOD &= 0xF0;//清零T0控制位

    TMOD |= 0x01;//T0工作方式1,16位可设定时模式

    TH0 = thr0;

    TL0 = tlr0;//装入初值

    TR0 = 1;

    ET0 = 1;

    EA  = 1;

    }

    /*交通灯的红绿黄灯的切换和倒计时值的设定*/

    void TrafficLight()

    {

    //首先判断timer倒计时时间是否到了0,若到了0就进行红绿黄交通灯的切换,否则进行倒计时

    if (timer == 0) //倒计时到0,进行交通灯的切换

    {

    switch (color)

    {

    case GREEN:  color = YELLOW; LedBuff[6] = 0xE7; timer = 2;//绿灯切换到黄灯,LED6和LED5作为绿灯,倒计时3s

    break;

    case YELLOW: color = RED; LedBuff[6] = 0xFC; timer = 29;//黄灯切换到红灯,LED3和LED2作为红灯,倒计时30s

    break;

    case RED:    color = GREEN; LedBuff[6] = 0x3F; timer = 45;//红灯切换到绿灯,LED9和LED8作为绿灯,倒计时46s

    break;

    default: break;

    }

    }

    else

    {

    timer--;//倒计时

    }

    /*分解timer并存放到数码管缓冲区*/

    LedBuff[0] = LedTable[timer % 10];

    LedBuff[1] = LedTable[timer / 10 % 10];

    }

    /*数码管刷新*/

    void LedCharRefresh()

    {

    static unsigned char j = 0;//刷新索引

    P0 = 0xFF;//消隐

    //   switch (j)

    //   {

    //   case 0: ADDR2 = 0; ADDR1 = 0; ADDR0 = 0;

    // break; //LEDS0 = 0;点亮第一个数码管

    // case 1: ADDR2 = 0; ADDR1 = 0; ADDR0 = 1;

    // break;

    // case 2: ADDR2 = 0; ADDR1 = 1; ADDR0 = 0;

    // break;

    // case 3: ADDR2 = 0; ADDR1 = 1; ADDR0 = 1;

    // break;

    // case 4: ADDR2 = 1; ADDR1 = 0; ADDR0 = 0;

    // break; //LEDS4 = 0;点亮第5个数码管

    // case 5: ADDR2 = 1; ADDR1 = 0; ADDR0 = 1;

    // break; //LEDS5=0;点亮第6个数码管

    // case 6: ADDR2 = 1; ADDR1 = 1; ADDR0 = 0;

    // break; //LEDS6=0;选中LED小灯

    // default : break;

    //   }

    P1 &= 0xF8;//清零P1口的低三位

    P1 |= j;//低三位控制三八译码器工作,同时刷新6个数码管和LED小灯

    P0 = LedBuff[j++];

    if (j >= 7)

    j = 0; //j 0->6

    }

    /*定时器T0中断服务*/

    void Timer0_ISP() interrupt 1

    {

    static unsigned int counter = 0;//计数器

    TH0 = thr0;

    TL0 = tlr0;//重新装入初值

    counter++;

    LedCharRefresh();//刷新数码管和小灯

    if (counter >= 1000) //1s

    {

    counter = 0;

    flag1s = 1;

    }

    }

    展开全文
  • verilog 动态数码管显示程序,verilog 动态数码管显示程序
  • 三菱PLC--FX2N 基于交通灯的倒计时显示 程序完整经仿真和实验 内部含有课程设计的说明
  • mega16单片机实现交通灯protues仿真,12个LED,8个数码管显示时间。程序+原理图
  • 基于FPGA的交通灯LED灯显示数码管计数 在FPEL10K芯片上实验
  • 本人花了些时间写的交通灯c程序,并配有protues的仿真图,程序中也用了大量的文字解释程序的作用,完全可用,做板的话,只要会单片机的都可以,要是谁下了不会用或不理解的,欢迎留言,有留言必回
  • 这是基于单片机的大型交通灯控制系统 使用Proteus仿真设计 带汇编语言源程序 电路原理图 超级完美!
  • 利用汇编语言对交通灯数码管的控制,CPU通过8255同时控制交通灯数码管交通灯长延时由数码管进行倒数计时,交通灯短延时由延时程序段进行控制;当对面交通灯为红灯时,外界脉冲信号作为中断请求信号,通过8259...
  • 1、首先东西方向红灯50秒,此时南北绿灯50秒,并且数码管显示倒计时从49到00。 2、然后所有方向的黄灯闪烁5秒,并且数码管显示5秒倒计时。 3、接着东西绿灯35秒,此时南北红灯35秒,数码管显示35秒倒计时。 4、再...
  • 没有完全写好 但是核心已经解决 大家可以修改一下即可
  • 打开仿真文件开始仿真,程序开始数码管倒计时,没有按键按下程序循环运行。 1,东西方向为绿灯,行人和车辆东西方向可以同行东西绿灯时间长20s。南北方向为红灯行人车辆禁止同行时长25s。 2,东西方向黄灯闪烁5秒,...

    视频演示地址:https://www.bilibili.com/video/BV1q64y1C7Ne/

    功能操作说明:
    从上到下,设置键,加键,减键,特殊键。单独一个按键为单片机复位按键。
    打开仿真文件开始仿真,程序开始数码管倒计时,没有按键按下程序循环运行。
    1,东西方向为绿灯,行人和车辆东西方向可以同行东西绿灯时间长20s。南北方向为红灯行人车辆禁止同行时长25s。
    2,东西方向黄灯闪烁5秒,南北方向还是红灯等待,警示车辆和行人状态即将切换。
    3,南北方向为绿灯,行人和车辆南北方向可以同行东西绿灯时间长20s。东西方向为红灯行人车辆禁止同行时长25s。
    4,南北方向黄灯闪烁5秒,东西方向还是红灯等待,警示车辆和行人状态即将切换。
    设置按键按下可以进行红灯和绿灯时间调整,加键调整时间。调整完后再次按下设置程序回到倒计时运行。
    特殊模式键按下第一次红灯全亮,数码管显示全为0代表紧急模式停止同行。再次按下数码管显示为全FF,代表夜间模式。,再次按下回到数码管倒计时状态。

    展开全文
  • CPU通过8255同时控制交通灯数码管交通灯长延时由数码管进行倒数计时,交通灯短延时由延时程序段进行控制;当对面交通灯为红灯时,外界脉冲信号作为中断请求信号,通过8259向CPU提出中断请求,CPU控制数码管提前...
  • 东西南北四个方向的交通灯控制,7段数码管显示
  • 基于51单片机的交通灯仿真加程序,里面有protues的交通灯连接图,包括交通灯程序。有数码管显示倒数时间,红绿黄三指示灯切换
  • 基于51单片机 红绿灯数码管程序

    千次阅读 2012-12-29 23:07:35
    //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #defineDataPortP0//定义数据端口程序中遇到DataPort则用P0替换 #defineCtrlPortP1//定义控制端口 unsignedcharcodeDuanMa[10]={0xc0,0xf9,...
  • 交通灯控制程序

    2015-04-30 19:40:55
    全部交通灯控制程序,包括交通灯的分频、计时、分位、数码管显示、交通LED灯控制等程序程序适用于VHDL语言,编程软件为Quartus II,硬平台为FPGA。
  • 51单片机用C语言实现交通灯(红绿灯)源程序51单片机用C语言实现交通灯(红绿灯)源程序2009-10-29 23:00交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。源程序如下:/*1、程序目的...
  • 打开仿真文件开始仿真,程序开始数码管倒计时,没有按键按下程序循环运行。 1,东西方向为绿灯,行人和车辆东西方向可以同行东西绿灯时间长20s。南北方向为红灯行人车辆禁止同行时长25s。 2,东西方向黄灯闪烁5秒,...
  • 十字交通灯两个数码管怎么分别对应时间计数啊,我写好了时序状态机 ,但是不会把计数和数码管显示相对应,有大佬能教我一下吗</p>
  • 51交通灯c语言程序

    2013-06-27 21:00:26
    51交通灯程序,测试通过。分享一下,用数码管显示
  • 利用定时器T0和外部中断0来设计交通灯。其中定时器T0用来提供时间定时,而外部中断0则是模仿急救车这一特殊情况。定时器T0采用方式1定时4ms(动态显示,人眼视觉暂留现象),外部中断采用脉冲触发方式。单片机的晶振...
  • 实验五 八段数码管显示(红绿灯)

    千次阅读 2019-01-18 11:02:25
    利用定时器T0和外部中断0来设计交通灯。其中定时器T0用来提供时间定时,而外部中断0则是模仿急救车这一特殊情况。定时器T0采用方式1定时4ms(动态显示,人眼视觉暂留现象),外部中断采用脉冲触发...
  • 个人科普 1.数码管:7SEG 2.CC:common cathode;CC代表该数码管为共阴数码管;3.CA:common anode;...7.LCD1602液晶显示屏:LM016L;8上拉电阻:Resistors->RESPACK7 或 RESPACK8 1滑动电阻:POT;2...
  • Arduino-模拟交通灯(+数码管读秒)

    千次阅读 2020-01-14 21:13:24
    此次加上了行人过街按钮与数码管,一下子代码的复杂度就提高了不少。 1.主要是多任务的问题。 使用millis()函数进行多任务处理...2.数码管显示的信息与led(信号)显示的信息应该同步 这里就需要设置一个好的...
  • 原标题:51单片机控制交通灯的课程设计51单片机控制交通灯的课设程序如下:ORG 00H;************************************************************;灯操作及数码管显示;*******************************************...
  • 功能强大,可调时,白天黑夜模式,闪烁,数码管显示,按键 注意!这是 proteus的仿真,对应的程序,已经上传。
  • 数码管计时控制红、黄、绿LED灯循环显示交通灯,红灯亮5-10秒,依次黄灯亮3-5秒,依次绿灯亮5-10秒 ,然后循环显示。 电路连接 电路连接参考文章 【Arduino基础】一位数码管实验 源代码及注释 #define LEDred 10//...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 685
精华内容 274
关键字:

交通灯数码管显示程序