ตัวจับเวลาและตัวนับในไมโครคอนโทรลเลอร์ 8051 และแอพพลิเคชั่น

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





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

มีตัวจับเวลา 16 บิตสองตัวและตัวนับใน ไมโครคอนโทรลเลอร์ 8051 : ตัวจับเวลา 0 และตัวจับเวลา 1. ตัวจับเวลาทั้งสองประกอบด้วยรีจิสเตอร์ 16 บิตซึ่งไบต์ที่ต่ำกว่าจะถูกเก็บไว้ใน TL และไบต์ที่สูงกว่าจะถูกเก็บไว้ใน TH ตัวจับเวลาสามารถใช้เป็นตัวนับและสำหรับการทำงานของเวลาที่ขึ้นอยู่กับแหล่งที่มาของพัลส์นาฬิกาไปยังเคาน์เตอร์




ตัวจับเวลาและตัวนับ

ตัวจับเวลาและตัวนับ

ตัวนับและตัวจับเวลาในไมโครคอนโทรลเลอร์ 8051 ประกอบด้วยการลงทะเบียนฟังก์ชันพิเศษสองรายการ: TMOD (Timer Mode Register) และ TCON (Timer Control Register) ซึ่งใช้สำหรับเปิดใช้งานและกำหนดค่า ตัวจับเวลาและตัวนับ .



การควบคุมโหมดจับเวลา (TMOD): TMOD เป็นรีจิสเตอร์ 8 บิตที่ใช้สำหรับเลือกตัวจับเวลาหรือตัวนับและโหมดของตัวจับเวลา 4 บิตที่ต่ำกว่าใช้สำหรับการควบคุมการทำงานของตัวจับเวลา 0 หรือตัวนับ 0 และ 4 บิตที่เหลือจะใช้สำหรับการควบคุมการทำงานของไทม์เมอร์ 1 หรือตัวนับ 1 รีจิสเตอร์นี้มีอยู่ในรีจิสเตอร์ SFR ที่อยู่สำหรับรีจิสเตอร์ SFR คือ 89

การควบคุมโหมดจับเวลา (TMOD)

การควบคุมโหมดจับเวลา (TMOD)

ประตู: หากตั้งค่าเกตบิตเป็น '0' เราสามารถเริ่มและหยุดตัวจับเวลา 'ซอฟต์แวร์' ได้ในลักษณะเดียวกัน หากประตูถูกตั้งค่าเป็น '1' เราจะสามารถจับเวลาฮาร์ดแวร์ได้

C / T: หากบิต C / T เป็น '1' แสดงว่าเป็นโหมดตัวนับและในทำนองเดียวกันเมื่อตั้งค่า C +
= / T บิตคือ ‘0’ ซึ่งทำหน้าที่เป็นโหมดจับเวลา


บิตเลือกโหมด: M1 และ M0 เป็นบิตเลือกโหมดซึ่งใช้เพื่อเลือกการทำงานของตัวจับเวลา มีสี่โหมดในการใช้งานตัวจับเวลา

โหมด 0: นี่คือโหมด 13 บิตซึ่งหมายความว่าการทำงานของตัวจับเวลาจะเสร็จสมบูรณ์ด้วยพัลส์“ 8192”

โหมด 1: นี่คือโหมด 16 บิตซึ่งหมายความว่าการทำงานของตัวจับเวลาจะเสร็จสมบูรณ์ด้วยพัลส์นาฬิกาสูงสุดที่“ 65535”

โหมด 2: โหมดนี้เป็นโหมดรีโหลดอัตโนมัติ 8 บิตซึ่งหมายความว่าการทำงานของตัวจับเวลาจะเสร็จสมบูรณ์โดยมีพัลส์นาฬิกา“ 256” เท่านั้น

โหมด 3: โหมดนี้เป็นโหมดจับเวลาแยกซึ่งหมายถึงค่าการโหลดใน T0 และเริ่ม T1 โดยอัตโนมัติ

บิตการเลือกโหมด

บิตการเลือกโหมด

การเลือกโหมดค่าของตัวจับเวลาและตัวนับใน 8051

ค่าการเลือกโหมดของตัวจับเวลาและตัวนับ

ค่าการเลือกโหมดของตัวจับเวลาและตัวนับ

Timer Control Register (TCON): TCON เป็นทะเบียนอื่นที่ใช้ควบคุมการทำงานของตัวนับและตัวจับเวลาในไมโครคอนโทรลเลอร์ เป็นรีจิสเตอร์ 8 บิตโดยสี่บิตบนมีหน้าที่เป็นตัวจับเวลาและตัวนับและบิตล่างมีหน้าที่ในการขัดจังหวะ

ลงทะเบียนควบคุมตัวจับเวลา (TCON)

ลงทะเบียนควบคุมตัวจับเวลา (TCON)

TF1: TF1 ย่อมาจากบิตแฟล็ก 'timer1' เมื่อใดก็ตามที่คำนวณการหน่วงเวลาในไทม์เมอร์ 1 TH1 และ TL1 จะไปถึงค่าสูงสุดที่เป็น“ FFFF” โดยอัตโนมัติ

EX: ในขณะที่ (TF1 == 1)

เมื่อใดก็ตามที่ TF1 = 1 ให้ล้างแฟล็กบิตและหยุดตัวจับเวลา

