久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
51單片機串口接收程序問題
[打印本頁]
作者:
Henzie0226
時間:
2021-4-9 10:20
標題:
51單片機串口接收程序問題
下面的程序接收到一個16進制數,我想將其顯示到LCD上,但是只能顯示出部分位。(如串口接收到0xEB,計劃顯示23.5,但是只能顯示23,大佬們知道這是為啥嗎?)
單片機源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="The temperature:";
uchar table1[]="";
uchar flag,temp;
uchar j=0;
sbit wela=P2^7;
sbit dula=P2^6;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
void DelayMS(uint xms) //延時大約1ms
{
uint x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0; //寫命令
P0=com;
DelayMS(5);
lcden=1;
DelayMS(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1; //寫數據
P0=date;
DelayMS(5);
lcden=1;
DelayMS(5);
lcden=0;
}
void send(uchar dat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
void uartinit()//串口初始化函數
{
SCON=0x50;//串口工作方式為模式1
TMOD=0x20;//定時器T1工作方式2
PCON=0x00;//SMOD=0
TH1=0xfd;//波特率為9600
TL1=0xfd;
EA=1;
ES=1;
TR1=1;//啟動定時器
}
void init() //初始化函數
{
dula=0;
wela=0;
lcden=0;
write_com(0x38); //設置16*2顯示、5*7點陣、8位數據接口
write_com(0x0c); //設置開顯示,不顯示光標
write_com(0x06); //寫一個字符后,地址指針自動加一
write_com(0x01); //顯示清零,數據指針清零
uartinit();
}
void main()
{
uchar num=0;
uchar b=0;
init();
write_com(0x80);
for(b=0;b<16;b++)
{
write_data(table[b]);
DelayMS(5);
}
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
if(temp>=100)
{
table1[1]=temp/100+48; //ASCII碼轉換
table1[2]=temp%100/10+48;
table1[3]='.';
table1[4]=temp%10+48;
}
else if(temp>=10) //兩位數,百位的零不顯示
{
table1[1]=' '; //ASCII碼轉換
table1[2]=temp%100/10+48;
table1[3]='.';
table1[4]=temp%10+48;
}
else //一位數,前面的兩個零都不顯示
{
table1[1]=' '; //ASCII碼轉換
table1[2]='0';
table1[3]='.';
table1[4]=temp%10+48;
}
write_com(0x80+0x40);
for(b=1;b<5;b++)
{
write_data(table1[b]);
DelayMS(5);
}
for(b=1;b<5;b++)
{
send(table1[b]);
}
ES=1;
}
}
}
void ser() interrupt 4
{
if(RI==1)
{
RI=0;
temp=SBUF;
flag=1;
}
}
復制代碼
作者:
she
時間:
2021-4-9 14:51
如果你直接讓他顯示一個定值,能正常顯示嗎?
作者:
cn_zhx
時間:
2021-4-9 15:28
直接送個"23.5"字符串,看能不能正常顯示
作者:
zjy525
時間:
2021-4-9 15:38
因為你的賦值是從table1[1]開始的,table1[0]沒有被賦值
作者:
wulin
時間:
2021-4-9 21:31
改這樣
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="The temperature:";
uchar table1[4];
uchar flag,temp;
uchar j=0;
sbit wela=P2^7;
sbit dula=P2^6;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
void DelayMS(uint xms) //延時大約1ms
{
uint x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(uchar com)
{
lcdrs=0; //寫命令
P0=com;
DelayMS(1);
lcden=1;
DelayMS(1);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1; //寫數據
P0=date;
DelayMS(1);
lcden=1;
DelayMS(1);
lcden=0;
}
void send(uchar dat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
void uartinit()//串口初始化函數
{
SCON=0x50;//串口工作方式為模式1
TMOD=0x20;//定時器T1工作方式2
PCON=0x00;//SMOD=0
TH1=0xfd;//波特率為9600
TL1=0xfd;
EA=1;
ES=1;
TR1=1;//啟動定時器
}
void init() //初始化函數
{
dula=0;
wela=0;
lcden=0;
write_com(0x38); //設置16*2顯示、5*7點陣、8位數據接口
write_com(0x0c); //設置開顯示,不顯示光標
write_com(0x06); //寫一個字符后,地址指針自動加一
write_com(0x01); //顯示清零,數據指針清零
}
void main()
{
uchar num=0;
uchar b=0;
uartinit();
init();
write_com(0x80);
for(b=0;b<16;b++)
{
write_data(table[b]);
DelayMS(5);
}
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
if(temp>=100)
{
table1[0]=temp/100%10+'0'; //ASCII碼轉換
table1[1]=temp/10%10+'0';
table1[2]='.';
table1[3]=temp%10+'0';
}
if(temp<100&&temp>=10) //兩位數,百位的零不顯示
{
table1[0]=' '; //ASCII碼轉換
table1[1]=temp/10%10+'0';
table1[2]='.';
table1[3]=temp%10+'0';
}
if(temp<10) //一位數,前面的兩個零都不顯示
{
table1[0]=' '; //ASCII碼轉換
table1[1]='0';
table1[2]='.';
table1[3]=temp%10+'0';
}
write_com(0x80+0x40);
for(b=0;b<4;b++)
{
write_data(table1[b]);
DelayMS(5);
}
for(b=0;b<4;b++)
{
send(table1[b]);
}
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
temp=SBUF;
flag=1;
}
復制代碼
作者:
Henzie0226
時間:
2021-4-10 20:33
wulin 發表于 2021-4-9 21:31
改這樣
您好,謝謝您的回復,您的代碼我驗證了一下可以實現,請問我的不能實現的原因是什么呢?
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
中文字幕在线观看一区二区三区
|
日韩欧美在线视频
|
在线免费毛片
|
中文字幕在线网站
|
日韩在线视频免费观看
|
免费网站av
|
av影院在线
|
欧美视频在线观看免费
|
午夜激情在线观看
|
日韩中文字幕在线观看
|
天天搞天天干
|
久久久久久黄色
|
成人免费毛片入口
|
日韩精品免费视频
|
一区二区三区视频在线
|
在线观看免费毛片
|
国产又粗又猛又黄又爽的视频
|
四虎wz
|
性高潮久久久久久久
|
成人毛片在线观看
|
国产二区精品
|
亚洲丝袜av
|
久久国产精品免费
|
激情视频小说
|
一本一道久久a久久精品蜜桃
|
亚洲精品成人网
|
九一九色国产
|
国产精品福利在线
|
四虎影院在线
|
亚洲欧美一区二区三区在线
|
亚洲视频二区
|
日韩中文字幕一区二区
|
夜夜夜夜操
|
青青草免费在线视频
|
伊人亚洲
|
蜜桃色999
|
欧美日韩国产中文字幕
|
精品人伦一区二区三区
|
在线日韩视频
|
亚洲欧美国产毛片在线
|
成人在线免费视频
|