国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于51單片機(jī)的簡易紅綠燈電路

這篇具有很好參考價(jià)值的文章主要介紹了基于51單片機(jī)的簡易紅綠燈電路。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

基于51單片機(jī)的簡易紅綠燈電路

????????單片機(jī)P1口控制數(shù)碼管段選,P2口控制數(shù)碼管位選,P0口控制兩邊的燈光。

void SMG_shift()
{
	P2=~(0x01<<shift);
	switch(shift)
	{
		case 0:bits=second1/10; break;
		case 1:bits=second1%10; break;
		case 2:bits=second2/10; break;
		case 3:bits=second2%10; break;
	}
	P1=smg[bits];
	shift=(shift+1)%4;
}

????????首先是數(shù)碼管控制函數(shù),聲明一個(gè)變量shift作為數(shù)碼管位移量,首先進(jìn)行位選,這里數(shù)碼管使用的是共陰極數(shù)碼管,所以位選腳為低時(shí)點(diǎn)亮,因?yàn)槲灰茣r(shí)除了置1的位保持1,其他的位都會(huì)變成0(例如0x01<<1是0x02,0xfe<<1是0x0xfc),為了避免位移時(shí)會(huì)點(diǎn)亮其他數(shù)碼管,這里對(duì)0x01位移后進(jìn)行取反,switch語句對(duì)變量bits賦值,結(jié)合數(shù)碼管段碼表達(dá)到第一位顯示計(jì)時(shí)器一的十位,第二位顯示計(jì)時(shí)器二并以此類推的效果。

void timer()
{

	if(second<=60 && second>33)								//左綠燈右紅燈
	{		
		status1=1;
		status2=3;
		second1=second-33;									//左邊倒計(jì)時(shí)為second-33
		second2=second-30;
	}
	if(second<=33 && second>30)								//左黃燈右紅燈
	{
		status1=2;
		status2=3;											//此時(shí)左右倒計(jì)時(shí)相等
		second2=second-30;
		second1=second2;
	}
	if(second<=30 && second>3)								//左紅燈右綠燈
	{
		status1=3;
		status2=1;
		second1=second;										//左倒計(jì)時(shí)等于second
		second2=second-3;									//右倒計(jì)時(shí)比左倒計(jì)時(shí)少3秒
	}
	if(second<=3 && second>=0)								//左紅燈右黃燈
	{
		status1=3;
		status2=2;
		second1=second;
		second2=second;
	}
	second--;												
	if(second==0)
		second=60;
}

????????倒計(jì)時(shí)的效果用變量second實(shí)現(xiàn),將一個(gè)紅綠燈周期設(shè)定為60秒,則在60秒中需要實(shí)現(xiàn)左綠右紅,左黃右紅,左紅右綠,左紅右黃的循環(huán),黃燈占用3秒,綠燈27秒,紅燈30秒,在倒計(jì)時(shí)函數(shù)中分別對(duì)計(jì)時(shí)器一二進(jìn)行賦值,顯示當(dāng)前燈的剩余時(shí)間,對(duì)status賦值控制燈的變化。

void Light_Ctrl()											//紅綠燈控制
{
	switch(status1)
	{
		case 1: P0 |= 0x07; P0 &= 0xfe; break;
		case 2: P0 |= 0x07; P0 &= 0xfd; break;
		case 3: P0 |= 0x07; P0 &= 0xfb; break;
	}
	switch(status2)
	{
		case 1: P0 |= 0x38; P0 &= 0xf7; break;
		case 2: P0 |= 0x38; P0 &= 0xef; break;
		case 3: P0 |= 0x38; P0 &= 0xdf; break;
	}
}

????????燈光控制函數(shù)利用上一個(gè)函數(shù)對(duì)status的賦值控制P0口輸出,在燈光變化之前先對(duì)之前的狀態(tài)用|=置1,再用&=置0(這里的燈光是低電平點(diǎn)亮),否則在變燈的時(shí)候會(huì)出現(xiàn)三個(gè)燈同時(shí)亮的情況。

