Სარჩევი:
- ნაბიჯი 1: გამჭრიახობა
- ნაბიჯი 2: პორტის ინიციალიზაცია
- ნაბიჯი 3: ულტრა დაბალი სიმძლავრე
- ნაბიჯი 4: დრო
- ნაბიჯი 5: დაბალი ენერგიის რეჟიმი
- ნაბიჯი 6: ISR- ტაიმერი
- ნაბიჯი 7: აპარატურის შეწყვეტა
- ნაბიჯი 8: ISR- გადატვირთვა/ დაჭერის ღილაკი
- ნაბიჯი 9: კოდი
- ნაბიჯი 10: საცნობარო კოდი
ვიდეო: MSP430 წამის მრიცხველი: 10 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
მოგესალმებით! წამების მრიცხველის დამზადება: პროექტისათვის CCStudio 8 და MSP430F5529 გამოყენება.
C ენა მიკრო კონტროლერის დასაკოდირებლად. დაბალი სიმძლავრის რეჟიმების, ტაიმერების და შეფერხებების გამოყენება. გამომავალი ნაჩვენებია 7 სეგმენტის საშუალებით.
ნაბიჯი 1: გამჭრიახობა
Მოდით დავიწყოთ!
ინიციალიზაცია მოახდინეთ გუშაგის ქრონომეტრის OFF მდგომარეობისათვის საჭირო პაროლის გამოყენებით დარაჯის ქრონომეტრის გამოყენებით (ეს ხელს უწყობს უსასრულო მარყუჟების შემოწმებას, პროცესორის დაცვას).
#ჩართეთ
/** * main.c */
მთავარი (ბათილია)
{
WDTCTL = WDTPW | WDTHOLD; // შეაჩერე გუშაგის ტაიმერი
დაბრუნება 0;
}
ნაბიჯი 2: პორტის ინიციალიზაცია
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 გვეუბნება, რომ მთელი PORT-3 ინიციალიზებულია შესასვლელად.
P3DIR | = 0xFF გვეუბნება, რომ მთელი PORT-3 ინიციალიზებულია შედეგების მისაცემად.
P3DIR | = 0x01 მხოლოდ pin P3.0 ინიციალიზებულია PORT-3– ში გამოსასვლელად. ეს მოყვება ჰექსადეციმალური პორტის რუქას.
P4REN | = 0xFF, ეს მიუთითებს იმაზე, რომ PORT-4- ის ქინძისთავებს აქვთ გაწეული/ქვემოთ მიმართული რეზისტორები ჩართული.
Pull UP ან Pull DOWN შორის მათ ასარჩევად გამოიყენება ინსტრუქცია P $ OUT | = 0xFF.
თუ 0xFF გამოიყენება, ისინი კონფიგურირდება როგორც Pull UP რეზისტორების და თუ 0x00 კონფიგურაციის როგორც Pull DOWN.
ნაბიჯი 3: ულტრა დაბალი სიმძლავრე
MSP430F5529 საშუალებას გვაძლევს შევამციროთ ენერგიის დაკარგვა პროცესორიდან. ეს სასარგებლოა დამოუკიდებელი პროგრამებისთვის.
ეს მოითხოვს გამოაქვეყნოს ყველა pin ან Ports გამომავალი.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
ნაბიჯი 4: დრო
ტაიმერის გამოყენება ერთი წამის გადადების დაგვიანებისთვის. ეს იყენებს SMCLK 1 მჰც -ს, ასევე ტაიმერი მუშაობს დაბალი სიმძლავრის რეჟიმში (მომდევნო ეტაპზე, მას შემდეგ რაც მისი დათვლა შეწყვეტილია LPM– დან). ეს პროცესი დაზოგავს ენერგიასა და ტვირთს პროცესორზე
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
ღირებულებებია 999, რადგანაც საჭიროა კიდევ ერთი დათვლა ტაიმერის რეესტრში ნულის დასაბრუნებლად.
ნაბიჯი 5: დაბალი ენერგიის რეჟიმი
_BIS_SR (LPM0_bits+GIE);
ეს შესაძლებელს ხდის გენერალური შეწყვეტის ჩართვას (GIE) და აყენებს პროცესორს LPM0– ზე, სადაც MCLK, რომელიც მხარს უჭერს cpu– ს, გამორთულია და SMCLK და ACLK მუშაობს, რომელიც ინარჩუნებს ტაიმერს. ასე რომ ჩვენ ვხედავთ პროცესორი გამორთულია, იქ ენერგიის დაზოგვით.
ნაბიჯი 6: ISR- ტაიმერი
#პრაგმის ვექტორი = TIMER0_A0_VECTOR
_ უწყვეტი სიცარიელის ტაიმერი_A (ბათილია)
{
z ++;
თუ (z> დაგვიანებით)
{
P3OUT = კოდი [x];
P6OUT = კოდი 1 [y];
x ++;
თუ (x == 10)
{
x = 0;
y ++;
}
თუ (y == 6)
y = 0;
z = 0;
}
}
პრაგმის ვექტორი არის ISR წარმომადგენლობისათვის C embd.
კოდი [x] და კოდი 1 [y] არის მასივები, რომლებიც შეიცავს გამომავალ მნიშვნელობებს ორი შვიდი სეგმენტისთვის, 60 წამის მრიცხველის ჩვენებისათვის.
ნაბიჯი 7: აპარატურის შეწყვეტა
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
აქ P2.1 გამოცხადებულია როგორც აპარატურის შეწყვეტა, თუ ღილაკზე დაჭერილია, მრიცხველი გადადის მნიშვნელობაზე.
დანარჩენი პროგრამა იწერება ამ შეფერხების ISR შიგნით.
ნაბიჯი 8: ISR- გადატვირთვა/ დაჭერის ღილაკი
#პრაგმის ვექტორი = PORT2_VECTOR
_ უწყვეტი ბათილი პორტი_2 (ბათილია)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = კოდი [x];
P6OUT = კოდი 1 [y];
v ++;
for (i = 0; i
{
P1OUT | = BIT0; //P1.0 = გადართვა
_ დაგვიანებული_ციკლები (1048576);
P1OUT & = ~ BIT0; // P1.0 = გადართვა
_ დაგვიანებული_ციკლები (1048576);
}
ეს ISR აღადგენს მრიცხველს და ითვლის, თუ რამდენჯერ იქნა დაჭერილი დანარჩენი.
(აქ არის ჩვენება დამზადებულია led გადართვის საშუალებით, ასევე შეგიძლიათ გამოიყენოთ სხვა მასივი და ტაიმერი, რომ ნახოთ ეს მნიშვნელობები გამომავალი 7 სეგმენტში).
ნაბიჯი 9: კოდი
#ჩართეთ
#განსაზღვრეთ 1000 დაგვიანება
char კოდი = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char კოდი 1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
არასტაბილური ხელმოუწერელი int x = 0, y = 0, z = 0;
არასტაბილური ხელმოუწერელი int v = 0, i = 0;
ბათილია მთავარი ()
{
WDTCTL = WDTPW | WDTHOLD; // შეაჩერე გუშაგის ტაიმერი
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);
}
// ტაიმერი A0 სერვისის შეწყვეტის რუტინა
#პრაგმის ვექტორი = TIMER0_A0_VECTOR
_ უწყვეტი სიცარიელის ტაიმერი_A (ბათილია)
{
z ++;
თუ (z> დაგვიანებით)
{
P3OUT = კოდი [x];
P6OUT = კოდი 1 [y];
x ++;
თუ (x == 10)
{
x = 0;
y ++;
}
თუ (y == 6)
y = 0;
z = 0;
}
}
// აპარატურის შეფერხების სერვისი
#პრაგმის ვექტორი = PORT2_VECTOR
_ უწყვეტი ბათილი პორტი_2 (ბათილია)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = კოდი [x];
P6OUT = კოდი 1 [y];
v ++;
for (i = 0; i
{P1OUT | = BIT0; // P1.0 = გადართვა
_ დაგვიანებული_ციკლები (1048576);
P1OUT & = ~ BIT0; // P1.0 = გადართვა
_ დაგვიანებული_ციკლები (1048576);
}
}
ნაბიჯი 10: საცნობარო კოდი
GitHub საცავი
გირჩევთ:
ვიზიტორთა მრიცხველი 8051 და IR სენსორის გამოყენებით LCD– ით: 3 ნაბიჯი
ვიზიტორების მრიცხველი 8051 და IR სენსორის გამოყენებით LCD– ით: ძვირფასო მეგობრებო, მე ავუხსენი, თუ როგორ უნდა გავაკეთოთ ვიზიტორთა მრიცხველი 8051 და IR სენსორის გამოყენებით და გამოვაჩინე იგი LCD– ში. 8051 არის ერთ -ერთი ყველაზე პოპულარული მიკროკონტროლი, რომელიც გამოიყენება ჰობის, კომერციული პროგრამების შესაქმნელად მთელს მსოფლიოში. მე გავაკეთე ვიზიტი
შიდა ჰაერის ხარისხის მრიცხველი: 5 ნაბიჯი (სურათებით)
დახურული ჰაერის ხარისხის მრიცხველი: მარტივი პროექტი თქვენს სახლში ჰაერის ხარისხის შესამოწმებლად. მას შემდეგ, რაც ამ ბოლო დროს ჩვენ სახლიდან ხშირად ვრჩებით/ვმუშაობთ, შეიძლება კარგი იდეა იყოს ჰაერის ხარისხის მონიტორინგი და შეახსენოთ საკუთარ თავს, როდესაც დროა ფანჯრის გაღება და ამოისუნთქე სუფთა ჰაერი
წაიკითხეთ ელექტროენერგიისა და გაზის მრიცხველი (ბელგიური/ჰოლანდიური) და ატვირთეთ Thingspeak– ში: 5 ნაბიჯი
წაიკითხეთ ელექტროენერგიის და გაზის მრიცხველი (ბელგიური/ჰოლანდიური) და ატვირთეთ Thingspeak– ში: თუ თქვენ დაინტერესებული ხართ თქვენი ენერგიის მოხმარებით ან სულ მცირეოდენი ნერვიულობით, თქვენ ალბათ გინდათ სმარტფონზე ნახოთ თქვენი ლამაზი ახალი ციფრული მრიცხველის მონაცემები. პროექტი ჩვენ მივიღებთ მიმდინარე მონაცემებს ბელგიური ან ჰოლანდიური ციფრული ელექტროდან
მარტივი სიხშირის მრიცხველი არდუინოს გამოყენებით: 6 ნაბიჯი
მარტივი სიხშირის მრიცხველი Arduino– ს გამოყენებით: ამ გაკვეთილში ჩვენ ვისწავლით თუ როგორ უნდა გავაკეთოთ მარტივი სიხშირის მრიცხველი Arduino– ს გამოყენებით. უყურეთ ვიდეოს
MicroBit ოთახის დასაკავებელი მრიცხველი და კონტროლერი: 4 ნაბიჯი
MicroBit ოთახების დასაკავებელი მრიცხველი და კონტროლერი: პანდემიის დროს, ვირუსის გადაცემის შემცირების ერთ -ერთი გზაა ადამიანებს შორის ფიზიკური დისტანციის მაქსიმალურად გაზრდა. ოთახებში ან მაღაზიებში, სასარგებლო იქნება იცოდეთ რამდენი ადამიანია დახურულ სივრცეში ნებისმიერ დროს. ეს პროექტი იყენებს წყვილს