สารบัญ:

นาฬิกาปลุกเบสิก 3: 9 ขั้นตอน
นาฬิกาปลุกเบสิก 3: 9 ขั้นตอน

วีดีโอ: นาฬิกาปลุกเบสิก 3: 9 ขั้นตอน

วีดีโอ: นาฬิกาปลุกเบสิก 3: 9 ขั้นตอน
วีดีโอ: วิธีใช้การตั้งปลุก วิธีใช้ตั้งเตือนรายชั่วโมง CASIO AE-1500WH 2024, พฤศจิกายน
Anonim
นาฬิกาปลุกเบส 3 ตัว
นาฬิกาปลุกเบส 3 ตัว

โครงการของเราสร้างนาฬิกาปลุกโดยใช้บอร์ด Basy 3 FPGA, Arduino และบอร์ดไดรเวอร์ลำโพง ผู้ใช้สามารถป้อนเวลาปัจจุบันไปยังบอร์ดได้โดยใช้สวิตช์อินพุต 11 ตัวบน Basy 3 และล็อคค่าโดยใช้ปุ่มตรงกลางบนบอร์ด จากนั้นผู้ใช้สามารถป้อนเวลาปลุกโดยใช้สวิตช์เดียวกัน แต่กดปุ่มซ้ายเพื่อล็อคเวลาปลุก หากป้อนเวลาผิด สามารถกดปุ่มรีเซ็ต (ปุ่มบนสุด) ได้ และตั้งเวลานาฬิกาปัจจุบันและเวลาปลุกเป็น 00:00 น. จากนั้นผู้ใช้สามารถเริ่มนาฬิกาโดยใช้สวิตช์ด้านซ้ายสุดและเปิดนาฬิกาปลุกโดยใช้สวิตช์ถัดไป เมื่อเปิดนาฬิกาปลุก นาฬิกาปลุกจะส่งเสียงเมื่อเวลานาฬิกาและตั้งเวลาปลุกตรงกัน

ขั้นตอนที่ 1: ไดอะแกรมกล่องดำ

ไดอะแกรมกล่องดำ
ไดอะแกรมกล่องดำ
ไดอะแกรมกล่องดำ
ไดอะแกรมกล่องดำ

เราเริ่มโครงการของเราด้วยการวาดไดอะแกรมกล่องดำเพื่อแสดงภาพอินพุตและเอาต์พุตที่จำเป็นในโปรแกรมของเรา อินพุตต่อไปนี้สำหรับโปรแกรมของเรา เช่น อินพุต 5 บิต (Hour_in) ถูกกำหนดค่าเริ่มต้นเพื่อระบุเวลา 24 ชั่วโมง, อินพุต 6 บิต (Min_in) เพื่อแสดงสูงสุด 60 นาที ปุ่มรีเซ็ต (Rst_b) เพื่อให้ผู้ใช้ เปลี่ยนอินพุตเวลา, อินพุต 1 บิต (alm_en) ซึ่งโหลดอินพุตสัญญาณเตือน, อินพุต 1 บิต (alarm_sw) เพื่อปิดนาฬิกาปลุกเมื่อเปิดใช้งาน, อินพุต 1 บิต (e_sec) ที่ควบคุมเมื่อตัวนับ วินาทีจะทำงาน อินพุต 1 บิต (Led_btn) ที่ตั้งเวลาปัจจุบัน และสุดท้ายคืออินพุต 1 บิต (clk) ที่ควบคุมเวลาที่แสดงโดยบอร์ด Basy 3 เอาต์พุตคือ (alm_on) ซึ่งส่งสัญญาณไปยัง Arduino เอาต์พุต sseg ที่แสดงเวลาอินพุตบน Basys 3 และเอาต์พุตแอโนดที่ควบคุมตำแหน่งที่อินพุตจะแสดงบนจอแสดงผลทั้งเจ็ดส่วน

ขั้นตอนที่ 2: นาฬิกาช้า

นาฬิกาช้า
นาฬิกาช้า

ไฟล์นาฬิกาช้าหรือ clock_div2 สร้างนาฬิกาที่มีความถี่ 2 hz ถ้าเราป้อนนาฬิกานี้ไปยังตัวนับวินาที ค่าวินาทีจะเพิ่มขึ้นหนึ่งวินาที นาฬิกาช้าใช้เพื่อสร้างสัญญาณนาฬิกาที่เชื่อถือได้ซึ่งเปลี่ยนจากต่ำไปสูงหนึ่งครั้งต่อวินาที

