1. Trang chủ
  2. » Mẫu Slide

Mạch đếm up down sử dụng 8051

31 52 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Slide 1

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • 3.1/ Hợp ngữ asembly

  • Slide 9

  • 3.2/ Ngôn ngữ lập trình C

  • Slide 11

  • Slide 12

  • Slide 13

  • Slide 14

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

  • Slide 21

  • Slide 22

  • Slide 23

  • Slide 24

  • Slide 25

  • Slide 26

  • Slide 27

  • Slide 28

  • Slide 29

  • Slide 30

  • Slide 31

Nội dung

MẠCH ĐẾM BA CHỮ SỐ SỬ DỤNG LED ĐOẠN Các nội dung tìm hiểu: I II III IV V Tóm tắt đề tài Lựa chọn linh kiện Lưu đồ thuật tốn Chương trình điều khiển ( code ) Mạch mơ proteus I/ TĨM TẮT ĐỀ TÀI 1/ Giới thiệu chung - Mạch đếm ba chữ số sử dụng led đoạn có nút UP/DOWN để điều chỉnh đếm lên hay đếm xuống 2/ Yêu cầu - Mạch đếm chữ số đếm lên đếm xuống thay đổi chế độ đếm nút nhấn - Lập trình hợp ngữ ASM ngơn ngữ C, có sử dụng chương trình ngắt II/ LỰA CHỌN LINH KIỆN CHÍNH 2.1/ Vi xử lí AT89C52 2.1.1/ Đặc điểm - 8KB ROM - 256 byte RAM - 04 port xuất nhập (I/O port) bit - 03 định thời 16 bit - Mạch giao tiếp nối tiếp - Khơng gian nhớ chương trình (mã) ngồi 64K - Khơng gian nhớ liệu ngồi 64K - Bộ xử lí bit ( thao tác bit riêng rẽ) - 210 vị trí nhớ định địa chỉ, vị trí bit - Nhân / chia 4ms - Tần số xung Clock 1Mhz (đối với thạch anh 12Mhz) II/ LỰA CHỌN LINH KIỆN CHÍNH 2.1.2/ Sơ đồ chân vi xử lí AT89C52 II/ LỰA CHỌN LINH KIỆN CHÍNH 2.2/ LED đoạn 2.2.1/ Cấu tạo - Led đoạn có cấu tạo bao gồm led đơn có dạng xếp theo hình dạng số có thêm led đơn hình trịn nhỏ thể dấu chấm trịn góc dưới, bên phải led đoạn 8 led đơn led đoạn có Anode(cực +) Cathode(cực -) nối chung với vào điểm, đưa chân để kết nối với mạch điện cực lại led đơn đưa thành chân riêng, đưa để kết nối với mạch điện - Nếu led đoạn có Anode(cực +) chung, đầu chung nối với +Vcc, chân lại dùng để điều khiển trạng thái sáng tắt led đơn, led sáng tín hiệu đặt vào chân mức Nếu led đoạn có Cathode(cực -) chung, đầu chung nối xuống Ground (hay Mass), chân lại dùng để điều khiển trạng thái sáng tắt led đơn, led sáng tín hiệu đặt vào chân mức II/ LỰA CHỌN LINH KIỆN CHÍNH 2.2.2/ Bảng mã hiển thị LED Bảng mã hiển thị led đoạn dành cho led đoạn có Anode chung (các led đơn sáng mức 0): Số hiển thị led đoạn   A B C D E F - Mã hiển thị led đoạn dạng nhị phân Mã hiển thị led đoạn dạng thập lục phân hgfedcba 11000000 11111001 10100100 10110000 10011001 10010010 11000010 11111000 10000000 10010000 10001000 10000011 11000110 10100001 10000110  1 0 1 10111111   C0 F9 A4 B0 99 92 82 F8 80 90 88 83 C6 A1 86 8E BF II/ LỰA CHỌN LINH KIỆN CHÍNH Bảng mã hiển thị led đoạn dành cho led đoạn có Cathode chung (các led đơn sáng mức 1):  Số hiển thị led đoạn A B C D E F - Mã hiển thị led đoạn dạng nhị phân 00111111 00000110 01011011 01001111 01100110 01101101 01111101 00000111 01111111 01101111 01110111 01111100 00111001 01011110 01111001 01110001 01000000 Mã hiển thị led đoạn dạng thập lục phân 3F 06 5B 4F 66 6D 7D 07 7F 6F 77 7C 39 5E 79 71 40 III/ LƯU ĐỒ THUẬT TOÁN 3.1/ Hợp ngữ asembly III/ LƯU ĐỒ THUẬT TỐN 3.2/ Ngơn ngữ lập trình C VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) INT_EXT1: SETB EX0 CLR EX1 MOV 21H,#'A' MOV 22H,DV_UP MOV DV_DOWN,22H MOV 23H,CHUC_UP MOV CHUC_DOWN,23H MOV 24H,TRAM_UP MOV TRAM_DOWN,24H RETI VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) INT_TIMER0: CLR TF0 INC 27H MOV R0,27H CJNE R0,#20,X0 MOV 27H,#0 DEC DV_DOWN CJNE DV_DOWN,#0,X0 MOV DV_DOWN,#9 DEC CHUC_DOWN CJNE CHUC_DOWN,#-1,X0 MOV CHUC_DOWN,#0 MOV CHUC_DOWN,#9 DEC TRAM_DOWN CJNE TRAM_DOWN,#-1,X0 MOV TRAM_DOWN,#0 MOV TRAM_DOWN,#9 VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) X0: MOV TL0,#0B0H EXIT0: RETI INT_TIMER1: CLR TF1 INC 28H MOV R0,28H CJNE R0,#20,X1 MOV 28H,#0 INC DV_UP CJNE DV_UP,#10,X1 MOV DV_UP,#0 INC CHUC_UP CJNE CHUC_UP,#10,X1 MOV CHUC_UP,#0 INC TRAM_UP CJNE TRAM_UP,#10,X1 MOV TRAM_UP,#0 ; VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) X1: MOV TL1,#0B0H MOV TH1,#3CH EXIT1: RETI MA_LED_7DOAN: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END CJNE DV_UP,#10,EXIT MOV DV_UP,#0 INC CHUC_UP CJNE CHUC_UP,#10,EXIT MOV CHUC_UP,#0 INC TRAM_UP CJNE TRAM_UP,#10,EXIT MOV TRAM_UP,#0 EXIT: RET VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) PROCESS_DOWN: DEC DV_DOWN CJNE DV_DOWN,#0,EXIT1 MOV DV_DOWN,#9 DEC CHUC_DOWN CJNE CHUC_DOWN,#-1,EXIT1 MOV CHUC_DOWN,#0 MOV CHUC_DOWN,#9 DEC TRAM_DOWN CJNE TRAM_DOWN,#-1,EXIT1 MOV TRAM_DOWN,#0 MOV TRAM_DOWN,#9 EXIT1: RET VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) DELAY_2500US: MOV TL1,#3CH MOV TH1,#0F6H CLR TF1 SETB TR1 JNB TF1,$ CLR TR1 RETI INT_EXT0: MOV 21H,#'B' MOV 22H,DV_DOWN MOV DV_UP,22H MOV 23H,CHUC_DOWN MOV CHUC_UP,23H MOV 24H,TRAM_DOWN MOV TRAM_UP,24H RETI VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) INT_EXT1: MOV 21H,#'A' MOV 22H,DV_UP MOV DV_DOWN,22H MOV 23H,CHUC_UP MOV CHUC_DOWN,23H MOV 24H,TRAM_UP MOV TRAM_DOWN,24H RETI MA_LED_7DOAN: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) 4.2/ Ngơn ngữ lập trình C #include #define hang_tram P2_1 #define hang_chuc P2_2 #define hang_donvi P2_3 char ma_led_7_doan[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; int donvi = 0, chuc = 0, tram = 0, flag = 0, demxuong = 0, demlen = 0, count1 = 0, count2 = 0; void delay(int ms) { while(ms ) { } } void xulychuso(int dem) { int t = 0; tram = dem/100; t = dem%100; chuc = t/10; donvi = t%10; } VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) void hienthi() { hang_tram = 1; P0 = ma_led_7_doan[tram]; delay(100); hang_tram = 0; hang_chuc = 1; P0 = ma_led_7_doan[chuc]; delay(100); hang_chuc = 0; hang_donvi = 1; P0 = ma_led_7_doan[donvi]; delay(100); hang_donvi = 0; } VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) void main() { TMOD = 0x11; TL0 = 0xB0; TH0 = 0x3C; TL1 = 0xB0; TH1 = 0x3C; IE = 0x8F; TR0 = 1; TR1 = 1; IT0 = 1; IT1 = 1; while(1) { if(flag == 'A') { xulychuso(demxuong); hienthi(); } VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) if(flag != 'A') { xulychuso(demlen); hienthi(); } } void ngat0() interrupt { EX0 = 0; EX1 = 1; flag = 'B'; demlen = demxuong; } } VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) void ngattimer0() interrupt { TF0 = 0; count1++; if(count1 == 20) { demxuong ; count1 = 0; if (demxuong < 0) { demxuong = 999; } } TL0 = 0xB0; TH0 = 0x3C; }void ngat1() interrupt { EX1 = 0; EX0 = 1; flag = 'A'; demxuong = demlen; } VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN ( CODE ) void ngattimer1() interrupt { TF1 = 0; count2++; if(count2 == 20) { demlen++; count2 = 0; if (demlen > 999) { demlen = 0; } } TL1 = 0xB0; TH1 = 0x3C; } V/ MẠCH MÔ PHỎNG PROTEUS Thank You ... 1/ Giới thiệu chung - Mạch đếm ba chữ số sử dụng led đoạn có nút UP/ DOWN để điều chỉnh đếm lên hay đếm xuống 2/ Yêu cầu - Mạch đếm chữ số đếm lên đếm xuống thay đổi chế độ đếm nút nhấn - Lập trình... DEC DV _DOWN CJNE DV _DOWN, #0,EXIT1 MOV DV _DOWN, #9 DEC CHUC _DOWN CJNE CHUC _DOWN, #-1,EXIT1 MOV CHUC _DOWN, #0 MOV CHUC _DOWN, #9 DEC TRAM _DOWN CJNE TRAM _DOWN, #-1,EXIT1 MOV TRAM _DOWN, #0 MOV TRAM _DOWN, #9... R0,28H CJNE R0,#20,X1 MOV 28H,#0 INC DV _UP CJNE DV _UP, #10,X1 MOV DV _UP, #0 INC CHUC _UP CJNE CHUC _UP, #10,X1 MOV CHUC _UP, #0 INC TRAM _UP CJNE TRAM _UP, #10,X1 MOV TRAM _UP, #0 ; VI/ CHƯƠNG TRÌNH ĐIỀU KHIỂN

Ngày đăng: 15/12/2021, 19:35

HÌNH ẢNH LIÊN QUAN

- Led 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hình dạng số 8 và có thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 đoạn 8 led đơn trên led 7 đoạn có Anode(cực +) hoặc  Cathode(cực -) được nối chung v - Mạch đếm up down sử dụng 8051
ed 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hình dạng số 8 và có thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 đoạn 8 led đơn trên led 7 đoạn có Anode(cực +) hoặc Cathode(cực -) được nối chung v (Trang 5)
2.2.2/ Bảng mã hiển thị LED 7 - Mạch đếm up down sử dụng 8051
2.2.2 Bảng mã hiển thị LED 7 (Trang 6)
Bảng mã hiển thị led 7 đoạn dành cho led 7 đoạn có Cathode chung (các led đơn sáng ở mức 1):  - Mạch đếm up down sử dụng 8051
Bảng m ã hiển thị led 7 đoạn dành cho led 7 đoạn có Cathode chung (các led đơn sáng ở mức 1):  (Trang 7)

TỪ KHÓA LIÊN QUAN

w