|
1.練習
(1)單片機發給電腦
請在“練習.txt”文件里的代碼基礎上,填寫相應的代碼,使得單片機串口打開,并工作在方式1,波特率為4800。并利用查詢方式不斷發送一組字符串給電腦。
電腦端使用串口調試助手軟件“sscom33.exe”,設置在波特率4800,數據位8位的方式下,并打開串口。
可以發現“sscom33.exe”會收到單片機發過來的字符串。
(2)電腦發送給單片機
在練習1的基礎上,設置不變,增加:打開接收功能,并打開中斷開關。
并編寫串口中斷響應函數,在中斷函數內將接收到的字節通過P0口輸出,P0口接8個LED燈。
電腦端使用“sscom33.exe”,設置不變,勾選“HEX發送”,然后在“字符串輸入框”輸入“F0”,并點擊發送。
可以發現單片機收到十六進制的“F0”字節,會讓高4個LED燈亮,低4個LED燈滅。
2.必做題
使用兩臺單片機,兩臺單片機都可以同時收發,其中任何一臺單片機的8個按鍵某個按下去,另一臺單片機的8個LED燈相應位置的燈會亮起,松掉按鍵燈滅。
注意兩臺單片機的連線需要三根:TXD,RXD和GND
3.選做題
利用電腦發一個數字給單片機,單片機將其顯示在數碼管上。或電腦發送數據給單片機,單片機根據不同的內容,執行不同的工作(亮LED燈,或調節燈亮度,或發出聲音)
(注意:“sscom33.exe”勾選“HEX發送”后,將輸入框里的內容當成十六進制發送,如果不勾選,則將輸入框里的內容當字符串一個一個字符地發送)
#include<reg51.h>
unsigned char code msg[16] = "hello world!\n";
void UsartConfiguration();
void Delay10ms(unsigned int c);
void main()
{
unsigned char i;
UsartConfiguration();
while(1)
{
for(i=0; i<16; i++)
{
//在這里使用查詢發送方式將msg[16]的字符一個一個發送出去
//put your code here!
}
Delay10ms(50);
}
}
void UsartConfiguration()
{
//在這里設置串口工作在方式1,波特率4800
//設置過程:(1)設置串口工作方式SCON和PCON
// (2)設置T1工作方式TMOD,初值TH1/TL1,開啟T1定時器
// (3)因為使用查詢發送,不用開啟中斷
//put your code here!
}
void Delay10ms(unsigned int c)
{
unsigned char a, b;
for (;c>0;c--)
for (b=38;b>0;b--)
for (a=130;a>0;a--);
}
|
-
0.png
(47.53 KB, 下載次數: 48)
下載附件
2018-7-5 02:17 上傳
-
-
實驗九.rar
2018-7-4 10:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
813.75 KB, 下載次數: 6, 下載積分: 黑幣 -5
單片機控制LCD
|