說明:單片機連接電腦,在串口工具上查看單片機發來的數據。接收數據下一章再教。
原料:最小開發板(晶振爲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);
}
四、運行結果