|
51系列單片機(jī)與上位機(jī)通訊有兩種串口通訊方式:
方式一.使用自帶串口通訊模塊,使用RxD/TxD口,用內(nèi)置定時(shí)器產(chǎn)生波特率,通過中斷方式得到發(fā)送和接收數(shù)據(jù)
方式二.使用任一IO端口,自已進(jìn)行收發(fā)解碼操作。這種模式需要注意的地方比較多,比如
A.常用串口數(shù)據(jù)幀格式: 0+8位data+1, 0是起始位,1是停止位,是中間放8位數(shù)據(jù)
B.波特率,需要自已控制,而且了為采樣準(zhǔn)確,通常使用16分頻方式,取中間幾段來確定是否是有效數(shù)據(jù)。
串口通訊最重要的工作就是控制波特率,比如9600、19200等,如果使用不精確的內(nèi)部RC震蕩器,需要注意不要使用過高的波特率,
否則有可能丟數(shù)據(jù)或錯(cuò)位。
研究了一晚上,把這兩種方式都試通了,現(xiàn)在可以用PC機(jī)用串口助手可向單片機(jī)發(fā)指令來控制單片機(jī)的狀態(tài),單片機(jī)也可以向PC機(jī)報(bào)告自已的數(shù)據(jù)。
之后測(cè)試了一個(gè)光敏電阻數(shù)模轉(zhuǎn)換ADC試驗(yàn),成功的把模擬的光線亮度轉(zhuǎn)換成 0-255的分量,然后通過串口報(bào)告給主機(jī)。
想起很多前年,我的資本家同學(xué)XY給過我一個(gè)數(shù)碼尺,可以把測(cè)量出來的長(zhǎng)度數(shù)據(jù)直接用串口輸出,當(dāng)時(shí)我覺得這玩意太神奇了,完全不知道是怎么實(shí)現(xiàn)的。現(xiàn)在想想,感覺自已完全可以實(shí)現(xiàn)一個(gè)了,不外乎ADC+UART+MCU罷了,呵呵。
話說咱這塊STC的MCU的ADC功能還是比較強(qiáng)大的(STC 12C5202AD),有8個(gè)模擬量采樣口,可以并發(fā)進(jìn)行8通道的256級(jí)采樣。雖然精度不高,但對(duì)很多應(yīng)用已經(jīng)足夠了。其實(shí)別說256級(jí)了,很多時(shí)候簡(jiǎn)單的開關(guān)兩級(jí)變化就已經(jīng)很有用了。
上周末還把我的四相步機(jī)電機(jī)研究了一下,寫了一個(gè)小程序控制步進(jìn)電機(jī)連續(xù)運(yùn)動(dòng),也就是幾個(gè)二進(jìn)制狀態(tài)的切換問題,沒有技術(shù)含量,不敘。
紅外遙控技術(shù)也研究了一下,原理同口串口通訊,只是波特率固定為38Khz,然后發(fā)的數(shù)據(jù)幀不同罷了。搞清原理,沒有繼續(xù)實(shí)驗(yàn)。
難怪外面有賣萬能遙控器的,這里面就是一個(gè)紅外串行通訊。萬能遙控就是先收原廠遙控的碼,再發(fā)出來罷了。實(shí)在不行,把所有的碼都發(fā)一編,總有一個(gè)適合你。外面那些個(gè)汽車的電子鑰匙解碼器怕不會(huì)也是這個(gè)原理吧,也就是說,你蹲在人家汽車旁邊,開個(gè)機(jī)器收無線碼,然后就可以復(fù)制,或者自已發(fā)碼,暴力破解?
研究了十幾天的單片機(jī)和周邊,感覺這塊大體清楚了怎么回事,后面該干點(diǎn)啥子哩?
專用炒股機(jī)?聲控小玩具?智能炸彈?無人機(jī)?激光竊聽器?
。。。???。。。這才是大問題啊。
|
|