บทช่วยสอนการเขียนโปรแกรม C ในตัวด้วยภาษาคีล

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





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

การเขียนโปรแกรมระบบฝังตัว

การเขียนโปรแกรมระบบฝังตัว



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


สอนการเขียนโปรแกรม C ในตัว (8051)

สำหรับการเขียนโปรแกรมผู้ออกแบบแบบฝังต้องมีความรู้เพียงพอเกี่ยวกับฮาร์ดแวร์ของโปรเซสเซอร์หรือคอนโทรลเลอร์เฉพาะเนื่องจากการเขียนโปรแกรม C แบบฝังเป็นเทคนิคการเขียนโปรแกรมฮาร์ดแวร์ที่เกี่ยวข้องอย่างสมบูรณ์



สอนการเขียนโปรแกรม

สอนการเขียนโปรแกรม

ก่อนหน้านี้แอปพลิเคชันฝังตัวจำนวนมากได้รับการพัฒนาโดยใช้การเขียนโปรแกรมระดับแอสเซมบลี อย่างไรก็ตามพวกเขาไม่ได้ให้ความสะดวกในการพกพาเพื่อเอาชนะปัญหานี้ด้วยการถือกำเนิดของภาษาระดับสูงต่างๆเช่น C, COBOL และ Pascal อย่างไรก็ตามเป็นภาษาซีที่ได้รับการยอมรับอย่างกว้างขวาง การพัฒนาแอปพลิเคชันระบบฝังตัว และยังคงดำเนินต่อไป

ระบบฝังตัว

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

ระบบฝังตัว

ระบบฝังตัว

รู้เบื้องต้นเกี่ยวกับไมโครคอนโทรลเลอร์ 8051

ไมโครคอนโทรลเลอร์ 8051 เป็นไมโครคอนโทรลเลอร์พื้นฐานซึ่งเปิดตัวครั้งแรกโดย ‘Intel Corporation’ ตั้งแต่ปี 1970 พัฒนาโดยสถาปัตยกรรมโปรเซสเซอร์ 8086 8051 เป็นตระกูลไมโครคอนโทรลเลอร์ซึ่งได้รับการพัฒนาโดยผู้ผลิตหลายรายเช่น Philips, Atmel, dalls และอื่น ๆ ไมโครคอนโทรลเลอร์ 8051 ถูกนำไปใช้ในผลิตภัณฑ์ฝังตัวมากมายตั้งแต่ของเล่นเด็กเล็กไปจนถึงระบบยานยนต์ขนาดใหญ่


ไมโครคอนโทรลเลอร์ 8051

ไมโครคอนโทรลเลอร์ 8051

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

การเขียนโปรแกรมระบบฝังตัว: การประกาศพื้นฐาน

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

# รวม

การพัฒนาโปรแกรม Embedded C

การพัฒนาโปรแกรม Embedded C

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

# รวม

คำหลักเพิ่มเติมในตัว C

  • sbit
  • นิดหน่อย
  • SFR
  • ระเหย
  • มาโครกำหนด

“ sbit” ใช้สำหรับการประกาศ PIN เดียวของไมโครคอนโทรลเลอร์ ตัวอย่างเช่น LED เชื่อมต่อกับพิน P0.1 ไม่แนะนำให้ส่งค่าไปยังขาพอร์ตโดยตรงก่อนอื่นเราต้องประกาศพินด้วยตัวแปรอื่นหลังจากนั้นเราสามารถใช้ที่ใดก็ได้ในโปรแกรม

ไวยากรณ์: sbit a = P0 ^ 1 // ประกาศพินตามลำดับด้วยตัวแปร //
a = 0x01 // ส่งค่าไปยังขาพอร์ต //

'บิต' ใช้สำหรับตรวจสอบสถานะของตัวแปร

ไวยากรณ์: bit c // ประกาศตัวแปร bit //
c = a // ค่าถูกกำหนดให้กับตัวแปร c //
ถ้า (c == 1) // ตรวจสอบเงื่อนไขเป็นจริงหรือเท็จ //

{
… ..
……
}

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

ไวยากรณ์: พอร์ต SFR = 0x00 // 0x00 คือที่อยู่พอร์ต 0 ที่ประกาศโดยตัวแปรพอร์ต //
Port = 0x01 // จากนั้นส่งค่าไปยัง port0 //
ล่าช้า ()
พอร์ต = 0x00
ล่าช้า ()

