找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2978|回复: 20
打印 上一主题 下一主题
收起左侧

新手在学郭,求大虾指教,问题如下

  [复制链接]
跳转到指定楼层
楼主
ID:73872 发表于 2015-8-7 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg52.h"
unsigned wei_tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};   
unsigned duan_tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed, 0xfd,0x87,0xff,0xef};                        //单片机显示8位数,为什么要用这IME多代码???
unsigned led_buffer[]={0,1,2,3,4,5,6,7,8,9};                                                 //这里的buffer不是很了解,为什么要用缓存??
char count=0;
void delay(long dly)                                       
{
        while(dly--);
}
void disp(void)                                             
{
                P2=0xff;                                             
                P0=~duan_tab[led_buffer[count]];   
                P2=wei_tab[count];                              
                delay(10);
                count++;
                if(count>9)
                {
                        count=0;
                }
}
void get_data(long dat)                                      //下面简直是看不懂,求解惑
{
        long x;
        x=dat;
        led_buffer[0]=x/10000000;
        x=x%10000000;
        led_buffer[1]=x/1000000;
        x=x%1000000;
        led_buffer[2]=x/100000;
        x=x%100000;
        led_buffer[3]=x/10000;
        x=x%10000;
        led_buffer[4]=x/1000;
        x=x%1000;
        led_buffer[5]=x/100;
        x=x%100;
        led_buffer[6]=x/10;
        x=x%10;
        led_buffer[7]=x;
}
void main(void)
{
        long m=12345678;
        get_data(m);
        while(1)
        {
               
                disp();
        }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:47964 发表于 2015-8-7 11:25 | 只看该作者
一看就知道,你的使用数码管显示的,数码管的显示是由8个内部小灯进行点亮的,所以要显示数字需要转换,因此上面有两个数组
回复

使用道具 举报

板凳
ID:73872 发表于 2015-8-7 12:44 | 只看该作者
那就地方iv 发表于 2015-8-7 11:25
一看就知道,你的使用数码管显示的,数码管的显示是由8个内部小灯进行点亮的,所以要显示数字需要转换,因 ...

对啊,可是俩数组之间怎样转换呢,或者说怎么把他们全部调试出来,,,
回复

使用道具 举报

地板
ID:72577 发表于 2015-8-7 14:46 | 只看该作者
你这里一共有三个问题,我分开来回答。
1: //单片机显示8位数,为什么要用这IME多代码???
答:这个数组中有20个数,很明显,它包含了"0~9“和“0.~9.”,注意小数点。
2://这里的buffer不是很了解,为什么要用缓存??
答:这里其实可以不需要这样,你直接写count就行了。
3:  //下面简直是看不懂,求解惑
答:这里的话就简单了,他是把每一位都保存在 led_buffer数组中,比如你要显示12345678,那么led_buffer[0]就是0,以此类推,led_buffer[7]就是8.
明白了吧?
回复

使用道具 举报

5#
ID:73872 发表于 2015-8-7 22:01 | 只看该作者
小强强 发表于 2015-8-7 14:46
你这里一共有三个问题,我分开来回答。
1: //单片机显示8位数,为什么要用这IME多代码???
答:这个数 ...

感谢,受教了
回复

使用道具 举报

6#
ID:88219 发表于 2015-8-12 19:32 | 只看该作者
路过,看看。
回复

使用道具 举报

7#
ID:88592 发表于 2015-8-20 16:46 | 只看该作者
m是一个八位的数,这里是用八个数码管显示8个数字,比如我们输入一个23124557数,那么在数码管上如何显示呢?
回复

使用道具 举报

8#
ID:88592 发表于 2015-8-20 16:48 | 只看该作者
第一是对这个数进行处理,从高位打的为用除法取整数,便是相应位的数,然后取余便是下一位的数,依此类推,便可得到每一位的数,然后在在主程序中的While(1)进行显示即可,。
回复

使用道具 举报

9#
ID:88592 发表于 2015-8-20 16:49 | 只看该作者
明白了吗???
回复

使用道具 举报

10#
ID:88592 发表于 2015-8-20 16:51 | 只看该作者
其实不管它BUFFER什么的,它只是一个数组。不要纠结与这个数组的名字是什么.
回复

使用道具 举报

11#
ID:88592 发表于 2015-8-20 16:51 | 只看该作者
其实不管它BUFFER什么的,它只是一个数组。不要纠结与这个数组的名字是什么.
回复

使用道具 举报

12#
ID:88592 发表于 2015-8-20 16:52 | 只看该作者
你也可以取一个你习惯的名字。不好意,回复这么多,只为获得点黑币,下载个东西。。谢谢了
回复

使用道具 举报

13#
ID:89045 发表于 2015-9-10 21:19 | 只看该作者
第一是对这个数进行处理,从高位打的为用除法取整数,便是相应位的数,然后取余便是下一位的数,依此类推,便可得到每一位的数,然后在在主程序中的While(1)进行显示即可,。
回复

使用道具 举报

14#
ID:89356 发表于 2015-9-28 02:44 来自手机 | 只看该作者
,它只是一个数组。不要纠结与这个数组的名字是什么.
回复

使用道具 举报

15#
ID:90625 发表于 2015-10-2 17:37 | 只看该作者
m是一个八位的数,这里是用八个数码管显示8个数字
回复

使用道具 举报

16#
ID:68416 发表于 2015-10-4 17:43 | 只看该作者
这麽好,学习了。
回复

使用道具 举报

17#
ID:68416 发表于 2015-10-4 17:43 | 只看该作者
这麽好,学习了。
回复

使用道具 举报

18#
ID:55127 发表于 2015-10-7 09:47 | 只看该作者
分解这个数显示在数码管上,一位一位的显示出来的。
回复

使用道具 举报

19#
ID:91796 发表于 2015-10-8 16:31 | 只看该作者
这是转化的
回复

使用道具 举报

20#
ID:91898 发表于 2015-10-8 16:44 | 只看该作者
路过学习!
回复

使用道具 举报

21#
ID:91900 发表于 2015-10-8 16:44 | 只看该作者
一个数码管是八个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表