亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
基于單片機的汽車尾燈控制系統(tǒng)程序設(shè)計
[打印本頁]
作者:
凌凈清河
時間:
2019-6-5 18:43
標(biāo)題:
基于單片機的汽車尾燈控制系統(tǒng)程序設(shè)計
不要問為什么這么簡單。在最初的要求中一個尾燈控制電路還要求有掉電存儲和檢測功能,也不知道用作什么的。
【設(shè)計亮點】
淘寶上常見的LCD1602的并口轉(zhuǎn)IIC轉(zhuǎn)接小板原本為在Arduino上使用而設(shè)計的,但是既然遵守IIC協(xié)議,并且只是PCF8574芯片通信,那么51也可以才對。經(jīng)過查找,在百度貼吧上找到了使用其驅(qū)動LCD1602的程序,并且重新排版編寫使之清晰明了,工程中的LCD1602_IIC.c即為此轉(zhuǎn)接板的驅(qū)動程序。
使用該轉(zhuǎn)接板,在刷新速度不高的情況下,大大節(jié)省了IO口的占用數(shù)量。那個轉(zhuǎn)接板的樣子大概是這樣的:
QQ截圖20190605182904.png
(128.02 KB, 下載次數(shù): 60)
下載附件
2019-6-5 18:41 上傳
【設(shè)計說明】
設(shè)計包含4個獨立按鍵,兩個LED燈代表左右車尾燈。
使用PCF8574轉(zhuǎn)接板以IIC方式連接LCD1602到單片機。
時鐘電路選用DS1302,僅下載時設(shè)定時間。
功能設(shè)定:
待機狀態(tài)下,顯示當(dāng)前系統(tǒng)時間;
按下左轉(zhuǎn)按鍵,左轉(zhuǎn)指示燈閃爍;
按下右轉(zhuǎn)按鍵,右轉(zhuǎn)指示燈閃爍;
按下緊急按鍵,兩指示燈均閃爍;
任意狀態(tài)下按住剎車按鍵,兩燈保持常量,松開后還原為原來狀態(tài)。
上述4種狀態(tài)均有文字提示。
設(shè)計使用的單片機型號為STC12C5202AD,包含的頭文件任意,因為沒使用片內(nèi)的特殊資源。沒有安裝外部晶振,片內(nèi)的晶振并不十分準(zhǔn)確,我測試的時候大約在13MHz左右。
單片機源程序如下:
#include<STC12C2052AD.h>
#include"LCD1602_IIC.c"
#include"DS1302.c"
sbit LED_Left=P3^0;
sbit LED_Right=P3^1;
sbit Key_Left=P3^7;
sbit Key_Right=P1^0;
sbit Key_Stop=P1^1;
sbit Key_Emergency=P1^2;
//運行標(biāo)志位
bit flag_Key_Left=0;//按鍵執(zhí)行標(biāo)志位
bit flag_Key_Right=0;
bit flag_Key_Stop=0;
bit flag_Key_Emergency=0;
unsigned char Flash_Mode=0;//閃爍模式選擇 0:正常待機模式 1:左轉(zhuǎn) 2:右轉(zhuǎn) 3:雙閃 4:停止
//運行數(shù)組
char LCD1602_Buff[17];
unsigned int T0_Cnt=0;
/*
名稱:基于單片機的汽車尾燈控制系統(tǒng)設(shè)計
平臺:STC12C5202AD,使用內(nèi)部RC振蕩器,大約為13MHz
說明:
設(shè)計包含4個獨立按鍵,兩個LED燈代表左右車尾燈。
使用PCF8574轉(zhuǎn)接板以IIC方式連接LCD1602到單片機。
時鐘電路選用DS1302,僅下載時設(shè)定時間。
功能設(shè)定:
待機狀態(tài)下,顯示當(dāng)前系統(tǒng)時間;
按下左轉(zhuǎn)按鍵,左轉(zhuǎn)指示燈閃爍;
按下右轉(zhuǎn)按鍵,右轉(zhuǎn)指示燈閃爍;
按下緊急按鍵,兩指示燈均閃爍;
任意狀態(tài)下按住剎車按鍵,兩燈保持常量,松開后還原為原來狀態(tài)。
上述4種狀態(tài)均有文字提示。
硬件制作:凌凈清河
程序/文檔:凌凈欣羽
新礦城學(xué)習(xí)基地#2019
*/
void delay(unsigned long i)
{
while(i--);
}
void Time_Display()
{
unsigned char i;
for(i=0;i<17;i++)
{
LCD1602_Buff[i]='\0';//先填充截斷符
}
LCD1602_Buff[0]=' ';
LCD1602_Buff[1]=' ';
LCD1602_Buff[2]=' ';
LCD1602_Buff[3]=D_year[0]+'0';
LCD1602_Buff[4]=D_year[1]+'0';
LCD1602_Buff[5]=D_year[2]+'0';
LCD1602_Buff[6]=D_year[3]+'0';
LCD1602_Buff[7]='-';
LCD1602_Buff[8]=D_month[0]+'0';
LCD1602_Buff[9]=D_month[1]+'0';
LCD1602_Buff[10]='-';
LCD1602_Buff[11]=D_day[0]+'0';
LCD1602_Buff[12]=D_day[1]+'0';
LCD1602_Buff[13]=' ';
LCD1602_Buff[14]=' ';
LCD1602_Buff[15]=' ';
LCD1602_Print(0,0,LCD1602_Buff);
delay(10000);
for(i=0;i<17;i++)
{
LCD1602_Buff[i]='\0';//先填充截斷符
}
LCD1602_Buff[0]=' ';
LCD1602_Buff[1]=' ';
LCD1602_Buff[2]=' ';
LCD1602_Buff[3]=' ';
LCD1602_Buff[4]=D_hour[0]+'0';
LCD1602_Buff[5]=D_hour[1]+'0';
LCD1602_Buff[6]=':';
LCD1602_Buff[7]=D_minute[0]+'0';
LCD1602_Buff[8]=D_minute[1]+'0';
LCD1602_Buff[9]=':';
LCD1602_Buff[10]=D_second[0]+'0';
LCD1602_Buff[11]=D_second[1]+'0';
LCD1602_Buff[12]=' ';
LCD1602_Buff[13]=' ';
LCD1602_Buff[14]=' ';
LCD1602_Buff[15]=' ';
LCD1602_Print(0,1,LCD1602_Buff);
}
void Timer0Init(void) //5毫秒@13MHz
{
AUXR |= 0x80; //定時器時鐘1T模式
TMOD &= 0xF0; //設(shè)置定時器模式
TL0 = 0x18; //設(shè)置定時初值
TH0 = 0x02; //設(shè)置定時初值
TF0 = 0; //清除TF0標(biāo)志
TR0 = 1; //定時器0開始計時
}
void sys_init()
{
//Ds1302Init();//首次上電寫入時間
LED_Left=0;
LED_Right=0;
LCD1602_Light_Off();
LCD1602_Init();
LCD1602_Print(0,0," Ready! ");
LCD1602_Light_On();
Timer0Init();
EA=1;
ET0=1;
LED_Left=1;
LED_Right=1;
}
void main()
{
sys_init();
while(1)
{
GetTime();
if(Flash_Mode==0)Time_Display();
if(!Key_Left&&!flag_Key_Left)
{
delay(2000);
if(!Key_Left)
{
flag_Key_Left=1;
LCD1602_Print(0,0," Turn Left ");
LCD1602_Print(0,1," LED_Left Flash ");
if(Flash_Mode==1)
{
Flash_Mode=0;
LED_Left=1;
}
else
{
LED_Right=1;
Flash_Mode=1;
}
}
}
if(!Key_Right&&!flag_Key_Right)
{
delay(2000);
if(!Key_Right)
{
flag_Key_Right=1;
LCD1602_Print(0,0," Turn Right ");
LCD1602_Print(0,1," LED_Right Flash");
if(Flash_Mode==2)
{
Flash_Mode=0;
LED_Right=1;
}
else
{
LED_Left=1;
Flash_Mode=2;
}
}
}
if(!Key_Stop&&!flag_Key_Stop)
{
unsigned char Temp_Flash_Mode=0;
delay(2000);
if(!Key_Stop)
{
flag_Key_Stop=1;
LCD1602_Print(0,0," Stop ");
LCD1602_Print(0,1," LED_Stop Light ");
Temp_Flash_Mode=Flash_Mode;//模式備份
Flash_Mode=4;
LED_Left=0;
LED_Right=0;
}
while(!Key_Stop);
LED_Left=1;
LED_Right=1;
Flash_Mode=Temp_Flash_Mode;//模式還原
switch(Flash_Mode)//文字還原
{
case 1:
LCD1602_Print(0,0," Turn Left ");
LCD1602_Print(0,1," LED_Left Flash ");
break;
case 2:
LCD1602_Print(0,0," Turn Right ");
LCD1602_Print(0,1," LED_Right Flash");
break;
case 3:
LCD1602_Print(0,0," Emergency ");
LCD1602_Print(0,1," Double Flash ");
break;
default:break;
}
}
if(!Key_Emergency&&!flag_Key_Emergency)
{
delay(2000);
if(!Key_Emergency)
{
flag_Key_Emergency=1;
LCD1602_Print(0,0," Emergency ");
LCD1602_Print(0,1," Double Flash ");
if(Flash_Mode==3)
{
Flash_Mode=0;
LED_Left=1;
LED_Right=1;
}
else
{
LED_Left=0;
LED_Right=0;
Flash_Mode=3;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
基于單片機的汽車尾燈控制系統(tǒng)設(shè)計 凌凈清河.7z
(1.3 MB, 下載次數(shù): 44)
2019-6-5 20:30 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1