qiangfangeve 发表于 2014-8-14 15:16:07

串口以16进制发送0-99999999间的数,单片机收到后在数码管显示

串口以16进制发送0-99999999间的数,单片机收到后在数码管显示 用附件里的程序改我小白一个 求大神的帮忙指导{:3_59:}

laujc 发表于 2014-8-14 16:02:37

需要改的地方挺多,先说下你的要求吧。99999999这个数挺大的,应该用4字体数字,unsgined long型应该够了。

techbaby 发表于 2014-8-14 15:18:49

呵呵!   

techbaby 发表于 2014-8-14 15:19:22

1莫元,我回个贴就赚到了。

qiangfangeve 发表于 2014-8-14 15:22:11

techbaby 发表于 2014-8-14 15:19
1莫元,我回个贴就赚到了。

我是小白一个 求大神帮帮忙啊 礼轻情义重啊{:3_59:}

heyuncun 发表于 2014-8-14 15:23:12

我也拿走一个莫元

stepby 发表于 2014-8-14 15:23:39

我再拿走一个莫元

bias 发表于 2014-8-14 15:41:37

回复一下1个莫元

zqf441775525 发表于 2014-8-14 15:43:12

拿一莫元走了

饭桶 发表于 2014-8-14 15:43:46

你们太不人道了,我就不要这一莫元

skynet 发表于 2014-8-14 15:44:14

我再拿走一个莫元

承诺媛梦 发表于 2014-8-14 15:46:05

额,{:titter:}

cn_x 发表于 2014-8-14 15:50:33

真的有莫元赚啊?

zhongjiequan 发表于 2014-8-14 15:52:40


我再拿走一个莫元

benqme 发表于 2014-8-14 16:08:15

下载下来看看

howmoney 发表于 2014-8-14 16:08:53

我是来拿莫元的

fangy 发表于 2014-8-14 16:09:10

说的不清不楚,精神上支持下,拿走一分

qiangfangeve 发表于 2014-8-14 16:10:55

laujc 发表于 2014-8-14 16:02
需要改的地方挺多,先说下你的要求吧。99999999这个数挺大的,应该用4字体数字,unsgined long型应该够了。 ...

我是想通过通过串口发送16进制的数到单片机 然后通过数码管显示出来 4位数的也行 就是不明白怎么拆分那串数

wmm20031015 发表于 2014-8-14 16:11:31

打酱油路过{:lol:}

chenshichao541 发表于 2014-8-14 16:12:36

转一个莫元,哈哈...........

yinglively 发表于 2014-8-14 16:15:06

没有硬件何来的软件?
传输好弄,最主要的是硬件不好弄

chenchaoting 发表于 2014-8-14 16:15:06

赚一个莫元,这个程序不难吧

qiangfangeve 发表于 2014-8-14 16:15:56

yinglively 发表于 2014-8-14 16:15
没有硬件何来的软件?
传输好弄,最主要的是硬件不好弄

我有学习板 只是现在不知道怎么写程序

qiangfangeve 发表于 2014-8-14 16:17:57

chenchaoting 发表于 2014-8-14 16:15
赚一个莫元,这个程序不难吧

刚刚入门 求大神指导 帮忙啊{:3_59:}

大米饭 发表于 2014-8-14 16:20:00

八位数,你分八个字节发送不就行了,比如发送12345678,就发送0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,接收到对应位数码管显示出来就OK了

solisgood 发表于 2014-8-14 16:20:36


赚一个莫元

DiaoMao_Huang 发表于 2014-8-14 16:23:18

赚一个莫元{:lol:}{:lol:}

stevenli 发表于 2014-8-14 16:27:17


赚一个莫元{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}{:lol:}

jbpan852 发表于 2014-8-14 16:29:54



也来赚一个莫元

laujc 发表于 2014-8-14 16:33:25

qiangfangeve 发表于 2014-8-14 16:10
我是想通过通过串口发送16进制的数到单片机 然后通过数码管显示出来 4位数的也行 就是不明白怎么拆分那串 ...

