Академический Документы
Профессиональный Документы
Культура Документы
The program of the moving message display is written in proton basic language is as
under:Device=16F628A
XTAL=4
ALL_DIGITAL=true
Output PORTB
Output PORTA
Symbol SER = PORTB.0 Serial data Pin
Symbol SRCLK = PORTB.1 Serial data Clock Pin
Symbol SRClr = PORTB.2 Serial data Clear
Symbol Latch = PORTB.3 Columns, Latch
High SRClr Turn off the serial register clear
Dim serial_buffer[120] As Byte
STR serial_buffer = Moving Message Display and many other Microcontroller Project
can be downloaded free from www.PICinf.blogspot.com , 0
Symbol selectline PORTA
Dim row As Byte
Dim character_counter As Byte
Dim general_index As Byte
dim charcter as byte
dim scrolling as byte
dim ch_index as byte
dim start_ch_idx as byte
dim end_ch_idx as byte
for general_index =0 to 120
if serial_buffer[general_index]>0 then serial_buffer[general_index]
=serial_buffer[general_index]-32
next general_index
setup for positive pulses:
lATCH = 0 : SRCLK = 0 : SER = 0
start_ch_idx =0
end_ch_idx = 120
Loop:
For row =0 To 6
ch_index = start_ch_idx
for character_counter = 0 to 9
GoSub Get_Pattern
inc ch_index
if ch_index = end_ch_idx then ch_index =0
next character_counter
PulsOut Latch,4
selectline = row
DelayUS 250
selectline = 7
for character_counter = 0 to 7
SHOut SER,SRCLK,lsbfirst,[0]
next character_counter
PulsOut Latch,4
Next row
inc scrolling
if scrolling = 10 then
scrolling = 0
Inc start_ch_idx
If start_ch_idx = end_ch_idx Then start_ch_idx = 0
endif
GoTo Loop
End
Get_Pattern:
charcter = LRead LABEL+((serial_buffer[ch_index]) *
charcter = ~charcter
out a clock pulse and one bit on data pin
out the low 5 bits of pattern
If charcter.4 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
If charcter.3 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
If charcter.2 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
If charcter.1 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
If charcter.0 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
SRCLK = 1 : SRCLK = 0: SER = 0
Return
LABEL:
LDATA $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Space
LDATA $FB,$FB,$FB,$FB,$FB,$FF,$FB,$FF !
LDATA $F5,$F5,$F5,$FF,$FF,$FF,$FF,$FF
LDATA $F5,$F5,$E0,$F5,$E0,$F5,$F5,$FF #
LDATA $FB,$F0,$EB,$F1,$FA,$E1,$FB,$FF $
LDATA $E3,$EA,$E5,$FB,$F4,$EA,$F8,$FF %
LDATA $F7,$EB,$EB,$F7,$EA,$ED,$F2,$FF &
LDATA $F9,$F9,$FD,$FB,$FF,$FF,$FF,$FF
LDATA $FD,$FB,$F7,$F7,$F7,$FB,$FD,$FF (
LDATA $F7,$FB,$FD,$FD,$FD,$FB,$F7,$FF )
LDATA $FB,$EA,$F1,$FB,$F1,$EA,$FB,$FF *
LDATA $FF,$FB,$FB,$E0,$FB,$FB,$FF,$FF +
LDATA $FF,$FF,$FF,$F3,$F3,$FB,$F7,$FF ,
+ row
LDATA $E0,$FE,$FD,$FB,$F7,$EF,$E0,$FF Z
LDATA $F1,$F7,$F7,$F7,$F7,$F7,$F1,$FF [
LDATA $FF,$EF,$F7,$FB,$FD,$FE,$FF,$FF backslash
LDATA $F1,$FD,$FD,$FD,$FD,$FD,$F1,$FF [
LDATA $FB,$F5,$EE,$FF,$FF,$FF,$FF,$FF ^
LDATA $FF,$FF,$FF,$FF,$FF,$FF,$E0,$FF underline
LDATA $F3,$F3,$F7,$FB,$FF,$FF,$FF,$FF
LDATA $FF,$FF,$F1,$FE,$F0,$EE,$F1,$FF a
LDATA $EF,$EF,$E9,$E6,$EE,$E6,$E9,$FF b
LDATA $FF,$FF,$F8,$F7,$F7,$F7,$F8,$FF c
LDATA $FE,$FE,$F2,$EC,$EE,$EC,$F2,$FF d
LDATA $FF,$FF,$F1,$EE,$E0,$EF,$F1,$FF e
LDATA $F9,$F6,$F7,$E1,$F7,$F7,$F7,$FF f
LDATA $FF,$FF,$F0,$EE,$F0,$FE,$F1,$FF g
LDATA $EF,$EF,$E9,$E6,$EE,$EE,$EE,$FF h
LDATA $FB,$FF,$F3,$FB,$FB,$FB,$F1,$FF i
LDATA $FD,$FF,$F9,$FD,$FD,$FD,$F3,$FF j
LDATA $F7,$F7,$F6,$F5,$F3,$F5,$F6,$FF k
LDATA $F3,$FB,$FB,$FB,$FB,$FB,$F1,$FF l
LDATA $FF,$FF,$E5,$EA,$EA,$EA,$EA,$FF m
LDATA $FF,$FF,$E9,$E6,$EE,$EE,$EE,$FF n
LDATA $FF,$FF,$F1,$EE,$EE,$EE,$F1,$FF o
LDATA $FF,$FF,$E1,$EE,$E1,$EF,$EF,$FF p
LDATA $FF,$FF,$F0,$EE,$F0,$FE,$FE,$FF q
LDATA $FF,$FF,$E9,$E6,$EF,$EF,$EF,$FF r
LDATA $FF,$FF,$F0,$EF,$F1,$FE,$E1,$FF s
LDATA $FB,$FB,$F0,$FB,$FB,$FB,$FC,$FF t
LDATA $FF,$FF,$EE,$EE,$EE,$EC,$F2,$FF u
LDATA $FF,$FF,$EE,$EE,$EE,$F5,$FB,$FF v
LDATA $FF,$FF,$EE,$EE,$EA,$EA,$F4,$FF w
LDATA $FF,$FF,$EE,$F5,$FB,$F5,$EE,$FF x
LDATA $FF,$FF,$EE,$F5,$FB,$FB,$F3,$FF y
LDATA $FF,$FF,$E0,$FD,$FB,$F7,$E0,$FF z
LDATA $F9,$F7,$F7,$E7,$F7,$F7,$F9,$FF {
LDATA $FB,$FB,$FB,$FF,$FB,$FB,$FB,$FF |
LDATA $F3,$FD,$FD,$FC,$FD,$FD,$F3,$FF }
LDATA $F5,$EA,$FF,$FF,$FF,$FF,$FF,$FF ~
LDATA $F5,$EA,$F5,$EA,$F5,$EA,$F5H DEL
Code of the Moving message diaply is written in proton basic compiler and is as under:Device=16F628A
XTAL=4
ALL_DIGITAL=true
Output PORTB
Symbol SER = PORTB.0 Serial data Pin
Symbol SRCLK = PORTB.1 Serial data Clock Pin
Symbol SRClr = PORTB.2 Serial data Clear
Symbol Latch = PORTB.3 Columns, Latch
Symbol RowClk = PORTB.4 Row clock, to select new row
Symbol Rowrst = PORTB.5 Row reset, selects row 0
High SRClr Turn off the serial register clear
Dim serial_buffer[128] As Byte
STR serial_buffer = www.PICinf.blogspot.com , 0
Dim i As Byte
Dim n As Byte
Dim b As Byte
Dim c As Byte
dim m as byte
dim l as byte
dim ch_index as byte
dim start_ch_idx as byte
dim end_ch_idx as byte
for b =0 to 128
if serial_buffer[b]>0 then serial_buffer[b] =serial_buffer[b]-32
next b
setup for positive pulses:
lATCH = 0 : SRCLK = 0 : SER = 0
c=0
start_ch_idx =0
end_ch_idx = 30
Loop:
PulsOut Rowrst,2 give a pulse on row reset pin, to select row 0
For i=0 To 6
ch_index = start_ch_idx
for n = 0 to 10
GoSub GetPatternAndOut
inc ch_index
if ch_index = end_ch_idx then ch_index =0
next n
PulsOut Latch,4
DelayUS 250
PulsOut RowClk,2
for n = 0 to 7
SHOut SER,SRCLK,lsbfirst,[0]
next n
PulsOut Latch,4
Next i
inc l
if l = 10 then
l=0
Inc start_ch_idx
If start_ch_idx = end_ch_idx Then start_ch_idx = 0
endif
GoTo Loop
End
GetPatternAndOut:
m = LRead LABEL+((serial_buffer[ch_index]) *
m = ~m
out a clock pulse and restore data pin to 0
out the low 5 bits of pattern
SRCLK = 1 : SRCLK = 0: SER = 0
If m.4 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
If m.3 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
If m.2 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
If m.1 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
If m.0 = 1 Then SER = 1
SRCLK = 1 : SRCLK = 0: SER = 0
Return
LABEL:
LDATA $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF Space
LDATA $FB,$FB,$FB,$FB,$FB,$FF,$FB,$FF !
LDATA $F5,$F5,$F5,$FF,$FF,$FF,$FF,$FF
LDATA $F5,$F5,$E0,$F5,$E0,$F5,$F5,$FF #
LDATA $FB,$F0,$EB,$F1,$FA,$E1,$FB,$FF $
LDATA $E3,$EA,$E5,$FB,$F4,$EA,$F8,$FF %
LDATA $F7,$EB,$EB,$F7,$EA,$ED,$F2,$FF &
LDATA $F9,$F9,$FD,$FB,$FF,$FF,$FF,$FF
LDATA $FD,$FB,$F7,$F7,$F7,$FB,$FD,$FF (
LDATA $F7,$FB,$FD,$FD,$FD,$FB,$F7,$FF )
LDATA $FB,$EA,$F1,$FB,$F1,$EA,$FB,$FF *
LDATA $FF,$FB,$FB,$E0,$FB,$FB,$FF,$FF +
LDATA $FF,$FF,$FF,$F3,$F3,$FB,$F7,$FF ,
LDATA $FF,$FF,$FF,$F1,$FF,$FF,$FF,$FF LDATA $FF,$FF,$FF,$FF,$FF,$F3,$F3,$FF .
LDATA $FF,$FE,$FD,$FB,$F7,$EF,$FF,$FF /
LDATA $F1,$EE,$EC,$EA,$E6,$EE,$F1,$FF 0
LDATA $FB,$F3,$FB,$FB,$FB,$FB,$F1,$FF 1
+i
LDATA $F1,$EE,$FE,$F1,$EF,$EF,$E0,$FF 2
LDATA $F1,$EE,$FE,$F9,$FE,$EE,$F1,$FF 3
LDATA $FD,$F9,$F5,$ED,$E0,$FD,$FD,$FF 4
LDATA $E0,$EF,$E1,$FE,$FE,$FE,$E1,$FF 5
LDATA $F9,$F7,$EF,$E1,$EE,$EE,$F1,$FF 6
LDATA $E0,$FE,$FD,$FB,$F7,$F7,$F7,$FF 7
LDATA $F1,$EE,$EE,$F1,$EE,$EE,$F1,$FF 8
LDATA $F1,$EE,$EE,$F0,$FE,$FD,$F3,$FF 9
LDATA $FF,$F3,$F3,$FF,$F3,$F3,$FF,$FF :
LDATA $F3,$FB,$F3,$F3,$FF,$F3,$F3,$FF ;
LDATA $FD,$FB,$F7,$EF,$F7,$FB,$FD,$FF <
LDATA $FF,$FF,$F1,$FF,$F1,$FF,$FF,$FF =
LDATA $F7,$FB,$FD,$FE,$FD,$FB,$F7,$FF >
LDATA $F1,$EE,$FE,$FD,$FB,$FF,$FB,$FF ?
LDATA $F1,$EE,$FE,$F2,$EA,$EA,$F1,$FF @
LDATA $FB,$F5,$EE,$EE,$E0,$EE,$EE,$FF A
LDATA $E1,$F6,$F6,$F1,$F6,$F6,$E1,$FF B
LDATA $F1,$EE,$EF,$EF,$EF,$EE,$F1,$FF C
LDATA $E1,$F6,$F6,$F6,$F6,$F6,$E1,$FF D
LDATA $E0,$EF,$EF,$E3,$EF,$EF,$E0,$FF E
LDATA $E0,$EF,$EF,$E3,$EF,$EF,$EF,$FF F
LDATA $F1,$EE,$EF,$E8,$EE,$EE,$F1,$FF G
LDATA $EE,$EE,$EE,$E0,$EE,$EE,$EE,$FF H
LDATA $F1,$FB,$FB,$FB,$FB,$FB,$F1,$FF I
LDATA $F8,$FD,$FD,$FD,$FD,$FD,$F3,$FF J
LDATA $EE,$ED,$EB,$E7,$EB,$ED,$EE,$FF K
LDATA $EF,$EF,$EF,$EF,$EF,$EF,$E0,$FF L
LDATA $EE,$E4,$EA,$EA,$EE,$EE,$EE,$FF M
LDATA $EE,$E6,$EA,$EC,$EE,$EE,$EE,$FF N
LDATA $F1,$EE,$EE,$EE,$EE,$EE,$F1,$FF O
LDATA $E1,$EE,$EE,$E1,$EF,$EF,$EF,$FF P
LDATA $F1,$EE,$EE,$EE,$EA,$ED,$F2,$FF Q
LDATA $E1,$EE,$EE,$E1,$EB,$ED,$EE,$FF R
LDATA $F1,$EE,$EF,$F1,$FE,$EE,$F1,$FF S
LDATA $E0,$FB,$FB,$FB,$FB,$FB,$FB,$FF T
LDATA $EE,$EE,$EE,$EE,$EE,$EE,$F1,$FF U
LDATA $EE,$EE,$EE,$F5,$F5,$FB,$FB,$FF V
LDATA $EE,$EE,$EE,$EA,$EA,$E4,$EE,$FF W
LDATA $EE,$EE,$F5,$FB,$F5,$EE,$EE,$FF X
LDATA $EE,$EE,$F5,$FB,$FB,$FB,$FB,$FF Y
LDATA $E0,$FE,$FD,$FB,$F7,$EF,$E0,$FF Z
LDATA $F1,$F7,$F7,$F7,$F7,$F7,$F1,$FF [
LDATA $FF,$EF,$F7,$FB,$FD,$FE,$FF,$FF backslash
LDATA $F1,$FD,$FD,$FD,$FD,$FD,$F1,$FF [
LDATA $FB,$F5,$EE,$FF,$FF,$FF,$FF,$FF ^
LDATA $FF,$FF,$FF,$FF,$FF,$FF,$E0,$FF underline
LDATA $F3,$F3,$F7,$FB,$FF,$FF,$FF,$FF
LDATA $FF,$FF,$F1,$FE,$F0,$EE,$F1,$FF a
LDATA $EF,$EF,$E9,$E6,$EE,$E6,$E9,$FF b
LDATA $FF,$FF,$F8,$F7,$F7,$F7,$F8,$FF c
LDATA $FE,$FE,$F2,$EC,$EE,$EC,$F2,$FF d
LDATA $FF,$FF,$F1,$EE,$E0,$EF,$F1,$FF e
LDATA $F9,$F6,$F7,$E1,$F7,$F7,$F7,$FF f
LDATA $FF,$FF,$F0,$EE,$F0,$FE,$F1,$FF g
LDATA $EF,$EF,$E9,$E6,$EE,$EE,$EE,$FF h
LDATA $FB,$FF,$F3,$FB,$FB,$FB,$F1,$FF i
LDATA $FD,$FF,$F9,$FD,$FD,$FD,$F3,$FF j
LDATA $F7,$F7,$F6,$F5,$F3,$F5,$F6,$FF k
LDATA $F3,$FB,$FB,$FB,$FB,$FB,$F1,$FF l
LDATA $FF,$FF,$E5,$EA,$EA,$EA,$EA,$FF m
LDATA $FF,$FF,$E9,$E6,$EE,$EE,$EE,$FF n
LDATA $FF,$FF,$F1,$EE,$EE,$EE,$F1,$FF o
LDATA $FF,$FF,$E1,$EE,$E1,$EF,$EF,$FF p
LDATA $FF,$FF,$F0,$EE,$F0,$FE,$FE,$FF q
LDATA $FF,$FF,$E9,$E6,$EF,$EF,$EF,$FF r
LDATA $FF,$FF,$F0,$EF,$F1,$FE,$E1,$FF s
LDATA $FB,$FB,$F0,$FB,$FB,$FB,$FC,$FF t
LDATA $FF,$FF,$EE,$EE,$EE,$EC,$F2,$FF u
LDATA $FF,$FF,$EE,$EE,$EE,$F5,$FB,$FF v
LDATA $FF,$FF,$EE,$EE,$EA,$EA,$F4,$FF w
LDATA $FF,$FF,$EE,$F5,$FB,$F5,$EE,$FF x
LDATA $FF,$FF,$EE,$F5,$FB,$FB,$F3,$FF y
LDATA $FF,$FF,$E0,$FD,$FB,$F7,$E0,$FF z
LDATA $F9,$F7,$F7,$E7,$F7,$F7,$F9,$FF {
LDATA $FB,$FB,$FB,$FF,$FB,$FB,$FB,$FF |
LDATA $F3,$FD,$FD,$FC,$FD,$FD,$F3,$FF }
LDATA $F5,$EA,$FF,$FF,$FF,$FF,$FF,$FF ~
LDATA $F5,$EA,$F5,$EA,$F5,$EA,$F5H DEL