HomeArticlesProjectsBlogContact
Articles
5x7 Display - Piezo Experiments - Page 2
Colin Mitchell
Colin Mitchell
Make sure to subscribe to our newsletter and be the first to know the news.

Table Of Contents

01
Piezo Experiments - Page 2
02
EXPERIMENT-5P CaLLing Hee Haw routine
03
EXPERIMENT-7P Creating a Scale
04
EXPERIMENT-8P Creating a tune

Piezo Experiments - Page 2


EXPERIMENT-5P CaLLing Hee Haw routine

This experiment shows how to CALL Hee Haw routine when a certain event has occurred. In this case the program detects button B. Hee Haw repeats 5 times then stops.

Experiment-5P for “Piezo on 5x7 Display” Project
;PIC16F84 and only F84 chip
;Calling Hee Haw Siren

Start     ORG 0x00
          BSF 03,5    ;Go to page1 to set up the ports
          MOVLW 08h   ;Load W with 0000 1000
          MOVWF 05h   ; to make RA3 input
          MOVLW 00h   ;Put 00 into W
          MOVWF 06h   ;to make all RB lines output
          BCF 03,5    ;Go to Page0 for programming
          GOTO Main


   ;Hee - this is the LOW frequency
Hee       MOVLW 0FFh
          MOVWF 06   ;Turn ON all LEDs
          MOVLW 04
          MOVWF 1C
Hee1      MOVLW 080h
          MOVWF 1B
Hee2      MOVLW 80h   ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 0B0h
          MOVWF 1Ah
          CALL Delay  ;Call Delay
          DECFSZ 1B,1
          GOTO Hee2   ;Repeat the routine as per file 1B
          DECFSZ 1C,1
          GOTO Hee1

   ;Haw - This is the HIGH frequency
Haw       MOVLW 00
          MOVWF 06    ;Turn OFF all LEDs
          MOVLW 04
          MOVWF 1C
Haw1      MOVLW 0D0h  ;Create D0 loops
          MOVWF 1B
Haw2      MOVLW 80h   ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 80h
          MOVWF 1Ah
          CALL Delay  ;Call Delay
          DECFSZ 1B,1
          GOTO Haw2   ;Repeat the routine as per file 1B
          DECFSZ 1C,1
          GOTO Haw1
          RETURN


Delay     DECFSZ 1Ah,1 ;Length of ON and OFF time for tone
          GOTO Delay
          RETURN

Main      BTFSS 05,3    ;Is button B pressed?
          GOTO Main     ;No
          MOVLW 05      ;Yes. Create 5 loops for Hee Haw
          MOVWF 1Dh
Main1     CALL Hee
          DECFSZ 1Dh,1
          GOTO Main1
Main2     CALL Delay
          BTFSC 05,3   ;Is button B released?
          GOTO Main2   ;No
          GOTO Main     ;Yes button B is released!

   END

The block of numbers below is the HEX file for Experiment-5P. Copy and paste it into a text program such as TEXTPAD or NOTEPAD and call it: Expt5P.hex

:100000008316083085000030860083122928FF30CF
:10001000860004309C0080309B0080308606B03023
:100020009A0026209B0B0D289C0B0B280030860085
:1000300004309C00D0309B008030860680309A00CF
:1000400026209B0B1C289C0B1A2808009A0B26289C
:100050000800851D292805309D0007209D0B2D28AF
:0800600026208519302829280B
:00000001FF

The first step in making a tune is the creation of the notes and in this experiment we show how to make a note.
Each note is made up of an ON time (the HIGH for the note) and an OFF time (the LOW for the note). This must then be repeated to produce the note.
The sub-routine “C” produces both the HIGH and LOW times by toggling the line connected to the piezo then calling the delay. This action is repeated endlessly to create the note.
The delay has been specially designed to take exactly 8 “units of time” (one unit of time for each NOP and DECFSZ and two units for GOTO. File 1A is loaded with F0 (240) and this creates 240 x 8 = 1920 microseconds of delay. The “C” sub-routine takes 8 microseconds (CALL = 2 microseconds) and GOTO takes 2 microseconds of time. The last cycle of delay takes 9 microseconds.
When this is all added up, the result is 1929 microseconds. The other half of the cycle takes the same length of time and when 1,000,000 is divided by (1929x2), the result is very close to 260Hz.
Middle C is specified as 261.63Hz and you cannot get much closer.
The diagram below shows one cycle of tone “C” with HIGH = 1929 microseconds and LOW = 1929 microseconds.

Experiment-6P for Piezo on “5x7 Display” Project
;PIC16F84 and only F84 chip
;Making a Note - middle “C”

Start     ORG 0x00
          BSF 03,5   ;Go to page1 to set up the ports
          MOVLW 00h  ;Put 00 into W
          MOVWF 05h  ;Make all RA lines output
          MOVWF 06h  ;Make all RB lines output
          BCF 03,5   ;Go to Page0 for programming

    ;Producing "middle C"

C         MOVLW 80h   ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 0F0h
          MOVWF 1Ah
          CALL Delay  ;Call Delay
          GOTO C      ;Repeat the routine

Delay     NOP         ;Length of ON and OFF time for Note
          NOP
          NOP
          NOP
          NOP
          DECFSZ 1Ah,1
          GOTO Delay
          RETURN

   END

The block of numbers below is the HEX file for Experiment-6P. Copy and paste it into a text program such as TEXTPAD or NOTEPAD and call it: Expt6P.hex

:1000000083160030850086008312803086067630A5
:100010009A000B20052800000000000000000000EE
:060020009A0B0B280800FA
:00000001FF

EXPERIMENT-7P Creating a Scale

The natural extension of note-making is to create a tune. But first we need to create the 8 notes in the octave from middle C to upper C. These will then be placed in a routine and looped.
One feature that may go un-noticed is the length of each note. As the note increases in frequency, the number of cycles has to be increased so that the length of the note is the same as the others. That’s why each note must have two variables - the duration of the HIGH/ LOW and the number of cycles. The advantage of knowing the time taken to execute each instruction means you can work out the time taken for each sub-routine and thus get the frequency of each note accurate without having to measure it with a Frequency Counter. We checked the frequency of each note and found it to be only about 2 cycles from the accepted value.
We used a 4MHz crystal when writing this experiment and the notes will alter if the RC components on the PC board do not create a 4MHz oscillator.
If you want a much cleaner and clearer output from the project, use a mini speaker in place of the piezo.

Experiment-7P for Piezo on “5x7 Display” Project
;PIC16F84 and only F84 chip
;Creating a SCALE

Start     ORG 0x00
          BSF 03,5    ;Go to page1 to set up the ports
          MOVLW 00h   ;Put 00 into W
          MOVWF 05h   ;Make all RA lines output
          MOVWF 06h   ;Make all RB lines output
          BCF 03,5    ;Go to Page0 for programming
          GOTO Main

Note      MOVLW 80h   ;Toggle the piezo line.
          XORWF 06h,1
          MOVF 1A,0   ;Copy file 1A into W
          MOVWF 1Ch   ;Move W into file 1C
          CALL Delay  ;Call Delay
          DECFSZ 1Bh,1 ;Dec file 1B for length of note
          GOTO Note
          RETURN

Delay     NOP         ;Length of ON and OFF time for Note
          NOP
          NOP
          NOP
          NOP
          DECFSZ 1Ch,1
          GOTO Delay
          RETURN

Main      MOVLW 0F0h  ;Frequency of note C - 261Hz
          MOVWF 1Ah
          MOVLW 80h   ;Length of note C
          MOVWF 1Bh
          CALL Note
          MOVLW 0D5h   ;Frequency of note D - 293Hz
          MOVWF 1Ah
          MOVLW 90h    ;Length of note D
          MOVWF 1Bh
          CALL Note
          MOVLW 0BDh   ;Frequency of note E - 330Hz
          MOVWF 1Ah
          MOVLW 0A0h   ;Length of note E
          MOVWF 1Bh
          CALL Note
          MOVLW 0B2h   ;Frequency of note F - 349Hz
          MOVWF 1Ah
          MOVLW 0B0h   ;Length of note F
          MOVWF 1Bh
          CALL Note
          MOVLW 09Fh   ;Frequency of note G - 392Hz
          MOVWF 1Ah
          MOVLW 0C0h   ;Length of note G
          MOVWF 1Bh
          CALL Note
          MOVLW 08Dh   ;Frequency of note A - 440Hz
          MOVWF 1Ah
          MOVLW 0D0h   ;Length of note A
          MOVWF 1Bh
          CALL Note
          MOVLW 07Eh   ;Frequency of note B - 494Hz
          MOVWF 1Ah
          MOVLW 0E0h   ;Length of note B
          MOVWF 1Bh
          CALL Note
          MOVLW 077h   ;Frequency of note C' - 523Hz
          MOVWF 1Ah
          MOVLW 0F0h   ;Length of note C'
          MOVWF 1Bh
          CALL Note
          GOTO Main

    END

The block of numbers below is the HEX file for Experiment-7P. Copy and paste it into a text program such as TEXTPAD or NOTEPAD and call it: Expt7P.hex

:10000000831600308500860083121628803086060D
:100010001A089C000E209B0B062808000000000018
:100020000000000000009C0B0E280800F0309A0031
:1000300080309B000620D5309A0090309B0006202F
:10004000BD309A00A0309B000620B2309A00B0303C
:100050009B0006209F309A00C0309B0006208D3008
:100060009A00D0309B0006207E309A00E0309B0042
:0E007000062077309A00F0309B0006201628FC
:00000001FF

EXPERIMENT-8P Creating a tune

This experiment shows how to set up sub-routines for each note so they can be CALLed by using a single instruction.

Experiment-8P for Piezo on “5x7 Display” Project
;PIC16F84
;Creating a TUNE
;Oh, When The Saints

Start     ORG 0x00
          BSF 03,5    ;Go to page1 to set up the ports
          MOVLW 00h   ;Put 00 into W
          MOVWF 05h   ;Make all RA lines output
          MOVWF 06h   ;Make all RB lines output
          BCF 03,5    ;Go to Page0 for programming
          GOTO Main


C         MOVLW 80h
          MOVWF 1Bh
NoteC     MOVLW 80h   ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 0F0h
          MOVWF 1Ah
          CALL Delay  ;Call Delay
          DECFSZ 1Bh,1 ;Dec file 1B for length of note
          GOTO NoteC
          RETURN

D         MOVLW 90h
          MOVWF 1Bh
NoteD     MOVLW 80h   ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 0D5h
          MOVWF 1Ah
          CALL Delay  ;Call Delay
          DECFSZ 1Bh,1;Dec file 1B for length of note
          GOTO NoteD
          RETURN

E         MOVLW 0A0h
          MOVWF 1Bh
NoteE     MOVLW 80h   ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 0BDh
          MOVWF 1Ah
          CALL Delay   ;Call Delay
          DECFSZ 1Bh,1 ;Dec file 1B for length of note
          GOTO NoteE
          RETURN

F         MOVLW 0B0h
          MOVWF 1Bh
NoteF     MOVLW 80h   ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 0B2h
          MOVWF 1Ah
          CALL Delay   ;Call Delay
          DECFSZ 1Bh,1 ;Dec file 1B for length of note
          GOTO NoteF
          RETURN

G         MOVLW 0C0h
          MOVWF 1Bh
NoteG     MOVLW 80h     ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 9Fh
          MOVWF 1Ah
          CALL Delay    ;Call Delay
          DECFSZ 1Bh,1  ;Dec file 1B for length of note
          GOTO NoteG
          RETURN

A         MOVLW 0D0h
          MOVWF 1Bh
NoteA     MOVLW 80h     ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 8Dh
          MOVWF 1Ah
          CALL Delay    ;Call Delay
          DECFSZ 1Bh,1  ;Dec file 1B for length of note
          GOTO NoteA
          RETURN

BB        MOVLW 0E0h
          MOVWF 1Bh
NoteB     MOVLW 80h     ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 7Eh
          MOVWF 1Ah
          CALL Delay    ;Call Delay
          DECFSZ 1Bh,1  ;Dec file 1B for length of note
          GOTO NoteB
          RETURN

CC        MOVLW 0F0h
          MOVWF 1Bh
NoteCC    MOVLW 80h    ;Toggle the piezo line.
          XORWF 06h,1
          MOVLW 77h
          MOVWF 1Ah
          CALL Delay   ;Call Delay
          DECFSZ 1Bh,1 ;Dec file 1B for length of note
          GOTO NoteCC
          RETURN



Delay     NOP          ;Length of ON and OFF time for Note
          NOP
          NOP
          NOP
          NOP
          DECFSZ 1Ah,1
          GOTO Delay
          RETURN

   ;Oh, When the Saints Come Marching in:

Main      CALL C
          CALL E
          CALL F

          CALL G
          CALL G
          CALL G
          CALL G

          CALL G
          CALL C
          CALL E
          CALL F

          CALL G
          CALL G
          CALL G
          CALL G

          CALL G
          CALL C
          CALL E
          CALL F

          CALL G
          CALL G
          CALL E
          CALL E

          CALL C
          CALL C
          CALL E
          CALL E

          CALL D
          CALL D
          CALL D
          CALL D

          CALL D
          CALL Delay
          CALL Delay
          CALL E
          CALL D

          CALL C
          CALL C
          CALL Delay
          CALL C
          CALL C

          CALL E
          CALL E
          CALL G
          CALL G

          CALL G
          CALL F
          CALL F
          CALL F

          CALL F
          CALL F
          CALL E
          CALL F

          CALL G
          CALL G
          CALL E
          CALL E

          CALL D
          CALL D
          CALL Delay
          CALL D
          CALL D

          CALL C
          CALL C
          CALL C
          CALL Delay
          CALL C

          GOTO Main

  END

The block of numbers below is the HEX file for Experiment-8P. Copy and paste it into a text program such as TEXTPAD or NOTEPAD and call it: Expt8P.hex

:10000000831600308500860083125E2880309B00B6
:1000100080308606F0309A0056209B0B0828080096
:1000200090309B0080308606D5309A0056209B0B7E
:1000300012280800A0309B0080308606BD309A0050
:1000400056209B0B1C280800B0309B008030860691
:10005000B2309A0056209B0B26280800C0309B0027
:10006000803086069F309A0056209B0B302808006F
:10007000D0309B00803086068D309A0056209B0B36
:100080003A280800E0309B00803086067E309A00D7
:1000900056209B0B44280800F0309B0080308606D9
:1000A00077309A0056209B0B4E2808000000000075
:1000B0000000000000009A0B5628080006201A20B5
:1000C00024202E202E202E202E202E2006201A2006
:1000D00024202E202E202E202E202E2006201A20F6
:1000E00024202E202E201A201A20062006201A2036
:1000F0001A201020102010201020102056205620EA
:100100001A201020062006205620062006201A203D
:100110001A202E202E202E202420242024202420AB
:1001200024201A2024202E202E201A201A201020CD
:1001300010205620102010200620062006205620D1
:0401400006205E280F
:00000001FF

You now have the option of going over the experiments again or starting to write your own programs.
To produce your own programs you will need a program called MPASM. This will assemble the programs you write on Notepad and create a .hex file (as well as other files).
Before you start writing programs, go to PIC Theory.



Colin Mitchell

Colin Mitchell

Expertise

electronics
writing
PIC-Chips

Social Media

instagramtwitterwebsite

Related Posts

TODO
Transistor Test
© 2021, All Rights Reserved.

Quick Links

Advertise with usAbout UsContact Us

Social Media