ขั้นตอนที่ 3: เคาน์เตอร์

เคาน์เตอร์
เคาน์เตอร์
เคาน์เตอร์
เคาน์เตอร์

ตัวนับส่วนประกอบ (นาทีและวินาที):

ฟังก์ชันพื้นฐานของนาทีและวินาทีคือตัวนับ ตัวนับนาทีรับอินพุต (Vin) ซึ่งเป็นสัญญาณจากอินพุต (Min_in) แล้วนับจนกว่าจะถึงอินพุตที่ต้องการ วินาทีใช้เฉพาะอินพุตของสวิตช์ (e_Sec) เนื่องจากไม่สามารถแสดงในเจ็ดส่วนได้ และจะนับในพื้นหลังเมื่อสวิตช์สูง '1' พวกเขาทั้งคู่ส่งออกค่าไปที่ (Qout) จากนั้นจะถูกเก็บไว้ใน (ข้อมูล) ที่ส่งไปยัง SSEG ซึ่งทำในไฟล์เชื่อมโยง นอกจากนี้ เมื่อนาทีและวินาทีถึงค่า 59 จะรีเซ็ต และผลลัพธ์คือ '1' เพื่อเพิ่มนาที/ชั่วโมง นอกจากนี้ยังสามารถแมปด้วยการรีเซ็ต (rst_b) กับอินพุตของพวกเขา

ขั้นตอนที่ 4: เคาน์เตอร์ชั่วโมง

เคาน์เตอร์ชั่วโมง
เคาน์เตอร์ชั่วโมง
เคาน์เตอร์ชั่วโมง
เคาน์เตอร์ชั่วโมง

ส่วนประกอบเคาน์เตอร์ชั่วโมง

ในทำนองเดียวกัน กับตัวนับองค์ประกอบของนาทีและวินาทีที่ส่วนประกอบชั่วโมงรับอินพุต เช่น (Vin) ซึ่งเป็นสัญญาณจากการเชื่อมโยงอินพุตไฟล์ (Hour_in) และมีเอาต์พุตที่เชื่อมโยงในลักษณะเดียวกับนาทีและวินาที เมื่อค่าการนับชั่วโมงถึง 24 00 จะรีเซ็ตเป็น 00 00

ขั้นตอนที่ 5: ปลุก

เตือน
เตือน
เตือน
เตือน
เตือน
เตือน
เตือน
เตือน

ไฟล์.vhd สัญญาณเตือนประกอบด้วย d-flip-flop ซึ่งเป็นอุปกรณ์จัดเก็บข้อมูลที่สามารถจัดเก็บข้อมูลดิจิทัลได้ ไฟล์การเตือนถูกใช้เพื่อจัดเก็บเวลาที่จะเปิดใช้งานการเตือน ในการเก็บข้อมูลชั่วโมง (อินพุต 5 บิต) และนาที (อินพุต 6 บิต) เราต้องประทับตรา 11 d-flip-flop ภายในไฟล์สัญญาณเตือนของเรา ในการทำเช่นนี้ ก่อนอื่นเราต้องนำเข้าตรรกะที่ควบคุมการทำงานของ d-flip-flop และแมปส่วนประกอบ d-flip-flop ทั้ง 11 ตัวจะเก็บข้อมูลหนึ่งบิตจากอินพุตและอนุญาตให้จับคู่ข้อมูลกับเอาต์พุตของไฟล์สัญญาณเตือน เนื่องจาก d-flip-flops เก็บข้อมูล เราจึงสามารถใช้ข้อมูลดังกล่าวได้ในเวลาต่อมา แม้ว่าสวิตช์อินพุตจะมีการเปลี่ยนแปลง

ขั้นตอนที่ 6: Universal Seven Segment Display Driver

Universal Seven Segment Display Driver
Universal Seven Segment Display Driver
Universal Seven Segment Display Driver
Universal Seven Segment Display Driver
Universal Seven Segment Display Driver
Universal Seven Segment Display Driver

