51單片機(jī)用C語言實(shí)現(xiàn)交通燈(紅綠燈)源程序_第1頁
51單片機(jī)用C語言實(shí)現(xiàn)交通燈(紅綠燈)源程序_第2頁
51單片機(jī)用C語言實(shí)現(xiàn)交通燈(紅綠燈)源程序_第3頁
51單片機(jī)用C語言實(shí)現(xiàn)交通燈(紅綠燈)源程序_第4頁
51單片機(jī)用C語言實(shí)現(xiàn)交通燈(紅綠燈)源程序_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 51單片機(jī)用C語言實(shí)現(xiàn)交通燈(紅綠燈)源程序2009-10-29 23:00交通燈,紅黃綠燈交替亮,怎樣實(shí)現(xiàn)呢?其實(shí)就是根據(jù)單片機(jī)定時(shí)器及倒計(jì)時(shí)的程序修改。源程序如下:/*1、程序目的:使用定時(shí)器學(xué)習(xí) 倒計(jì)時(shí) 紅綠燈原理 主要程序和倒計(jì)時(shí)一樣2、硬件要求:數(shù)碼管、晶振12M*/#include <reg52.h>bit red,green,yellow,turnred;          /定義紅、黃、綠及轉(zhuǎn)紅標(biāo)志code unsigned char tab=  

2、0; 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;     /共陰數(shù)碼管 0-9unsigned char Dis_Shiwei;/定義十位unsigned char Dis_Gewei; /定義個(gè)位void delay(unsigned int cnt)          /用于動(dòng)態(tài)掃描數(shù)碼管的延時(shí)程序while(-cnt);main()TMOD |=0x01;/定時(shí)器設(shè)置 10ms in 12M crystal定時(shí)器

3、0,工作方式1,16位定時(shí)器TH0=0xd8;            /65535-10000=55535=D8F0(十六進(jìn)制)TL0=0xf0;IE= 0x82; /中斷控制,EA=1開總中斷,ET0=1:定時(shí)器0中斷允許TR0=1;    /開定時(shí)器0中斷P1=0xfc;/紅燈亮,根據(jù)紅黃綠接燈的順序。red =1;while(1)P0=Dis_Shiwei;/顯示十位,這里實(shí)現(xiàn)用8位數(shù)碼管,即左1位P2=0;delay(300);/短暫延時(shí)P0=Di

4、s_Gewei; /顯示個(gè)位,左數(shù),2位P2=1;delay(300);/*/*      定時(shí)中斷                */*/void tim(void) interrupt 1 using 1static unsigned char second=60,count; /初值60TH0=0xd8;/重新賦值,10毫秒定時(shí)TL0=0xf0;count+;if (count=100)&#

5、160;       count=0;    second-;/秒減1if(second=0)    /這里添加定時(shí)到0的代碼 ,可以是燈電路,繼電器吸合等,或者執(zhí)行一個(gè)程序       if(red)   /紅滅,先轉(zhuǎn)黃          red=0;yellow=1;     

6、;     second=4;    P1=0xF3;/黃燈亮4秒,黃燈為過渡燈,再根據(jù)情況轉(zhuǎn)綠或轉(zhuǎn)紅       else if(yellow && !turnred)          yellow=0;green=1;          second=25;  

7、60; P1=0xCF;/綠燈亮25秒,       else if(green)         yellow=1;green=0;         second=4;   P1=0xF3;/黃燈亮4秒   turnred=1;          else if(yellow

8、&& turnred)   /綠燈滅,轉(zhuǎn)黃燈,后紅燈,turnred=1時(shí)            red=1;yellow=0;   P1=0xFC;/紅燈亮60秒         second=60;   turnred=0;   /接下來是轉(zhuǎn)黃,綠。   Dis_Shiwei=tabsecond/1

9、0;/十位顯示值處理    Dis_Gewei=tabsecond%10; /個(gè)位顯示處理開始延時(shí)3s程序流程圖:輸出red(縱) yellow(橫)清屏延時(shí)30s輸出red(縱) green(橫)清屏延時(shí)3s輸出yellow(縱) red(橫)清屏延時(shí)30sTrue=1輸出green(縱) red(橫)清屏Y結(jié)束N算法描述:1、定義green函數(shù)(清屏顯示(縱=green 橫=red延時(shí)30s)定義red函數(shù)(清屏顯示(橫=green 縱=red)延時(shí)30s)定義yellow1 yellow2函數(shù)(清屏顯示延時(shí)3s) 2、建立循環(huán):調(diào)用green函數(shù) 3、調(diào)用y

10、ellow1函數(shù) 4、調(diào)用red函數(shù) 5、調(diào)用yellow2函數(shù) 6、返回繼續(xù)循環(huán)執(zhí)行。源程序代碼:#include <stdlib.h>#include <stdio.h>#include <windows.h>void green() system("cls");printf("縱=green 橫=red ");Sleep(30000); void red() system("cls");printf("縱=red 橫=green");Sleep(30000); void y

11、ellow1() system("cls");printf("縱=yellow 橫=red");Sleep(3000); void yellow2() system("cls");printf("縱=red 橫=yellow");Sleep(3000); int main() while(true) green(); yellow1();red();yellow2(); return 0; 程序功能:模擬十字路口的紅綠燈的變換。1、 進(jìn)入程序后,程序一直循環(huán),以模擬紅綠燈的不斷變換。2、 十字路口分為縱橫兩方向,在

12、模擬中分別用縱橫表示。3、 設(shè)計(jì)每次紅燈時(shí)間33s,綠燈時(shí)間30是,黃燈時(shí)間3s。符合一般十字路口要求。4、 執(zhí)行時(shí),縱向紅燈亮33s,同時(shí)橫向綠燈亮30,接著橫向黃燈亮3s;然后橫向變?yōu)榧t燈亮33s,同時(shí)縱向綠燈亮30s,接著黃燈亮3s。5、 此設(shè)計(jì)主要模擬真是紅綠燈變換的安全考慮,在一方向由綠燈變換時(shí),需設(shè)計(jì)短暫黃燈緩沖時(shí)間,以防出現(xiàn)事故。輸入數(shù)據(jù)要求:無輸入數(shù)據(jù);故無要求限制。結(jié)束語:感悟。#include<reg52.h>#define uint unsigned int#define uchar unsigned charuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;sbit dula=P26;uint num; void delay(uint z);void main()P1=0;while(1)for(num=1;num<10;num+)dula=1;P0=tablenum;dula=0;delay(1000);P1=0x40;for(num=0;num<10;num+)dula=1;P0=tablen

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論