嵌入式学习小组
直播中

欲望都市

10年用户 953经验值
擅长:可编程逻辑
私信 关注

单片机驱动tm1628点亮数码管怎么不行?

#include  
#include "intrins.h"

#define uchar unsigned char

#define uint  unsigned int



//¶¨Òå¿ØÖÆ¶Ë¿Ú

sbit DIO =P0^2;

sbit CLK =P0^1;

sbit STB =P0^0;





uchar const CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xef,0x6f};

uchar KEY[4]={0};





void send_8bit(uchar dat)

{

   uchar i;

   for(i=0;i<8;i++)

   {

      if(dat&0x01)

       DIO=1;

    else DIO=0;

    CLK=0;

   // CLK=1;

    dat=dat>>1;

   }

}





void command(uchar com)

{

  STB=1;

  STB=0;

  send_8bit(com);

}





void read_key()

{

  uchar i,j;

  command(0x42);  //¶Á¼üÅÌÃüÁî

  DIO=1;      //½«DIOÖøß

  for(j=0;j<5;j++)

    for(i=0;i<8;i++)




    {

      KEY[j]=KEY[j]>>1;

      CLK=0;

      CLK=1;

      if(DIO)

         KEY[j]=KEY[j]|0X80;

    }

  STB=1;

}





void display()

{

  uchar i;

  command(0x03);   
  command(0x40);     

  command(0xc0);   

  for(i=0;i<14;i++)     

  {

        send_8bit(CODE[i]);      
  send_8bit(0);  
}

  command(0x8F);      


  STB=1;

}





void key_process()

{

//ÓÉÓû§±àд

}





void main()

{

  display();  
  while(1)

  {

    read_key();     

    key_process();   
  }

}


回帖(1)

小芳

2024-1-12 13:42:46
){DIO=1;}else{DIO=0;} //判断最低位是1还是0 CLK=1; _nop_(); CLK=0; dat=dat>>1; //将数据右移一位 } } void send(uchar addr,uchar dat){ STB=0; //片选使能延时 DIO=0; CLK=0; send_8bit(addr|0xc0); //先发送地址和写入命令 send_8bit(dat); //再发送要写入的数据 STB=1; //禁止片选延时 } void init(){ send(0x00,0x01); //数码管控制寄存器,设置自动增量和启用掉电保存 send(0x01,0x00); //按键扫描存储器,设置按键输出模式为矩阵输出 send(0x02,0x07); //LED控制寄存器,点亮所有LED } void display(){ uchar i; for(i=0;i<4;i++){ send(i*2,KEY[i]); //分别在地址为0、2、4、6的位置写入对应的数据 send(i*2+1,0x00); //清除小数点 } } void keyscan(){ uchar temp=0; uchar i; send(0x44,0x01); //按键扫描开始 send(0x44,0x00); //按键扫描禁止,等待读取按键数据 for(i=0;i<4;i++){ send(i*2+1,0x0f); //在地址为1、3、5、7的位置设置扫描掩码,只有对应位置才能读取按键数据 temp=P0&0x0f; //读取P0的低四位数据,并与扫描掩码取与 KEY[i]=temp^0x0f; //将读取到的数据取反,得到真实按键值 } } void main() { init(); while(1){ keyscan(); display(); } }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分