void main()
{
	Timer0Init();
	P1=0xff;
	P0=0xff;
	second1=27;
	second2=30;
	while(1);
}

????????主函數(shù)包含了定時(shí)器0、P0P1口和計(jì)時(shí)器變量的初始化,while(1)死循環(huán)避免main函數(shù)循環(huán)運(yùn)行。

void timer0ISP () interrupt 1   							//定時(shí)器0中斷服務(wù)函數(shù)
{
    TH0=(65536-1000)/256;  									//1ms一次脈沖
	TL0=(65536-1000)%256;
	Light_Ctrl();
	i++;
	SMG_shift();
	if(i>=1000)
	{
		i=0;
		timer();
	}
}

????????定時(shí)器0中斷服務(wù)程序包含燈光控制及數(shù)碼管刷新函數(shù),1秒運(yùn)行一次倒計(jì)時(shí)函數(shù)。

????????全部代碼

#include <REG51.H>
#define uint unsigned int
#define uchar unsigned char
	
uint second1,second2,i,bits,status1,status2,shift;
uint second=60;
uchar smg[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};

void Timer0Init()
{
	TMOD=0x01;												//工作模式1 ,需賦初值
	TH0=(65536-1000)/256; 									//定時(shí)1000,高八位
	TL0=(65536-1000)%256;
	EA=1;													//打開中斷允許總開關(guān)
	ET0=1;													//定時(shí)器0中斷允許
	TR0=1;													//定時(shí)器0啟動(dòng)控制
}

void SMG_shift()
{
	P2=~(0x01<<shift);
	switch(shift)
	{
		case 0:bits=second1/10; break;
		case 1:bits=second1%10; break;
		case 2:bits=second2/10; break;
		case 3:bits=second2%10; break;
	}
	P1=smg[bits];
	shift=(shift+1)%4;
}

void timer()
{

	if(second<=60 && second>33)								//左綠燈右紅燈
	{		
		status1=1;
		status2=3;
		second1=second-33;									//左邊倒計(jì)時(shí)為second-33
		second2=second-30;
	}
	if(second<=33 && second>30)								//左黃燈右紅燈
	{
		status1=2;
		status2=3;											//此時(shí)左右倒計(jì)時(shí)相等
		second2=second-30;
		second1=second2;
	}
	if(second<=30 && second>3)								//左紅燈右綠燈
	{
		status1=3;
		status2=1;
		second1=second;										//左倒計(jì)時(shí)等于second
		second2=second-3;									//右倒計(jì)時(shí)比左倒計(jì)時(shí)少3秒
	}
	if(second<=3 && second>=0)								//左紅燈右黃燈
	{
		status1=3;
		status2=2;
		second1=second;
		second2=second;
	}
	second--;												//每運(yùn)行一次該函數(shù)減一秒
	if(second==0)
		second=60;
}


void Light_Ctrl()											//紅綠燈控制
{
	switch(status1)
	{
		case 1: P0 |= 0x07; P0 &= 0xfe; break;
		case 2: P0 |= 0x07; P0 &= 0xfd; break;
		case 3: P0 |= 0x07; P0 &= 0xfb; break;
	}
	switch(status2)
	{
		case 1: P0 |= 0x38; P0 &= 0xf7; break;
		case 2: P0 |= 0x38; P0 &= 0xef; break;
		case 3: P0 |= 0x38; P0 &= 0xdf; break;
	}
}

void main()
{
	
	Timer0Init();
	P1=0xff;
	P0=0xff;
	second1=27;
	second2=30;
	while(1);
}

void timer0ISP () interrupt 1   							//定時(shí)器0中斷服務(wù)函數(shù)
{
    TH0=(65536-1000)/256;  									//1ms一次脈沖
	TL0=(65536-1000)%256;
	Light_Ctrl();
	i++;
	SMG_shift();
	if(i>=1000)
	{
		i=0;
		timer();
	}
}

