① 如何實現單片機通過WIFI獲取時間和天氣數據
有兩種方案解決這個問題。
1:單片機鏈接WIFI,WIFI接入互聯網,自己買一個天氣平台網站API介面,從網站上讀取。
2:自己寫一個軟體獲取天氣、時間等信息,把軟體放到伺服器裡面,WIFI做客戶端,接入伺服器,伺服器把天氣時間數據發給客戶端,客戶端就是你的WIFI模塊。
② 單片機如何實現多路模擬量的數據採集、顯示
普通單片機實現多路模擬量的數據採集、顯示需要:
外部連接一個多通道輸入的ADC晶元,單片機按照一定的周期驅動模擬開關切換到不同的模擬通道,設計模數轉換控制器的控製程序,可以進行定團戚時模擬信號採集和顯示。
(2)單片機如何快速提取數據擴展閱讀:
單片機基本結構及作用:
1、運算器
運算器由運算部件——算術邏輯單元(Arithmetic & Logical Unit,簡稱ALU)、累加器和寄存器等幾部分組成。ALU的作用是把傳來的數據進行算術或邏輯運算,輸入來源為兩個8位數據,分別來自累加器和數據寄存器。
ALU能完成對這兩個數據進行加、減、與、或、比較大小等操作,最後將結果存入累加器。
運算器有兩個功能:
執行各種算術運算。
執行各種邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。
運算器所執行全部操作都是由控制器發出的控制信號來指揮的,並且,一個算術操作產生一個運算結果,一個邏輯操作產生一個判決。
2、控制器
控制器由程序計數器、指令寄存器、指令解碼器、時序發生器和操作控制器等組成,是發布命令的「決策機構」,即協調和指揮整個微機系統的操作。其主要功能有:
從內存中取出一條指令,並指出下一條指令在內存中的位置。
對指令進行解碼和測試,並產生相應的操作控制信號,以便於執行規定的動作。
指揮並控制CPU、內存和輸入輸出設備之間數據流動的方向。
微處理器內通過內部匯流排把ALU、計數器、寄存器和控制部分互聯,並通過外部匯流排與外部的存儲器、輸入輸出介面電路聯接。外部匯流排又稱為系統匯流排,分為數據匯流排鍵或仿DB、地址匯流排AB和控制匯流排CB。通過輸入輸出介面電路,實現與各種外圍設備連接。
3、主要寄存器
累加器A
累加器A是微處理器中使用最頻繁的寄存器。在算術和邏輯運算時它有雙功能:運算前,用於保存一個操作數;運算後,用於保存所得的和、差或邏輯運算結果。
數據寄存器DR
數據寄存器通過數據匯流排向存儲器和輸入/輸出設備送(寫)或取(讀)數據的暫存單元。它可以保存一條正在解碼的指令,也可以保存正在送往存儲器中存儲的一個數據位元組等等。
指令寄存器IR和指令解碼器ID
指令包括操作碼和操作數。
指令寄存器是用來保存當前正在執行的一條指令。當執行一條指令時,先把它從內存中取到數據寄存器中,然後再傳送到指令寄存器。
當系統執行給定的指令時,必須對操作碼進行解碼,以確定所要求的操作,指令解碼器就是負責這項工作的。其中,指令寄存器中操作碼欄位的輸出就是指令解碼器的輸入。
程序計數器PC
PC用於確定下一條指令的地址,以保證程序能夠連續地執行下去,因此通常又被稱為指令地址計數器。在程序開始執行前必須將程序的第一條指令的內存單元地址(即程序的首地址)送入PC,使它總是指向下一條要執行指令的地址。
地址寄存器AR
地址寄存器用於保存當前CPU所要訪問的內存單元或I/O設備的地址。由於內存與CPU之間存在著速度上的差異,所以必須使用地址寄存器來保持地址信息,直到內存讀/寫操作完成為止。
顯然,當CPU向存儲器存數據、CPU從內存取數據和CPU從內存讀出指令時,都要用到地址寄存器和數據寄存器。同樣,如果把外圍設備的地址作為內存地址單元來看的話,那麼當CPU和外圍設備交換信息時稿纖,也需要用到地址寄存器和數據寄存器。
③ 單片機如何進行數據採集
對於液壓設備中的8個待測參數選用相應的感測器來來檢測,試驗時選取應變式感測器作為測試現場的工具。這些選用的檢測元件輸出都是標準的4-20mA微弱的電流信號,電流信號又經過由LM324組成的放大轉換電路轉換成0-5V的電壓信號輸入到C8051F020的模擬輸入端,如圖2所示,經內部集成的A/D轉換器轉換成相應的數字量。C8051F020將8路采樣值作為液壓設備現場的狀況存入相應的內存單元。
3.2 LCD顯示
為了使數據採集系統小巧美觀,同時又獲得較高的性價比,選用德彼克公司生產的DMF-50174藍屏液晶顯示器,該顯示器是320×240點陣式液晶,圖形和文本都可以顯示。顯示驅動控制晶元採用EPSON 公司的一種高性能LCD 控制器SED1335。硬體電路採用間接接法,如圖3所示。用單片機的P5.0~P5.7口作為SED1335的DB0~DB7數據匯流排的輸入通道。P4.5作為SED1335的片選信號, 配合地址信號A0實現SED1335 通過數據匯流排接收來自單片機的指令和數據。當A 0= 0, P4.6(WR)=0,P4.7(RD)= 1時, 實現指令的寫入和從SED1335 中讀取數據。當A 0= 1, P4.6(WR)= 0, P4.7(RD)=1時, 則是顯示數據的寫入,該功能通過軟體實現。
3.3 數據通訊
單片機C8051F020的TX0、RX0及P0.2通過MAX485與上位機相連,進行串列通信,如圖3所示。P0.2控制MAX485的狀態或發送,用軟體控制。RX0為單片機的串列輸入端,接收上位機通過MAX485向單片機發送的數據。TX0為單片機的串列輸出端,通過MAX485發送給上位機。
4 系統軟體設計
4.1 軟體設計總體上由兩部分組成:一部分為單片機C8051F020
主程序設計,一部分為LCD液晶顯示程序設計。由於用C語言編程可以降低程序的復雜度,提高程序的可讀性和可修改性,所以本軟體採用C51進行編程,keil μVision2編譯器進行編譯。
④ 51單片機怎樣從一個非常大的數字裡面提取個十百千萬位等......
下面舉例說明萬千百十個的表示方法。其實很簡單,用除法取余就行。
i=a/b ;//取商
i=a%b;//取余
方法很多,以下是一例:
unsigned int wan,qian,,shi ,ge,
wan=i/10000;//除一萬取商,是萬位。
qian=(i/1000)%10;//先除1000,取商,商的個位是千位,所以再除10 取余。
=(i%100)/10%10;//先除100,取商,商的個位是百位,所以再除10 取余。
shi=(i%100)/10;//先除100,取余,商再除10 取余。
ge==(i%10;//除10取余。
不過閣下要知道整形量最大是65535,假如你的數據達到999999,你就要定義長整形量了。
unsigned long int i=999999;
如當I<10的時候 P0=table[i/10]; 個位
這樣的演算法 我寫的不行 ,請高手寫下 ,我看下我的出錯在什麼地方
i/10是取商啊,怎麼可能是個位呢?是十位。I<10的話,一定是0了。
移位的方法不行,移位是2進制運算。你這個是十進制。
⑤ 單片機裡面的數據能提取出來嗎
我以前試過,51單片機里float和double儲存的只到小數點後6位,就像你說的5123456789在51單片機里是以5.123456e+9儲存的,也就是5123456000,後邊的都丟失了,所以簡單的程序應該是不可能算到你說的精度的。在32位單片機上用long
long
可以儲存差不多20位的整數,但是keil
51是不支持的。
你用這么大的數干什麼?不行就換一種方法吧。
⑥ 用單片機用串口提取一幀數據
通過 串口 讀數據會否??
會的話,那就是 不知道 如何 判斷 符不符合 AA____BB 的格式咯:
if(RecData & UserCode == UserCode) {符合格式執行內容},其中,RecData 是接收到的數據,UserCode 是 AA0000BB 的值,比如 A=1,B=0,那UserCode 就是 0xC0(最好使用 宏定義);
格式符合後,讀取中間 的代碼值:
comm=(RecData &0x3c)>>2; 其中 0x3c 是 屏蔽 AA、BB位的值(0011 1100);左移2位是將 代碼值 放到最低位(0000 DDDD)。
⑦ 如何用單片機從外部存儲設備提取數據
汽車發動機本身有一路信號可以識別發動機是否正在工作,
但不是從電瓶正負極上得到
⑧ 如何獲取第三方單片機上的數據
你想讀取第三方單片機數據控制別的外圍電路,這個不可行的,除非你有第三方單片機源程序,在源程序基礎上增加功能,如果你想使用第三方硬體和APP軟體,找人解密單片機程序把二進制文件提取出來,可以山寨別人產品,如果產品有序列號加密,這樣連接APP就不成功了,這種產品一般APP和單片機通訊數據都是加密的,如果沒有加密,破解協議自己做過單片機程序,如果加密了可以按照功能重新開發。
⑨ 單片機字元串怎麼提取你需要的數據
如果01恰好是一個位元組,FF恰好是一個位元組,將數據存儲到數組中,確定偏移量直接讀取啊。