⑤串口發送數據

說明:單片機連接電腦,在串口工具上查看單片機發來的數據。接收數據下一章再教。
原料:最小開發板(晶振爲115200),51單片機,usb轉ttl

在這裏插入圖片描述

一、爲什麼要用最小開發版進行實驗?
可能剛開始學單片機的你們,都是人手一個單片機學習板,燒錄程序到單片機也是用單片機學習板。單片機最小開發板和單片機學習板的晶振不同(學習板的一般爲120000),所以在TX發送數據的時候,會亂碼。
記住:用學習板燒錄完程序之後,將單片機插到最小開發板上,再連接電腦。

當然也有些同學們會直接用最小開發板來下載程序,那樣就更好不過了,可以直接忽略這個問題。

二、最小開發板的連線(提示:單片機的P30和P31引腳分別爲RX、TX)

在這裏插入圖片描述

三、程序
重點:
1在百度上仔細瞭解單片機初始化
2對指針和數組的瞭解

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

/* 定義I/O口專區  */
sbit led = P0^0;   
/* 定義I/O口專區 結束*/


/*自定義延時函數專區	 開始*/
void delay(int i)
{
while(i--);
}
/*延時函數專區結束*/


/*發送數據專函數區*/
void Send_Uart(uchar value)
{
	SBUF = value;//緩存
	while(TI==0); //每次發送完數據之後TI會自動置1	,即關閉發送功能
	TI = 0;//讓TI清零,以便下次送數據
}
/*發送數據專函數區結束*/

/*發送數據函數*/
void send(uchar *puf)
{
	while(*puf != '\0')//指針結束符是\0,當*puf等於\0的時候,說明字符已經輸入完成
	{
		Send_Uart(*puf);//每次接受一個字符
		puf++;
	}
	
	delay(1000);//讓單片機反應過來
}

/*51單片機初始化*/
void Uart_Init()
{
	TMOD = 0x20;  //定時器1,工作方式2
	PCON = 0x00;  //不加倍率
	SCON = 0x50;  //串口工作方式1
	TH1 = 0xfd;
	TL1 = 0xfd;   //定時器工作方式2可以自重載,這裏設置9600波特率
	TR1 = 1;      //啓動定時器
	ES = 0;       //打開串口中斷
	EA = 1;       //打開總中斷 	
}
//一般這個都是配套使用的,要理解的話去百度,仔細瞭解每個值的意思。
/*51單片機初始化結束*/


void main()//這裏弄個小燈閃爍是因爲天調試使的時候可以知道代碼是否在運行,也可以知道代碼在哪一步停止,哪一步出錯
{
	Uart_Init();/*51單片機初始化*/
	led = 0;
	send("您好同學們\r\n");// \n是換行
	delay(50000);
	send("歡迎加入佛科院物聯網協會\r\n");//哎呀\r忘記是什麼意思了。要學會自己百度哦
	led = 1;
	delay(50000);
	led = 0;
	send("你好熟知宇某\r\n");
	delay(50000);
	led = 1;
	

	while(1);
}



四、運行結果

在這裏插入圖片描述

發佈了46 篇原創文章 · 獲贊 36 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章