คีย์เวิร์ด“ ระเหย” มีความสำคัญที่สุดในการพัฒนาระบบฝังตัว ไม่สามารถเปลี่ยนแปลงตัวแปรที่ประกาศด้วยค่าคีย์เวิร์ดที่เปลี่ยนแปลงได้โดยไม่คาดคิด สามารถใช้ในการลงทะเบียนอุปกรณ์ต่อพ่วงที่แมปหน่วยความจำตัวแปรส่วนกลางที่แก้ไขโดย ISR หากไม่ใช้คีย์เวิร์ดที่ลบเลือนในการส่งและรับข้อมูลจะเกิดข้อผิดพลาดของโค้ดหรือข้อผิดพลาดในการเพิ่มประสิทธิภาพ

ไวยากรณ์: volatile int k

มาโครเป็นชื่อที่ใช้เพื่อประกาศบล็อกของคำสั่งเป็นคำสั่งก่อนตัวประมวลผล เมื่อใดก็ตามที่ใช้ชื่อนั้นจะถูกแทนที่ด้วยเนื้อหาของมาโคร มาโครแสดงถึง #define หมุดของพอร์ตทั้งหมดถูกกำหนดโดยมาโคร

ไวยากรณ์: #define dat Po // ทั้งพอร์ตถูกประกาศโดยตัวแปร //
dat = 0x01 // ส่งข้อมูลไปยังพอร์ต 0 //

โปรแกรม C แบบฝังตัวพื้นฐาน

การเขียนโปรแกรมไมโครคอนโทรลเลอร์จะแตกต่างกันไปในแต่ละรายการ ประเภทของระบบปฏิบัติการ . แม้ว่าระบบปฏิบัติการจะมีอยู่มากมายเช่น Linux, Windows, RTOS เป็นต้น อย่างไรก็ตาม RTOS มีข้อดีหลายประการสำหรับการพัฒนาระบบฝังตัว บทความนี้กล่าวถึงการเขียนโปรแกรม C แบบฝังพื้นฐานเพื่อพัฒนาการเขียนโปรแกรม C แบบฝังโดยใช้ไมโครคอนโทรลเลอร์ 8051

ขั้นตอนการเขียนโปรแกรม C ในตัว

ขั้นตอนการเขียนโปรแกรม C ในตัว

  • ไฟ LED กะพริบโดยใช้ไมโครคอนโทรลเลอร์ 8051
  • ตัวเลขแสดงบนจอแสดงผล 7 ส่วนโดยใช้ไมโครคอนโทรลเลอร์ 8051
  • การคำนวณและโปรแกรมจับเวลา / ตัวนับโดยใช้ไมโครคอนโทรลเลอร์ 8051
  • การคำนวณและโปรแกรมการสื่อสารแบบอนุกรมโดยใช้ไมโครคอนโทรลเลอร์ 8051
  • โปรแกรมขัดจังหวะโดยใช้ไมโครคอนโทรลเลอร์ 8051
  • การเขียนโปรแกรมปุ่มกดโดยใช้ไมโครคอนโทรลเลอร์ 8051
  • การเขียนโปรแกรม LCD ด้วยไมโครคอนโทรลเลอร์ 8051

ไฟ LED กะพริบโดยใช้ไมโครคอนโทรลเลอร์ 8051

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

ไฟ LED กะพริบโดยใช้ไมโครคอนโทรลเลอร์ 8051

ไฟ LED กะพริบโดยใช้ไมโครคอนโทรลเลอร์ 8051

1. 01010101
10101010

#include // ไฟล์ส่วนหัว //
เป็นโมฆะ main () // จุดสถิติการทำงานของโปรแกรม //
{
int ที่ไม่ได้ลงชื่อฉัน // ประเภทข้อมูล //
ในขณะที่ (1) // สำหรับลูปต่อเนื่อง //
{
P0 = 0x55 // ส่งค่าเฮกซ่าไปยังพอร์ต 0 //
สำหรับ (i = 0i<30000i++) //normal delay//
P0 = 0x3AA // ส่งค่าเฮกซ่าไปยังพอร์ต 0 //
สำหรับ (i = 0i<30000i++) //normal delay//
}
}

2. 00000001

00000010

00000100

.

.

10,000,000

# รวม

เป็นโมฆะ main ()

{

ไม่ได้ลงนาม i

ถ่าน j, b

ในขณะที่ (1)

{

P0 = 0x01

b = P0

สำหรับ (j-0j<3000j++)

สำหรับ (j = 0j<8j++)

{

b = ข<<1

P0 = ข

สำหรับ (j-0j<3000j++)

}

}

}

