极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12223|回复: 4

使用74HC595的奇怪現象

[复制链接]
发表于 2013-7-14 00:15:44 | 显示全部楼层 |阅读模式
本帖最后由 Harrychou 于 2013-7-14 00:15 编辑

目前想用可變電阻調整LED排燈的亮燈數量,搭配上74HC595來用
但LED排燈的亮燈數量沒辦法如預期的一樣增減數量,反而會亂跑
例如可變電阻調到某刻度時,反而會變成跑馬燈,不然就是全暗或全亮
翻了書本和網頁,找不出問題點
底下是目前寫的程式,想問看看問題出在哪邊
  1. //74HC595腳位
  2. const byte dataPin=2;
  3. const byte latchPin=3;
  4. const byte clockPin=4;
  5. //可變電阻輸入腳位
  6. const byte potPin=A1;
  7. int val;
  8. byte oil;
  9. //LED燈開關陣列
  10. byte LEDs[9]={
  11.   B00000000,
  12.   B00000001,
  13.   B00000011,
  14.   B00000111,
  15.   B00001111,
  16.   B00011111,
  17.   B00111111,
  18.   B01111111,
  19.   B11111111};

  20. void setup(){
  21.   pinMode(dataPin,OUTPUT);
  22.   pinMode(latchPin,OUTPUT);
  23.   pinMode(clockPin,OUTPUT);
  24.   Serial.begin(9600);
  25. }
  26. void loop(){
  27.   //可變電阻輸入值,分成10等分
  28.   val=analogRead(potPin);
  29.   if(val<=1023 && val>=922){
  30.     oil=9;}
  31.     else if(val<=921 && val>=819){
  32.       oil=8;}
  33.       else if(val<=818 && val>=717){
  34.         oil=7;}
  35.         else if(val<=716 && val>=614){
  36.           oil=6;}
  37.           else if(val<=613 && val>=512){
  38.             oil=5;}
  39.             else if(val<=511 && val>=410){
  40.               oil=4;}
  41.               else if(val<=409 && val>=307){
  42.                 oil=3;}
  43.                 else if(val<=306 && val>=205){
  44.                   oil=2;}
  45.                   else if(val<=204 && val>=102){
  46.                     oil=1;}
  47.                     else{
  48.                       oil=0;}
  49.   delay(250);
  50.   //74HC595輸出
  51.   digitalWrite(latchPin,LOW);
  52.   shiftOut(dataPin,clockPin,MSBFIRST,LEDs[oil]);
  53.   digitalWrite(latchPin,HIGH);
  54.   Serial.println(oil);
  55. }
复制代码
回复

使用道具 举报

发表于 2013-7-14 08:33:39 | 显示全部楼层
請你提供線路圖以便看看硬體有沒有問題。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-14 14:13:07 | 显示全部楼层
用Fritzing作的接線圖

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2013-7-15 07:49:28 | 显示全部楼层
灯都亮的时候  电源电压是不是下来了???

供电够不够??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-16 01:16:18 | 显示全部楼层
把可變電阻拆下,讓74HC595直接和LED連接,數值改成序列視窗輸入二進位碼,但發生這樣的情形
輸入B11111111+MSBFIRST->Q0~Q6腳位高電位,Q7腳位變成低電位 ???
輸入B111111110+MSBFIRST->正常,應該是要8位數才是正確的吧?
輸入B11111111+LSBFIRST->Q0~Q7皆低電位
輸入B111111110+LSBFIRST->同上
結果跟書上寫的完全不同
換了兩顆74HC595都一樣,該不會是ST出的有問題吧?
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 23:14 , Processed in 0.039908 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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