- EEPROM ใน PIC16F877A:
- แผนภาพวงจรและคำอธิบาย:
- การจำลองการใช้ PIC EEPROM:
- การเขียนโปรแกรม PIC สำหรับ EEPROM:
- การทำงาน:
ในบทช่วยสอนนี้เราจะเรียนรู้ว่าการบันทึกข้อมูลโดยใช้EEPROM ที่มีอยู่ในไมโครคอนโทรลเลอร์ PIC16F877Aนั้นง่ายเพียงใด ในโครงการเรียลไทม์ส่วนใหญ่เราอาจต้องบันทึกข้อมูลบางอย่างซึ่งไม่ควรลบแม้ว่าจะปิดเครื่อง อาจดูเหมือนเป็นกระบวนการที่ซับซ้อน แต่ด้วยความช่วยเหลือของ XC8 Compiler งานนี้สามารถทำได้โดยใช้รหัสเพียงบรรทัดเดียว หากข้อมูลมีขนาดใหญ่ในแง่ของเมกะไบต์เราสามารถเชื่อมต่อกับอุปกรณ์จัดเก็บข้อมูลเช่นการ์ด SD และจัดเก็บข้อมูลเหล่านั้นไว้ แต่เราสามารถหลีกเลี่ยงกระบวนการที่น่าเบื่อหน่ายเหล่านั้นได้หากข้อมูลมีขนาดเล็กเราสามารถใช้ EEPROM ที่มีอยู่ในไมโครคอนโทรลเลอร์ PIC เพื่อบันทึกข้อมูลของเราและเรียกดูได้ตลอดเวลาที่เราต้องการ
นี้PIC EEPROM กวดวิชาเป็นส่วนหนึ่งของลำดับของ PIC Microcontroller สอนการที่เราเริ่มต้นจากระดับพื้นฐานมากเป็น หากคุณยังไม่ได้เรียนรู้บทช่วยสอนก่อนหน้านี้ตอนนี้จะเป็นการดีกว่าถ้าคุณได้ดูบทเรียนเหล่านี้เพราะบทช่วยสอนนี้ถือว่าคุณคุ้นเคยกับการเชื่อมต่อ LCD กับไมโครคอนโทรลเลอร์ PIC และการใช้ ADC กับไมโครคอนโทรลเลอร์ PIC
EEPROM ใน PIC16F877A:
EEPROM ย่อมาจาก "Electronically Erasable and Programmable Read Only Memory" ตามชื่อที่บ่งบอกว่าเป็นหน่วยความจำที่อยู่ภายในไมโครคอนโทรลเลอร์ PIC ซึ่งเราสามารถเขียน / อ่านข้อมูลโดยการตั้งโปรแกรมให้ทำเช่นนั้น ข้อมูลที่บันทึกไว้จะถูกลบก็ต่อเมื่อมีการกล่าวถึงในโปรแกรมเท่านั้น จำนวนพื้นที่จัดเก็บที่มีอยู่ใน EEPROM จะแตกต่างกันไปตามไมโครคอนโทรลเลอร์แต่ละตัว รายละเอียดจะได้รับใน Datasheet ตามปกติ ในกรณีของเราสำหรับ PIC16F877A พื้นที่ว่างคือ 256 ไบต์ตามที่ระบุไว้ในเอกสารข้อมูลจำเพาะ ตอนนี้ให้เราดูว่าเราสามารถใช้ 256 ไบต์เหล่านี้เพื่ออ่าน / เขียนข้อมูลได้อย่างไรโดยใช้การตั้งค่าการทดลองง่ายๆ
แผนภาพวงจรและคำอธิบาย:
แผนภาพวงจรสำหรับโครงการแสดงไว้ด้านบน เราได้เชื่อมต่อ LCD เพื่อให้เห็นภาพข้อมูลที่ได้รับการบันทึกและเรียกค้น โพเทนชิออมิเตอร์ปกติเชื่อมต่อกับช่องอนาล็อก AN4 เพื่อป้อนแรงดันไฟฟ้าตัวแปรแรงดันไฟฟ้าตัวแปรนี้จะถูกใช้เป็นข้อมูลที่จะบันทึกใน EEPROM เรายังใช้ปุ่มกดบน RB0 เมื่อกดปุ่มนี้ข้อมูลจากช่องอนาล็อกจะถูกบันทึกไว้ใน EEPROM
การเชื่อมต่อนี้สามารถทำได้บนเขียงหั่นขนม พินของไมโครคอนโทรลเลอร์ PICแสดงไว้ในตารางด้านล่าง
ส. ไม่: |
หมายเลขพิน |
ชื่อพิน |
เชื่อมต่อกับ |
1 |
21 |
RD2 |
RS ของ LCD |
2 |
22 |
RD3 |
E ของ LCD |
3 |
27 |
RD4 |
D4 ของ LCD |
4 |
28 |
RD5 |
D5 ของ LCD |
5 |
29 |
RD6 |
D6 ของ LCD |
6 |
30 |
RD7 |
D7 ของ LCD |
7 |
33 |
RBO / INT |
ปุ่มกด |
8 |
7 |
AN4 |
โพเทนชิออมิเตอร์ |
การจำลองการใช้ PIC EEPROM:
โครงการนี้ยังรวมถึงการจำลองที่ออกแบบโดยใช้ Proteus ซึ่งเราสามารถจำลองการทำงานของโครงการได้โดยไม่ต้องใช้ฮาร์ดแวร์ใด ๆ โปรแกรมสำหรับการจำลองนี้มีให้ในตอนท้ายของบทช่วยสอนนี้ คุณสามารถใช้ไฟล์ Hex จากที่นี่และจำลองกระบวนการทั้งหมดได้
ในระหว่างการจำลองคุณสามารถเห็นภาพค่า ADC ปัจจุบันและข้อมูลที่บันทึกไว้ใน EEPROM บนหน้าจอ LCD หากต้องการบันทึกค่า ADC ปัจจุบันลงใน EEPROM เพียงแค่กดสวิตช์ที่เชื่อมต่อกับ RB0 และจะถูกบันทึก ภาพรวมของการจำลองแสดงอยู่ด้านล่าง
การเขียนโปรแกรม PIC สำหรับ EEPROM:
โค้ดที่สมบูรณ์สำหรับบทช่วยสอนนี้มีให้ในตอนท้ายของบทช่วยสอนนี้ ในโปรแกรมของเราเราต้องอ่านค่าจากโมดูล ADC และเมื่อกดปุ่มเราจะต้องบันทึกค่านั้นใน EEPROM ของเรา เนื่องจากเราได้เรียนรู้เกี่ยวกับ ADC และการเชื่อมต่อ LCD แล้วฉันจะอธิบายเพิ่มเติมเกี่ยวกับรหัสเพื่อบันทึกและดึงข้อมูลจาก EEPROM
ตามเอกสารข้อมูล“ อุปกรณ์เหล่านี้มีคำศัพท์โปรแกรม Flash 4 หรือ 8K โดยมีช่วงแอดเดรสตั้งแต่ 0000h ถึง 1FFFh สำหรับ PIC16F877A” ซึ่งหมายความว่าพื้นที่จัดเก็บ EEPROM แต่ละแห่งมีที่อยู่ซึ่งสามารถเข้าถึงได้และใน MCU ของเราที่อยู่จะเริ่มตั้งแต่ 0000h ถึง 1FFFh
หากต้องการบันทึกข้อมูลภายในที่อยู่ EEPROM เฉพาะให้ใช้บรรทัดด้านล่าง
eeprom_write (0, adc);
ในที่นี้“ adc” คือตัวแปรประเภทจำนวนเต็มซึ่งข้อมูลที่จะบันทึกมีอยู่ และ“ 0” คือที่อยู่ของ EEPROM ที่บันทึกข้อมูลของเรา ไวยากรณ์“ eeprom_write” จัดทำโดยคอมไพเลอร์ XC8 ของเราดังนั้นการลงทะเบียนจะได้รับการดูแลโดยอัตโนมัติโดยคอมไพเลอร์
ในการดึงข้อมูลที่เก็บไว้ใน EEPROM และบันทึกลงในตัวแปรสามารถใช้โค้ดบรรทัดต่อไปนี้ได้
Sadc = (int) eeprom_read (0);
ในที่นี้“ Sadc” คือตัวแปรที่จะบันทึกข้อมูลจาก EEPROM และ“ 0” คือที่อยู่ของ EEPROM ที่เรากำลังดึงข้อมูล ไวยากรณ์“ eeprom_read” จัดทำโดยคอมไพเลอร์ XC8 ของเราดังนั้นการลงทะเบียนจะได้รับการดูแลโดยอัตโนมัติโดยคอมไพเลอร์ ข้อมูลที่บันทึกใน EEPROM จะอยู่ในประเภทเลขฐานสิบหก ดังนั้นเราจึงแปลงเป็นประเภทจำนวนเต็มโดยนำหน้า a (int) ก่อนไวยากรณ์
การทำงาน:
เมื่อเราเข้าใจวิธีการทำงานของโค้ดและเตรียมพร้อมกับฮาร์ดแวร์แล้วเราสามารถทดสอบโค้ดได้ อัปโหลดรหัสไปยังไมโครคอนโทรลเลอร์ PIC ของคุณและเปิดการตั้งค่า หากทุกอย่างทำงานตามที่คาดไว้คุณจะเห็นค่า ADC ปัจจุบันแสดงใน LCD ตอนนี้คุณสามารถกดปุ่มเพื่อบันทึกค่า ADC ไปยัง EEPROM ตอนนี้คุณตรวจสอบว่าค่าได้รับการบันทึกหรือไม่โดยการปิดระบบทั้งหมดและเปิดอีกครั้ง เมื่อเปิดเครื่องคุณควรเห็นค่าที่บันทึกไว้ก่อนหน้านี้บนหน้าจอ LCD
การทำงานที่สมบูรณ์ของโครงการนี้ในการใช้PIC Microcontroller EEPROMแสดงอยู่ในวิดีโอด้านล่าง หวังว่าคุณจะเข้าใจบทช่วยสอนและสนุกกับการทำ หากคุณมีข้อสงสัยใด ๆ คุณสามารถเขียนไว้ในส่วนความคิดเห็นด้านล่างหรือโพสต์ไว้ในฟอรัมของเรา