3. 00001111

11110000

# รวม

เป็นโมฆะ main ()

{

ไม่ได้ลงนาม i

ในขณะที่ (1)

{

P0 = 0x0F

สำหรับ (j-0j<3000j++)

P0 = 0xF0

สำหรับ (j-0j<3000j++)

}

}

4. 00000001

00000011

00000111

.

.

11111111

# รวม

เป็นโมฆะ main ()

{

ไม่ได้ลงนาม i

ถ่าน j, b

ในขณะที่ (1)

{

P0 = 0x01

b = P0

สำหรับ (j-0j<3000j++)

สำหรับ (j = 0j<8j++)

0x01

P0 = ข

สำหรับ (j-0j<3000j++)

}

}

การแสดงตัวเลขบนจอแสดงผล 7 ส่วนโดยใช้ไมโครคอนโทรลเลอร์ 8051

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

การแสดงตัวเลขบนจอแสดงผล 7 ส่วนโดยใช้ไมโครคอนโทรลเลอร์ 8051

การแสดงตัวเลขบนจอแสดงผล 7 ส่วนโดยใช้ไมโครคอนโทรลเลอร์ 8051

1. WAP เพื่อแสดงตัวเลขในรูปแบบ ‘0 ถึง F’ บนหน้าจอ 7 ส่วนสี่จอ?

# รวม
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
เป็นโมฆะ main ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0,0 × 10}
ไม่ได้ลงนามคุณ j
a = b = c = d = 1
ในขณะที่ (1)
{
สำหรับ (i = 0i<10i++)
{
P2 = n [i]
สำหรับ (j = 0j<60000j++)
}
}
}

2. WAP เพื่อแสดงตัวเลขตั้งแต่ '00 ถึง 10 'บนหน้าจอ 7 ส่วน?

# รวม
sbit a = P3 ^ 0
sbit b = P3 ^ 1
โมฆะ display1 ()
โมฆะ display2 ()
เป็นโมฆะล่าช้า ()
เป็นโมฆะ main ()
{
unsignedchar n [10] = {0 × 40,0xF9,0 × 24,0 × 30,0 × 19,0 × 12,0 × 02,0xF8,0xE00,0,0 × 10}
ไม่ได้ลงนามคุณ j
ds1 = ds2 = 0
ในขณะที่ (1)
{
สำหรับ (i = 0, i<20i++)
display1 ()
display2 ()
}
}
โมฆะ display1 ()
{
a = 1
b = 0
P2 = s [ds1]
ล่าช้า ()
a = 1
b = 0
P2 = s [ds1]
ล่าช้า ()
}
โมฆะ display2 ()
{
ds1 ++
ถ้า (ds1> = 10)
{
ds1 = 0
ds2 ++
ถ้า (ds2> = 10)
{
ds1 = ds2 = 0
}
}
}
เป็นโมฆะล่าช้า ()
{
ไม่ได้ลงนาม k
สำหรับ (k = 0k<30000k++)
}

การคำนวณและโปรแกรมจับเวลา / ตัวนับโดยใช้ไมโครคอนโทรลเลอร์ 8051

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

ตั้งเวลาล่าช้า

WAP เพื่อสร้างการหน่วงเวลา 500us โดยใช้ T1M2 (timer1 และ mode2)?

# รวม

เป็นโมฆะ main ()
{
ถ่าน i
TMOD = 0x20 // ตั้งโหมดจับเวลา //
สำหรับ (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // ตั้งค่าหน่วงเวลา //
TH1 = 0x00
TR1 = 1 // ตัวจับเวลา oN //
ในขณะที่ (TF1 == 0) // ตรวจสอบแฟล็กบิต //
TF1 = 0
}
TR1 = 0 // ปิดตัวจับเวลา //
}

ความล่าช้าของลูปปกติ

เป็นโมฆะล่าช้า ()

{
ไม่ได้ลงนาม k
สำหรับ (k = 0k<30000k++)
}

การคำนวณและโปรแกรมการสื่อสารแบบอนุกรมโดยใช้ไมโครคอนโทรลเลอร์ 8051