首先明白一点,串口通信是传输8bit字节,你这么大的数,需要用4个byte即32bit的类型来表示。即可以用一个unsigned long型的数来表示(假设unsigned long在你系统里是4byte的)。

这个unsigned long的数,在传输时,要分成4个8bit的数来传,因为串口一次传的就是8bit。单片机接收后,你首先需要将这4个8bit数转为一个unsigned long的数,然后再提示各个位(个,十,百,万,千,等)的数值送显示。


或者你传输时,直接分解好,直接传每一个位(个,十,百,万,千,等)的数字,单片机接收后就可以送显示了

bluestone2012 发表于 2014-8-14 16:47:27



1莫元,呵呵

tam2907 发表于 2014-8-14 16:49:27

先把每一位提出来,再送显示。

qiangfangeve 发表于 2014-8-14 16:55:42

laujc 发表于 2014-8-14 16:33
首先明白一点,串口通信是传输8bit字节,你这么大的数,需要用4个byte即32bit的类型来表示。即可以用一个 ...

有个例程给我就好了{:3_59:}

steaven2000 发表于 2014-8-14 17:25:58

讲的这样清楚了你自己试试呗,再牛的大神更没有闲工夫给你写代码。伸手党大大滴坏滴干活。

lqzhw 发表于 2014-8-14 18:13:00

1莫元                  

kelos3000 发表于 2014-8-14 18:37:34

赚莫元…

wingerchen 发表于 2014-8-14 18:40:53

来拿1莫元了,谢谢楼主

不奇怪 发表于 2014-8-14 18:45:58

小弟初學啥都不會,沒辨法幫忙。

visa198 发表于 2014-8-14 18:58:04

{:smile:}{:smile:}

didadida 发表于 2014-8-14 20:52:51

楼主,谁都是从啥都不会一步一步过来的,想要学习又不想付出努力,不是太好吧。另外,论坛的习惯就是
--鄙视伸手党

songly520 发表于 2014-8-14 21:15:33

每次发送一个十进至的数,然后分别解码显示. BCD码, 恩,就可以解决了。多少位都行.

jjj206 发表于 2014-8-14 21:38:32

我试试是不是真的可以拿到一莫元

dqt12 发表于 2014-8-14 22:48:07

每次发一段数据,接到后取位。。
其实我是来拿一莫元的~{:lol:}

hj312192758 发表于 2014-8-14 22:55:40

我再拿走一个莫元

zemicxm007 发表于 2014-8-14 22:58:43

我也拿走一个莫元 0-999999是变长还是定长发送?说清楚哦,定长就简单

lidar 发表于 2014-8-14 23:09:42

打个酱油!

Shampoo 发表于 2014-8-14 23:11:50

{:lol:}      

liujian6f 发表于 2014-8-14 23:18:27

不小心 转走一莫元!

小双 发表于 2014-8-14 23:47:29

回复一下1个莫元

Nuist_Gwgj 发表于 2014-8-15 00:07:51

+1莫元          O(∩_∩)O

gwj221 发表于 2014-8-15 07:31:44

回复 好好学习

lyl2022 发表于 2014-8-15 07:49:00

拿莫元,这个应该很简单吧

zhanan 发表于 2014-8-15 08:47:41

没写过程序吧,按30楼说的做吧。
分两步走:1mcu把ram变量在数码管上显示出来
               2增加串口接收程序,把收到的数据放在ram变量里
这两个都是常用小程序,自己找资料,自己想,自己写,打好基础。

zhanan 发表于 2014-8-15 08:54:52

资料都很容易查到,大把大把的。基础的程序很依赖mcu和你的板子,不好给你写,写了你一时半会也整不明白。

还是靠自己吧,写好了,思路就打开了。

丢丢时光机 发表于 2014-8-15 09:37:23

这个还得自己来,先搜点资料,看数码管是怎恶么控制的。然后再搞串口。。。一步一步来

qiangfangeve 发表于 2014-8-15 10:05:33

zhanan 发表于 2014-8-15 08:47
没写过程序吧,按30楼说的做吧。
分两步走:1mcu把ram变量在数码管上显示出来
               2增加串 ...

嗯 多谢指导{:3_59:}

