欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
關(guān)于51單片機串口通信問題
[打印本頁]
作者:
嘻嘻哈哈東
時間:
2023-6-9 22:25
標題:
關(guān)于51單片機串口通信問題
主要實驗功能:1.按下P3^0,串口發(fā)送1,2,3,4,5,6,7,8共8個數(shù)據(jù)到串口助手 2.串口助手傳來的數(shù)據(jù)再LCD1602顯示
問題1:發(fā)送到串口助手的數(shù)據(jù)錯亂
問題2:LCD1602顯示1的話,需要在串口助手傳回11
#include <reg52.h>
#include <LCD1602.h>
typedef unsigned char u8;
void delayms(u8 ms){
u8 i;
while(ms--)
for(i=0;i<113;i++);
}
u8 scan(void){
static bit kp=0;
if((P3&0x0f)!=0x0f)
{
kp=1;
if((P3&0x0f)==0x0e) return 1;
}
else kp=0;
return 0;
}
void Init()
{
SCON=0X50; //設置為工作方式1
TMOD=0X20; //設置計數(shù)器工作方式2
PCON=0; //波特率不加倍
TH1=0XFD; //計數(shù)器初始值設置,注意波特率是9600的
TL1=0XFD;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1; //打開計數(shù)器
}
void main() {
Init(); //串口初始化
LCD_Init(); //LCD1602初始化
while(1) {
}
}
void Usart() interrupt 4
{
u8 i = 0;
u8 receiveData;
if(scan() == 1)
{
SBUF = 0x01;
while(TI == 0);
TI = 0;
delayms(100);
SBUF = 0x02;
while(TI == 0);
TI = 0;
delayms(100);
SBUF = 3;
while(TI == 0);
TI = 0;
delayms(100);
SBUF = 4;
while(TI == 0);
TI = 0;
delayms(100);
SBUF = 5;
while(TI == 0);
TI = 0;
delayms(100);
SBUF = 6;
while(TI == 0);
TI = 0;
delayms(100);
SBUF = 7;
while(TI == 0);
TI = 0;
delayms(100);
SBUF = 8;
while(TI == 0);
TI = 0;
}
if(RI)
{
receiveData = SBUF; //接收到的數(shù)據(jù)
RI = 0; //清除接收中斷標志位
LCD_ShowChar(1,1,receiveData);
}
}
51hei.png
(194.39 KB, 下載次數(shù): 21)
下載附件
2023-6-9 22:30 上傳
作者:
xuyaqi
時間:
2023-6-10 05:59
通過串口發(fā)送的是8位二進制數(shù),不能直接發(fā)10進制數(shù),應該 SBUF ='6';,十進制數(shù)轉(zhuǎn)為ASCII碼再發(fā)送。
作者:
wys91203
時間:
2023-6-10 10:23
大致看了一下你的程序,感覺按鍵是定義到P3.0口, 而51的P3.0是串口 RXD接收端,兩個硬件沖突了,另外按鍵判斷和顯示最好不要做到中斷里,串口中斷只是清除RI和TI的標志位
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1