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

正文內(nèi)容

電子電路]基于單片機(jī)的電子式轉(zhuǎn)速里程表的設(shè)計-資料下載頁

2024-11-16 17:53本頁面

【導(dǎo)讀】介紹一種新型的基于單片機(jī)的電子式汽車轉(zhuǎn)速里程表的實(shí)現(xiàn)方案。程計數(shù)的原理和轉(zhuǎn)速指示原理。針對機(jī)械式里程表缺點(diǎn)結(jié)構(gòu)復(fù)雜,精度不高,并。這里以AT89C2051單片機(jī)為核心,利用SPI串行總線開發(fā)了電子式里程表。該里程表利用磁電式傳感器采樣汽車行。本設(shè)計的轉(zhuǎn)速里程表具有結(jié)構(gòu)簡單,精度較高,誤差較小,顯示清楚醒目,穩(wěn)定可靠等特點(diǎn),另外對該系統(tǒng)的軟件也作了相應(yīng)的說明。速,二是用機(jī)械計數(shù)器記錄汽車行駛的累計里程。安裝位置也會受到軟軸長度及彎曲度的限制。傳感器的電子式轉(zhuǎn)速里程表得以迅速發(fā)展。以劃分為4個階段,或稱為經(jīng)過4代。技術(shù)人員一直從未停止對其進(jìn)行改進(jìn)。術(shù)范疇,也屬于電子式儀表,但信號處理方式已從模擬變成數(shù)字。工作原理與第3代汽車儀表完全不同。則其設(shè)計思路、組成形式、功能和性能的改變將是根本性的。式汽車儀表暫且列入第4代。提出,最初為“數(shù)字顯示”形式的汽車儀表。雖然該儀表的工作方式是全數(shù)字式,

  

