標(biāo)題: 學(xué)51單片機(jī)-UART口發(fā)送一個(gè)字符 [打印本頁]
作者: jiajiamei 時(shí)間: 2015-4-8 22:35
標(biāo)題: 學(xué)51單片機(jī)-UART口發(fā)送一個(gè)字符
UART口,又叫做通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),是單片機(jī)常用功能的一部分,也是早期臺(tái)式電腦必備的一個(gè)硬件接口。
當(dāng)年我調(diào)試UART口的時(shí)候,用的還是超級(jí)終端,現(xiàn)在都用串口助手了,比我們當(dāng)時(shí)方便多了。
UART口按位發(fā)送和接收字節(jié),雖然相比于并口,慢了很多,但是在有限的IO資源面前,這種方式是非常可取的。
UART口主要用于ASCII碼的傳輸,傳輸過程遵循ANSI/EIA-232標(biāo)準(zhǔn)。ASCII碼是啥?看下表:
驅(qū)動(dòng)電路主要有有兩種,一種是基于MAX232這類芯片的:
上圖中,MAX232的10腳接到單片機(jī)的TXD上,9腳接到單片機(jī)的RXD上。
另一種以CH340或者PL2303這類芯片為主,因?yàn)殡娔X上的RS232接口越來越少,所以這類芯片使用USB轉(zhuǎn)UART口的方式來實(shí)現(xiàn),應(yīng)用電路如下:
通信過程中主要參數(shù)如下:
波特率:傳輸速率,常用范圍9600~115200.
數(shù)據(jù)位:就是每次發(fā)送的這個(gè)數(shù)據(jù)有幾位,常用的是8位,別的還有4、5、6、7.
校驗(yàn)位:用來校驗(yàn)傳輸資料的正確性。
停止位:是一個(gè)字符數(shù)據(jù)傳輸結(jié)束的標(biāo)志,一般設(shè)為1位。
波特率如何計(jì)算?
方式1,3的波特率=1/32或1/16*計(jì)時(shí)器2的溢出率。
此處有一個(gè)公式:
波特率=1/16或1/32*(晶振的頻率/12*(256-TH1))
代入:
9600=11059200/32*12*(256-TH1)
TH1=TH0=FDH
代碼比較多,不貼出來了,已經(jīng)加好注釋了。有興趣的可以自己下載去研究,如下:
- /**********************51單片機(jī)學(xué)習(xí)例程************************
- * 平臺(tái):Keil U4 + STC89C52
- * 名稱:UART口傳輸一個(gè)字符 A
- * 編寫:起航
- * 晶體:11.0592MHZ
- ******************************************************************/
- #include <reg52.h>
- typedef unsigned char uint8;
- typedef unsigned int uint16;
- uint8 num = 65;
- /***************************************************
- *
- * 延時(shí)子函數(shù)
- *
- ****************************************************/
- void delay(uint16 n)
- {
- while(n--);
- }
- /***************************************************
- *
- * 串口初始化子函數(shù)
- *
- ****************************************************/
- void UART_init(void)
- {
- SCON = 0x50; //工作在方式1 ,8位異步收發(fā),波特率由定時(shí)器控制
- TMOD = 0x20; //選擇定時(shí)器1做為波特率發(fā)生器,方式2
- TH1 = 0xFD; //定時(shí)器賦初值
- TL1 = 0xFD;
- TR1 = 1; //啟動(dòng)定時(shí)器
- ES = 1; //串口中斷允許
- EA = 1; //開啟總中斷
- }
- /***************************************************
- *
- * 字節(jié)發(fā)送子函數(shù)
- *
- ****************************************************/
- void UART_send_byte(uint8 dat)
- {
- SBUF = dat;
- while(!TI); //等待發(fā)送完成
- }
- int main()
- {
- UART_init();
- while(1) //循環(huán)發(fā)送字符 A
- {
- UART_send_byte(num);
- delay(20000);
- }
- return(0);
- }
復(fù)制代碼
程序及hex文件下載:
UART1.zip
(28.52 KB, 下載次數(shù): 72)
2015-4-8 22:34 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: 十九碼的鞋 時(shí)間: 2016-3-30 14:59
值得一贊
作者: chwe1112 時(shí)間: 2016-5-16 23:15
贊一個(gè),下載下來了,先看一下,正在試著寫232通訊方式的程序
作者: chwe1112 時(shí)間: 2016-5-16 23:17
贊一個(gè),正好學(xué)習(xí)232通訊方式的程序
作者: chwe1112 時(shí)間: 2016-5-16 23:22
?附件的代碼也不多啊,也是64行而已的啊
作者: 不吃草的牛 時(shí)間: 2017-9-13 11:53
好教程,值得我們新手學(xué)習(xí)
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
99re视频在线
|
成人影院网站ww555久久精品
|
亚洲一区二区精品视频
|
a免费观看
|
自拍偷拍3p
|
蜜桃av鲁一鲁一鲁一鲁
|
国产乱码精品一区二区三区五月婷
|
亚洲一区二区三
|
国产精品视频在线免费观看
|
成人h片在线观看
|
在线三级网址
|
国产精品福利视频
|
亚洲自拍偷拍视频
|
成人免费看片网
|
亚洲成人免费视频在线
|
日日摸日日碰夜夜爽2015电影
|
欧美激情a∨在线视频播放
成人免费共享视频
|
亚洲精品成人网
|
免费观看一级毛片视频
|
久久久久精
|
久久久国产一区二区三区
|
久久免费大片
|
久草精品视频
|
国产aⅴ爽av久久久久久久
|
国产一区二区久久
|
亚洲a人|
亚洲一区二区视频在线观看
|
久久99精品久久久久久
|
国产精品久久久久久久久免费软件
|
久久精品国产亚洲
|
欧美综合久久
|
中文字幕第二区
|
天天天天天操
|
精品乱码一区二区三四区
|
精品久久久久久
|
青青草精品
|
国产精品久久久久久一区二区三区
|
国产精品国产三级国产aⅴ无密码
|
久久国产一区二区三区
|
精品久久久久久久久久久
|
久久天堂网
|