Topics
16F628A Push button controlled display circuit with LCD and ASM
When the circuit initializes it displays the character "M" as it is programmed. Pressing decrease button (left button in the breadboard) counts the characters backward and pressing (right button in the breadboard) increase button counts forward.
When the center button is pushed, it sends "M" character to the display again.
The circuit must be fed with 5Vdc.
The circuit's schematic diagram:
The circuit's material list:U1: PIC16F628A
Y1: 4Mhz crystal
DS1: 2x16 character LCD
C1: 100nF
C2-C3: 22pF
RV1: 10k variable resistor
R1-R4: 10k
R5-R6: 470R resistor
D1-D2: Red LED
The circuit's working picture:
The circuit's working video demonstration:
Assembly source codes for the circuit:
; ********* ************* ********************** ********* ; 16F628A Push button controlled display circuit with LCD and ASM ; Use the MPASM compiler ; Tarih: 03.04.2017 19:19:35 ; http://teknomerkez.com/index.php?git=1731 ; ********* ************* ********************** ********* TITLE "Lcd buton" LIST p=16F628A #INCLUDE <p16f628a.inc> __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF CBLOCK 0x20 ;The variables are defining TRLCD01 TRLCD02 TRLCD100MA TRLCD100MB TRLCD100MC TRLCD200UA TRLCD2MA TRLCD2MB TRLCD2MC TR500MA TR500MB TR500MC TR500MSEKA TR500MSEKB TR500MSEKC TR2SNA TR2SNB TR2SNC TR2SND YOL ENDC ORG 0x00 GOTO BASLA BASLA ;Starting point CLRF PORTA CLRF PORTB BANKSEL TRISA MOVLW b'11111100' MOVWF TRISA MOVLW b'00000000' MOVWF TRISB BANKSEL CMCON MOVLW 0x07 MOVWF CMCON MOVLW 0x67 MOVWF OPTION_REG BCF 3,5 CALL TRLCDTANIMLA GOTO GIRIS GIRIS ;Initially transactions here MOVLW 'm' MOVWF YOL CALL TRLCDTEMIZLE ;--- Lcd 1,1 "Teknomerkez" write --- MOVLW d'128' CALL TRLCDYAP CALL TRLCD200US MOVLW 'T' CALL TRLCDYAZ MOVLW 'e' CALL TRLCDYAZ MOVLW 'k' CALL TRLCDYAZ MOVLW 'n' CALL TRLCDYAZ MOVLW 'o' CALL TRLCDYAZ MOVLW 'm' CALL TRLCDYAZ MOVLW 'e' CALL TRLCDYAZ MOVLW 'r' CALL TRLCDYAZ MOVLW 'k' CALL TRLCDYAZ MOVLW 'e' CALL TRLCDYAZ MOVLW 'z' CALL TRLCDYAZ ;--- Lcd 2,1 "Teknik Bilgiler" write --- MOVLW d'192' CALL TRLCDYAP CALL TRLCD200US MOVLW 'T' CALL TRLCDYAZ MOVLW 'e' CALL TRLCDYAZ MOVLW 'k' CALL TRLCDYAZ MOVLW 'n' CALL TRLCDYAZ MOVLW 'i' CALL TRLCDYAZ MOVLW 'k' CALL TRLCDYAZ MOVLW ' ' CALL TRLCDYAZ MOVLW 'B' CALL TRLCDYAZ MOVLW 'i' CALL TRLCDYAZ MOVLW 'l' CALL TRLCDYAZ MOVLW 'g' CALL TRLCDYAZ MOVLW 'i' CALL TRLCDYAZ MOVLW 'l' CALL TRLCDYAZ MOVLW 'e' CALL TRLCDYAZ MOVLW 'r' CALL TRLCDYAZ BSF PORTB,0 BSF PORTB,3 CALL TR2SN CALL TRLCDTEMIZLE ;--- Lcd 1,1 "Bir buton sec" write --- MOVLW d'128' CALL TRLCDYAP CALL TRLCD200US MOVLW 'B' CALL TRLCDYAZ MOVLW 'i' CALL TRLCDYAZ MOVLW 'r' CALL TRLCDYAZ MOVLW ' ' CALL TRLCDYAZ MOVLW 'b' CALL TRLCDYAZ MOVLW 'u' CALL TRLCDYAZ MOVLW 't' CALL TRLCDYAZ MOVLW 'o' CALL TRLCDYAZ MOVLW 'n' CALL TRLCDYAZ MOVLW ' ' CALL TRLCDYAZ MOVLW 's' CALL TRLCDYAZ MOVLW 'e' CALL TRLCDYAZ MOVLW 'c' CALL TRLCDYAZ ;--- Lcd 2,1 "<Azal> <M> <Art>" write --- MOVLW d'192' CALL TRLCDYAP CALL TRLCD200US MOVLW '<' CALL TRLCDYAZ MOVLW 'A' CALL TRLCDYAZ MOVLW 'z' CALL TRLCDYAZ MOVLW 'a' CALL TRLCDYAZ MOVLW 'l' CALL TRLCDYAZ MOVLW '>' CALL TRLCDYAZ MOVLW ' ' CALL TRLCDYAZ MOVLW '<' CALL TRLCDYAZ MOVLW 'M' CALL TRLCDYAZ MOVLW '>' CALL TRLCDYAZ MOVLW ' ' CALL TRLCDYAZ MOVLW '<' CALL TRLCDYAZ MOVLW 'A' CALL TRLCDYAZ MOVLW 'r' CALL TRLCDYAZ MOVLW 't' CALL TRLCDYAZ MOVLW '>' CALL TRLCDYAZ BSF PORTB,0 BSF PORTB,3 GOREVLER ;Here's what to do BTFSS PORTA,3 GOTO TR_ISE0 MOVLW 'M' MOVWF YOL CALL TRLCDTEMIZLE ;--- Lcd 1,1 "Merkez Butonu" write --- MOVLW d'128' CALL TRLCDYAP CALL TRLCD200US MOVLW 'M' CALL TRLCDYAZ MOVLW 'e' CALL TRLCDYAZ MOVLW 'r' CALL TRLCDYAZ MOVLW 'k' CALL TRLCDYAZ MOVLW 'e' CALL TRLCDYAZ MOVLW 'z' CALL TRLCDYAZ MOVLW ' ' CALL TRLCDYAZ MOVLW 'B' CALL TRLCDYAZ MOVLW 'u' CALL TRLCDYAZ MOVLW 't' CALL TRLCDYAZ MOVLW 'o' CALL TRLCDYAZ MOVLW 'n' CALL TRLCDYAZ MOVLW 'u' CALL TRLCDYAZ ;--- Lcd 2,1 way write --- MOVLW d'192' CALL TRLCDYAP CALL TRLCD200US MOVF YOL,W CALL TRLCDYAZ BCF PORTB,0 BCF PORTB,3 TR_ISE0 BTFSS PORTA,4 GOTO TR_ISE1 INCF YOL,F CALL TRLCDTEMIZLE ;--- Lcd 1,1 "Artırma Butonu" write --- MOVLW d'128' CALL TRLCDYAP CALL TRLCD200US MOVLW 'A' CALL TRLCDYAZ MOVLW 'r' CALL TRLCDYAZ MOVLW 't' CALL TRLCDYAZ MOVLW 'm' CALL TRLCDYAZ MOVLW 'a' CALL TRLCDYAZ MOVLW ' ' CALL TRLCDYAZ MOVLW 'B' CALL TRLCDYAZ MOVLW 'u' CALL TRLCDYAZ MOVLW 't' CALL TRLCDYAZ MOVLW 'o' CALL TRLCDYAZ MOVLW 'n' CALL TRLCDYAZ MOVLW 'u' CALL TRLCDYAZ ;--- Lcd 2,1 way write --- MOVLW d'192' CALL TRLCDYAP CALL TRLCD200US MOVF YOL,W CALL TRLCDYAZ ;--- Lcd 2,4 "(artir)" write --- MOVLW d'195' CALL TRLCDYAP CALL TRLCD200US MOVLW '(' CALL TRLCDYAZ MOVLW 'a' CALL TRLCDYAZ MOVLW 'r' CALL TRLCDYAZ MOVLW 't' CALL TRLCDYAZ MOVLW 't' CALL TRLCDYAZ MOVLW 'i' CALL TRLCDYAZ MOVLW 'r' CALL TRLCDYAZ MOVLW ')' CALL TRLCDYAZ BCF PORTB,0 BSF PORTB,3 CALL TR500MS TR_ISE1 BTFSS PORTA,2 GOTO TR_ISE2 DECF YOL,F CALL TRLCDTEMIZLE ;--- Lcd 1,1 go --- MOVLW d'128' CALL TRLCDYAP CALL TRLCD200US ;Lcd "Eksilme Butonu" write MOVLW 'E' CALL TRLCDYAZ MOVLW 'k' CALL TRLCDYAZ MOVLW 's' CALL TRLCDYAZ MOVLW 'i' CALL TRLCDYAZ MOVLW 'l' CALL TRLCDYAZ MOVLW 'm' CALL TRLCDYAZ MOVLW 'e' CALL TRLCDYAZ MOVLW ' ' CALL TRLCDYAZ MOVLW 'B' CALL TRLCDYAZ MOVLW 'u' CALL TRLCDYAZ MOVLW 't' CALL TRLCDYAZ MOVLW 'o' CALL TRLCDYAZ MOVLW 'n' CALL TRLCDYAZ MOVLW 'u' CALL TRLCDYAZ ;--- Lcd 2,1 Way write --- MOVLW d'192' CALL TRLCDYAP CALL TRLCD200US MOVF YOL,W CALL TRLCDYAZ ;--- Lcd 2,4 "(azalt)" write --- MOVLW d'195' CALL TRLCDYAP CALL TRLCD200US MOVLW '(' CALL TRLCDYAZ MOVLW 'a' CALL TRLCDYAZ MOVLW 'z' CALL TRLCDYAZ MOVLW 'a' CALL TRLCDYAZ MOVLW 'l' CALL TRLCDYAZ MOVLW 't' CALL TRLCDYAZ MOVLW ')' CALL TRLCDYAZ BSF PORTB,0 BCF PORTB,3 CALL TR500MS TR_ISE2 GOTO GOREVLER TRLCDTANIMLA CALL TRLCD100MS BCF PORTA,0 BCF PORTA,1 MOVLW b'00110000' MOVWF PORTB BSF PORTA,1 NOP BCF PORTA,1 CALL TRLCD100MS MOVLW b'00110000' MOVWF PORTB BSF PORTA,1 NOP BCF PORTA,1 CALL TRLCD200US MOVLW b'00110000' MOVWF PORTB BSF PORTA,1 NOP BCF PORTA,1 CALL TRLCD200US MOVLW b'00100000' MOVWF PORTB BSF PORTA,1 NOP BCF PORTA,1 CALL TRLCD200US MOVLW b'00001100' CALL TRLCDYAP CALL TRLCD200US MOVLW b'00000110' CALL TRLCDYAP CALL TRLCD200US MOVLW b'00000001' CALL TRLCDYAP CALL TRLCD2MS RETURN TRLCDYAP BCF PORTA,0 GOTO TRLCDYAZ1 TRLCDYAZ BSF PORTA,0 TRLCDYAZ1 MOVWF TRLCD02 ANDLW b'11110000' MOVWF PORTB BSF PORTA,1 NOP BCF PORTA,1 MOVLW b'10101010' MOVWF TRLCD01 TRLCDYAZ2 DECFSZ TRLCD01,1 GOTO TRLCDYAZ2 MOVF TRLCD02,0 ANDLW b'11110000' SWAPF TRLCD02,0 MOVWF PORTB BSF PORTA,1 NOP BCF PORTA,1 MOVLW b'10101010' MOVWF TRLCD01 TRLCDYAZ3 DECFSZ TRLCD01,1 GOTO TRLCDYAZ3 RETURN TRLCDTEMIZLE MOVLW b'00000001' CALL TRLCDYAP CALL TRLCD2MS CALL TRLCD2MS RETURN TRLCD100MS MOVLW d'100' MOVWF TRLCD100MA TRLCD100MS1 MOVLW d'27' MOVWF TRLCD100MB TRLCD100MS2 MOVLW d'11' MOVWF TRLCD100MC TRLCD100MS3 DECFSZ TRLCD100MC,F GOTO TRLCD100MS3 DECFSZ TRLCD100MB,F GOTO TRLCD100MS2 DECFSZ TRLCD100MA,F GOTO TRLCD100MS1 RETURN TRLCD200US MOVLW d'64' MOVWF TRLCD200UA TRLCD200US1 DECFSZ TRLCD200UA,F GOTO TRLCD200US1 NOP RETURN TRLCD2MS MOVLW d'2' MOVWF TRLCD2MA TRLCD2MS1 MOVLW d'27' MOVWF TRLCD2MB TRLCD2MS2 MOVLW d'11' MOVWF TRLCD2MC TRLCD2MS3 DECFSZ TRLCD2MC,F GOTO TRLCD2MS3 DECFSZ TRLCD2MB,F GOTO TRLCD2MS2 DECFSZ TRLCD2MA,F GOTO TRLCD2MS1 RETURN TR500MS MOVLW d'246' MOVWF TR500MA TR500MS1 MOVLW d'27' MOVWF TR500MB TR500MS2 MOVLW d'11' MOVWF TR500MC TR500MS3 DECFSZ TR500MC, F GOTO TR500MS3 DECFSZ TR500MB, F GOTO TR500MS2 DECFSZ TR500MA, F GOTO TR500MS1 TR500MSEK MOVLW d'255' MOVWF TR500MSEKA TR500MSEK1 MOVLW d'27' MOVWF TR500MSEKB TR500MSEK2 MOVLW d'11' MOVWF TR500MSEKC TR500MSEK3 DECFSZ TR500MSEKC, F GOTO TR500MSEK3 DECFSZ TR500MSEKB, F GOTO TR500MSEK2 DECFSZ TR500MSEKA, F GOTO TR500MSEK1 RETURN TR2SN MOVLW d'2' MOVWF TR2SNA TR2SN1 MOVLW d'8' MOVWF TR2SNB TR2SN2 MOVLW d'209' MOVWF TR2SNC TR2SN3 MOVLW d'200' MOVWF TR2SND TR2SN4 DECFSZ TR2SND, F GOTO TR2SN4 DECFSZ TR2SNC, F GOTO TR2SN3 DECFSZ TR2SNB, F GOTO TR2SN2 DECFSZ TR2SNA, F GOTO TR2SN1 RETURN END ; End the program
Working HEX file:
:020000040000FA
:1000000001288501860183160313FC30850000302A
:1000100086008312031307309F006730810083122C
:10002000352112286D30B300732180305A2185218B
:1000300054305C2165305C216B305C216E305C217A
:100040006F305C216D305C2165305C2172305C2149
:100050006B305C2165305C217A305C21C0305A21E4
:10006000852154305C2165305C216B305C216E3021
:100070005C2169305C216B305C2120305C21423096
:100080005C2169305C216C305C2167305C21693017
:100090005C216C305C2165305C2172305C2106147F
:1000A0008615B121732180305A21852142305C218F
:1000B00069305C2172305C2120305C2162305C212F
:1000C00075305C2174305C216F305C216E305C21B6
:1000D00020305C2173305C2165305C2163305C2111
:1000E000C0305A2185213C305C2141305C217A307E
:1000F0005C2161305C216C305C213E305C21203021
:100100005C213C305C214D305C213E305C21203054
:100110005C213C305C2141305C2172305C217430C8
:100120005C213E305C2106148615851DBE284D30AD
:10013000B300732180305A2185214D305C21653018
:100140005C2172305C216B305C2165305C217A303F
:100150005C2120305C2142305C2175305C217430A0
:100160005C216F305C216E305C2175305C21C030C9
:100170005A21852133085C2106108611051EF828B6
:10018000B30A732180305A21852141305C217230BD
:100190005C2174305C216D305C2161305C21203049
:1001A0005C2142305C2175305C2174305C216F3001
:1001B0005C216E305C2175305C21C0305A21852174
:1001C00033085C21C3305A21852128305C216130FD
:1001D0005C2172305C2174305C2174305C216930A8
:1001E0005C2172305C2129305C2106108615982133
:1001F000051D3429B303732180305A2185214530F0
:100200005C216B305C2173305C2169305C216C3087
:100210005C216D305C2165305C2120305C214230F6
:100220005C2175305C2174305C216F305C216E3054
:100230005C2175305C21C0305A21852133085C2156
:10024000C3305A21852128305C2161305C217A300D
:100250005C2161305C216C305C2174305C21293080
:100260005C210614861198219528782105108510A7
:1002700030308600851400008510782130308600EB
:10028000851400008510852130308600851400001B
:100290008510852120308600851400008510852179
:1002A0000C305A21852106305A21852101305A21EE
:1002B0008B21080005105D290514A100F039860086
:1002C000851400008510AA30A000A00B6529210824
:1002D000F039210E8600851400008510AA30A00098
:1002E000A00B7029080001305A218B218B210800B6
:1002F0006430A2001B30A3000B30A400A40B7E29A5
:10030000A30B7C29A20B7A2908004030A500A50B7D
:100310008729000008000230A6001B30A7000B3020
:10032000A800A80B9129A70B8F29A60B8D290800DF
:10033000F630A9001B30AA000B30AB00AB0B9E2996
:10034000AA0B9C29A90B9A29FF30AC001B30AD00E9
:100350000B30AE00AE0BAA29AD0BA829AC0BA62919
:1003600008000230AF000830B000D130B100C83012
:10037000B200B20BB929B10BB729B00BB529AF0B3D
:04038000B329080095
:04038400003400340D
:02400E00293F48
:00000001FF
Comments
No comments yet, post a comment for to be the first.Leave a comment
Name
E-mail
Your comment
Security Code
All areas must be filled. Your comment will be published after being checked. The e-mail will not be published.