[AVR单片机] 级联2个595驱动数码管显示不正常

[复制链接]
2193|7
 楼主| ningling_21 发表于 2014-5-20 10:51 | 显示全部楼层 |阅读模式
本帖最后由 ningling_21 于 2014-5-20 10:53 编辑
  1. while(1)
  2.         {
  3.            PORTC=adc_rst;           
  4.            s_ms(3000);                  
  5.            run_cnt++;
  6.            if(run_cnt>30000)
  7.            {
  8.                      run_cnt=0;
  9.                   PORTG^=BIT(4);                                    
  10.            }
  11.            switch(k)
  12.            {
  13.                  case 0x80:
  14.                 {
  15.                           timp=0xc0;
  16.                 }
  17.                 break;        
  18.                 case 0x40:
  19.                 {
  20.                           timp=0xf9;
  21.                 }
  22.                 break;
  23.                 case 0x20:
  24.                 {
  25.                           timp=0xa4;
  26.                 }
  27.                 break;
  28.                 case 0x10:
  29.                 {
  30.                           timp=0xb0;
  31.                 }
  32.                 break;
  33.                 case 0x08:
  34.                 {
  35.                           timp=0x99;
  36.                 }
  37.                 break;
  38.                 case 0x04:
  39.                 {
  40.                           timp=0x92;
  41.                 }
  42.                 break;
  43.                 case 0x02:
  44.                 {
  45.                           timp=0x82;
  46.                 }
  47.                 break;
  48.                 case 0x01:
  49.                 {
  50.                           timp=0xf8;
  51.                 }
  52.                 break;
  53.            }
  54.            shift_out(k,timp);  //595移位输出
  55.            k<<=1;              //k =位选
  56.            if(k==0)
  57.            {
  58.                      k=1;
  59.            }
  60.         }               
  61. } //ENDmain
只显示6个数字4,其它2位不显示
用MEGA128
用STC89C52驱动正常;

airwill 发表于 2014-5-20 14:19 | 显示全部楼层
带 2 个 595, 其实用 AVR 的 SPI 外设来带, 非常简单. 因为硬件直接支持 595 的控制.
我曾经带 3 个 595, 直接写寄存器就是了, 验证一下时序吧.
 楼主| ningling_21 发表于 2014-5-20 14:29 | 显示全部楼层
airwill 发表于 2014-5-20 14:19
带 2 个 595, 其实用 AVR 的 SPI 外设来带, 非常简单. 因为硬件直接支持 595 的控制.
我曾经带 3 个 595,  ...

595好像不是SPI接口...
airwill 发表于 2014-5-20 14:35 | 显示全部楼层
哦, 你的是什么 595?
如果是 74HC595, 那就不用怀疑, 我已经实现并在使用了.
huangxz 发表于 2014-5-20 17:37 | 显示全部楼层
595可以直接用spi驱
 楼主| ningling_21 发表于 2014-5-20 20:55 | 显示全部楼层
huangxz 发表于 2014-5-20 17:37
595可以直接用spi驱
SPI 接口怎么接595呢

MOSI 接 595-DATA
CLK  接 595-CLK
???  接 595-SCLK  ?
huangxz 发表于 2014-5-20 22:25 | 显示全部楼层
ningling_21 发表于 2014-5-20 20:55
SPI 接口怎么接595呢

MOSI 接 595-DATA

http://wenku.baidu.com/view/ab1021ecb8f67c1cfad6b8fa.html
dingsujie 发表于 2014-5-23 16:52 | 显示全部楼层
MOSI 接 595-DATA
CLK  接 595-CLK
SS  接 595-SCLK
楼主时序不对;最简单的就是直接使用SPI也可以去网上参考程序
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5015

主题

17834

帖子

51

粉丝
快速回复 在线客服 返回列表 返回顶部