以16进制发送一个0-255之间的任一数,当单片机收到后在数码管上动态显示出来,波特率为4800b

如题所述

#include<reg51.h>
#define uchar unsigned chara
char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳级数码管码表0-9
uchar dat,bai,shi,ge,scan;
void delay(uchar a)
{
uchar i;
while(a--)
for(i=0;i<120;i++);
}
void uart() interrupt 4
{
if(RI)
    {
    RI=0;
    dat=SBUF;
    bai=dat/100;
    shi=dat%100/10;
    ge=dat%10;
    }
}
main()
{
TMOD=0x20;
SCON=0x50;
TH1=0xfa;
TL1=0xfa;
TR1=1;
ES=1;
EA=1;
while(1)
    {
    P2=0x01;
    P0=table[bai];
    delay(5);
    P2=0x02;
    P0=table[shi];
    delay(5);
    P2=0x04;
    P0=table[ge];
    delay(5);
    }
}
温馨提示:内容为网友见解,仅供参考
无其他回答

以16进制发送一个0-255之间的任一数,当单片机收到后在数码管上动态显示...
include<reg51.h>#define uchar unsigned charachar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};\/\/共阳级数码管码表0-9uchar dat,bai,shi,ge,scan;void delay(uchar a){uchar i;while(a--)for(i=0;i<120;i++);}void uart() interrupt 4{if(RI) ...

以16进制发送一个0-65536之间的任一数,当单片机收到后在数码管上动态...
ES=1;……

以16进制发送一个0-65536之间的任一数,当单片机收到后在数码管上动态...
数码管转换的时候是没错的 估计是波特率的问题 12MHz晶振可以使用4800bsp的波特率 PCON=0x80;TH1 = 0xF3;TL1 = TH1;

题目:以16进制发送一个0-65536之间的任一数,当单片机收到后在数码管上...
以16进制发送一个0-65536之间的任一数:这题目本身是有问题的,因为超过255的数,要用两个字节了,就是需要发送两次。而你程序只接收一次,shu = SBUF;这是不可能的。发送两次,要分高8位和低8位,这还要确定是先发高8位,还是先发低8位。下一个问题是,看你的仿真图,是用虚拟终端发的,对...

单片机串口通信问题,请求大侠帮忙!
以16进制发送一个0~65536之间的任意数,...--- 标准的串口,只能传输0~255之间的数。要想传送多字节的数据,就需要多次传送。这就必须制定通信协议。发送方,先向对方呼叫,待收到正确的回音后;再向对方发送“数据的字节数”;再向对方连续发送数据字节串,对方收到,存放到一个缓存空间;发送方...

以2400bps从计算机发送任一字节数据,当单片机收到数据后,在此数据前...
电脑上显示的是16进制 是串口助手的问题 有这个设置就能改成10进制 要想从单片机这边改 就得发ASCII码 这样助手那边显示为ASCII吗 就可以按自然数显示了 你单片机程序得改

请高手帮我解决一个51单片机程序 ,怎么达不到不到题目的要求
计数到2后归0;3、单独再设一个uint变量或通过参数传递方式将两次计数得到的16位二进制数在init()函数中完成获取万千百十个的各位数字的运算。如果原来上位机连续发送0x55,0xAA而你的显示为170(0x55对应的85显示太快,可能看不见),说明其它程序没问题,否则还需要检查。

以2400bps从计算机发送任一数据,当单片机收到该数据后,在此数据前加...
if()后边最好{}起来,可能有时候不会有问题,但是有时候除了问题你看不出来,你去看看你滴程序吧,我觉着不太好这样的习惯,还有就是咋在你的数据前加上这几位数啊,数据传输的时候位数食欲要求的,不是想加上就加上的,你用的方式一,自然有效数据只有8位,不太理解 ...

如何使单片机产生0~9中的任意一个随机的数,并显示出来
把数生成BCD码送显示就可以了

数码管动态显示的时候不该亮的地方也亮了,比该亮的地方暗一点,是怎么...
解释:当你显示第一个数码管,这时段码和位码都是开启的,当显示完第一个数码管,由于段码连在一起,没有关闭段码,这时开启第二位位码,在交替的瞬间第二个数码管上就显示第一个的数字,于是就出现第一位的暗影,假如第一位是2,第二位是1,这样显示1的数字不该亮的部分出现了2的暗亮,如果多个数码管扫描的快,...

相似回答