日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单片机实验:交通灯控制

發(fā)布時間:2025/3/12 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单片机实验:交通灯控制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實驗要求

按照電路要求在Protues中設(shè)計電路圖,或者使用開發(fā)板。編程實現(xiàn)如下功能:
用單片機端口作輸出口,控制四個方向共12個發(fā)光二極管亮滅,模擬交通燈管理。功能描述如下:初始態(tài)為四個路口的紅燈全亮之后,東西路口的綠燈亮,南北路口的紅燈亮,東西路口方向通車,延時一段時間后東西路口的綠燈熄滅,黃燈開始閃爍,閃爍若干次后,東西路口紅燈亮,而同時南北路口的綠燈亮,南北路口方向開始通車,延時一段時間后,南北路口的綠燈熄滅,黃燈開始閃爍,閃爍若干次后,再切換到東西路口方向,之后重復以上過程。

代碼

#include <reg52.h> #include <absacc.h>#define PA XBYTE[0x7FFC] //PA端口地址 #define PB XBYTE[0x7FFD] #define PC XBYTE[0x7FFE] #define COM XBYTE[0x7FFF]char code dx516[3] _at_ 0x003b;unsigned char Second[] = {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10}; unsigned char count = 0, total = 0;/**************8255初始化******************************/ void init_8255(void) {COM = 0x80; // C = out B=out A = outPA = 0xFF;PB = 0xFF;}/**************定時器1初始化******************************/ void init_T1(void) {TMOD = 0x10; //定時器1,模式1TH1 = 0x3c; // 定時為50msTL1 = 0xb0; ET1 = 1; //允許定時器中斷1EA = 1; //開總中斷TR1 = 1; }//------------------- // 函數(shù)名稱: void delay_s(unsigned t) // 函數(shù)功能: 利用定時器延時t*0.5秒子程序 //------------------- void delay_s(unsigned char t) { TR1 = 1;//啟動定時total = t * 10;count = 0;while(1){if(count == total)//定時時間到{count = 0; total = 0;TR1 = 0;return;}} }void timer1() interrupt 3 //定時器1 { TR1 = 0;TH1 = 0x3c; // 定時為50msTL1 = 0xb0;count++;TR1 = 1; }void main(void) {unsigned char i = 0;init_8255();init_T1();while(1){ for(i = 10;i > 0;i--){PC = Second[i]; if(i < 4)//最后三秒東西方向綠燈和南北方向紅燈閃爍。{PA = 0xFF;PB = 0xFF; delay_s(1);PA =0xf6;PB = 0xdb;delay_s(1); }else{PA = 0xf6; //東西綠燈亮PB = 0xdb; //南北紅燈亮 delay_s(2);}}for(i = 3;i > 0; i--) //閃爍三秒{PC = Second[i];PA = 0xed;//東西黃燈亮PB = 0xed;//南北黃燈亮 delay_s(1);PA = 0xFF;PB = 0xFF; delay_s(1); }for(i = 10;i > 0;i--){PC = Second[i]; if(i < 4) //最后三秒南北方向綠燈和東西方向紅燈閃爍{PA = 0xFF;PB = 0xFF; delay_s(1);PA = 0xDB; PB = 0xf6; delay_s(1); }else{PA = 0xdb; //東西紅燈亮PB =0xf6; //南北綠燈亮delay_s(2);}}for(i = 3;i > 0;i--) //閃爍三秒{PC = Second[i];PA = 0xed; //東西黃燈亮PB = 0xed; //南北黃燈亮 delay_s(1);PA = 0xff;PB = 0xff; delay_s(1); }} }

protues仿真

東西方向綠燈和南北方向紅燈:

東西南北方向黃燈閃爍三秒:

東西方向紅燈和南北方向綠燈:

總結(jié)

起初數(shù)碼管數(shù)字和紅綠燈不變化,后來發(fā)現(xiàn)是定時器初始化為定時器1,模式1時TMOD賦值出錯。還有賦值的二進制是高位到低位與引腳的高位到低位對應(yīng)。

總結(jié)

以上是生活随笔為你收集整理的单片机实验:交通灯控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。