การสื่อสารแบบอนุกรมมักใช้ในการส่งและรับสัญญาณ ไมโครคอนโทรลเลอร์ 8051 ประกอบด้วย การสื่อสารแบบอนุกรม UART สัญญาณที่ส่งและรับโดยพิน Rx และ Tx UART ใช้ไบต์ของข้อมูลและส่งแต่ละบิตในลักษณะตามลำดับ รีจิสเตอร์เป็นวิธีการรวบรวมและจัดเก็บข้อมูลในหน่วยความจำ UART เป็นโปรโตคอลแบบ half-duplex Half-duplex หมายถึงการถ่ายโอนและรับข้อมูล แต่ไม่ใช่ในเวลาเดียวกัน

การคำนวณและโปรแกรมการสื่อสารแบบอนุกรมโดยใช้ไมโครคอนโทรลเลอร์ 8051

การคำนวณและโปรแกรมการสื่อสารแบบอนุกรมโดยใช้ไมโครคอนโทรลเลอร์ 8051

1. WAP ในการส่งอักขระ 'S' ไปยังหน้าต่างอนุกรมใช้ 9600 เป็นอัตราการส่งข้อมูล?

28800 คืออัตรารับส่งข้อมูลสูงสุดของไมโครคอนโทรลเลอร์ 8051

28800/9600 = 3

อัตราการส่งข้อมูล ‘3’ จะถูกเก็บไว้ในตัวจับเวลา

# รวม

เป็นโมฆะ main ()

{
SCON = 0x50 // เริ่มการสื่อสารแบบอนุกรม //
TNOD = 0x20 // เลือกโหมดจับเวลา //
TH1 = 3 // โหลดอัตราบอด //
TR1 = 1 // เปิดตัวจับเวลา //
SBUF = ’S’ // เก็บอักขระในรีจิสเตอร์ //
ในขณะที่ (TI == 0) // ตรวจสอบการลงทะเบียนขัดจังหวะ //
TI = 0
TR1 = 0 // ปิดตัวจับเวลา //
ในขณะที่ (1) // ลูปต่อเนื่อง //
}

2. WAP เพื่อรับข้อมูลจากไฮเปอร์เทอร์มินัลและส่งข้อมูลนั้นไปยัง PORT 0 ของไมโครคอนโทรลเลอร์โดยใช้ 9600 baud?

28800 คืออัตรารับส่งข้อมูลสูงสุดของไมโครคอนโทรลเลอร์ 8051

28800/9600 = 3

อัตราการส่งข้อมูล ‘3’ จะถูกเก็บไว้ในตัวจับเวลา

# รวม

เป็นโมฆะ main ()
{
SCON = 0x50 // เริ่มการสื่อสารแบบอนุกรม //
TMOD = 0x20 // เลือกโหมดจับเวลา //
TH1 = 3 // โหลดอัตราบอด //
TR1 = 1 // เปิดตัวจับเวลา //
PORT0 = SBUF // ส่งข้อมูลจาก SBUF ไปยัง port0 //
ในขณะที่ (RI == 0) // ตรวจสอบการลงทะเบียนขัดจังหวะ //
RI = 0
TR1 = 0 // ปิดตัวจับเวลา //
ในขณะที่ (1) // หยุดโปรแกรมเมื่อได้รับตัวอักษร //
}

โปรแกรมขัดจังหวะโดยใช้ไมโครคอนโทรลเลอร์ 8051

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

WAP เพื่อดำเนินการเลื่อนซ้ายเมื่อจับเวลา 0 ขัดจังหวะเกิดขึ้นจากนั้นดำเนินการขัดจังหวะสำหรับ P0 ในฟังก์ชันหลัก?

# รวม

ถ่าน b

เป็นโมฆะ timer0 () ขัดจังหวะ 2 // จับเวลาที่เลือก 0 ขัดจังหวะ //
{
b = 0x10
P1 = b<<2
}
เป็นโมฆะ main ()
{
ถ่าน a, i
IE = 0x82 // เปิดใช้งานการขัดจังหวะ timer0 //
TMOD = 0x01
TLo = 0xFC // ตัวจับเวลาขัดจังหวะ //
TH1 = 0xFB
TR0 = 1
a = 0x00
ในขณะที่ (1)
{
สำหรับ (i = 0i<255i++)
{
a ++
ปอ = ก
}
}
}

การเขียนโปรแกรมปุ่มกดโดยใช้ไมโครคอนโทรลเลอร์ 8051

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

การเขียนโปรแกรมปุ่มกดโดยใช้ไมโครคอนโทรลเลอร์ 8051

การเขียนโปรแกรมปุ่มกดโดยใช้ไมโครคอนโทรลเลอร์ 8051

1. WAP เพื่อสลับ LED โดยการกดสวิตช์

