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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python控制51单片机的红绿灯_基于51单片机的红绿灯实现(使用普中科技开发板)...

發布時間:2024/10/6 python 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python控制51单片机的红绿灯_基于51单片机的红绿灯实现(使用普中科技开发板)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C語言基礎比較薄弱,紅綠燈的倒計時和切換上,用了三個if()嵌套,總感覺應該有更好的方案,如果你恰巧知道,請教教我,在此謝過。以下是程序部分:

//紅綠燈設計:利用定時器實現LED燈亮滅,數碼管倒計時結束后切換led燈

//P2口控制led燈,38譯碼器選擇數碼管,P0口控制數碼管顯示

//定時器初始化設置,定時器溢出一次為10ms,設置一個變量a=99,a從99-->0,正好100次,也就是1s。

#include"reg52.h"

typedef unsigned int uint;?? ?? //對數據類型進行聲明定義

typedef unsigned char uchar;

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

sbit LED0=P2^7;?? ??? ??? //紅燈

sbit LED1=P2^6;?? ??? ??? //綠燈

sbit LED2=P2^5;?? ??? ??? //黃燈

uchar code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值

uchar DisplayData[2];?? ??? ?? //創建一個數組,用于存放倒計時的十位和個位

uchar a=99,flag=0,sec=15;? //a:100次等于1秒(配合定時器使用),flag:對應三種燈 sec:倒計時

//延時函數

void delay(uchar i)

{

while(i--);

}

//數碼管顯示,這里只需要使用兩個數碼管

//通過138譯碼器選擇對應的數碼管

void Digdisplay()

{

uchar i;

for(i=0;i<=1;i++)

{

switch(i)

{

case(0):

LSA=0;LSB=0;LSC=0;break;

case(1):

LSA=1;LSB=0;LSC=0;break;

}

P0=DisplayData[i];?? ??? ?//將當前的時間傳遞給P0,并顯示出來

delay(100);

P0=0x00;?? ??? ??? ??? ? //消隱

}

}

//將當前的時間和smgduan[]內已保存的16進制值對應,接著會通過Digdisplay()顯示

void Datapros()

{

DisplayData[0]=smgduan[sec%10];

DisplayData[1]=smgduan[sec/10];

}

//定時器初始化

void TimerInit()

{

TMOD=0x01;? //選擇定時器0

TH0=0Xd8;?? ?//10毫秒

TL0=0Xf0;

EA=1;

ET0=1;

TR0=1;

}

void red()?? ??? ??? ?? //紅燈倒計時

{

if(flag==0)?? ??? ??? //flag初始值為0,從紅燈開始亮(紅-->綠-->黃)

{

LED2=1;?? ??? ??? ?//黃燈滅

LED0=0;?? ??? ??? ?//紅亮

if(a==0)?? ??? ?//a=0,一秒過去,倒計時sec-1

{

a=99;?? ??? ? //重置a,開始下一秒

sec--;?? ??? ? //倒計時sec-1

if(sec==0)?? ? //sec=0,紅燈結束,綠燈開始

{

flag=1;?? ?? //綠燈的flag

sec=15;?? ?? //給綠燈定時

}

}

}

}

void green()?? ??? ?//綠燈

{

if(flag==1)

{

LED0=1;

LED1=0;

if(a==0)

{

a=99;

sec--;

if(sec==0)

{

flag=3;

sec=3;

}

}

}

}

void yellow()?? ??? ??? ?//黃燈

{

if(flag==3)

{

LED2=0;

LED1=1;

if(a==0)

{

a=99;

sec--;

if(sec==0)

{

flag=0;

sec=15;

}

}

}

}

void Timer() interrupt 1?? ??? //中斷

{

TH0=0Xd8;?? ?//10毫秒

TL0=0Xf0;

a--;?? ??? ??? ? //a的初始值為100,TH0和TL0溢出一次,a-1,a=0時,正好一秒

red();

green();

yellow();

}

void main()

{

TimerInit();

while(1)

{

Datapros();

Digdisplay();

}

}

總結

以上是生活随笔為你收集整理的python控制51单片机的红绿灯_基于51单片机的红绿灯实现(使用普中科技开发板)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。