freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于單片機(jī)的自行車速度里程表設(shè)計(jì)-資料下載頁

2025-10-14 10:20本頁面

【導(dǎo)讀】隨著居民生活水平的不斷提高,自行車不再僅僅是普通的運(yùn)輸、代步的工具,而是成為人們娛樂、休閑、鍛煉的首選。自行車速度/里程表能夠滿足人們最基本的需求,讓人們能清楚地知道當(dāng)前的速度、里程等物理量。本論文主要闡述一種基于霍爾元件的自行車速度/里程表的設(shè)計(jì)。以AT89S52單片機(jī)為核心,A04E霍爾傳感器測轉(zhuǎn)數(shù),實(shí)現(xiàn)對自行車?yán)锍?速度的測量統(tǒng)計(jì),并能將自行車的里程數(shù)及速度用LED實(shí)時(shí)顯示。硬件部分利用霍爾元件將自行車每轉(zhuǎn)一圈的脈沖數(shù)傳入單片機(jī)系統(tǒng),然后單片機(jī)系統(tǒng)將信號經(jīng)過處理送顯示。軟件部分用C語言進(jìn)行編程,采用模塊化設(shè)計(jì)思想。該系統(tǒng)硬件電路簡單,子程序具有通用性,完全符合設(shè)計(jì)要求。自行車被發(fā)明及使用,到現(xiàn)在已有兩百多年的歷史,這兩百年間,人類在不斷的嘗試與研發(fā)過程中,將玩具式的木馬車轉(zhuǎn)換到今日各式新穎休閑運(yùn)動(dòng)自行車。1867年,英國人麥迪遜設(shè)計(jì)出第一輛裝有鋼絲輻條的自行車。

  

