找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助怎么才能显示数组中的数据,现在显示和数组中数据位置不对应

[复制链接]
跳转到指定楼层
楼主
ID:92702 发表于 2015-10-29 15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
利用51单片机和1629A实现 双排3段数码管显示 Map中的数据  可是程序写完了 最后显示并不是数组中的数据而是随机数 求教程序该怎么改??

#include <reg51.h>

typedef unsigned char  u8;
void tm1629aSendData(unsigned char a);

sbit tm1629_STB = P2^5;
sbit tm1629_CLK = P2^6;
sbit tm1629_DATA = P2^7;

unsigned char code Map[73] =
                           {
                      0x3F,0x06,0x5B,0x4F,        // ;0,1,2,3       ;00,01,02,03
                      0x66,0x6D,0x7D,0x07,        // ;4,5,6,7       ;04,05,06,07
                      0x7F,0x6F,0x77,0x7C,        // ;8,9,A,b       ;08,09,0A,0B
                      0x39,0x5E,0x79,0x71,        // ;C,d,E,F         ;0C,0D,0E,0F
                      0xBF,0x86,0xDB,0xCF,        // ;0.,1.,2.,3.   ;10,11,12,13
                      0xE6,0xED,0xFD,0x87,        // ;4.,5.,6.,7.        ;14,15,16,17
                      0xFF,0xEF,0x08,0x88,        // ;8.,9.,_ ,_.   ; 18,19,1A,1B
                      0x3D,0x76,0x10,0x1E,        // ;G,H,I,J        ;1C,1D,1E,1F
                      0x32,0x38,0x55,0x54,        // ;K,L,M,N       ;20,21,22,23
                      0x5C,0x73,0x67,0x50,        // ;O,P,Q,R       ;24,25,26,27
                      0x6D,0x31,0x3E,0x7E,        // ;S,T,U,V       ;28,29,2A,2B
                      0x6A,0x36,0x6E,0x49,        // ;W,X,Y,Z       ;2C,2D,2E,2F
                      0x70,0x40,0x14,0x09,        // ;+,-,*,/       ;30,31,32,33
                      0x58,0x74,0x46,0x00,        // ;c,h,-1,NIL          ;34,35,36,37
                      0xF0,0xC0,0x94,0xD0,  // ;+.,-.,*.,R.    ;38,39,3A,3B
                      0xD8,0xF6,0xC6,0x80,  // ;c.,H.,-1., .   ;3C,3D,3E,3F
                      0x7B,0xd4,0xbE,0XB1,  // ;e,n.,b.,T.,    ;40,41,42,43
                      0xFb,0xdC,0x90,0xd4,  // ;e.,o.,I.,N.    ;44,45,46,47
                      0xfC
                                                          };



void tem1629a_dis_open(void)      
{
        unsigned char Du;
        tm1629_STB=0;Du=2;
        tm1629aSendData((Du&0x07)|0x88);
        tm1629_STB=1;
}
void tm1629a(void)           
{
        tm1629_STB=0;
        tm1629aSendData(0x44);
        tm1629_STB=1;
}


void tme1629aSendData(unsigned char add,unsigned char num)      
{
        tm1629_STB=0;
        tm1629aSendData(0xc0|add);
        tm1629aSendData(Map[num]);
        tm1629_STB=1;
}
void DS_number(line,ge,num)            
{
        if(line==1)
        {
                switch(ge)
                {
                  case 0:tme1629aSendData(1,num);break;
                  case 1:tme1629aSendData(3,num);break;
                  case 2:tme1629aSendData(5,num);break;
                }
        }
        else if (line==2)
        {
                        switch(ge)
                        {
                  case 0:tme1629aSendData(9,num);break;
                  case 1:tme1629aSendData(11,num);break;
                  case 2:tme1629aSendData(13,num);break;
                        }
        }
       
        }


void tm1629aSendData(u8 a)
{
        u8 i;
        for(i=0;i<8;i++)
{
        tm1629_CLK=0;
        tm1629_DATA=(a&0x01==1)?1:0;
        a>>=1;
        tm1629_CLK=1;
}
}

void main()
{
        int buf[3]={0};
        int a;
        a=100;
        buf[0]=a%1000/100;
        buf[1]=a%100/10;
        buf[2]=a%1000;
       
  tem1629a_dis_open();
        tm1629a();  
       
       
        DS_number(1,0,buf[2]);
        DS_number(1,2,buf[9]);
        DS_number(1,1,buf[1]);
       
        DS_number(2,0,buf[2]);
        DS_number(2,2,buf[0]);
        DS_number(2,1,buf[1]);
}


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

使用道具 举报

沙发
ID:92702 发表于 2015-10-29 15:35 | 只看该作者
新手 望大神多多指教~
回复

使用道具 举报

板凳
ID:93852 发表于 2015-10-30 13:06 | 只看该作者
这个问题叫乱码

数码管两种  共阳,共阴

数据不一样的,

板子不同,段码也不同
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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