TR1: TR1 ย่อมาจาก timer1 start หรือ stop bit การเริ่มตัวจับเวลานี้สามารถทำได้โดยใช้คำสั่งซอฟต์แวร์หรือด้วยวิธีฮาร์ดแวร์

EX: gate = 0 (เริ่มจับเวลา 1 ผ่านคำแนะนำซอฟต์แวร์)
TR1 = 1 (เริ่มจับเวลา)

TF0: TF0 ย่อมาจาก 'timer0' แฟล็กบิต เมื่อใดก็ตามที่คำนวณการหน่วงเวลาใน timer1 TH0 และ TL0 จะไปถึงค่าสูงสุดที่เป็น 'FFFF' โดยอัตโนมัติ

EX: ในขณะที่ (TF0 == 1)
เมื่อใดก็ตามที่ TF0 = 1 ให้ล้างแฟล็กบิตและหยุดตัวจับเวลา

TR0: TR0 ย่อมาจาก 'timer0' start หรือ stop bit ตัวจับเวลานี้เริ่มต้นได้โดยใช้คำสั่งซอฟต์แวร์หรือด้วยวิธีฮาร์ดแวร์

EX: gate = 0 (เริ่มจับเวลา 1 ผ่านคำแนะนำซอฟต์แวร์)
TR0 = 1 (เริ่มจับเวลา)

การคำนวณการหน่วงเวลาสำหรับไมโครคอนโทรลเลอร์ 8051

ไมโครคอนโทรลเลอร์ 8051 ทำงานด้วยความถี่ 11.0592 MHz

ความถี่ 11.0592MHz = 12 pules

1 นาฬิกาพัลส์ = 11.0592MHz / 12

F = 0.921 เมกะเฮิรตซ์

หน่วงเวลา = 1 / F

T = 1 / 0.92 เมกะเฮิร์ตซ์

T = 1.080506 us (สำหรับรอบ '1')

1000us = 1MS

1000ms = 1 วินาที

ขั้นตอนการคำนวณโปรแกรมล่าช้า

1. ก่อนอื่นเราต้องโหลดค่าทะเบียน TMOD สำหรับ 'Timer0' และ 'Timer1' ในโหมดต่างๆ ตัวอย่างเช่นหากเราต้องการใช้งาน timer1 ใน mode1 จะต้องกำหนดค่าเป็น“ TMOD = 0x10”

2. เมื่อใดก็ตามที่เราใช้งานตัวจับเวลาในโหมด 1 ตัวจับเวลาจะใช้พัลส์สูงสุดที่ 65535 จากนั้นพัลส์หน่วงเวลาที่คำนวณได้จะต้องถูกลบออกจากพัลส์สูงสุดและหลังจากนั้นจะแปลงเป็นค่าเลขฐานสิบหก ต้องโหลดค่านี้ในบิตที่สูงขึ้นและบิตที่ต่ำกว่าของ timer1 การทำงานของตัวจับเวลานี้ตั้งโปรแกรมโดยใช้ ฝังตัว C ไว้ในไมโครคอนโทรลเลอร์ .

ตัวอย่าง: เวลาล่าช้า 500us

500us / 1.080806us

461 พัลส์

P = 65535-461

P = 65074

65074 คำนวณโดย hexa decimal = FE32

TH1 = 0xFE

TL1 = 0x32

3. เริ่มจับเวลา 1“ TR1 = 1”

4. ตรวจสอบบิตแฟล็ก“ while (TF1 == 1)”

5. ล้างแฟล็กบิต“ TF1 = 0”

6. คลีตตัวจับเวลา“ TR1 = 0”

ตัวอย่างโปรแกรม:

โปรแกรม - 1

โปรแกรม - 1

โปรแกรม - 2

โปรแกรม - 2

โปรแกรม - 3

โปรแกรม - 3

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

เราสามารถใช้ตัวนับโดยรักษาบิต C / T ให้สูงนั่นคือตรรกะ ‘1’ ในทะเบียน TMOD เพื่อความเข้าใจที่ดีขึ้นเราได้ให้โปรแกรมหนึ่งซึ่งใช้ตัวจับเวลา 1 เป็นตัวนับ ที่นี่ไฟ LED เชื่อมต่อกับ 8051 พอร์ต 2 และสวิตช์ไปที่ไทม์เมอร์ 1 พิน P3.5 ดังนั้นหากกดสวิตช์ค่าจะถูกนับ มิฉะนั้นเซ็นเซอร์ที่เชื่อมต่อภายนอกกับขานับนี้เมื่ออินพุตทำการนับนี้

โปรแกรมเคาน์เตอร์

โปรแกรมเคาน์เตอร์

การใช้งานตัวจับเวลาและตัวนับในปี 8051

เคาน์เตอร์ดิจิตอล 8051

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

เคาน์เตอร์ดิจิตอล 8051

เคาน์เตอร์ดิจิตอล 8051

วงจรหน่วงเวลาใช้ไมโครคอนโทรลเลอร์ 8051

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

วงจรหน่วงเวลา

วงจรหน่วงเวลา

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

เครดิตภาพ:

  • เคาน์เตอร์ดิจิตอล 8051 โดย วงจร
  • วงจรหน่วงเวลาโดย vshamu