全异盲切叶蚁 2021-09-15 15:32 采纳率: 0%
浏览 21
已结题

TM1638读取按键值失败,数码管第一位显示0,请问哪里出问题了呢?

#include<reg52.h>
sbit CLK=P1^1;
sbit DIO=P1^0;
sbit STB=P1^2;

unsigned char DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//¹²Òõ¼«

void DelayUs(unsigned char t);
void DelayMs(unsigned char t);

void WriteByte(unsigned char date)
{
    unsigned char i;
    for(i=0;i<8;i++)
    {
        CLK=0;
        if((date&(1<<i))>=1)
            DIO=1;
        else
            DIO=0;
        CLK=1;
    }
}  

void cmd(unsigned char date)
{
    STB=0;
    WriteByte(date);
    STB=1;
}

void WriteDate(unsigned char add,unsigned char date)
{
    STB=0;
    WriteByte(0x00|add);
    WriteByte(date);
    STB=1;
}

void TM1638(void)//³õʼ»¯
{
    unsigned char i;
    cmd(0x8f);
    cmd(0x40);
    STB=0;
    WriteByte(0xc0);
    for(i=0;i<16;i++)
    {
        WriteByte(0x00);
    }
    STB=1;
}

unsigned char ReadByte(void)
{
    unsigned char i;
    unsigned char temp=0;
    for(i=0;i<8;i++)
    {
    temp>>=1;
    CLK=0;
    if(DIO==1)
        temp |=0x80;;
    CLK=1;
  }    
    return temp;
}

unsigned char ReadKey(void)
{
    unsigned char d[4],i,temp=0;
    STB=0;
    WriteByte(0x42);
    for(i=0;i<4;i++)
    {
        d[i]=ReadByte();
    }
    STB=1;
    for(i=0;i<4;i++)
    {
        temp |=(d[i]<<i);     //ºÏ²¢K3
    }
    for(i=0;i<8;i++)
    {
        if((0x01<<i)==temp)
        {
            break;
        }
        return i;
    }
}

main()
{
    unsigned char k,i;
    TM1638();
    for(i=0;i<16;i++)
    {
        WriteDate(i,0x00);
    }
    while(1)
    {
       k=ReadKey();
       WriteDate(0xc0+2*k,DuanMa[k]);
       WriteDate(0xc0+2*k+1,1);    
    }
}

void DelayUs(unsigned char t)
{
    while(--t);
}

void DelayMs(unsigned char t)
{
    while(--t)
    {
        DelayUs(245);
        DelayUs(245);
    }
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 9月23日
    • 创建了问题 9月15日

    悬赏问题

    • ¥15 matlab数字图像处理频率域滤波
    • ¥15 ELGamal和paillier计算效率谁快?
    • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
    • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
    • ¥15 Arcgis相交分析无法绘制一个或多个图形
    • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
    • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
    • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
    • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
    • ¥30 3天&7天&&15天&销量如何统计同一行