# รวม
sbit a = P3 ^ 0
sbit b = P3 ^ 1
sbit c = P3 ^ 2
sbit d = P3 ^ 3
เป็นโมฆะล่าช้า ()
เป็นโมฆะ main ()
{
ในขณะที่ (1)
{
a = 0
b = 1
c = 1
d = 1
ล่าช้า ()
a = 1
b = 0
c = 1
d = 1
เป็นโมฆะล่าช้า ()
{
ถ่าน i
TMOD = 0x20 // ตั้งโหมดจับเวลา //
สำหรับ (i = 0i<2i++) //double the time daly//
{
TL1 = 0x19 // ตั้งค่าหน่วงเวลา //
TH1 = 0x00
TR1 = 1 // ตัวจับเวลา oN //
ในขณะที่ (TF1 == 0) // ตรวจสอบแฟล็กบิต //
TF1 = 0
}
TR1 = 0 // ปิดตัวจับเวลา //
}

2. WAP เพื่อเปิดไฟ LED โดยการกดปุ่ม ‘1’ บนปุ่มกด?

# รวม

sbit r1 = P2 ^ 0
sbit c1 = P3 ^ 0
sbit LED = P0 ^ 1

เป็นโมฆะ main ()
{

r1 = 0
ถ้า (c1 == 0)
{

LED = 0xff
}
}

3. WAP เพื่อแสดงหมายเลข 0,1,2,3,4,5 บนเจ็ดส่วนโดยการกดปุ่มตามลำดับบนปุ่มกด?

# รวม

sbit r1 = P2 ^ 0

sbit c1 = P3 ^ 0

sbit r2 = P2 ^ 0

sbit c2 = P3 ^ 0

sbit a = P0 ^ 1

เป็นโมฆะ main ()

{

r1 = 0 a = 1

ถ้า (c1 == 0)

{

a = 0xFC

}

ถ้า (c2 == 0)

{

a = 0x60

}

ถ้า (c3 == 0)

{

a = 0xDA

}

ถ้า (c4 == 0)

{

a = 0xF2

}

}

การเขียนโปรแกรม LCD ด้วยไมโครคอนโทรลเลอร์ 8051

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

การเขียนโปรแกรม LCD ด้วยไมโครคอนโทรลเลอร์ 8051

การเขียนโปรแกรม LCD ด้วยไมโครคอนโทรลเลอร์ 8051

WAP เพื่อแสดง“ EDGEFX KITS” บนจอ LED?

# รวม
#define kam P0

เป็นโมฆะlcd_initi ()
voidlcd_dat (ถ่านที่ไม่ได้ลงชื่อ)
voidlcd_cmd (ถ่านที่ไม่ได้ลงชื่อ)
เป็นโมฆะล่าช้า ()
การแสดงผลเป็นโมฆะ (ถ่านที่ไม่ได้ลงชื่อ, ถ่าน r ที่ไม่ได้ลงชื่อ)

sbitrs = P2 ^ 0
sbitrw = P2 ^ 1
sbit ที่ = P2 ^ 2
เป็นโมฆะ main ()
{

lcd_initi ()
lcd_cmd (0x80)
ล่าช้า (100)
lcd_cmd (0xc0)
จอแสดงผล (“ edgefx kits”, 11)
ในขณะที่ (1)
}

การแสดงผลเป็นโมฆะ (ถ่านที่ไม่ได้ลงชื่อ, ถ่าน r ที่ไม่ได้ลงชื่อ)
{
ไม่ได้ลงนาม w
สำหรับ (w = 0w{
lcd_data (s [w])
}
}
เป็นโมฆะlcd_initi ()
{
lcd_cmd (0 × 01)
ล่าช้า (100)
lcd_cmd (0 × 38)
ล่าช้า (100)
lcd_cmd (0 × 06)
ล่าช้า (100)
lcd_cmd (0x0c)
ล่าช้า (100)
}
voidlcd_dat (char dat ที่ไม่ได้ลงชื่อ)
{
หวี = นั่น
rs = 1
rw = 0
ใน = 1
ล่าช้า (100)
ใน = 0
}
}
voidlcd_cmd (ถ่าน cmd ที่ไม่ได้ลงชื่อ)
{
มา = cmd
rs = 0
rw = 0

ใน = 1
ล่าช้า (100)
ใน = 0
}
ความล่าช้าเป็นโมฆะ (ไม่ได้ลงนาม int n)
{

ไม่ได้ลงนามก
สำหรับ (a = 0a}

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