LED กะพริบเป็นขั้นตอนแรกที่คุณต้องการเริ่มต้นใช้งานอุปกรณ์อิเล็กทรอนิกส์ ในบทช่วยสอนนี้เราจะเชื่อมต่อLED กับ ATmega32ซึ่งเป็นไมโครคอนโทรลเลอร์ AVR series เราจะกะพริบ LED ในอัตราครึ่งวินาที
ส่วนประกอบที่จำเป็น
ฮาร์ดแวร์:
ไมโครคอนโทรลเลอร์ ATmega32A
แหล่งจ่ายไฟ (5v)
โปรแกรมเมอร์ AVR-ISP
ตัวเก็บประจุ 100uF
LED
ตัวต้านทาน220Ω
ซอฟต์แวร์
Atmel สตูดิโอ 6.1
Progisp หรือแฟลชมายากล
คำอธิบายวงจรและการทำงาน
ดังแสดงในแผนภาพวงจรด้านบนสำหรับการเชื่อมต่อ LED กับไมโครคอนโทรลเลอร์ AVRไม่จำเป็นต้องเชื่อมต่อคริสตัลภายนอกที่นี่ เนื่องจาก ATMEGA ทำงานบนออสซิลเลเตอร์ตัวต้านทาน - ตัวเก็บประจุภายใน 1MHz ตามค่าเริ่มต้น เมื่อต้องการความแม่นยำของนาฬิกาเท่านั้นเนื่องจากการใช้การนับที่มีความแม่นยำสูงจะติดคริสตัลภายนอก เมื่อซื้อคอนโทรลเลอร์เป็นครั้งแรกระบบจะหลอมรวมเพื่อทำงานกับคริสตัลภายในโดยค่าเริ่มต้น
ตัวต้านทานเชื่อมต่อที่นี่เพื่อ จำกัด การวาดปัจจุบันจาก LED โปรดจำไว้ว่าคอนโทรลเลอร์ไม่สามารถให้มากกว่า 30mA ที่ขั้ว
คำอธิบายการเขียนโปรแกรม
โปรแกรมสำหรับไมโครคอนโทรลเลอร์ ATmega32 เพื่อกะพริบ LED ดังแสดงด้านล่าง ความคิดเห็นในโค้ดจะอธิบายวัตถุประสงค์ของแต่ละบรรทัดของโค้ด
#include // header เพื่อเปิดใช้งานการควบคุมโฟลว์ข้อมูลผ่านพิน
#define F_CPU 1000000 // บอกความถี่คริสตัลของคอนโทรลเลอร์
# รวม
int หลัก (โมฆะ)
{
DDRD = 0xFF; // (หรือ 0b1111 1111) ใน AVRSTUDIO สำหรับการบอกให้การควบคุมใช้บิตของพอร์ตเป็นอินพุตเราใช้ "ZERO" เพื่อบอกให้ใช้บิตบางส่วนเป็นเอาต์พุตเราใช้ "ONE" เนื่องจากเราใส่“ ONE” ไว้แปดพินทั้งหมดของ PORTD จึงเปิดใช้งานเป็นเอาต์พุต ถ้าเราใส่ศูนย์เป็น“ 0b1111 0111” ตอนนี้พินทั้งหมด 0,1,2,4,5,6,7 จะเปิดใช้งานเป็นอินพุตและ PIN 3 ถูกเปิดใช้งานเป็นอินพุต
ในขณะที่ (1) // วนซ้ำไปเรื่อย ๆ และไฟ LED จะกะพริบตลอดไป
{
PORTD = 0xFF; // พินทั้งหมดของ PORTD บอกว่าให้เอาต์พุต 5v หรือบอกให้ดึงสูง (LED ON)
_delay_ms (220); // หน่วงเวลา 200ms
_delay_ms (220);); // หน่วงเวลา 200ms
PORTD = 0x00; // พินทั้งหมดของ PORTD ระบุว่าให้กราวด์ที่เอาต์พุตหรือดึงลง
_delay_ms (220);); // หน่วงเวลา 200ms
_delay_ms (220);); // หน่วงเวลา 200ms
}
}