在調試HAC-UM96的過程中,遇到了很多問題,可能和自己長時間沒有用51的原因,寫起程序有點沒思路,不過後期還是基本找到了寫感覺。而自己最大的困難還是硬件方面,我一直對硬件沒有有感覺,導致一旦已經出現問題,自己往往沒什麼思路。在這幾天的調試過程中,我也慢慢總結出自己究竟被什麼攔在了門外。或許是一下幾點: 1 焊接功底差,焊個簡單的電路就需要很長的時間 多加練習 2 缺少器件 從現在開始積累一些電路和工具 3 技術支持 可以和公司及產品客服聯系,他們的某些方法或許不能幫你解決問題,但是可以給我帶來靈感 測試HAC-UM96的最簡單方法: (1)編寫串口發射程序,注意波特率9600、1位停止位、無校驗位(在51中選擇串口通信方式1)。我編寫的源代碼如下: [cpp] /*打開串口調試程序,將波特率設置為9600,1位停止位、無奇偶校驗 晶振11.0592MHz. */ #include <reg52.H> #define uchar unsigned char #define uint unsigned int void delayms(uint xms); uchar flag;//產生中斷標志 //串口初始化 void uart_init() { www.2cto.com TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 0xfd; /* TH1: reload value for 9600 baud @ 11.0592MHz */ TL1 = 0xfd; TR1 = 1; /* TR1: timer 1 run */ REN = 1; //允許串口接收 SM0 = 0; //選擇串口通信方式1 SM1 = 1; EA = 1; /*打開總中斷*/ ES = 1; /*打開串口中斷*/ } /*主程序*/ void main (void) { uart_init();//串口初始化 SBUF = 0x55; while(1) { if(flag==1) { delayms(500);//延時0.5s SBUF = 0x55; } } } void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void UART_SER (void) interrupt 4 //串行中斷服務程序 { if(RI) //判斷是接收中斷產生 { RI=0; //標志位清零 } if(TI) //如果是發送標志位,清零 { TI=0; flag = 1; } } (2)將HAC-UM的5個短路帽全部插上; (3)將一個HAC-UM96(簡稱為TA)的GND、VCC、TXD、RXD直接連接到單片機上的GND、VCC、RXD、TXD,注意RXD接TXD; (4)將另一個HAC-UM96(簡稱為TB)的GND、VCC也同時連接到該單片機板上,用示波器觀察TB的TXD端,會看到如下波形: (5)這樣就完成了通信; 備注:通過測電流觀察發送端是否有數據發送也可以,不過發射端必須一致發送數據,最好不要有延時,不然測得電流為0,我在連續發送的情況下測得最大電流為0.250mA。