Giáo trình Lập trình C cho họ vi điều khiển 8051 - Chương 4: Ứng dụng ngôn ngữ C cho họ vi điều khiển 8051 lập trình điều khiển
- 8 Led sáng tắt từtrái qua phải với port 3
- 8 Led sáng tắt từphải qua trái với port 1
- 16 Led sáng tắt từtrái qua phải với port 0, port 1
- 32 Led sáng tắt từphải qua trái với 4 port.
- Led sáng dần từtrái qua phải với port 3
- 8 Led sáng dần từphải qua trái với port 0
- 16 Led sáng dần từtrái qua phải với port 0, port 1
- 32 Led sáng dần từtrái qua phải với 4 port
- Led sáng dần từtrái qua phải và tắt dần từtrái qua phải với port 3
- 8 Led sáng dần từphải qua trái và tắt dần từtrái qua phải với port 0
- 16 Led sáng dần từtrái qua phải và tắt dần từphải qua trái với port 0, port 1
- 32 Led sáng dần từtrái qua phải và tắt dần từphải qua trái với 4 port
ộng gia công lỗ bằng phương pháp khoan – khóet và lã lỗ. Quy trình được thực hiện như sau: 1. Pistông A và C có nhiệm vụ cản chuyển động của phôi cũng như của chi tiết đã gia công. 2. Pistông B và D có nhiệm vụ đưa phôi cũng như chi tiết đã gia công vào và ra khỏi hệ thống. 3. Pistông E có nhiệm vụ quay tròn bàn máy chứa chi tiết. 4. Pistông F và G đưa hai đầu khoan 1 và 2 ra khoan chi tiết và quay về. 5. Pistông H và I đưa hai đầu khoét 1 và 2 ra khoét chi tiết và quay về. 6. Pistông J và K đưa hai đầu lã lỗ 1 và 2 đi ra lã miện lỗ và quay về. BIỂU DIỄN BIỂU ĐỒ TRẠNG THÁI QUI TRÌNH: ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 29 of 37 III. ĐIỀU KHIỂN LED MA TRẬN Giao tiếp Led ma trận Sơ đồ nguyên lý: Q13A H2 M5 VCC D5 VCC Q10A D1 X3 R9 12 Q12A H6 X4 M4 D7 D1 VCC Q15A H1 GND R8 12 H7 H2 GND D6 M7 X4 D2 R3 R 12 Q11A H5 X5 M5 U4 ULN2804 10 9 1 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 COM GND IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 M3 D2 D8 GND VCC_12V J4 COLUMN DO 1 2 3 4 5 6 7 8 H8 H3 J2 COLUMN XANH 1 2 3 4 5 6 7 8 D7 R4 12 D3 X5 Q14A M1 M1 X6 X1 VCC M6 R6 12 X1 H4 H4 U1 MATRAN 8X8 24 21 18 15 1 4 7 10 23 20 17 14 2 5 8 11 22 19 16 13 3 6 9 12 X1 X2 X3 X4 X5 X6 X7 X8 D1 D2 D3 D4 D5 D6 D7 D8 H1 H2 H3 H4 H5 H6 H7 H8 D8 D3 M8 X6 D4 M4 J3 ROW 1 2 3 4 5 6 7 8 Q16A U3 ULN2804 10 9 1 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 COM GND IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 M7 M2 H3 X7 H8 X2 H5 GND D4 D5 X7 X8 X2 Q17A D468 U2 ULN2804 10 9 1 2 3 4 5 6 7 8 18 17 16 15 14 13 12 11 COM GND IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 R7 12 VCC R5 12 R2 1K 12 M8 M3 M6 H7 X3 H6 M2 H1 J5 12VDC 1 2 X8 D6 Các hàng và được đưa qua IC đệm 2803. Led ma trận có hai màu xanh và đỏ. Có 8 đường điều khiển hàng, 8 đường điều khiển cột màu xanh và 8 đường điều khiển cột màu đỏ. Tổng cộng có 24 đường được kết nối với vi điều khiển. Với phần cứng đã thiết ở trên sử dụng led ma trận 8x8 có 2 màu xanh và đỏ, để điều khiển led ma trận sáng ta tiến hành gửi dữ liệu ra cột và mã quét ra hàng. Trong 4 port của vi điều khiển ta sử dụng 1 port để quét hàng và 2 port để điều khiển màu xanh và đỏ. ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 30 of 37 Mã các ký tự của Led ma trận. 7 6 X 5 X X 4 X X 3 X X 2 X X X X X 1 X X 0 X X E0 DB BB DB E0 Mẫu chữ A: 7 6 X X X X 5 X X 4 X X 3 X X X X 2 X X 1 X X 0 X X X X 80 B6 B6 B6 C9 Mẫu chữ B: 7 6 X X X 5 X X 4 X 3 X 2 X 1 X X 0 X X X C1 BE BE BE DD Mẫu chữ C: 7 6 X X X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X X X X 80 BE BE BE C1 Mẫu chữ D: 7 6 X X X X X 5 X 4 X 3 X X X X 2 X 1 X 0 X X X X X 80 B6 B6 B6 BE Mẫu chữ E: 7 6 X X X X X 5 X 4 X 3 X X X X 2 X 1 X 0 X 80 B7 B7 B7 BF Mẫu chữ F: 7 6 X X X 5 X X 4 X 3 X X X X 2 X X 1 X X 0 X X X C1 BE B6 B6 D1 Mẫu chữ G: 7 6 X X 5 X X 4 X X 3 X X X X X 2 X X 1 X X 0 X X 80 F7 F7 F7 80 Mẫu chữ H: 7 6 X X X X X 5 X 4 X 3 X 2 X 1 X 0 X X X X X BE BE 80 BE BE Mẫu chữ I: ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 31 of 37 7 6 X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X X 80 E7 DB BD FE Mẫu chữ K: 7 6 X 5 X 4 X 3 X 2 X 1 X X 0 X X X X 80 FE FE FE FD Mẫu chữ L: 7 6 X X 5 X X X X 4 X X X 3 X X 2 X X 1 X X 0 X X 80 DF EF DF 80 Mẫu chữ M: 7 6 X X 5 X X X 4 X X X 3 X X X 2 X X 1 X X 0 X X 80 DF EF F7 80 Mẫu chữ N: 7 6 X X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X X X C1 BE BE BE C1 Mẫu chữ O: 7 6 X X X X 5 X X 4 X X 3 X X X X 2 X 1 X 0 X 80 B7 B7 B7 CF Mẫu chữ P: 7 6 X X X 5 X X 4 X X 3 X X 2 X X X 1 X X X 0 X X X X C1 BE BA BC C0 Mẫu chữ Q: 7 6 X X X X 5 X X 4 X X 3 X X X X 2 X X 1 X X 0 X X 80 B7 B3 B5 CE Mẫu chữ R: 7 6 X X X 5 X X 4 X 3 X X X 2 X 1 X X 0 X X X CD B6 B6 B6 D9 Mẫu chữ S: ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 32 of 37 7 6 X X X X X 5 X 4 X 3 X 2 X 1 X 0 X BF BF 80 BF BF Mẫu chữ T: 7 6 X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X X X 81 FE FE FE 81 Mẫu chữ U: 7 6 X X 5 X X 4 X X 3 X X 2 X X 1 X X 0 X 83 FD FE FD 83 Mẫu chữ V: 7 6 X X 5 X X 4 X 3 X 2 X 1 X X 0 X X BE DD E3 DD BE Mẫu chữ X: 7 6 X X 5 X X 4 X X 3 X X X 2 X 1 X 0 X 8F F7 F0 F7 8F Mẫu chữ Y: ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 33 of 37 Chương trình hiển thị ký tự A trên led ma trận #include #define Hang P0 #define Cot P1 void delay() { TMOD=0x01; TH0=0xFB; TL0=0x00; TR0=1; while(1){ if(TF0==1) break; } TR0=0; TF0=0; } main() { while(1) { Hang=0xE0; Cot=0x02; delay(); Hang=0xDB; Cot=0x04; delay(); Hang=0xBB; Cot=0x08; delay(); Hang=0xDB; Cot=0x10; delay(); Hang=0xE0; Cot=0x20; delay(); } } Bài tập ứng dụng về nhà - Chương trình chớp tắt ký tự A trên Led ma trận - Chương trình chớp tắt ký tự A hiển thị hai màu xanh và đỏ trên Led ma trận - Chương trình chạy chuỗi ABCD từ trái sang phải trên Led ma trận ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 34 of 37 IV. ĐIỀU KHIỂN LCD. Giao tiếp với LCD Sơ đồ nguyên lý. D1 A2 C2 CAP A2 C3 CAP R3 R 1 2 D3 VCC_CIRCLE D6D6 Q1 CRYSTAL R1 RESISTOR VAR 1 3 2 D7 D4 J1 CON2 1 2 D3 C1 CAP 1 2 VCC_CIRCLE VCC_CIRCLE SW1 SW PUSHBUTTON 1 2 D5 D0 D4 A3 D7 VCC_CIRCLE U1 AT89C51 9 1819 20 29 30 31 40 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 39 38 37 36 35 34 33 32 RST XT AL 2 XT AL 1 GND PSEN ALE/PROG EA/VPP VC C P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 D5 A3 D2 D0 A1 U2 LCD 5X7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 GND VCC VR RS R/W EN DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K D1 D2 A1 DIỄN GIẢI CHI TIẾT. Mô tả chân LCD: Chân Ký hiệu I/O Mô tả 1 GND - Đất 2 VCC - Nguồn 5V 3 VR - Nguồn điều khiển tương phản 4 RS I RS=0 chọn thanh ghi lệnh RS=1 chọn thanh ghi dữ liệu 5 R/W I RW=1 đọc dữ liệu RW=0 ghi dữ liệu 6 EN I Cho phép hoạt động 7 DB0 I/O Bus dữ liệu 8 bit 8 DB1 I/O Bus dữ liệu 8 bit 9 DB2 I/O Bus dữ liệu 8 bit 10 DB3 I/O Bus dữ liệu 8 bit 11 DB4 I/O Bus dữ liệu 8 bit 12 DB5 I/O Bus dữ liệu 8 bit ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 35 of 37 13 DB6 I/O Bus dữ liệu 8 bit 14 DB7 I/O Bus dữ liệu 8 bit 15 A - Nguồn 5V 16 K - Đất Mã lệnh LCD: Mã (Hex) Lệnh thanh ghi LCD 1 Xóa màn hình hiển thị 2 Trở về đầu dòng 4 Dịch con trỏ sang trái 6 Dịch con trỏ sang phải 5 Dịch hiển thị sang phải 7 Dịch hiển thị sang trái 8 Tắt con trỏ, tắt hiển thị A Tắt hiển thị, bật con trỏ C Bật hiển thị, tắt con trỏ E Bật hiển thị, nhấp nháy con trỏ F Tắt con trỏ, nhấp nháy con trỏ 10 Dịch vị trí con trỏ sang trái 14 Dịch vị trí con trỏ sang phải 18 Dịch toàn bộ hiển thị sang trái 1C Dịch toàn bộ hiển thị sang phải 80 Đưa con trỏ về đầu dòng thứ nhất C0 Đưa con trỏ về đầu dòng thứ hai 38 Hai dòng ma trận 5x7 Bài tập ứng dụng. Viết chương trình cho Vi Điều Khiển điều khiển LCD hiển thị dòng chữ thứ nhất “A, B, C, D” và dòng chữ thứ hai “BAI TAP UNG DUNG LCD”. #include #define RS P3_0 #define RW P3_1 //RW=0 => ghi #define EN P3_2 //RW=1 => doc //RS=0 => code //RS=1 => data #define LCD_PORT P1 void delay_5ms() { int i,j; for(i=0;i<250;i++) for(j=0;j<4;j++){} } void delay_15ms() { int i,j; for(i=0;i<250;i++) for(j=0;j<100;j++){} ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 36 of 37 } void LCDWriteCmd(unsigned char c) { RS=0; RW=0; LCD_PORT=c; EN=1; EN=0; delay_5ms(); } void LCDWriteData(unsigned char c) { RS=1; RW=0; LCD_PORT=c; EN=1; EN=0; delay_5ms(); } void LCD_init() { delay_15ms(); LCDWriteCmd(0x30); LCDWriteCmd(0x30); LCDWriteCmd(0x30); LCDWriteCmd(0x38); LCDWriteCmd(0x0C); // LCDWriteCmd(0x06); LCDWriteCmd(0x01); // Xoa man hinh LCD } void LCD_clear() { LCDWriteCmd(0x01); } void LCD_home() { LCDWriteCmd(0x80); } void LCD_putstr(unsigned char *s) { while (*s) { LCDWriteData(*s); s++; } } ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 37 of 37 void main() { LCD_init(); LCDWriteCmd(0x01); LCDWriteCmd(0x80); LCDWriteData('A'); LCDWriteData('B'); LCDWriteData('C'); LCDWriteData('D'); LCDWriteCmd(0xC0); LCD_putstr("BAI TAP UNG DUNG LCD "); while (1) {} } Bài tập ứng dụng về nhà. - Viết chương trình cho Vi Điều Khiển điều khiển LCD hiển thị dòng chữ thứ nhất “DAI HOC LAC HONG” và dòng chữ thứ hai “KHOA CO DIEN”. Dịch qua trái
File đính kèm:
- Giáo trình Lập trình C cho họ vi điều khiển 8051 - Chương 4 Ứng dụng ngôn ngữ C cho họ vi điều khiển 8051 lập trình điều khiển.pdf