1.將一些變數轉換為初始值,如0或1。
2.如果使用zd,則需要設置定時器的工作模式和初始值。
3.如果使用中斷,應該打開相應中斷源的中斷並設置優先順序。
4.如果使用串口,則需要設置相應的串口工作模式和波特率。
5.需要提前設置的其他數據變數和命令字。
(1)單片機機械手初始化擴展閱讀:
初始化器子函數帶注釋:
Voidtimer0interrupt()1
{
TMOD=0x01;//選擇timing0
TH0=(65536-50000)/256;//載入初始值50MS
TL0=(65536-50000)%256;
EA=1;//打開完全中斷
ET0=1;//打開定時器0中斷
TR0=1;//開屬定時器0
}
Ⅱ 51單片機數字溫度計常見故障及解決辦法
用51做處理器,外圍電路如圖,一片雙積分轉換晶元ICL7135做AD,它的時鍾需要125K,用51的ALE經過一片CD4024分頻得到。1403提供基準源。另外,一片7660提供7135工作所需要的負壓。
為了省電,把所有模擬電路部分電源用一個晶體管管理起來,由P1.0來控制。(上圖為示意圖,省去了電阻沒畫)P1.0為地的時候,模擬系統才上電
現在怪現象如下:
模擬機正常運行,燒寫晶元後無反應。
模擬正常,說明外圍晶元完全正常,電路也沒有錯誤。
經過檢查,晶體正常,復位可靠,EA高,程序堆棧都沒有溢出,並排除其它一切低級錯誤的可能。
再編寫一程序,
main()
{
while(1) {P1.1=0;}
}
P1.1和VCC間接有一發光管,開機無反應。
後來,發現更奇怪的現象:
拔除CD4024,MC1403,ICL7135,ICL7660中的任何一個,系統就可以正常運行!
百思不得其解,茶飯不思,郁悶了N久
更換全部晶元,如故。
更換ATMEL/PHILIPS/WINBOND的N款單片機,如故。
檢查,排除電路故障的可能,
後來又發現,只要上電之前把P1.0對地短路,(也就是模擬部分強加電源),上電,系統正常運行。
但是,如果開機前P1.0不對地短路,上電一定不能運行,此後即使再把P1.0對地接,也不行。
順這個思路,應該是和模擬部分有關……
又是郁悶N久,之後,無意間翻看CD4024內部圖,茅塞頓開……
CD4024等TTL/CMOS邏輯晶元,為了防止靜電或錯誤的IO電平,內部都有保護電路
51單片機故障分析一個 - cryinrain_cug - cryinrain_cug的博客
如圖2,每個IO口都有如圖的2個二極體,集成在晶元內部。保證IO口電壓在-0.6~5.6V之間
復位的過程中,全部IO為高,P1.0和ALE當然也是高。這樣模擬部分不上電。
那麼,ALE的輸出角就等效於通過一個二極體向這四塊模擬晶元供電!!!(如圖)
ALE的輸出能力不強,自然,ALE就被拉低了。
在查看51的手冊,ALE和/PROG腳是復用的!!
在復位過程中,ALE如果為低,晶元進入編程狀態!!!
也就是說,我的系統在上電復位的過程中就進入了PROG編程模式,難怪一條語句都不能執行
那麼,也很好解釋為什麼四個晶元中拔掉一個就能正常工作了,因為負載輕了,ALE可能還沒有被拉到2.5V以下,所以正常復位進入程序。
解決的辦法:ALE接2K的上拉,再通過47K電阻接到Cd4024上,上電,一切正常!
結論:單片機編程模式/ISP模式是通過用戶很不容易出現的一個時序來啟動的,在一些特殊應用時要小心避開這些非用戶代碼模式。
Ⅲ 單片機設置中斷程序初始化的目的
初始化,就像是100賽跑前的准備工作,這個過程你要配置中斷,如配置工作方式(我以什麼方式跑)等。這樣中斷一直處於等待的狀況(運動員等待哨響),一旦有中斷請求信號(哨響),便立即進入中斷服務程序(運動員跑起來了)。。。明白嗎
Ⅳ 在51單片機編程中 初始化程序的作用是什麼
一般的情況下是在上電的時候初始化,還有就是程序跑飛和出現異常時也要初始化,初始化的目的就是把所有用到的標志位、變數回到你的初始值,以及引腳的分配,配置寄存器寫入需要的值,像時鍾的選擇(內部、外部)一般在上電時就做好,以後不是特殊需要是不改動的,引腳功能的分配也是一上來就設置好,之後如果可以就不改動,如果經常性的改可能會引發異常。
Ⅳ 是單片機復位有幾種方法 復位後機器初始狀態
使程序計數器PC=0000H,這表明程序從0000H地址單元開始執行。單片機冷啟動後,片內RAM為隨機值,運行中的復位操作不改變片內RAM區中的內容,21個特殊功能寄存器復位後的狀態為確定值
說明:表中符號*為隨機狀態;
A=00H,表明累加器已被清零;
特殊功能寄存器
初始狀態
特殊功能寄存器
初始狀態
A
00H
TMOD
00H
B
00H
TCON
00H
PSW
00H
TH0
00H
SP
07H
TL0
00H
DPL
00H
TH1
00H
DPH
00H
TL1
00H
P0~P3
FFH
SBUF
不定
IP
***00000B
SCON
00H
IE
0**00000B
PCON
0*******B
PSW=00H,表明選寄存器0組為工作寄存器組;
SP=07H,表明堆棧指針指向片內RAM 07H位元組單元,根據堆棧操作的先加後壓法則,第一個被壓入的內容寫入到08H單元中;
Po-P3=FFH,表明已向各埠線寫入1,此時,各埠既可用於輸入又可用於輸出;
IP=×××00000B,表明各個中斷源處於低優先順序;
IE=0××00000B,表明各個中斷均被關斷;
系統復位是任何微機系統執行的第一步,使整個控制晶元回到默認的硬體狀態下。51單片機的復位是由RESET引腳來控制的,此引腳與高電平相接超過24個振盪周期後,51單片機即進入晶元內部復位狀態,而且一直在此狀態下等待,直到RESET引腳轉為低電平後,才檢查EA引腳是高電平或低電平,若為高電平則執行晶元內部的程序代碼,若為低電平便會執行外部程序。
51單片機在系統復位時,將其內部的一些重要寄存器設置為特定的值,至於內部RAM內部的數據則不變
Ⅵ 機械手臂的舵機驅動問題(51單片機實現)
單片機驅動能力不夠的緣故 你用兩個三極體就可以解決的 或者一個達林頓管 我以前也遇到過 採用AVR的就不會這樣 51單片機驅動能力不夠
Ⅶ 單片機編程能否控制一個機械手臂自動抓取物品
當然可以,前提是 機械手臂 要有控制機構,有抓取功能,
單片機編程只是 可以完成 控制指令。
Ⅷ 51單片機機械手臂
可以使用基於舵機的機械手臂,然後需要准備一個單片機最小系統板、相應的燒寫器,以及萬能板、開關、若干杜邦插針、1平方左右的導線、OK線、5V電源(功率請參考舵機總功率,可以選大一點)、相關焊接工具等。(最小系統板也可以自己焊,需要萬能板、直插式51單片機AT89S52(燒寫器為USB-ISP)、24M晶振、10uF電解電容、兩個22pF電容、若干10K電阻)。至於外殼螺絲釘等,可以自己個性化選擇。
提示:需要輸入舵機的信號為連續的高電平脈沖,脈寬(一次高電平時長,即量化數據)1~2ms,每秒發50次至200次都可以。
Ⅸ 機器人編程怎麼入門
機器人編程很大的一個范圍。
1.工業機器人應用編程,就學對應廠家的,如ABB的RAPID,PLC,這個要平台動手實操.
2.機器人演算法開發,就得學習C/C++,或者matlab;
3.機器人控制器開發,C/C++,RTX等,也有在linuxROS下開發的,界面MFC.QT.C#;
4.機器視覺opencv等,再帶點機器學習,可能用到Python看對應公司的要求,你可以在招聘信息裡面看,不同公司要求不一樣。
1、先學習C語言,這是基礎,然後學習單片機,然後就是實驗步進電機的控制,解碼器的工作原理和編程等等,這些是入門,有基礎攔乎之後可以學點Arino之類的,了解當前機器人最前沿的的系統。
2、機器人編程是機器人運動和控制問題的結合點,也是機器人系統最關鍵的問題之一。當前實用的工業機器人常為離線編程或示教,在調試階段可以通過示教控制盒對編譯好的程序一步一步地進行,調試成功後可投入正式運行。
基本說明:
1、任務程序員能夠指揮機器人系統去完成的分立單一動作就是基本程序功能。例如,把工具移動至某一指定位置,肢衡友操作末端執行裝置,或者從感測器或手調輸入裝置讀個數等;
2、機器人工作站的系統程序員,他的責任是選用一套對作業程序員工作最有用的基本功能。這些基本功能包括運算、決策、通訊、機械手運動、工具指令以及感測器數據處理等。許多正在運行歷槐的機器人系統,只提供機械手運動和工具指令以及某些簡單的感測數據處理功能。
Ⅹ 單片機里的時鍾數啊什麼概念 具體點!
計數器是按機器周期算的
一個機器周期=12時鍾周期
不管時鍾多少,都按一個機器周期=12時鍾周期計算 //**** 關鍵 ****//
12MHZ時鍾換過來就是1M機器周期(1M/S)
1ms就是1000機器周期;
6MHZ時鍾換過來就是0.5M機器周期(0.5M/S)
1ms就是500機器周期
8位計數器最高范圍是65536,
如果我們要記時1s,可以以10ms為單位,循環記時100次
現在就是初始化,10ms為例
TL0=-10000; //對T0計數初始化賦值,用12M的JT,10ms也就是機器周期計數10000
TH0=-10000>>8;
這就是初始化,一次溢出10ms
(若用6M的JT,10ms也就是機器周期計數5000)
當然這只是其中一部分,具體還有比如TR0(1)的設置
溢出中斷允許等!
上面兩句等價於
TL0=55536;//(65536-10000)
TH0=55536>>8;
相當於從55536開始數,
數10000次(10ms)後溢出,為一個記數周期
100次後就是1s
上述過程是在中斷服務程序中的