lksvshdl 发表于 2014-8-15 10:19:04

我也来拿走1莫元

ztrx 发表于 2014-8-15 10:39:14

自己试试写吧,不难的。

dragon19809200 发表于 2014-8-15 10:40:12

拿走一个莫元

shiqianjudan 发表于 2014-8-15 16:16:23

我也来拿走一个莫元{:titter:}

坚持学习 发表于 2014-8-15 21:47:01

拿走了 谢谢

s15200380596 发表于 2014-8-15 21:57:00

我也来拿走一个莫元

dlmaowf 发表于 2014-8-15 22:09:06

俺也来拿走一莫元

weimas 发表于 2014-8-16 15:15:54

怎么变成赚莫元帖了,看来这个帖比较失败啊{:lol:}

maimaige 发表于 2014-8-16 15:49:09

细分一下,首先实现,串口输入123,返回1,2,3或者是0,0,0,0,0,1,2,3
                                    输入56789 返回0,0,0,5,6,7,8,9
                                    就是取出他的个位,十位,千位对应的数字。

然后实现,数码管显示,DigitShow(unsigned char chNum,unsigned char chBit)
                            不同的位显示不同的数字
最后将上面两者的程序结合一下
                              

xyz543 发表于 2014-8-14 15:16:08

随便写一个供楼主参考,是随便写的,请高手勿喷,谢谢!... {:smile:}

unsigned char DISP;
unsigned long Recever_Data;
unsigned char code code_table=
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

DISP=code_table[((Recever_Data % 100000000)/10000000)&0x0F];
DISP=code_table[((Recever_Data % 10000000)/1000000)&0x0F];
DISP=code_table[((Recever_Data % 1000000)/100000)&0x0F];
DISP=code_table[((Recever_Data % 100000)/10000)&0x0F];
DISP=code_table[((Recever_Data % 10000)/1000)&0x0F];
DISP=code_table[((Recever_Data % 1000)/100)&0x0F];
DISP=code_table[((Recever_Data % 100)/10)&0x0F];
DISP=code_table[(Recever_Data % 10)&0x0F];

xuyaqi 发表于 2014-8-16 18:28:05

题目有点大,不如分成小问题如:1mcu如何把ram变量在数码管上显示出来,   2如何 把 串口收到的数据放在ram变量里。

515135896 发表于 2014-8-16 19:42:10

赚一个莫元{:shy:}

颜靖峰 发表于 2014-8-16 22:24:07

莫元拿走了哦。

yezhenke 发表于 2014-8-16 22:33:54

都说有钱拿 我也来试试…………

fulitun 发表于 2014-8-16 22:38:23

二楼已说,66楼例程

kvvipa00289 发表于 2014-8-16 22:45:37

顶起顶起!!!

gprs_new 发表于 2014-8-16 22:53:02

不会C的路过{:tongue:} 。,楼主你是想数据每隔1秒自身加1后发送出去吗?还是怎么个发送方法啊?

mhw 发表于 2014-8-16 23:05:26

这么多的回帖都没到点子上……
unsigned long num;//接收到的数据存放到这个变量

char DispBuff[;
sprintf("%9ul", num);//格式化打印成十进制字符串
disp(DispBuff);//显示字符串

xyz543 发表于 2014-8-17 12:39:23

mhw 发表于 2014-8-16 23:05
这么多的回帖都没到点子上……
unsigned long num;//接收到的数据存放到这个变量



嗯! 感觉 mhw 兄这个方式确实是更好,但还要再加个 Include stdio.h 才行喔!

无论如何这帖的悬赏我先拿了,各位兄弟,不好意思啦!... {:lol:}

freesource 发表于 2014-8-17 16:51:58

还是将各位分开最好了,这么大的数传过去,显示也是要分开的

wxty 发表于 2014-8-17 18:33:35

一点:串口儿,一次只能一字节,怎么穿都行。
要速度就穿4字节的LONG型值,接收后再还原,显示。
不要求速度的话,也可以转为10字节的字符后,再传。
页: [1]
查看完整版本: 串口以16进制发送0-99999999间的数,单片机收到后在数码管显示