ไดรเวอร์จอแสดงผลเจ็ดส่วนสากลรับอินพุตจากชุดนาฬิกาและนาฬิกา และสามารถส่งออกไปยังจอแสดงผลเจ็ดส่วนบนบอร์ดได้ คนขับสามารถแสดงจำนวนการนับแยกกันบนกระดานได้สองครั้งในคราวเดียว เราใช้ฟังก์ชันนี้เพื่อแสดงทั้งเวลาชั่วโมงและเวลานาทีแยกกัน การแสดงเจ็ดส่วนสามารถเปิดใช้งานได้ครั้งละหนึ่งหมายเลขเท่านั้น ดังนั้นไฟล์ sseg จะต้องใช้มัลติเพล็กซ์เพื่อแสดงตัวเลขทั้งหมดของเวลาพร้อมกัน สัญญาณนาฬิกาของบอร์ดถูกป้อนเข้าสู่ sseg เพื่อให้เวลาที่ถูกต้องสำหรับมัลติเพล็กซ์ ตัวเข้ารหัสทศนิยมแบบไบนารีเป็นเลขฐานสองจำเป็นในการแปลงอินพุตเป็นไฟล์เป็นรูปแบบที่สามารถส่งออกไปยังจอแสดงผลเจ็ดส่วน เอาต์พุตสุดท้ายของไฟล์ sseg ถูกแมปกับการแสดงผลเจ็ดเซ็กเมนต์ และเวลาที่ถูกต้องจะแสดงบนจอแสดงผล

ขั้นตอนที่ 7: ลิงก์ไฟล์

ลิงค์ไฟล์
ลิงค์ไฟล์
ลิงค์ไฟล์
ลิงค์ไฟล์
ลิงค์ไฟล์
ลิงค์ไฟล์

ไฟล์ลิงก์เชื่อมต่อส่วนอื่นๆ ทั้งหมดของโปรแกรมและจับคู่สัญญาณไปยังตำแหน่งที่ถูกต้อง แต่ละองค์ประกอบถูกนำเข้ามาและสร้างอินสแตนซ์ภายในไฟล์ สัญญาณใช้เพื่อถ่ายโอนข้อมูลจากส่วนประกอบหนึ่งไปยังอีกส่วนประกอบหนึ่ง การแมปพอร์ตจะเป็นไปตามไดอะแกรมกล่องดำที่แสดงด้านบน ไฟล์ลิงก์ยังมีตรรกะที่ควบคุมเมื่อเปิดใช้งานการเตือน โครงการส่วนใหญ่จะแล้วเสร็จในจุดนี้ งานที่เหลือกำลังกำหนดเส้นทางแต่ละสัญญาณไปยังตำแหน่งที่เหมาะสม

ขั้นตอนที่ 8: Arduino

Arduino
Arduino
Arduino
Arduino

Arduino ใช้เพื่อเปิดใช้งานลำโพงรวมถึงควบคุมเสียงและระยะเวลาของโน้ตที่เล่นผ่านลำโพง Arduino อ่านสัญญาณดิจิตอลจากบอร์ด Basys 3 เมื่อสัญญาณนี้สูง Arduino จะส่งสัญญาณ PWM ควบคุมเสียงและระยะเวลาของการเตือน สัญญาณเอาท์พุตจาก Arduino เชื่อมต่อกับสัญญาณอินพุตของบอร์ดไดรเวอร์ลำโพงซึ่งเพิ่มระดับเสียงของลำโพง Arduino ทำกระบวนการนี้ซ้ำหลายครั้งต่อวินาทีอย่างรวดเร็ว

ขั้นตอนที่ 9: การกำหนดเส้นทางเคเบิล

การเดินสายเคเบิล
การเดินสายเคเบิล

บอร์ด Arduino และ Basys 3 ต้องเชื่อมต่อทางกายภาพเพื่อถ่ายโอนสัญญาณระหว่างบอร์ด สายเคเบิลแรกที่ต่อสายจะเป็นจากพินกราวด์ของ JA PMOD ของ Basys 3 ไปยังพินกราวด์ของ Arduino ถัดไปเชื่อมต่อสายจากพิน 1 ของ JA PMOD ของ Basys 3 กับพินดิจิทัล 7 ของ Arduino ถัดไป เชื่อมต่อพินกราวด์สองพินจาก Arduino กับพินกราวด์ของไดรเวอร์ลำโพง จากนั้นเชื่อมต่อเอาต์พุต 3.3 V ของ Arduino กับพิน Vcc ของไดรเวอร์ลำโพง ถัดไป เชื่อมต่อพินดิจิทัล 9 ของ Arduino กับพินอินของไดรเวอร์ลำโพง

แนะนำ: