PIC Microcontroller Circuit

M

me_guitarist

Guest
Noen som vet om PIC micro controller sound generator krets?
Jeg vil lage en krets med 2 valgbare toner, men vet ikke hvor du skal begynne.

 
Największy portal społecznościowy wprowadzi nowe możliwości w ustawieniach prywatności swoich użytkowników. Największą różnicę odczują nowi użytkownicy serwisu.

Read more...
 
Den eneste måten man virkelig kan gjøre er å sende puls tog til en enkelt bit port.Du kan koble denne til en forsterker, eller kjøre en høy impedans høyttalere eller svinger direkte, hvis det er bare for lave lyder.En enkelt tone ville være rettferdig bytte porten på / av til en forhåndsbestemt kurs, vanligvis ved å gjøre det i en sløyfe.Du selv har pulsed toner ved å kjøre en sløyfe i en loop.Her er et lite program jeg gjorde med sønnen min, for flere år siden, er det noen lyd looper i det, og det er skrevet i CCS C.

/ * Program av Chris Gill, Rastrick High "Med hjelp fra pappa»
Lite spill for PIC 16F84 MCU (CCS C Compiler)

Når Den grønne lampen lyser, må du trykke på knappen
å løfte opp en kolonne med lysdioder.Trykker på knappen mens
Grønne lyset er av, vil føre til en taper.Trykker mens Green
Lyset er på, vil resultere i en annen rød LED belysning (fra bunnen)
Du vinner når alle de røde lysene lyser.Losing og vinnende avsted forskjellige
lyder og lys.Trykk og slipp knappen for å starte.* /# include <16F84.h> / / Inneholder Pin / Port Delay Definisjoner Etc
# USE STANDARD_IO (b) / / Standard Port B Innstillinger

# sikringer XT, NOWDT, NOPROTECT / / MCU Setup
# bruke forsinkelse (klokke = 4000000) / / 4MHZ OSC

# define Tower output_b / Tower Tilordnet til Port B
# define Knapp PIN_A0 / / Play-knapp
# define SS PIN_A1 / / Speed Switch
# define Sounder PIN_A2 / / Speaker O / P
# define GoLed PIN_A3 / / Klar / Start Led
static unsigned char Loop, Loop2, Accum, Delay, Speed; / / Global variabel
statiske int1 Flag; / trykkes Indicator

