Wyświetlacz led7-seg gaszenie zer nieznaczących

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Wyświetlacz led7-seg gaszenie zer nieznaczących

Post autor: Henryk » 24 lut 2018, 14:45

Witam :D
Mam dwa małe problemy :(
1. Próbuję wstawić w kod poniżej wygaszanie zer nieznaczących , z marnym skutkiem .
Znalazłem w sieci przykłady , ale nie potrafię ich wpasować do tego co nabazgrałem .
Pętla główna zawiera pomiar adc , sterowanie silnikiem krokowym i kilka warunków startowych dla układu .
  1. Sub Znak(cyfra As Byte)
  2. If Cyfra < 10 Then
  3. Portd = Lookup(cyfra , Bcd7seg)
  4. Else
  5. Portd = 0
  6. End If
  7. End Sub
  8. '====================================================================
  9. Mult:
  10.  
  11. Text = Str(licz)
  12. Text = Format(text , "000")
  13. For A = 1 To 3
  14. Txt = Mid(text , A , 1)
  15. Wart = Val(txt)
  16. Wart = Makebcd(wart)
  17. Set W1
  18. Set W2
  19. Set W3
  20. Load Timer0 , 96
  21.  
  22. Select Case A
  23. Case 1:
  24. Call Znak(wart)
  25. Reset W1
  26. Case 2:
  27. Call Znak(wart)
  28. Reset W2
  29. Case 3:
  30. Call Znak(wart)
  31. Reset W3
  32. End Select
  33. Waitms 2
  34. Next
  35. Return
  36.  
  37. Bcd7seg:
  38. Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001 ,       '0 1 2 3 4
  39. Data &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000       '5 6 7 8 9
2.drugi problem , to pierwsza cyfra świeci jaśniej od dwóch pozostałych .

Wiem , można to napisać inaczej :D no ... ja amator ;)
Proszę o wsparcie .
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: Wyświetlacz led7-seg gaszenie zer nieznaczących

Post autor: Henryk » 26 lut 2018, 19:22

Witam :D
Problemy rozwiązane :D
Mam wygaszanie zer nieznaczących oraz jednakowo świecące wyświetlacze .
Problem ze świeceniem wyświetlaczy rozwiązałem zwiększając pętlę FOR NEXT z 3 na 4 i dodając " pusty " case 4:
Wygaszanie zer zmajstrowałem tak jak potrafiłem , nic lepszego do głowa nie obmyśliła :lol:
  1.  'warunki dodane do pętli głównej
  2. 'Do
  3. ' If Licz > 99 Then      
  4. 'B = 1
  5. 'Elseif Licz < 100 Then
  6. 'B = 2
  7. 'End If
  8. 'If Licz < 10 Then
  9. 'B = 3
  10. 'End If
  11.  
  12. 'Loop
  13. 'End
  14. '====================================================================
  15. Sub Znak(cyfra As Byte)
  16. If Cyfra < 10 Then
  17. Portd = Lookup(cyfra , Bcd7seg)
  18. Else
  19. Portd = 0
  20. End If
  21. End Sub
  22. '====================================================================
  23. Mult:
  24.  
  25. Text = Str(licz)
  26. Text = Format(text , "000")
  27. For A = B To 4                '  B = 1 obsługa wyświetlaczy W1- W4 ( wyświetlacz W4 tylko w programie )
  28.                                       '  B = 2 obsługa wyświetlaczy W2- W4
  29.                                        '  B = 3 obsługa wyświetlaczy W3- W4
  30. Txt = Mid(text , A , 1)
  31. Wart = Val(txt)
  32. Wart = Makebcd(wart)
  33. Set W1
  34. Set W2
  35. Set W3
  36. Load Timer0 , 96
  37. Select Case A
  38. Case 1:
  39. Call Znak(wart)
  40. Reset W1
  41. Case 2:
  42. Call Znak(wart)
  43. Reset W2
  44. Case 3:
  45. Call Znak(wart)
  46. Reset W3
  47.  
  48. Case 4:                       'dodanie case 4: wyrównało poziom świecenia wyświetlaczy
  49. nop
  50.  
  51. End Select
  52. Waitms 2
  53. Next
  54. Return
  55.  
  56. Bcd7seg:
  57. Data &B11000000 , &B11111001 , &B10100100 , &B10110000 , &B10011001 ,       '0 1 2 3 4
  58. Data &B10010010 , &B10000010 , &B11111000 , &B10000000 , &B10010000       '5 6 7 8 9
ODPOWIEDZ