在調試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。