/ / FUNKSJONER
////////////////////////////////////////////////// ////////////////////////////////////////////////
/ / Du Miste Function
void Lose (void)
(
unsigned char SoundLoop;
for (SoundLoop = 0; SoundLoop <100; SoundLoop ) / / Low Tone
(output_high (Sounder); delay_ms (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kjølig" border="0" />

; output_low (Sounder); delay_ms (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kjølig" border="0" />

;)

Tower (0xFF);
delay_ms (100); / / kollapser Tower
Tower (0x7f);
delay_ms (100); / / Decimal 255,127,63,31,15,7,3,0
Tower (0x3f);
delay_ms (100);
Tower (0x1f);
delay_ms (100);Lagt etter 3 minutter:Sorry for en eller annen grunn alt det ble ikke sendt.Gi meg beskjed hvis det er nyttig, og jeg vil sende resten.Du kan gjøre en lignende ting i grunnleggende, eller andre språk selvfølgelig.Lagt etter 54 minutter:Jeg har sendt den igjen for fullstendighet.Håper det hjelper.Beklager, ikke veldig godt strukturert.Gjort det meste av min sønn da han var rundt 13.Kan trenge litt endringer for senere kompilatorer.Du bør få ideen hvordan lydene lages selv.Jeg gjorde en gang finne en artikkel av googling, om å spille melodier på et bilde.Dette ble gjort fra datatabeller tror jeg.MCUs pleier ikke å ha gode produksjonsanlegg innebygd, slik at alle heller råolje egentlig, men det fungerer etter en mote.# include <16F84.h> / / Inneholder Pin / Port Delay Definisjoner Etc
# USE STANDARD_IO (b) / / Standard Port B Innstillinger

# sikringer XT, NOWDT, NOPROTECT / / MCU Setup
# bruke forsinkelse (klokke = 4000000) / / 4MHZ OSC

# define Tower output_b / Tower Tilordnet til Port B
# define Knapp PIN_A0 / / Play-knapp
# define SS PIN_A1 / / Speed Switch
# define Sounder PIN_A2 / / Speaker O / P
# define GoLed PIN_A3 / / Klar / Start Led
static unsigned char Loop, Loop2, Accum, Delay, Speed; / / Global variabel
statiske int1 Flag; / trykkes Indicator

/ / FUNKSJONER
////////////////////////////////////////////////// ////////////////////////////////////////////////
/ / Du Miste Function
void Lose (void)
(
unsigned char SoundLoop;
for (SoundLoop = 0; SoundLoop <100; SoundLoop ) / / Low Tone
(output_high (Sounder); delay_ms (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kjølig" border="0" />

; output_low (Sounder); delay_ms (

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kjølig" border="0" />

;)

Tower (0xFF);
delay_ms (100); / / kollapser Tower
Tower (0x7f);
delay_ms (100); / / Decimal 255,127,63,31,15,7,3,0
Tower (0x3f);
delay_ms (100);
Tower (0x1f);
delay_ms (100);
Tower (0x0F);
delay_ms (100);
Tower (0x07);
delay_ms (100);
Tower (0x03);
delay_ms (100);
Tower (0x00);
)
////////////////////////////////////////////////// ////////////////////////////////////////////////// / / /
/ / You WIN Function
void Win (void)
(
unsigned char SoundLoop; / / 3 Stigende Tones
for (SoundLoop = 0; SoundLoop <100; SoundLoop )
(output_high (Sounder); delay_ms (3); output_low (Sounder); delay_ms (3);)

for (SoundLoop = 0; SoundLoop <150; SoundLoop )
(output_high (Sounder); delay_ms (2); output_low (Sounder); delay_ms (2);)

for (SoundLoop = 0; SoundLoop <200; SoundLoop )
(output_high (Sounder); delay_ms (1); output_low (Sounder); delay_ms (1);)

Tower (0xFF); / / 3 Tower Blits Alle Leds
delay_ms (900); / / Decimal 255 da Zero
Tower (0x00);
delay_ms (900);
Tower (0xFF);
delay_ms (900);
Tower (0x00);
delay_ms (900);
Tower (0xFF);
delay_ms (900);
Tower (0x00);
)
////////////////////////////////////////////////// ////////////////////////////////////////////////// / / /

void main (void)
(/ / Start av Main Loop
output_high (GoLed); / / Blits Leds @ Power Up
Tower (0xFF);
delay_ms (2000);
output_low (GoLed);
Tower (0x00);

while (true)
(
/ / Mens Runs Forever
while (input (Button)); / / Vent til knappen Trykk (0)
while (! inngang (Button)); / / Wait For Button Release (1) til Start

if (! inngang (SS)) Speed = 35; / / Fast (Switch Open HIGH)
if (input (SS)) Speed = 70; / Slow (Switch Stengt LAV)
Accum = 0; / / Initial States
Delay = 0;
Flag = 0;
output_low (GoLed); / / Led OFF

for (Loop = 0; Loop <8; Loop ) / / Repeat 8 ganger i 8 Tower Leds
(
Delay = 250; / / Pseudo Random Rutinemessig
delay_ms (Delay);
delay_ms (Delay);
delay_ms (Delay);
delay_ms (Delay);
delay_ms (Delay);
delay_ms (Delay);
delay_ms (Delay);
delay_ms (Delay);
Delay = Forsinkelse 50 / / Økt GO Led, AV Perioder

if (! inngang (Button)) (Lose (); break;) / / Hindrer knappen presses tidlig (0)

output_high (GoLed); / / Trykk på knappen nå.GO Led ON

for Loop2 (= 0; Loop2 <(Speed); Loop2 )
(delay_ms (5); if (! inngang (Button)) flag = 1;) / / Button Active Time for seier

output_low (GoLed); / / Led OFF

if (Flag == 0) (Lose (); break;) / / didn't Trykk på knappen i Time

Accum = ((Accum Accum) 1);
Tower (Accum);

while (! inngang (Button)); / / Wait For Button Release (1)
if (Accum == 0xFF) Win (); / / Win Rutinemessig
Flag = 0;
) / / End of For Loop
) / / End of Main Mens Loop
) / / End of Main Function

 
HI GrandAlf,

Takk for opplysningen.
Kan en PIC 12F675 gjør to valgbare tone krets?Hvordan?Som jeg bare har PICkit2 & PIC 12F675 men vet ikke hvordan å skrive programmet og kretsdesign.

Please hjelp folkens.

 
Pretty much noen pic bør gjøre, dens ganske trivielt program.Ikke sikker på hva en Pikit2 er, men noe programmeringsspråk skal tillate deg å lese innganger, og generere et tog av pulser som beskrevet.Basic er nok raskt nok for dette, og lettere å lære enn C.

 
PICkit2 er en programmerer fra Microchip å sende data til brikken sin.

 
OK
Du trenger en kompilator for å generere hex-filen for programmerer, så du kan få data i brikken.

Foreslår at du google etter "Pic Basic Compiler" eller "Bilde C Compiler».Du skal da kunne få tak i demoen begrenset minne versjoner gratis, eller til og med noen gratis full seg.Kanskje du trenger å gjøre litt lesing, kunne kanskje noen foreslå en god bok om Pic programmering?.Du kan alltid bruke assembly språk, men thats slags vanskeligere å starte med.

 
ya Jeg fikk kompilatoren, kom det med PICkit2.
Jeg prøvde å lære meg selv, men det er vanskelig å forstå programmering språket.Så det bedre hvis u fyrene kan gi noen anelse om hvor / hvordan du skal starte på læring PIC programmering.

 
Jeg fant noen tutorial på nettet, men alle er PIC16F84A, noen hvordan du starter et program på PIC12F675?

Takk på forhånd.

 

Welcome to EDABoard.com

Sponsor

Back
Top