Isi kandungan:
- Langkah 1: Wawasan
- Langkah 2: Permulaan Pelabuhan
- Langkah 3: Kuasa Ultra Rendah
- Langkah 4: PEMASA
- Langkah 5: Mod Kuasa Rendah
- Langkah 6: Pemasa ISR
- Langkah 7: Gangguan Perkakasan
- Langkah 8: ISR- Tetapkan Semula / Butang Tekan
- Langkah 9: KOD
- Langkah 10: Kod Rujukan
Video: Kaunter Detik MSP430: 10 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
Selamat datang! Pembuatan Pembilang Detik: Menggunakan CCStudio 8 dan MSP430F5529 untuk projek tersebut.
Bahasa C untuk kod pengawal mikro. Menerapkan Mod, Pemasa dan Gangguan Kuasa Rendah. Output dipaparkan melalui 7 Segmen.
Langkah 1: Wawasan
Mari kita mulakan!
Memulakan pemasa pengawas ke keadaan MATI menggunakan kata laluan yang diperlukan untuk pemasa pengawas (Ini membantu untuk memeriksa gelung tanpa batas, menjaga pemproses selamat).
#sertakan
/ ** * main.c * /
int utama (tidak sah)
{
WDTCTL = WDTPW | WDTHOLD; // berhenti pemasa pengawas
pulangan 0;
}
Langkah 2: Permulaan Pelabuhan
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 memberitahu kita bahawa keseluruhan PORT-3 diinisialisasi untuk mengambil input.
P3DIR | = 0xFF memberitahu kita bahawa keseluruhan PORT-3 diinisialisasi untuk memberikan output.
P3DIR | = 0x01 hanya pin P3.0 yang diinisialisasi ke output dalam PORT-3. Ini mengikuti pemetaan Port Heksadesimal.
P4REN | = 0xFF, ini menunjukkan bahawa pin PORT-4 mempunyai perintang tarikan atas / bawah mereka diaktifkan.
Untuk memilihnya antara Pull UP atau Pull DOWN, arahan P $ OUT | = 0xFF digunakan.
Sekiranya 0xFF digunakan mereka mengkonfigurasi sebagai perintang Pull UP dan jika 0x00 mereka mengkonfigurasi sebagai Tarik KE BAWAH.
Langkah 3: Kuasa Ultra Rendah
MSP430F5529 membolehkan kita mengurangkan kehilangan kuasa dari pemproses. Ini berguna dalam aplikasi mandiri.
Ini memerlukan pengisytiharan untuk mengeluarkan semua pin atau Pelabuhan.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Langkah 4: PEMASA
Penggunaan pemasa untuk penjanaan kelewatan satu saat. Ini menggunakan SMCLK 1MHz, juga pemasa berjalan dalam Mod daya rendah (pada langkah seterusnya, setelah kiraannya terganggu dari LPM). Proses ini menjimatkan kuasa dan beban pada pemproses
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Nilai adalah 999, kerana jumlah yang diperlukan sekali lagi untuk kembali ke sifar dalam daftar pemasa.
Langkah 5: Mod Kuasa Rendah
_BIS_SR (LPM0_bits + GIE);
Ini membolehkan General Interrupt Enable (GIE), dan meletakkan CPU ke LPM0, di mana MCLK yang menyokong cpu dimatikan, dan SMCLK dan ACLK dijalankan yang memastikan pemasa berjalan. sehingga kita dapat melihat CPU dimatikan, di sana dengan menjimatkan kuasa.
Langkah 6: Pemasa ISR
#pragma vektor = TIMER0_A0_VECTOR
_teruskan kekosongan Pemasa_A (tidak sah)
{
z ++;
jika (z> kelewatan)
{
P3OUT = kod [x];
P6OUT = kod1 [y];
x ++;
jika (x == 10)
{
x = 0;
y ++;
}
jika (y == 6)
y = 0;
z = 0;
}
}
vektor pragma adalah untuk perwakilan ISR di C embd.
kod [x] dan kod1 [y] adalah tatasusunan yang mengandungi nilai output untuk dua tujuh segmen, untuk memaparkan pembilang 60 saat.
Langkah 7: Gangguan Perkakasan
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Di sini P2.1 dinyatakan sebagai gangguan perkakasan, jika butang ditekan, kaunter diset semula ke nilainya.
program selebihnya ditulis dalam ISR gangguan ini.
Langkah 8: ISR- Tetapkan Semula / Butang Tekan
#pragma vektor = PORT2_VECTOR
_menutup port kosong_2 (tidak sah)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kod [x];
P6OUT = kod1 [y];
v ++;
untuk (i = 0; i
{
P1OUT | = BIT0; //P1.0 = togol
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = togol
_delay_cycles (1048576);
}
ISR ini menetapkan semula kaunter, dan mengira berapa kali selebihnya ditekan.
(Berikut adalah tampilan yang dibuat melalui toggle led, juga dapat menggunakan array dan timer lain, untuk menunjukkan nilai-nilai tersebut sebagai output dalam 7 segmen).
Langkah 9: KOD
#sertakan
#tentukan kelewatan 1000
kod char = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
kod char1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
int tidak bertanda yang tidak menentu x = 0, y = 0, z = 0;
tidak bertanda int v = 0, i = 0;
kekosongan utama ()
{
WDTCTL = WDTPW | WDTHOLD; // berhenti pemasa pengawas
P7DIR | = 0xFF;
P7OUT | = 0x00;
P8DIR | = 0xFF;
P8OUT | = 0x00;
P4DIR | = 0xFF;
P4OUT | = 0x00;
P5DIR | = 0xFF;
P5OUT | = 0x00;
P1DIR = 0xFF;
P3DIR = 0xFF;
P6DIR = 0xFF;
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
_BIS_SR (LPM0_bits + GIE);
}
// Pemasa A0 mengganggu rutin perkhidmatan
#pragma vektor = TIMER0_A0_VECTOR
_ interrupt void Timer_A (tidak sah)
{
z ++;
jika (z> kelewatan)
{
P3OUT = kod [x];
P6OUT = kod1 [y];
x ++;
jika (x == 10)
{
x = 0;
y ++;
}
jika (y == 6)
y = 0;
z = 0;
}
}
// Perkakasan mengganggu rutin perkhidmatan
#pragma vektor = PORT2_VECTOR
_menutup port kosong_2 (tidak sah)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kod [x];
P6OUT = kod1 [y];
v ++;
untuk (i = 0; i
{P1OUT | = BIT0; // P1.0 = togol
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = togol
_delay_cycles (1048576);
}
}
Langkah 10: Kod Rujukan
Repositori GitHub
Disyorkan:
Kaunter Pelawat Menggunakan Sensor 8051 dan IR Dengan LCD: 3 Langkah
Kaunter Pelawat Menggunakan Sensor 8051 dan IR Dengan LCD: Kawan-kawan yang terhormat, saya telah menerangkan cara membuat kaunter pelawat menggunakan sensor 8051 dan IR dan memaparkannya di LCD. 8051 adalah salah satu pengawal mikro yang paling popular digunakan untuk membuat hobi, aplikasi komersial di seluruh dunia. Saya telah membuat
KAUNTER FREKUENSI CMOS: 3 Langkah
COUNTER FREQUENCY CMOS: Ini panduan dengan PDF dan gambar yang disertakan bagaimana saya merancang pembilang Frekuensi saya sendiri untuk berseronok kerana logik diskrit. Saya tidak akan menerangkan secara terperinci mengenai bagaimana saya membuat babi litar atau cara memasangkannya tetapi skema dibuat dalam KICAD yang bebas lembut
Kaunter Langkah - Mikro: Bit: 12 Langkah (dengan Gambar)
Langkah Kaunter - Mikro: Bit: Projek ini akan menjadi langkah balas. Kami akan menggunakan sensor pecutan yang terpasang pada Mikro: Bit untuk mengukur langkah kami. Setiap kali Mikro: Bit bergetar kita akan menambahkan 2 pada jumlah dan memaparkannya di skrin
Tukar Tepuk (40 Tepuk dalam 5 Detik): 4 Langkah (dengan Gambar)
Clap Switch (40 Claps in 5 Second): Clap Switch mempunyai keupayaan untuk menghidupkan / mematikan komponen elektrik dengan menyambungkan output litar ke relay switch. Di sini kita akan membuat pertukaran tepukan dengan beberapa komponen dengan penjelasan yang sangat baik. Berbanding dengan semua pertukaran tepukan lain
Bunuh Semua Data dalam CD / DVD dalam 5 Detik atau Kurang: 3 Langkah
Bunuh Semua Data dalam CD / DVD dalam 5 Detik atau Kurang: Bunuh Semua Data pada CD / DVD dalam 5 saat atau kurang. Mengapa anda mahu melakukan ini: ++ Hancurkan sandaran lama beberapa tahun ++ Ingatlah anda membakar masa khas bilik ke DVD ++ Mantan anda menginginkan CD / DVD belakang. ++ MENYENANGKAN DENGAN AOL DISK !!!! LOL