A. 51單片機如何實現開機自檢
可以連接電腦電源的多餘的電源輸出線,檢測有沒有輸出電壓。或者檢測電腦的風扇的運行,風扇上一般有3根線,一根電源,一根地線
B. 什麼叫自檢電路 自檢什麼如何自檢的 例如:壓力變送器的自檢功能,都檢測什麼 請高手指教
自檢電路是電路中附加的,能夠在一定程度上反映電路工作狀態的部分。從某種意義上講,自檢電路和電源指示燈是同一類東西,不過功能上會復雜和強大許多。
智能壓力變送器的自檢功能,各個廠家不盡相同,最簡單的是監測感測器部分,例如電容式感測器振盪電路不能起振,它就會報感測器故障。再就是監測電路各點電壓,可以判斷出電路哪一部分(電路板)有問題。
其實自檢功能有很大局限性,例如功放(輸出)部分故障,故障信號根本無法讀取,自檢也就沒有意義。二是故障信號簡單,往往看到了也不知道什麼意思。
C. 電路設計中為什麼要設計自檢電路自檢電路在單片機電路設計中有什麼用謝謝
為了保證電路正常工作和及時發現系統故障,電路設計中大多數要設計自檢電路,自檢電路包括對器件工作狀態,環境補償,保護元件是否失效,修正參數等等,單片機電路還包括程序是正常執行,初始參數的自動設置,有LED顯示的還要檢測是否斷筆,以及配合人工通過顯示確定系統狀態等
D. 一個具有外擴RAM的單片機系統,怎麼編寫ROM和RAM的自檢程序.
我覺得首先應該檢RAM(內部通用寄存器(不包括SFR——有些不可寫)、內部RAM、外部RAM );然後檢測ROM;最後檢測EEPROM。
一. RAM檢測:
首先檢測未使用的RAM區;
檢測正常後,再把使用的RAM區數據全部復制到未使用區,再檢測使用區是否正常;
如正常,從新將數據復制回來;
再對比兩個數據區的數據,如果一致,則RAM檢驗完畢;
二. ROM檢測:
計算ROM區的CRC校驗值和ROM內燒錄晶元時的CRC比較,一致則通過;
三. EEPROM檢測:參照RAM檢測。
E. 單片機鍵盤自檢程序
rans()流程
掃描碼鍵值轉換程序流程第一類按鍵的掃描碼鍵值轉換程序代碼:
if (F0_FLAG) {//接收掃描碼為斷碼
switch (mcu_revchar){//處理控制鍵
case 0x11: agcs_status&=0xF7;break;//左alt釋放
case 0x12: agcs_status&=0xFE;break;//左shift釋放
case 0x14: agcs_status&=0xFD;break;//左ctrl釋放
case 0x58: if(led_status&0x04)
led_status&=0x03;//caps lock鍵
else led_status =0x04;
ps2_ledchange();
break;
case 0x59: agcs_status&=0xEF;break;//右shift釋放
case 0x77: if(led_status&0x02)
led_status&=0x05;//num lock鍵
else led_status =0x02;
ps2_ledchange();
break;
case 0x7E: if(led_status&0x01)
led_status&=0x06;//scroll lock鍵
else led_status =0x01;
ps2_ledchange();
break;
default:break;
}
F0_FLAG = 0;
}
else {//接收掃描碼為通碼
if (led_status & 0x04) caps_flag = 1; else caps_flag = 0;
if (led_status & 0x02) num_flag = 1; else num_flag = 0;
if (scga_status & 0x11) shift_flag = 1; else shift_flag = 0;
file://掃描碼鍵值轉換
if ((caps_flag == shift_flag) (!num_flag))
KeyVal=kb_plain_map\[mcu_revchar\];
else KeyVal=kb_shift_map\[mcu_revchar\];
switch(mcu_revchar){//處理控制鍵或狀態鍵
case 0x11: agcs_status = 0x08;//左alt按下
case 0x12: agcs_status = 0x01;//左shift按下
case 0x14: agcs_status = 0x02;//左ctrl按下
case 0x59: agcs_status = 0x10;//右shift按下
default: break;
}
}第二類按鍵的掃描碼鍵值轉換程序與上相似。要注意的是在退出該程序段時對
E0_FLAG和F0_FLAG標志的清0。
PAUSE鍵的處理程序:如果接收到0xE1,置E1_FLAG=1,然後順次將後續接收到的7
個位元組數據和PAUSE的通碼後7個位元組比較,一致則返回KeyVal=KB_PAUSE。在比較
完所有7個位元組後清除E1_FLAG標志。
鍵盤初始化程序kb_init()流程:
① 上電後,接收鍵盤上電自檢通過信號0xAA,或者自檢出錯信號0xFC。單片機接
收為0xAA,進入下一步,否則,進行出錯處理。
② 關LED指示,單片機發送0xED,然後接收鍵盤回應0xFA,接著發送送0x00接收
0xFA。
③ 設置機打延時和速率。 單片機發送0xF3,接收0xFA,發送0x00
(250ms,2.0cps),接收0xFA。
④ 檢查LED,發送0xED,接收0xFA,發送0x07(開所有LED),接收0xFA。發送0xED,
接收0xFA,發送0x00(關LED),接收0xFA。
⑤ 允許鍵盤發送0xF4,接收0xFA。
鍵盤LED改變ps2_ledchange()函數流程:發送0xED→接收0xFA→發送led_status→接收0xFA。
結語
該驅動程序經Keil uVision2編譯,在AT89C51單片機上運行通過,實現了對PS/2 104鍵盤的支持,以及對字元按鍵大小寫切換,num lock切換,控制鍵及組合按鍵的支持。該程序對其他嵌入式或單片機系統中PS/2鍵盤的應用也有借鑒意義。
F. 單片機 自檢程序
電路圖呢?
G. 單片機嵌入式開發時,自檢程序和測試程序跟硬體之間的關系是什麼
先學習單片機(偏硬)。 再進行嵌入式開發(偏軟)、
H. 單片機如何對外部FLASH進行自檢和在線自檢
比較易於實現的方法就是將一個數值寫入再讀出,判斷兩次的值是否相等。
我用過這種辦法,不過並不是將全部可用空間全部讀寫一次,而是在每次對FLASH進行操作的時候(例如要保存一個當前時間和電壓值時)對特定的五個不同塊的五個位元組單元進行讀寫,判斷寫入讀出值是否相等,以此來對整片FLASH進行評估,如果發現某位元組出現問題則在LCD上顯示錯誤信息(雖然此時可能僅是出現某個壞塊,但出於保證系統安全運行考慮顯示錯誤提示更換FLASH)。
這個方法很簡便,因為不知道你具體應用在什麼樣的系統上,所以在遇到壞塊時應如何處理就看你系統的要求自己設計了。
希望答案對你有所幫助!
I. 單片機編程,自檢程序
我在這里給出思路如下:
啟動周期為1秒的定時器中斷,在中斷程序中根據跑馬燈顯示標志、L1顯示標志、L2顯示標志、L1顯示的當前數值、L2顯示的當前數值(這些應該定義在RAM中,並在啟動程序時初始化),控制輸出口以實現跑馬燈以及L1和L2的顯示。
整個程序應該是一個循環,在循環中監測鍵盤(P3.0、3.1、3.2、3.3 ),根據鍵盤的狀態設置相關的標志。
詳細的代碼在這里我就不給出了,沒有時間去做。
J. 單片機的擴展ram自檢的流程
擴展RAM自檢很簡單的,就是從0000H開到你擴展RAM的最高地址比如你擴展了64K,那麼就到FFFFH,分別寫入5AH和A5H,再讀出來對比是否一致,如果一致那麼OK,如果不一致,那麼就ERROR。當然如果擴展超過64K了,那麼就需要採取一定措施了,要藉助其他IO口,比如P1口來做為擴展地址線了,一般51單片機內部地址匯流排只能到16根,也就是低八位的P0口和高八位的P2口。利用內部地址匯流排只能到64K。我曾經做過擴展1M的系統,需要用5個其他IO口來實現。其中4根做地址線,一根用於控制其他(留點懸念)。