การเชื่อมต่อขาต่างๆของ LCD 16X2 กับบอร์ด STM32F4
สำหรับขาของ LCD 16X2 นั้นมีด้วยกันทั้งหมด 16 ขาด้วยกัน ซึ่งแต่ละขาอธิบายการต่อได้ดังนี้
- ขาที่ 1 ขา GND ไว้สำหรับต่อขา ground ของบอร์ดการทดลอง
- ขาที่ 2 ขา VCC ไว้สำหรับต่อเข้าขา VCC บนบอร์ดการทดลอง (สามารถใช้ได้ทั้ง 3.3V และ 5V)
- ขาที่ 3 ขา VEE ไว้สำหรับต่อกับตัวต้านทานปรับค่าได้
- ขาที่ 4 ขา RS คือขา Register Select มีไว้สำหรับเลือกคำสั่งของรีจิสเตอร์ (LOW) และ data register (HIGH)
- ขาที่ 5 ขา R/W ใช้สำหรับในการเขียนรีจิสเตอร์ (LOW) และอ่านค่าจากรีจิสเตอร์ (HIGH)
- ขาที่ 6 ขา EN ใช้สำหรับในการส่งข้อมูลไปยังพินต่างๆของข้อมูล
- ขาที่ 7-14 เป็นขาสำหรับพินของข้อมูล 8 บิต
- ขาที่ 15 เป็นขา Backlight VCC (5V) สำหรับต่อเข้ากับขา vcc บนบอร์ดการทดลอง
- ขาที่ 16 เป็นขา Backlight Ground (0V) สำหรับต่อเข้ากับขา ground บนบอร์ดการทดลอง
โค้ดที่ใช้ในการทดลอง
สำหรับโค้ดที่ใช้ในการทดลองตอนแรกนั้นจะใช้ไลบรารี่มาตรฐาน (standard library) ซึ่งสามารถหาตัวอย่างได้อย่างแพร่หลาย ซึ่งโค้ดมีดังต่อไปนี้
ก่อนที่จะพูดถึงโค้ด ผมขออธิบายถึงฟังก์ชันในไลบรารี่สำหรับ LCD Display กันก่อนครับ ฟังก์ชันในไลบรารี่จะมีอยู่สองส่วนด้วยกัน คือในส่วนของ private function และ global function
- เริ่มจาก private function ซึ่งเป็น Low-level functions กันก่อนครับ ใน private function จะประกอบไปด้วยฟังก์ชันดังต่อไปนี้
1. void lcd_data_line_write(uint8_t data); เป็นฟังก์ชันสำหรับการเขียนข้อมูล
2. void lcd_Init_HW(void); เป็นฟังก์ชันที่ใช้สำหรับการเริ่มต้นในการต่อพิน I/O เข้ากับ LCD
3. void lcd_Control_Write(uint8_t data); เป็นฟังก์ชันในการเขียนคำสั่งการควบคุมไปยัง LCD
4. void lcd_Data_Write(uint8_t data); เป็นฟังก์ชันไว้สำหรับการเขียนข้อมูลเป็นไบต์ไปยังจอ LCD ที่ตำแหน่งปัจจุบัน -
ต่อมาเป็นส่วนของ global function ซึ่งเป็น High-level functions ประกอบไปด้วยฟังก์ชันดังต่อไปนี้
1. void lcd_Init(void); เป็นฟังก์ชันที่ใช้ประกาศการเริ่มต้นของ LCD Display
2. void lcd_Home(void); เป็นฟังก์ชันที่เอาไว้ย้ายเคอร์เซอร์ให้ไปอยู่ที่ Home (มุมซ้ายบน)
3. void lcd_Clear(void); เป็นฟังก์ชันที่ไว้สำหรับเคลียร์ LCD Display
4. void lcd_Goto(uint8_t row, uint8_t col); เป็นฟังก์ชันที่ไว้สำหรับย้ายเคอร์เซอร์ไปยังตำแหน่งที่ต้องการ ซึ่งอาจจะไม่ถูกต้องสำหรับทุกๆ LCD Display
5. void lcd_Print_Data(char* data); เป็นฟังก์ชันที่ไว้สำหรับแสดงค่าชุดของไบรต์บน LCD Display
โค้ดที่ใช้ในการทดลอง
ในส่วนนี้จะเป็นการ include ไฟล์ header ต่างๆ รวมถึงไลบรารี่ของ lcd ที่ใช้ในการทดลอง นอกจากนี้ยังการประกาศให้สามารถแสดงข้อความบนจอ lcd และฟังก์ชัน delay
ในส่วนนี้เป็นการประกาศการใช้งานพิน GPIO (General Purpose Input/Output) ซึ่งพิน PD12, PD13, PD14, PD15 เป็นการประกาศการใช้งานไฟ LED บนบอร์ดการทดลอง ส่วนพิน PC0, PC1, PC2 และ PC3 เป็นการประกาศการใช้งาน Data Pin
ฟังก์ชัน main เริ่มต้นด้วยการเปิดการใช้งาน LCD Display การลบหน้าจอ LCD การตั้งเคอร์เซอร์บนจอ LCD การแสดงข้อความบนจอ LCD รวมไปถึงการใช้ delay
ส่วนนี้เป็นการใช้งานฟังก์ชัน delay
ส่วนนี้เป็นส่วนสำหรับแสดงข้อความบนจอ LCD
แหล่งที่มา: http://icviet.vn/bai-hoc/text-lcd-16x2-voi-stm32f4.html
สำหรับการทดลองในช่วงต่อมา ได้เปลี่ยนจาก standard library มาใช้ hal (Hardware Abstraction Layer) library ซึ่งเป็นไลบรารี่ที่ได้ถือกำเนิดขึ้นมาในปี 2009 ซึ่งอนุญาติให้เดสก์ท็อปแอพลิเคชันได้ใช้ฮาร์ดแวร์ของระบบโฮสได้ง่ายขึ้น เช่น การใช้งานผ่าน API ซึ่งโค้ดที่ใช้ในการทดลองจะประมาณนี้ครับ
ส่วนนี้เป็นการประกาศ include ไฟล์ header ต่างๆ รวมไปถึงการประกาศ function prototype
ฟังก์ชัน main เป็นการประกาศการใช้งานต่างๆ เช่น HAL Library, GPIO Pin, I2C รวมไปถึงการใช้งานจอ LCD และการแสดงข้อความบนจอ LCD
เป็นการทำให้ข้อความแสดงบนจอ LCD ได้
ฟังก์ชัน SystemClock สำหรับการตั้งค่า RCC
เป็นการประกาศการใช้งาน GPIO Pin



No comments:
Post a Comment