【正文】 作寄存器unsigned char DisplayCode[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90}。//數(shù)碼管段碼unsigned char DisplayNUM[4]={0,0,0,0}。//定義4個(gè)數(shù)碼管顯示數(shù)據(jù)寄存器及數(shù)碼管使能寄存器unsigned char DisplayEnable[4]={0,0,0,0}。unsigned char dot1,dot2,dot3。//定義小數(shù)點(diǎn)寄存器unsigned char Speed,Speed_,SetSpeed。//定義速度,設(shè)置速度寄存器unsigned char DisplayFlag。//顯示標(biāo)志unsigned int count1。//計(jì)數(shù)器unsigned int Distance,Distance_。//里程計(jì)數(shù)器unsigned char SetFlag。//設(shè)置標(biāo)志//void Time0(void) interrupt 1 using 1 //T0中斷入口{ TH0=0x9e。 TL0=0x57。 count1++。 if(count1=36) { count1=0。 Speed_=Speed。 Speed=0。 }}void Interrupt0(void) interrupt 0 using 2 //外部0中斷入口,25mS發(fā)生一次中斷{ IE0=0。 Speed++。 if(Speed=255) { Speed=255。 } Distance_++。 if(Distance_400) { Distance_=0。 Distance++。 if(Distance10000) { Distance=9999。 } }} void DelayMS(unsigned int number) //延時(shí)函數(shù){ unsigned int count。 for(count=0。count=number。count++) { _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 }}void Delay0(void)//延時(shí)函數(shù){ unsigned char count_0=0,count_1=0。 for(count_0=0。count_0=count_0++) { }}void GetKey(void)//獲得按鍵程序{ Key1=1。 Key2=1。 Key3=1。 Key4=1。 if(Key1==0)//檢測按鍵是否被按下 { Delay0()。 if(Key1==0) { Key1AsisstFlag=0xff。 } } if(Key2==0) { Delay0()。 if(Key2==0) { Key2AsisstFlag=0xff。 } } if(Key3==0) { Delay0()。 if(Key3==0) { Key3AsisstFlag=0xff。 } } if(Key4==0) { Delay0()。 if(Key4==0) { Key4AsisstFlag=0xff。 } } Delay0()。 if(Key1AsisstFlag) { if(Key1==1)//檢測按鍵按下后是否被松開 { Delay0()。 if(Key1==1) { Key1AsisstFlag=0。 Key1Flag=0xff。 } } } if(Key2AsisstFlag) { if(Key2==1) { Delay0()。 if(Key2==1) { Key2AsisstFlag=0。 Key2Flag=0xff。 } } } if(Key3AsisstFlag) { if(Key3==1) { Delay0()。 if(Key3==1) { Key3AsisstFlag=0。 Key3Flag=0xff。 } } } if(Key4AsisstFlag) { if(Key4==1) { Delay0()。 if(Key4==1) { Key4AsisstFlag=0。 Key4Flag=0xff。 } } }}void ProcessDISData(unsigned int DisplayData)//處理顯示數(shù)據(jù){ if(DisplayData10000) { DisplayNUM[0]=DisplayData%1000%100%10。 DisplayNUM[1]=DisplayData%1000%100/10。 DisplayNUM[2]=DisplayData%1000/100。 DisplayNUM[3]=DisplayData/1000。 } if(DisplayData=10000) { DisplayNUM[0]=DisplayData%10000%1000%100/10。 DisplayNUM[1]=DisplayData%10000%1000/100。 DisplayNUM[2]=DisplayData%10000/1000。 DisplayNUM[3]=DisplayData/10000。 } }void display(void)//顯示數(shù)據(jù)函數(shù){ if(DisplayEnable[0]) DISDataBus=DisplayCode[DisplayNUM[0]]。 else DISDataBus=0xff。 Nixie0=0。 DelayMS(100)。 Nixie0=1。 if(DisplayEnable[1]) DISDataBus=DisplayCode[DisplayNUM[1]]dot1。 else DISDataBus=0xff。 Nixie1=0。 DelayMS(100)。 Nixie1=1。 if(SetFlag==0x00) { if(DisplayEnable[2]) DISDataBus=DisplayCode[DisplayNUM[2]]dot2。 else DISDataBus=0xff。 Nixie2=0。 DelayMS(100)。 Nixie2=1。 // if(DisplayEnable[3]) DISDataBus=DisplayCode[DisplayNUM[3]]dot3。 else DISDataBus=0xff。 Nixie3=0。 DelayMS(100)。 Nixie3=1。 } else { if(DisplayEnable[2]) DISDataBus=0xbf。 else DISDataBus=0xff。 Nixie2=0。 DelayMS(100)。 Nixie2=1。 // DISDataBus=DisplayCode[5]。 Nixie3=0。 DelayMS(100)。 Nixie3=1。 }}void main(void)//主函數(shù){ TMOD=0x01。//T0工作于方式1 TH0=0x9e。 TL0=0x57。// ET0=1。//允許T0中斷 EA=1。//允許全局中選 TR0=1。//啟動(dòng)T0 IT0=1。//外部中斷0工作于邊沿出發(fā)模式 EX0=1。//允許外部中斷 DisplayEnable[0]=1。 DisplayEnable[1]=1。 DisplayEnable[2]=1。 DisplayEnable[3]=1。 count1=0。 Speed=0。 DisplayFlag=0x00。//工作寄存器初始化 Beep=1。 dot1=0。 dot2=0。 dot3=0。 SetSpeed=30。//速度初始報(bào)警值 while(1) { while(DisplayFlag)//顯示速度 { GetKey()。 if(Key1Flag) { Key1Flag=0。 DisplayFlag=~DisplayFlag。 } if(Key2Flag) { Key2Flag=0。 SetFlag=0xff。 } dot1=0。 ProcessDISData(Speed_)。 display()。 while(SetFlag) { GetKey()。 if(Key2Flag) { Key2Flag=0。 SetFlag=0x00。 } if(Key3Flag) { Key3Flag=0。 if(SetSpeed) { SetSpeed。 } } if(Key4Flag) { Key4Flag=0。 if(SetSpeed80) { SetSpeed++。 } } ProcessDISData(SetSpeed)。 display()。 } if(Speed_SetSpeed) { Beep=0。 Led=0。 } else { Beep=1。 Led=1。 } } Key1Flag=0。 Key2Flag=0。 Key3Flag=0。 Key4Flag=0。 while(DisplayFlag==0)//顯示里程 { GetKey()。 if(Key1Flag) { Key1Flag=0。 DisplayFlag=~DisplayFlag。 } if(Key2Flag) { Key2Flag=0。 Distance=0。 Distance_=0。 } dot1=128。 ProcessDISData(Distance)。 display()。 // if(Speed_SetSpeed) { Beep=0。 Led=0。 } else { Beep=1。 Led=1。 } } Key1Flag=0。 Key2Flag=0。 Key3Flag=0。 Key4Flag=0。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1