????????仿真電路圖

基于51單片機(jī)的簡易紅綠燈電路

?文章來源地址http://www.zghlxwxcb.cn/news/detail-502596.html

到了這里,關(guān)于基于51單片機(jī)的簡易紅綠燈電路的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 51單片機(jī)STM32交通燈紅綠燈十字路口信號(hào)燈類設(shè)計(jì)功能要求匯總

    瀏覽必讀: 使用搜索可以達(dá)到事半功倍的效果。 電腦瀏覽器CTRL+F可以使用搜索查找 功能說明: 1.四路交通燈,帶有紅綠燈倒計(jì)時(shí),綠燈倒計(jì)時(shí)結(jié)束后轉(zhuǎn)黃燈5秒,再轉(zhuǎn)紅燈。 2.緊急情況下按鍵緊急按鈕,四路黃燈快閃。 3.可以動(dòng)態(tài)設(shè)置紅綠燈時(shí)間。 涉及知識(shí)點(diǎn):按鍵掃

    2024年02月11日
    瀏覽(259)
  • AT89C51單片機(jī)紅綠燈控制源代碼(C語言版)附帶Proteus電路圖

    AT89C51單片機(jī)紅綠燈控制源代碼(C語言版)附帶Proteus電路圖

    這個(gè)代碼需要稍微改一下才能運(yùn)行,看得懂的不超過1分鐘應(yīng)該能夠搞好??床欢臒o法運(yùn)行

    2024年02月07日
    瀏覽(25)
  • 基于OpenCV的紅綠燈識(shí)別

    基于OpenCV的紅綠燈識(shí)別

    為了實(shí)現(xiàn)輕舟航天機(jī)器人實(shí)現(xiàn)紅綠燈的識(shí)別,決定采用傳統(tǒng)算法OpenCV視覺技術(shù)。 航天機(jī)器人的紅綠燈識(shí)別主要基于傳統(tǒng)計(jì)算機(jī)視覺技術(shù),利用OpenCV算法對(duì)視頻流進(jìn)行處理,以獲取紅綠燈的狀態(tài)信息。具體而言,該系統(tǒng)通過連接工控機(jī)攝像頭讀取視頻流,將視頻幀轉(zhuǎn)換成HSV色彩

    2024年02月15日
    瀏覽(19)
  • 基于STM32的紅綠燈設(shè)計(jì)

    基于STM32的紅綠燈設(shè)計(jì)

    基于protrus8設(shè)計(jì)電路原理圖 先要思考明白十字路口紅綠燈的邏輯 東西是一樣的,南北是一樣的。 東西紅燈,南北就是綠燈,反之一樣的,弄明白這些寫代碼就有思路了 中間的兩個(gè)數(shù)碼管是模擬真實(shí)紅綠燈倒計(jì)時(shí)的用的,放置4個(gè)也行,但是為了方便觀看就放一個(gè)了 下面放幾

    2024年02月11日
    瀏覽(21)
  • 基于51單片機(jī)的簡易電梯系統(tǒng)的設(shè)計(jì)

    基于51單片機(jī)的簡易電梯系統(tǒng)的設(shè)計(jì)

    ? 系統(tǒng)概述 設(shè)計(jì)要求 根據(jù)所學(xué)的知識(shí)以及技能,利用MCS-51系列單片機(jī)為中心設(shè)計(jì)一個(gè)簡易電梯系統(tǒng),實(shí)現(xiàn)四層電梯的無故障運(yùn)行,并用數(shù)碼管和指示燈顯示對(duì)應(yīng)樓層和運(yùn)行方向等基本信息。設(shè)計(jì)所用的單片機(jī)為STC89C52為主要的控制器,自帶AD轉(zhuǎn)換,當(dāng)一邊有按鍵按下時(shí),另一

    2024年02月09日
    瀏覽(29)
  • 深度學(xué)習(xí)之基于Yolov5闖紅燈及紅綠燈檢測系統(tǒng)

    深度學(xué)習(xí)之基于Yolov5闖紅燈及紅綠燈檢測系統(tǒng)

    歡迎大家點(diǎn)贊、收藏、關(guān)注、評(píng)論啦 ,由于篇幅有限,只展示了部分核心代碼。 ?? 基于Yolov5的闖紅燈及紅綠燈檢測系統(tǒng)是一種使用計(jì)算機(jī)視覺和深度學(xué)習(xí)技術(shù)實(shí)現(xiàn)的交通監(jiān)控系統(tǒng)。它能夠檢測交通信號(hào)燈的狀態(tài)(紅燈、黃燈、綠燈),并識(shí)別車輛是否違反交通信號(hào)(闖紅

    2024年02月06日
    瀏覽(32)
  • 基于51單片機(jī)的簡易交通燈仿真代碼講解

    基于51單片機(jī)的簡易交通燈仿真代碼講解

    J028 51單片機(jī)簡易交通燈易懂版_仿真+代碼+報(bào)告講解 仿真圖proteus 7.8 程序編譯器:keil 4/keil 5 編程語言:C語言 51單片機(jī)簡易交通燈易懂版仿真代碼講解 狀態(tài)1:南北方向綠燈通行12秒,東西紅燈禁止通行15秒,分別倒計(jì)時(shí); 狀態(tài)2:南北方向黃燈提醒3秒,東西繼續(xù)紅燈倒計(jì)時(shí);

    2024年02月02日
    瀏覽(25)
  • 基于51單片機(jī)LCD1602的簡易矩陣鍵盤密碼鎖

    基于51單片機(jī)LCD1602的簡易矩陣鍵盤密碼鎖

    初次開始寫博客,表達(dá)方面也許會(huì)有很多不足,希望自己能通過這種方式鞏固自己的學(xué)習(xí)和鍛煉表達(dá)能力,同時(shí)也是對(duì)于自己學(xué)習(xí)的記錄。 四位密碼鎖,密碼可更改,輸入僅四次以內(nèi)有效 矩陣鍵盤定義為1-16,順序?yàn)閺淖笊系接蚁拢?-10號(hào)為密碼輸入鍵位,對(duì)鍵碼取余,輸入

    2024年01月23日
    瀏覽(29)
  • 29、基于51單片機(jī)簡易電子琴(有存儲(chǔ)功能)系統(tǒng)設(shè)計(jì)

    29、基于51單片機(jī)簡易電子琴(有存儲(chǔ)功能)系統(tǒng)設(shè)計(jì)

    ?隨著社會(huì)的發(fā)展進(jìn)步,音樂逐漸成為我們生活中很重要的一部分,有人曾說喜歡音樂的人不會(huì)向惡。我們都會(huì)抽空欣賞世界名曲,作為對(duì)精神的洗禮。本論文設(shè)計(jì)一個(gè)基于單片機(jī)的簡易電子琴。我們對(duì)于電子琴如何實(shí)現(xiàn)其功能,如音色選擇、聲音強(qiáng)弱控制、節(jié)拍器等等也很

    2024年02月03日
    瀏覽(25)
  • 基于51單片機(jī)的簡易電容值測量儀proteus仿真設(shè)計(jì)

    基于51單片機(jī)的簡易電容值測量儀proteus仿真設(shè)計(jì)

    51單片機(jī)簡易電感測量儀仿真設(shè)計(jì)( proteus仿真+程序+講解視頻) 仿真圖proteus7.8及以上 程序編譯器:keil 4/keil 5 編程語言:C語言 設(shè)計(jì)編號(hào):S0039 單片機(jī)最小系統(tǒng),或者稱為 最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的系統(tǒng)。對(duì)51系列單片機(jī)來說,最小系統(tǒng)一般應(yīng)

    2024年02月12日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包