1. Trang chủ
  2. » Giáo Dục - Đào Tạo

VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN

36 18 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

Thông tin cơ bản

Tiêu đề Vi Điều Khiển 8051 Và Lập Trình Đồng Hồ Số Đơn Giản
Tác giả Trần Đức Khánh
Người hướng dẫn GVHD: Lê Văn Thanh Vũ
Trường học Trường Đại Học Khoa Học Khoa Công Nghệ Thông Tin
Thể loại tiểu luận
Năm xuất bản 2021
Định dạng
Số trang 36
Dung lượng 1,69 MB

Cấu trúc

  • KHOA CÔNG NGHỆ THÔNG TIN

  • MỤC LỤC

  • LỜI MỞ ĐẦU

    • + Chương 1: Tìm hiểu về vi điều khiển 8051

    • KHOA…..................... Độc lập – Tự do – Hạnh phúc

    • PHIẾU ĐÁNH GIÁ TIỂU LUẬN HỌC KỲ: ....... NĂM HỌC: ….......

    • CBChT1 CBChT2

  • CHƯƠNG 1: GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN 8051

    • 1.1. Kiến trúc vi điều khiển 8051

    • 1.1.1 Chuẩn 8051

    • Hình 1-1. Kiến trúc vi điều khiển 8051

    • 1.1.2 Các chân vi điều khiển 8051

    • Mô tả chân:

    • GND (chân 20)

    • Port 0

    • Port 1

    • Port 2

    • Port 3

    • /PSEN

    • ALE/PROG

    • EA/VPP

    • RST

    • XTAL1 và XTAL2

    • Hình 1-3. Sơ đồ kết nối thạch anh

    • 1.1.3. Tổ chức bộ nhớ

    • Hình 1-4. Không gian vùng nhớ của 8051

    • 1.1.3.1. Bộ nhớ trong

      • 1.1.3.1.1. Bộ nhớ chương trình(ROM):

      • 1.1.3.1.2. Bộ nhớ dữ liệu (RAM):

      • 1.1.3.1.3. Thanh ghi chức năng đặc biệt (SFR)

    • Thanh ghi B

    • Thanh ghi từ PSW

    • Bảng 1.1. Chức năng các bit trong thanh ghi PSW

    • Bảng 1.2. Chọn bank thanh ghi

    • Thanh ghi SP

    • 1.1.3.2. Bộ nhớ ngoài

    • 1.1.4. Tập lệnh của 8051 và các chế độ đánh địa chỉ

    • Địa chỉ gián tiếp

    • Chế độ địa chỉ thanh ghi

    • Chế độ địa chỉ tức thời

    • Chế độ địa chỉ chỉ số

    • Phân loại tập lệnh

    • Các lệnh toán học

    • 1.1.4. Timer/Counter

    • Thanh ghi vân hành TH0. TL0, TH1, TL1

    • Thanh ghi TMOD

    • 2 bit M1, M0

    • Bit C/T

    • Bit GATE

    • Thanh ghi TCON

    • 1.1.4.3. Các chế độ của bộ đếm/ định thời

      • Chế độ 0

  • CHƯƠNG 2: LẬP TRÌNH ĐỒNG HỒ SỐ

    • 2.1 Sơ đồ vẽ mạch mô phỏng

    • 2.2 Lập trình

    • 2.3. Kết quả

    • 2.4. Biên dịch assembly

Nội dung

GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN 8051

LẬP TRÌNH ĐỒNG HỒ SỐ

Sơ đồ vẽ mạch mô phỏng

Mạch mô phỏng sử dụng các linh kiện gồm: IC AT89C51, Led 7 thanh, Led đơn, điện trở, điện trở băng, nút bấm.

Lập trình

#define tat 1 char so[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; void delay(int ms)

} void hienthi(unsigned char gio, unsigned char phut)

