'badanie modułu wyświetlacz 4-Digit Display CATALEX - 7seg - 2015-05-31
'by kaktus
'http://kaktusa.pl
'Copyright CC-BY-NC
$regfile = "m328pdef.dat"
$crystal = 16000000
$hwstack = 124
$swstack = 96
$framesize = 124
Config Submode = New
$include "TM1637_core.inc"
Dim J As Byte , K As Byte , L As Byte , M As Byte
'---[ test ]--------------------------------------------------------------
Set Ddrc.2
Test Alias Portc.2
'$baud = 9600
'Config Serialin = Buffered , Size = 8
'Echo Off
'---[ test END ]--------------------------------------------------------------
'Print "rozruch "
Do
Call Tm1637(27 , 27 , 27 , 27 , 4 , 0)
Call Tm1637_poz(&B00111111 , 0 ) 'test pozycji
Waitms 500
Call Tm1637_poz(&B00000110 , 1)
Waitms 500
Call Tm1637_poz(&B01011011 , 2)
Waitms 500
Call Tm1637_poz(&B01001111 , 3)
Waitms 500
Call Tm1637(27 , 27 , 27 , 27 , 0 , 0)
Wait 1
J = 1 : K = &B01000000 : L = 0 : M = &B01111111
For I = 0 To 7 'test segmentow
L.i = 1
'najpierw prawie wszytko robie na "piechote"
'Write display register
' bajt = &H40 '40H address is automatically incremented by 1 mode, 44H fixed address mode, the program uses a self-imposed 1 mode
Gosub Tm1637_start
Call Tm1637_wrbyte(&H40) '&B01000000 data instruction set -> write data to register (data write mode set)
Gosub Tm1637_ack
Gosub Tm1637_stop
' bajt = &HC0 'Is Set The First Address
Gosub Tm1637_start
Call Tm1637_wrbyte(&Hc0) '&B11000000 addres instruction setting, MSB display
Gosub Tm1637_ack
Call Tm1637_wrbyte(j) 'pusto
Gosub Tm1637_ack
Call Tm1637_wrbyte(k) '
Gosub Tm1637_ack
Call Tm1637_wrbyte(l) '
Gosub Tm1637_ack
Call Tm1637_wrbyte(m) '
Gosub Tm1637_ack
Gosub Tm1637_stop
Shift J , Left , 1
Shift K , Right , 1
Shift M , Right , 1
Call Tm1637_brightness(8)
Waitms 200
Next I
Waitms 200
Call Tm1637_brightness(0)
Waitms 500
'uzycie zbudowanych funkcji
For I = 0 To 3
Call Tm1637(27 , 27 , 27 , 8 , 8 , 0) 'biegaj¹ce 8
Waitms 120
Call Tm1637(27 , 27 , 8 , 27 , 8 , 0)
Waitms 80
Call Tm1637(27 , 8 , 27 , 27 , 8 , 0)
Waitms 40
Call Tm1637(8 , 27 , 27 , 27 , 8 , 0)
Waitms 20
Call Tm1637(27 , 8 , 27 , 27 , 8 , 0)
Waitms 40
Call Tm1637(27 , 27 , 8 , 27 , 8 , 0)
Waitms 80
Call Tm1637(27 , 27 , 27 , 8 , 8 , 0)
Waitms 120
Call Tm1637_brightness(0)
Waitms 260
Next I
Wait 1
Call Tm1637(27 , 27 , 28 , 29 , 1 , 1) 'pusto pusto ;-)
For I = 0 To 8
Call Tm1637_brightness(i)
Waitms 150
Next I
Call Tm1637_poz(&B00000000 , 2) 'mryg oczkiem
Waitms 500
Call Tm1637_poz(&B10000000 , 2)
For I = 8 To 0 Step -1
Call Tm1637_brightness(i)
Waitms 150
Next I
Wait 1
Call Tm1637(17 , 10 , 17 , 10 , 1 , 0) 'HAHA
Waitms 500
Call Tm1637_brightness(0)
Waitms 500
Call Tm1637(17 , 10 , 17 , 10 , 8 , 0) 'HAHA
Waitms 500
Call Tm1637_brightness(0)
Waitms 500
Call Tm1637(17 , 10 , 17 , 10 , 1 , 0) 'HAHA
Waitms 500
Call Tm1637_brightness(0)
Wait 1
Call Tm1637(23 , 26 , 27 , 27 , 1 , 0) 'mrugajaca pupa
Waitms 300
Call Tm1637(27 , 27 , 23 , 10 , 1 , 0)
Waitms 300
Call Tm1637(23 , 26 , 27 , 27 , 8 , 0)
Waitms 300
Call Tm1637(27 , 27 , 23 , 10 , 8 , 0)
Waitms 300
Call Tm1637_brightness(0)
Waitms 500
Call Tm1637(27 , 27 , 27 , 17 , 1 , 0) 'wjezdzajace HE HE z rozjasnianiem
Waitms 100
Call Tm1637(27 , 27 , 17 , 14 , 1 , 0)
Waitms 100
Call Tm1637(27 , 17 , 14 , 27 , 2 , 0)
Waitms 100
Call Tm1637(17 , 14 , 27 , 17 , 2 , 0)
Waitms 100
Call Tm1637(14 , 27 , 17 , 14 , 3 , 0)
Waitms 100
Call Tm1637(27 , 17 , 14 , 27 , 3 , 0)
Waitms 100
Call Tm1637(17 , 14 , 27 , 27 , 4 , 0)
Waitms 100
Call Tm1637(14 , 27 , 27 , 27 , 4 , 0)
Waitms 200
Call Tm1637(27 , 27 , 27 , 27 , 4 , 0)
Waitms 200
Call Tm1637(14 , 27 , 27 , 27 , 5 , 0)
Waitms 200
Call Tm1637(17 , 14 , 27 , 27 , 5 , 0)
Waitms 200
Call Tm1637(27 , 17 , 14 , 27 , 6 , 0)
Waitms 200
Call Tm1637(14 , 27 , 17 , 14 , 6 , 0)
Waitms 200
Call Tm1637(17 , 14 , 27 , 17 , 7 , 0)
Waitms 200
Call Tm1637(27 , 17 , 14 , 27 , 7 , 0)
Waitms 200
Call Tm1637(27 , 27 , 17 , 14 , 8 , 0)
Waitms 200
Call Tm1637(27 , 27 , 27 , 17 , 8 , 0)
Waitms 200
Call Tm1637_brightness(0)
Wait 1
For I = 200 To 00 Step -10 'mrugajacy stop
Call Tm1637(5 , 25 , 0 , 23 , 8 , 0)
Waitms I
Call Tm1637_brightness(0)
Waitms I
Next I
Wait 1
Loop
End
'---[ podprogram ]--------------------------------------------------------------
Tm1637_start: '1637 start transmission
Set Clk
Set Dio_out
Waitus 2
Reset Dio_out
Return
Tm1637_ack: '1637 responses transmission
Reset Clk
Waitus 5 'After the eighth clock falling edge delay 5us, start determination ACK signal
Reset Dio_set
Bitwait Dio_in , Reset
Set Clk
Waitus 2
Reset Clk
Set Dio_set
Return
Tm1637_stop: '1637 Stop transmission
Reset Clk
Waitus 2
Reset Dio_out
Waitus 2
Set Clk
Waitus 2
Set Dio_out
Return
Brightness:
Data &H80 'off 128 pomocne przy mruganiu caloscia
Data &H88 'min 1/61 136
Data &H89 '2/16 137
Data &H8A '4/16 138
Data &H8B '10/16 139
Data &H8C '11/16 140
Data &H8D '12/16 141
Data &H8E '13/16 142
Data &H8F 'max 14/16 143
Cyfry:
Data &B00111111 '0
Data &B00000110 '1
Data &B01011011 '2
Data &B01001111 '3
Data &B01100110 '4
Data &B01101101 '5
Data &B01111101 '6
Data &B00000111 '7
Data &B01111111 '8
Data &B01101111 '9
Data &B01110111 'A 10
Data &B01111100 'B 11
Data &B00111001 'C 12
Data &B01011110 'D 13
Data &B01111001 'E 14
Data &B01110001 'F 15
Data &B00111101 'G 16
Data &B01110110 'H 17
Data &B00110000 'I 18
Data &B00001110 'J 19
Data &B00111000 'L 20
Data &B01010100 'n 21
Data &B00111100 'o 22
Data &B01110011 'P 23
Data &B01010000 'r 24
'Data &B01101101 'S<->5
Data &B01111000 't 25
Data &B00111110 'U 26
Data &B00000000 'off 27
Data &B01000000 '- 28
Data &B00001111 ') 29