【正文】 輸出 sbit SI = P1^3。 //*串行輸入 sbit SCK = P1^2。 //*串行時鐘輸入 char mand。 //*指令字 // sbit K1 = P3^0。 //計程開關(guān) int pulsdate。 //*計數(shù)脈沖變量 int lengthsdate1。 //*保存本次里程數(shù)的整數(shù) int lengthsdate2。 //*保存本次里程數(shù)的小數(shù) int totallength。 //*總里程數(shù) // int timer0date1。 //*定時器 0記數(shù)變量變 1 int timer0date2。 //*定時器 0記數(shù)變量變 2 //*初始化 2051工作寄存器 void init(void) { TMOD = 0x11。 //0001 0001B T0:16位定時中斷 。T1:6位定時中斷 ,方式 1 TL0 = 0xfe。 //時鐘 TH0 = 0xdb。 //10ms=0x2400,0xffff0x2400=0xdbff PT0 = 0。 //定時器 0中斷優(yōu)先級 PT1 = 0。 PX0 = 0。 PX1 = 1。 //外部中斷 1中斷優(yōu)先級 ET0 = 1。 //掃描開始時開 T0中斷 IE1 = 1。 //開外部中斷 1 IT1 = 1。 //邊沿觸發(fā) TR0 = 1。 //開 T0 中斷 EA = 1。 //開總中斷 mand= 0x00。 pulsdate=0x00。 lengthsdate1=0x00。 lengthsdate2=0x00。 timer0date1=0x00。 timer0date2=0x00。 } //*把狀態(tài)值 State寫入 25045狀態(tài)寄存器函數(shù) void Write25045State(char State) { int i。 SCK=0。 CS=0。 for(i=0。i8。i++) { State1。 SCK=1。 SCK=0。 SI=CY。 } CS=1。 } //*讀 25045狀態(tài)寄存器函數(shù),返回值為狀態(tài)寄存器的值 char Read25045State(void) { int i。 char State0。 CS = 0。 Write25045State(0x06)。 Write25045State(0x05)。 SCK=0。 for(i=0。i8。i++) { SCK=1。 SCK=0。 CY =SO。 State01。 } CS=1。 return State0。 } //*從 25045的 data1存儲器中讀取數(shù)據(jù) char Read25045MEM(char data1) { int i。 char out1。 CS = 1。 CS = 0。 mand = 0x03。 for(i=0。i8。i++) { mand1。 SCK=0。 SI=CY。 SCK=1。 } mand= data1。 for(i=0。i8。i++) { mand1。 SCK=0。 SI=CY。 SCK=1。 } SCK=0。 for(i=0。i8。i++) { SCK=1。 SCK=0。 CY =SO。 out11。 } CS=1。 return out1。 } //*把 date2寫出 25045MEM void Write25045MEM(char data2,char Memory1) { int i。 CS = 1。 CS = 0。 mand = 0x02。 for(i=0。i8。i++) { mand1。 SCK=0。 SI=CY。 SCK=1。 } mand= Memory1。 for(i=0。i8。i++) { mand1。 SCK=0。 SI=CY。 SCK=1。 } for(i=0。i8。i++) { data21。 SCK=0。 SI=CY。 SCK=1。 } CS=1。 } //*X25045芯片復(fù)位函數(shù) void reset25045(void) { CS=0。 CS=1。 } // void init25045(void) { int i。 char data5。 CS=0。 Write25045State(0x06)。 Write25045State(0x01)。 data5=0x04。 for(i=0。i8。i++) { data51。 SCK=0。 SI=CY。 SCK=1。 } CS=1。 } //*寫 LCM1010函數(shù) void Writelcm1010(char data3 , char data6) { 。 } //*定義外部中斷 1函數(shù) void Int1(void) interrupt 2 { char totall。 char totalh。 pulsdate++。 lengthsdate2+=16。 if(lengthsdate210000) lengthsdate2=10000。 if(pulsdate=624) { lengthsdate2=0。 lengthsdate1++。 pulsdate=624。 } if(pulsdate==0) { totallength++。 totall=totallength。 Write25045MEM(totall,0x00)。 totalh=(totallength8)。 Write25045MEM(totalh,0x01)。 } } //*定義定時器 0中斷函數(shù) void Timer0(void) interrupt 1 { char i。 bit j。 bit k。 char a。 timer0date1++。 timer0date2++。 if(timer0date1=4) { timer0date1=4。 } if (k==K1) { a++。 } else { k=K1。 a=0。 } if(i=20) { j=k。 a=20。 } if(!j) { switch(timer0date1) { case 0: i=lengthsdate2/100。 Writelcm1010(i,timer0date1)。 break。 case 1: i=lengthsdate1%10。 Writelcm1010(i,timer0date1)。 break。 case 2: i=(lengthsdate1/10)%10。 Writelcm1010(i,timer0date1)。 break。 case 3: i=(lengthsdate1/100)%10。 Writelcm1010(i,timer0date1)。 break。 default: break。 } } else { switch(timer0date1) { case 0: i=totallength%10。 Writelcm1010(i,timer0date1)。 break。 case 1: i=(totallength/10)%10。 Writelcm1010(i,timer0date1)。 break。 case 2: i=(totallength/100)%10。 Writelcm1010(i,timer0date1)。 break。 case 3: i=(totallength/1000)%10。 Writelcm1010(i,timer0date1)。 break。 default: break。 } } } //*主函數(shù) void main(void) { char totall。 char totalh。 init()。 init25045()。 totall=Read25045MEM(0x00)。 totalh=Read25045MEM(0x01)。 totallength=totalh。 totallength8。 totallength=totall。 while(1) { if(timer0date2=30) { timer0date2=0。 init25045()。 } } 參考文獻(xiàn) 《單片機(jī)應(yīng)用文集》 何立民主編 北京航空航天大學(xué)出版社 1992 年 《 MCS51 單片機(jī)實(shí)用子程序設(shè)計》 張毅剛主編 哈爾濱工業(yè)大學(xué)出版社 《電子技術(shù)常用器件應(yīng)用手冊》 陳瀘全主編 機(jī)械工業(yè)出版社 《單片機(jī)在控制系統(tǒng)中的應(yīng)用》 余永權(quán)主編 電子工業(yè)出版社 《單片機(jī)接口技術(shù)原理與應(yīng)用》 李華主編 北京航空航天 出版社 《傳感器原理設(shè)計與應(yīng)用》 劉迎春編著 國防科技大學(xué)出版社 1991 年
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1