{ unsigned char chuc0, donVi0, chuc1, donVi1, i; chuc0 = gio/10; donVi0 = gio%10; chuc1 = phut/10; donVi1 = phut % 10; for(i=0;i23) gio=1; if(min==0) { delay(1); if(min == 0) phut++;

Kết quả

Sau khi lập trình xong chúng ta chuyển đổi để lấy file hex phục vụ cho việc chạy mô phỏng:

Khi ta bấm nút tính giờ vi điều khiển bắt đầu hoạt động việc đếm thời gian:

+ Hai đèn led đơn sẽ sáng màu vàng 1s và tắt trong vòng 1s

+ Dựa trên thanh đếm thời gian sau 1 phút, đồng hồ phút sẽ nhảy lên 1

+ Khi ta bấm giữ cài đặt giờ đồng hồ tự nhảy giờ +1 và cho đến khi 23 giờ sẽ lập tức chuyển về 1

Khi bạn giữ nút cài đặt phút trên đồng hồ cho đến khi hiển thị 59 phút, đồng hồ phút sẽ tự động quay về 0 và đồng hồ giờ sẽ tăng thêm 1.

Biên dịch assembly

39: unsigned char gio, phut, giay;

C:0x088E 751201 MOV 0x12,#0x01 //gán nội dung ô nhớ được trỏ bởi giá trị 0x12 bằng giá trị 0x01

C:0x0892 F513 MOV 0x13,A //chép dữ liệu trong thanh ghi a vào ô nhớ với giá trị 0x13

C:0x0894 F514 MOV 0x14,A //chép dữ liệu trong thanh gi a vào ô nhớ với giá trị 0x14

C:0x0896 0514 INC 0x14 //Tăng nội dung ô nhớ được

C:0x0898 B2B0 CPL P3_0(0xB0.0) //Đảo giá trị của p3

AD13 MOV R5,0x13 //chép nội dung từ ô nhớ vào

AF12 MOV R7,0x12 //chép nội dung từ ô nhớ vào

1208E3 LCALL hienThi(C:08E3) if(giay=Y) phut++;

//chép giá trị 0x14 vào thanh

//So sánh và nhảy đến nhãn nếu A#0x3b

C:0x08A6 0513 INC 0x13 //tăng giá trị thanh ghi lên 1 đơn vị

C:0x08AA B43B02 CJNE A,#0x3B,C:08AF //So sánh và nhảy đến nhãn nếu A#0x3b

C:0x08AD 0512 INC 0x12 //tăng giá trị thanh ghi lên 1 đơn vị

C:0x08AF 20B60C JB P3_6(0xB0.6),C:08BE //Nhảy đến nhãn nếu bit = 1

C:0x08B2 7F01 MOV R7,#0x01 //chép giá trị 0x01 vào thanh ghi r7

C:0x08B4 7E00 MOV R6,#0x00 //chép giá trị 0x00 vào thanh ghi r6

C:0x08B6 120936 LCALL delay(C:0936) //Gọi chương trình con

C:0x08B9 20B602 JB P3_6(0xB0.6),C:08BE //Nhảy đến nhãn

C:0x08BC 0512 INC 0x12 //tăng giá trị thanh ghi lên 1

E512 MOV A,0x12 //chép giá trị 0x12 vào thanh

C:0x08C1 9417 SUBB A,#0x17 //Cộng nội dung thanh ghi A và 0x17 + cờ nhớ c, kq cất vào A

C:0x08C3 4003 JC C:08C8 //Nhảy đến nhãn nếu cờ C =1 C:0x08C5 751201 MOV 0x12,#0x01 //gán nội dung ô nhớ được trỏ bởi giá trị 0x12 bằng giá trị 0x01

C:0x08C8 20B70C JB P3_7(0xB0.7),C:08D7 //nhảy đến nhãn

C:0x08CB 7F01 MOV R7,#0x01 //gán giá trị 0x01 vào thanh ghi r7

C:0x08CD 7E00 MOV R6,#0x00 //gán giá trị 0x00 vào thanh ghi r6

C:0x08CF 120936 LCALL delay(C:0936) //Gọi chương trình con

C:0x08D5 0513 INC 0x13 //tăng giá trị thanh ghi lên 1

C:0x08D7 E513 MOV A,0x13 //chép giá trị 0x13 vào thanh ghi A

C:0x08DA 943B SUBB A,#0x3B //Cộng nội dung thanh ghi a và 0x3B+ cờ nhớ c, kết quả nhét vào thanh ghi a

C:0x08DC 40B8 JC C:0896 // nhảy đến nhãn nếu c=1C:0x08DE E4 CLR A //gán a =0

C:0x08DF F513 MOV 0x13,A //gán dữ liệu của thanh ghi A với giá trị 0x13

24: void hienthi(unsigned char gio, unsigned char phut)

26: unsigned char chuc0, donVi0, chuc1, donVi1, i;

C:0x08E3 EF MOV A,R7 //chép giá trị thanh ghi r7 vào thanh ghi a

C:0x08E4 75F00A MOV B(0xF0),#0x0A //gán 0x0A vào giá trị của b

C:0x08E8 F515 MOV 0x15,A //gán thanh ghi a với giá trị 0x15

C:0x08EA EF MOV A,R7 //chép giá trị thanh ghi r7 vào thanh ghi a

C:0x08EB 75F00A MOV B(0xF0),#0x0A //gán 0x0A vào giá trị của b

C:0x08EE 84 DIV AB //chia a cho b

C:0x08EF A9F0 MOV R1,B(0xF0) //chép giá trị của b vào thanh ghi r1

C:0x08F1 ED MOV A,R5 //chép giá trị thanh ghi r5 vào thanh ghi a

C:0x08F2 75F00A MOV B(0xF0),#0x0A //gán 0x0A vào giá trị của b

C:0x08F6 FB MOV R3,A //gán dữ liệu của thanh ghi a với thanh ghi r3

C:0x08F7 ED MOV A,R5 //chép giá trị thanh ghi r5 vào thanh ghi a

C:0x08F8 75F00A MOV B(0xF0),#0x0A //gán 0x0A vào giá trị của b

ADF0 MOV R5,B(0xF0) //chép giá trị của b vào thanh

31: led1 = sang; P0 = so[chuc0]; delay(10); led1 = tat;

C:0x0902 7408 MOV A,#so(0x08) // chép giá trị 0x08 vào thanh ghi a

C:0x0904 2515 ADD A,0x15 //cộng nội dung của a và ô nhớ giá trị 0x15

32: led2 = sang; P0 = so[donVi0]; delay(10); led2 = tat;

C:0x090D 7408 MOV A,#so(0x08) //chép giá trị 0x08 vào thanh ghi a

C:0x090F 29 ADD A,R1 //cộng nội dung thanh ghi a và r1 C:0x0910 12092E LCALL L?0023(C:092E)

33: led3 = sang; P0 = so[chuc1]; delay(10); led3 = tat;

C:0x0917 7408 MOV A,#so(0x08) //chép giá trị 0x08 vào thanh ghi a

C:0x0919 2B ADD A,R3 //cộng nội dung thanh ghi a và r3, lưu vào a

34: led4 = sang; P0 = so[donVi1]; delay(10); led4 = tat;

//gán p2.3 =0 //chép giá trị 0x08 vào thanh

C:0x0923 2D ADD A,R5 //cộng nội dung thanh ghi a và r5, lưu vào a

C:0x0936 EF MOV A,R7 //Chép dữ liệu từ thanh r7 vào thanh ghi a C:0x0937 1F DEC R7 //Giảm nội dung thanh r7 đi 1 đơn vị

C:0x0938 AC06 MOV R4,0x06 //gán giá trị 0x06 vào thanh ghi r4

C:0x093C 1E DEC R6 //Giảm nội dung thanh r6 đi 1 đơn vị

C:0x093D 4C ORL A,R4 // thực hiện OR nội dụng thanh ghi a và r4, kết quả cất vào a

Ngày đăng: 15/10/2021, 19:09

HÌNH ẢNH LIÊN QUAN

Hình 1-1. Kiến trúc vi điều khiển 8051 - VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN
Hình 1 1. Kiến trúc vi điều khiển 8051 (Trang 5)
Hình 1-2. Sơ đồ chân VĐK AT89C51 - VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN
Hình 1 2. Sơ đồ chân VĐK AT89C51 (Trang 6)
Hình 1-3. Sơ đồ kết nối thạch anh 1.1.3. Tổ chức bộ nhớ - VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN
Hình 1 3. Sơ đồ kết nối thạch anh 1.1.3. Tổ chức bộ nhớ (Trang 9)
Hình 1-5. Bộ nhớ dữ liệu trên 8051 1.1.3.1. Bộ nhớ trong - VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN
Hình 1 5. Bộ nhớ dữ liệu trên 8051 1.1.3.1. Bộ nhớ trong (Trang 10)
Hình 1-4. Không gian vùng nhớ của 8051 - VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN
Hình 1 4. Không gian vùng nhớ của 8051 (Trang 10)
1.1.3.1.3. Thanh ghi chức năng đặc biệt (SFR) - VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN
1.1.3.1.3. Thanh ghi chức năng đặc biệt (SFR) (Trang 12)
Bảng 1.2. Chọn bank thanh ghi - VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN
Bảng 1.2. Chọn bank thanh ghi (Trang 13)
Hình 1.6 Thanh ghi của Timer - VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN
Hình 1.6 Thanh ghi của Timer (Trang 22)
Hình 1.9. Thanh ghi TCON - VI ĐIỀU KHIỂN 8051 VÀ LẬP TRÌNH ĐỒNG HỒ SỐ đơn GIẢN
Hình 1.9. Thanh ghi TCON (Trang 24)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w