导航:首页 > 操作系统 > 单片机数码管串口通信

单片机数码管串口通信

发布时间:2022-08-23 17:30:14

单片机怎么实现数码管显示电子钟时间到01 02 03 ...通过单片机发送到串口通信

很多方式都可以,只有远程驱动需要总线,本地还要有驱动电路或者单片机,一般使用译码器或者锁存器即可驱动,程序中依次通过端口向锁存器数据线输出显示字符对应的内容字节即可。

② 在51单片机的串口通信中,如何在数码管上用16进制显示0-65536

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code tab_disp[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code tabwela[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar i,k,flag;
uint b,num1[2];
uchar num[5];
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=10;y>0;y--);
}
void display()
{
uchar j;
for(j=0;j<5;j++)
{
P0=tabwela[j];
P2=tab_disp[num[j]];
delay(1);
P2=0x00;
}
}
void main()
{
TMOD=0x20;//定时器1的工作方式2
TH1=0xfd; //装数,设定波特率 9600
TL1=0xfd;
TR1=1;//启动定时器1
REN=1;//启动串口接收数据
SM0=0;//串口工作方式1
SM1=1;
EA=1;//开总中断
ES=1;//开串口中
while(1)
{
if(flag==1)
{
num[0]=b/10000;
num[1]=b%10000/1000;
num[2]=b%1000/100;
num[3]=b%100/10;
num[4]=b%10;
flag=0;
SBUF=b;
while(TI==1)
TI=0;
}
display(); }

}
void ser() interrupt 4
{
while(RI==1)
{
RI=0;
num1[i]=SBUF;
i++;
if(i==2)
i=0;
k++;
}
if(k==2)
{
k=0;
b=(num1[0]*256)+num1[1];
flag=1;
}
}

③ 如何用单片机的串口控制数码管

单片机的串口控制数码管,要怎么控制,是控制显示什么数吗?
用串口控制,是单片机的串口接收数据吗?那就要电脑串口发送数据了。
那你想怎么控制呢,电脑发送一个数据,你自己确定,单片机串口接收到这个数据 了,数据就应该怎样就行了。

④ 基于stc15单片机的串口通信,发送数据用数码管显示(源程序)

#include<reg51.h>
#define uchar unsigned char
uchar code ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳级数码管码表0-9
uchar time,scanled;
uchar disdat[2];
bit flag=0;
void dischg() //显示码转换
{
disdat[0]=s_dat/10; //秒转换
disdat[1]=s_dat%10;
}
void t0isr() interrupt 1 //秒计时
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if(time>=20)
{
time=0;
s_dat++;
flag=1;
}
}
void t1isr() interrupt 3 //显示控制
{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
an=1;
P0=0xff; //消隐
an=0;
wei=1;
P0=1<<scanled; //位码
wei=0;
an=1;
P0=disdat[scanled];
an=0;
scanled++;
scanled%=2; //共8位显示
}
main()
{
TMOD=0x21; //定时器0和1都为模式1
TH0=(65536-50000)/256; //定时器0,50毫秒中断一次
TL0=(65536-50000)%256;
TH1=0xfd;
TL1=0xfd;
SCON=0x40;
TR1=1;
TR0=0;
ET0=1;
EA=1;
scanled=0;
time=0;
dischg();
while(1)
{
if(flag)
{
flag=0;
SBUF=s_dat;
while(TI==0);
TI=0;
}
}
}

⑤ 单片机串口通信问题。通过上位机发送数据控制数码管显示。

一般 上电时 串口 有可能 会接收到 一个干扰信号,
只要在 上电 时给一个 就十 mS 的延时,初始化一下 数据缓冲器,及显示缓冲器。

⑥ 51单片机怎么通过串口通信在数码管的显示大于255的值

这个,建议多看一些有关编码的知识。
串口助手“以16进制发送数据”时,软件会先将“FF”转换成8位二进制数据“11111111”即十进制数据“255”发送出去。单片机接收到的实际上也是二进制数据“11111111”。
而你的单片机代码中“=x/100;"是我们人类的思维模式,编译器将代码编译时,实际上进行的运算是"=X/0b01100100"。

⑦ 用串口通信控制单片机数码管的问题:我在电脑上输入的是16进制数,输出来的是十进制数

两个解决办法啊:
1)你在电脑端直接输入10进制数,那么你显示的就是10进制数
2)如果你要显示你输入的16进制数MCU端不要直接将接到的数直接/10 %10,这计算出的全部是10进制数。
直接取高4位,送去显示,然后取低四位送去显示,那就可以了
程序的话,一个char rx_data
msb = unsigned char (rx_data >> 4)
lsb = unsigned char(rx_data & 0x0f)
然后msb送去十位显示
LSB送去低位显示就是你需要的数了
或者用1楼的方法,将你要显示的数转化成BCD码的形式
然后在分别取每一位数送去显示

⑧ 跪求51单片机高手赐教 关于串口通信和数码管显示上位机数据的程序

串口发来2字节的数据(一般还要加上校验),按16进制显示用4个数码管,10进制用5个数码管。如果是10进制,先转换成5个0-9的数(16进制转换成4个0-15的数),再分别按照数码管驱动对照表从控制口发出0-9(0-15)对应的驱动码就可以了。

⑨ 51单片机串口通讯:把上位机接收的数据在数码管显示

建议把这几行代码

n=SBUF;while(!RI);RI=0;
SBUF=n;while(!TI);TI=0;
P0=dis[n];
dislay();

改为

while(1){
while(!RI);
RI=0;
n=SBUF;
SBUF=n;
while(!TI);
TI=0;
P0=dis[n];
dislay();
}

另外,如果是实际制作电路,P0口和数码管之间的七根连线中间要串入7个电阻才比较好,阻值在几百欧,例如200~510欧之间。

阅读全文

与单片机数码管串口通信相关的资料

热点内容
安卓手机里的电子狗怎么用 浏览:742
pythonspyder入门 浏览:761
趣质猫app是什么 浏览:59
皮带压缩机经常吸不上 浏览:205
西部随行版怎样加密 浏览:996
钉钉上如何压缩图片 浏览:924
cad输入命令不显示窗口 浏览:618
小米视频加密之后怎么看 浏览:76
超级程序员刘芳阅读 浏览:832
顾家九爷在哪个app 浏览:820
我的世界怎么在联机大厅做服务器 浏览:290
分手程序员 浏览:447
php将html导出为word 浏览:801
腾讯加密视频能破解吗 浏览:1007
反编译后导入eclipse 浏览:948
买阿里云服务器有邮箱吗 浏览:825
pdf卡片2004 浏览:309
e算量加密锁检测不到 浏览:777
python串口读取数据类型 浏览:760
17年新款宝来压缩机不跳 浏览:107