专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
串口发送问题
2019-03-24 19:22
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
51单片机
3761
5
1254
请问谁有用51单片机与上位机之间用串口发送大于255以上并在数码管中显示出来数据的程序,现在我做这相关的东西,这串口要发送大于255的数据是一个问题,自己搜索的一些资料,都不是正确的,希望大家能分享一下, 谢谢了 此帖出自
小平头技术问答
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
yl2006443
2019-03-25 09:45
能不能先看看这个代码,那个关于串口的代码写的太烂了,贴出了怕大家鄙视的厉害。这个是AD的程序,也有问题,但是好歹比较靠谱。我想用TLC2543采集信号,再用数码管显示出来。结果吧,数码管显示的及其不稳定,我本来以为是延时时间太长,现在把延时时间调整到最小,可是依然还是不稳定,而且,当通道0输入0时候,本来数码管该显示0000,但是就一直跳到。大家能帮忙看看这代码的问题吗?不胜感激啊
#include<reg52.h>
#include<intrins.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
sbit AD_CLOCK=P3^3;
sbit AD_IN=P3^7;
sbit AD_OUT=P3^5;
sbit AD_CS=P3^6;
uchar table[10]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90} ;
static const uchar ad_channel_select[]=
{0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78,0x88,
0x98,0xa8
};
uint ad2543(uchar chunnel_select)
{ uint din,j;
uchar dout,i;
din=0;
dout=ad_channel_select[chunnel_select];
for(j=0;j<100;j++); //延时大于1uS.
AD_CLOCK=0;
AD_CS=0;
for(i=0;i<12;i++)
{
if(dout&0x80) AD_IN=1;
else AD_IN=0;
AD_CLOCK=1;
dout<<=1;
din<<=1;
if(AD_OUT==1) din|=0x0001;
AD_CLOCK=0;
}
AD_CS=1;
for(j=0;j<100;j++); //延时大于1uS.
return(din);
}
void Delay_ms(uint ms)
{
for(;ms--;);
}
void display(uint num)
{
P1=table[num/1000];
P0=0x08;
Delay_ms(1);
P1=table[(num%1000)/100];
P0=0x04;
Delay_ms(1);
P1=table[((num%1000)%100)/10];
P0=0x02;
Delay_ms(1);
P1=table[((num%1000)%100)%10];
P0=0x01;
Delay_ms(1);
}
void main(void)
{
uint ad;
while (1)
{
ad=ad2543(0);
// ad=ad>>4;
ad=ad*1.2207;
display(ad);
}
}
加载中...
查看其它5个回答
一周热门
更多
>
相关问题
相关文章
基于51单片机的计算器设计
0个评论
51单片机300个proteus仿真实例下载
0个评论
51单片机 蜂鸣器
0个评论
51单片机驱动RC522模块
0个评论
基于51单片机的指纹密码锁
0个评论
AT89C51单片机制作简易密码锁
0个评论
51单片机汇编语言计数器
0个评论
51单片机精确延时设计
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
#include<reg52.h>
#include<intrins.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
sbit AD_CLOCK=P3^3;
sbit AD_IN=P3^7;
sbit AD_OUT=P3^5;
sbit AD_CS=P3^6;
uchar table[10]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90} ;
static const uchar ad_channel_select[]=
{0x08,0x18,0x28,0x38,0x48,0x58,0x68,0x78,0x88,
0x98,0xa8
};
uint ad2543(uchar chunnel_select)
{ uint din,j;
uchar dout,i;
din=0;
dout=ad_channel_select[chunnel_select];
for(j=0;j<100;j++); //延时大于1uS.
AD_CLOCK=0;
AD_CS=0;
for(i=0;i<12;i++)
{
if(dout&0x80) AD_IN=1;
else AD_IN=0;
AD_CLOCK=1;
dout<<=1;
din<<=1;
if(AD_OUT==1) din|=0x0001;
AD_CLOCK=0;
}
AD_CS=1;
for(j=0;j<100;j++); //延时大于1uS.
return(din);
}
void Delay_ms(uint ms)
{
for(;ms--;);
}
void display(uint num)
{
P1=table[num/1000];
P0=0x08;
Delay_ms(1);
P1=table[(num%1000)/100];
P0=0x04;
Delay_ms(1);
P1=table[((num%1000)%100)/10];
P0=0x02;
Delay_ms(1);
P1=table[((num%1000)%100)%10];
P0=0x01;
Delay_ms(1);
}
void main(void)
{
uint ad;
while (1)
{
ad=ad2543(0);
// ad=ad>>4;
ad=ad*1.2207;
display(ad);
}
}
一周热门 更多>