Vậy là bạn đã cài đặt xong chương trình KeilC cho 8051.Sau đây là hướng dẫn để crack dùng đầy đủ các chức năng của phần mềm Bước 1: Chạy chương trình KeilC vừa cài đặt với quyền Admin Cl
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA KỸ THUẬT ĐIỆN TỬ -o0o -
BÀI THỰC HÀNH MÔN KỸ THUẬT VI XỬ LÝ
NGÀNH HỌC: ĐIỆN-ĐIỆN TỬ VÀ ĐIỆN TỬ-VIỄN THÔNG
ĐỐI TƯỢNG: ĐẠI HỌC
NGUYỄN QUỐC UY -HÀ NỘI, 2016-
Trang 2MỤC LỤCChuẩn bị 1:DOWNLOAD và cài đặt KeilC lập trình với 8051
Chuẩn bị 2: DOWNLOAD và cài đặt Protus 8.1 SP1
Bài 0:Bài mở đầu.
Bài 1: Hướng dẫn tạo project với KeilC lập trình 8051.
Bài 2:: Hướng dẫn tạo project với phần mềm Protus 8.1 SP1 và nạp code
mô phỏng
Bài 3:Tổng quan cách khai báo biến,hằng và các kiểu dữ liệu rong ngôn ngữ C.
Bài 4: Lập trình nháy LED đơn với 8051.
Bài 5:Lập trình LED 7 thanh với 8051
Bài 6: Lập rình LED Martrix với 8051.
Bài 7: Lập trình nút nhấn với 8051.
Bài 8:Lập trình điều khiển IC 74HC595.
Bài 9: Lập trình Bộ đếm -Bộ định thời(Timer/Counter) trong 8051.
Bài 10: Lập trình ngắt trong 8051.
Trang 3BÀI MỞ ĐẦU
TỔNG QUAN VỀ VĐK 8051&MÔ PHỎNG TRÊN PROTUS
Hôm nay chúng ta sẽ đến với những kiến thức cơ bản về vi điều khiển 8051
1.Đối tượng tham gia học tập:
Sinh viên đam mê lập trình nói chung và đam mê lập trình vi điều khiển nói riêng
Sinh viên muốn qua kì thi “Kỹ thuật vi xử lí”
2.Yêu cầu:
Có ý thức Tự học tập, tự nghiên cứu
Sinh viên đã hiểu biết cơ bản ít nhất một ngôn ngữ lập trình C
Chăm chỉ hoàn thành các bài tập nếu như các bạn muốn việc học là hiệu quả và tiết kiệm thời gian của chính các bạn
Trang 4 Ghi lại mọi thắc mắc và hỏi trong tiết học để chúng ta cùng thảo luận và tối ưu code được tốt hơn Khuyến khích tự tìm kiếm câu trả lời trên google
Trang 5Chuẩn bị 1:DOWNLOAD và cài đặt KeilC lập trình
với 8051
Có rất nhiều trình biên dịch hỗ trợ lập trình 8051 trong đó có một công cụ được sử dụng nhiều là KeilC KeilC hỗ trợ lập trình ASM và C với họ vi điều khiển 8051 Sau đây là các bước để cài đặt trình biên dịch này.
1.Đầu tiên bạn download link dưới đây:
Trang 6Bước 2: Tick vào ô “I agree to all the tems of the preceding License
Agreement”, chọn Next.
Bước 3: Chọn đường dẫn lưu thư mục cài đặt, sau đó chọn Next.
Trang 7Bước 4: Điền thông tin cá nhân và chọn Next.
Trang 8Bước 5: Chờ cho máy tiến hành cài đặt.
Bước 6: Sau khi cài đặt xong, chọn Finish (Có thể tích hoặc bỏ tích các ô tùy bạn)
Trang 9Vậy là bạn đã cài đặt xong chương trình KeilC cho 8051.
Sau đây là hướng dẫn để crack dùng đầy đủ các chức năng của phần mềm
Bước 1: Chạy chương trình KeilC vừa cài đặt với quyền Admin (Click
chuột phải chọnRun as administrator), phần mền hiện thị chọn File
-> License Management.
Trang 10Bước 2: Hộp thoại License Management xuất hiện, trong tab Single-User License các bạn copy mã CID.
Trang 11Bước 3: Chạy file “Keygen.exe”, paste mã vừa copy vào ô CID, kiểm
tra Taget đã chọn là C51 chưa, chọn Generate.
.Bước 4: Copy đoạn mã mới được generate
Trang 12Bước 5: Trở lại hộp thoại License Management và paste vào ô New License
ID Code (LIC) Sau đó bấm Add LIC.
Bước 6: Close.
Như vậy việc crack đã xong.
Trang 13Chuẩn bị 2: DOWNLOAD và cài đặt Protus 8.1 SP11.Đầu tiên các bạn download phần mềm dưới link sau:
https://www.fshare.vn/file/7D1RGOQFNRLE
2.Hướng dẫn cài đặt:
Bước 1: Giải nén sau đó chạy file “proteus8.1.SP1.exe”, click Next.
Bước 2: Chọn “I accept the terms of this agreement.” Sau đó click Next.
Trang 14Bước 3: Chọn “Use a locally installed license key”, click Next .
Bước 4: Click Next.
Bước 5: Chọn “Browse For Key File”
Bước 6: Hộp thoại hiển thị lên, chọn tới file “Key.lxk” trong file giải nén (…\Proteus 8.1 SP1 Pro\crack\(Step1) Before Installing Proteus/)
Bước 7 Click Install.
Trang 15Bước 8: Hộp thoại hiển thị lên, click Yes
Bước 9: Click Close.// Dành cho máy chưa crack lần nào.B4-B9 Bước 10: Click Next.
Bước 11: Chọn Typical.
Bước 12: Chờ cho chương trình cài đặt
Bước 13: [Quan trọng] Không chạy Proteus Click Close.
Trang 16Bước 14: Copy đè thư mục BIN (…\Proteus 8.1 SP1 Pro\crack\(Step2) After Installing Proteus) vào thư mục cài đặt Proteus (Program Files (x86) cho win 64bit, Program Files cho win 32bit)
Bước 15: Copy đè thư mục MODELS (…\Proteus 8.1 SP1 Pro\crack\
(Step2) After Installing Proteus) vào thư mục Proteus trong ProgramData (Lưu ý thư mục này để ẩn nên phải cho show hiden files)
Bước 16: Xong chạy Proteus xem thành quả nào.
Trên đây là hướng dẫn cài đặt Proteus 8.1 SP1 Pro
Chúc các bạn thành công !
Trang 17Bài 1: Hướng dẫn tạo project với KeilC lập trình
8051.
1.Chuẩn bị phần mềm KeilC cho 8051:
Cài đặt KeilC
2.Thực hành tạo project:
Bước 1: Chạy phần mềm, chọn Project->New uVision Project…
Bước 2: Hộp thoại hiển thị, các bạn tùy chọn vị trí lưu project và tên
project của mình, click Save.
Trang 18Bước 3: Cửa sổ “Select Device for …” xuất hiện, phần Data base các bạn chọn Atmel->AT89C52
Bước 4: Hộp thoại hiển thị tiếp theo, click No.
Sau đó ta có giao diện project như sau:
Trang 19Bước 5: Để tạo một file mới cho chương trình chúng ta chọn vào biểu tượng “New” (như hình) hoặc bấm tổ hợp phím Ctrl+N
Bước 6: Sau đó bấm Save hoặc Ctrl+S
Trang 20Bước 7: Lưu tên file, với các file chương trình các bạn lưu dưới dạng file c
và các file header các bạn lưu dưới dạng file h Sau đó bấm Save.
Kết quả như hình:
Trang 21Nhưng file này chưa được add vào project của chúng ta, add file các bạn làm tiếp như sau:
Bước 8: Click chuột phải vào Source Group 1, chọn Add Files to Group
‘Source Group 1’…
Trang 22Bước 9: Cửa số hiển thị, các bạn click vào file main.c vừa tạo, click Add và tắt cửa sổ.
Trang 23File main.c đã được add vào project như sau:
Bước 10: Bước này thiết lập cho project xuất ra file hex sau khi build Click vào biểu tượng Target Options…
Trong tab Output, tick vào Create HEX File Sau đó bấm OK
Trang 24Bước 11: Viết 1 đoạn code cơ bản.
Bước 12: Build project bằng cách bấm vào biểu tượng ( vòng tròn đỏ như hình) hoặc bấm phím F7 Sau đó xem kết quả.
Trang 25Sau khi build, chúng ta sẽ thấy file hex trong thư mục chứa project, file này sẽ được nạp vào chip thông qua chương trình Proteus.
Trang 26Bài 2:: Hướng dẫn tạo project với phần mềm Protus
8.1 SP1 và nạp code mô phỏng 1.Đầu tiên các bạn chuẩn bị phần mềm Proteus 8.1 SP1:
Tiếp theo chuẩn bị 1 file hex(Bài 1)
Trang 27Bước 3: Mình đang cần vẽ mạch nguyên lý nên mình chọn “Create a
schematic …”, chọn “DEFAULT”, click Next.
Bước 4: Do bài viết lần này mình không vẽ mạch in nên mình chọn “Do not create a PCB layout.” Sau đó các bạn bấm Next.
Trang 28Bước 5: Chọn “No Firmware Project” Click Next.
Trang 29Bước 6: Click Finish.
Vậy chúng ta đã tạo xong project trong Proteus Bước tiếp theo các bạn vẽ mạchnguyên lý và chạy mô phỏng code cho họ 8051
Bước 7: Các bạn click vào biểu tượng chữ P màu đỏ như hình dưới để lấy các linh kiện vẽ mạch.
Trang 30Bước 8: Trong bài này mình sẽ vẽ demo cho họ 8051, ở đây là chip 89c52 Phần “Keywords” các bạn điền “89c52”, chọn linh kiện trong ô “Results”, sau đó bấm OK.
Trang 31Để lấy nhiều thiết bị thì không cần bấm OK (vì ô cửa sổ sẽ mất đi), bạn chỉ việc nhân Enter sau khi chọn xong một thiết bị là được Chọn tiếp 6 devices sau:
Led đơn xanh lá 5mm: LED-GREEN
Sau khi các bạn chọn xong kết quả như sau:
Trang 32Bước 9: Sau khi đã lấy đủ linh kiện, các bạn chọn vào linh kiện mình muốn
vẽ Click vào biểu tượng “Component Mode” (thứ 2 từ trên xuống) bên thanh công cụ trái sau đó chọn chip AT89C52 và đặt vào phân vùng kẻ xanh bên phải (dùng chuột trái).
Trang 33Đừng quên Ctrl+Z nếu lỡ tay đặt nhiều thiết bị quá, hoặc có thể click chuột phải
2 lần vào thiết bị đó để xóa đi
Bước 10: Lặp lại bước 9 với các linh kiện còn lại như hình:
Trang 34Chú ý: GND (Đất) và VCC (Nguồn) các bạn lấy ở “Terminals Mode” khoanh màu đỏ như hình dưới.
Các thao tác với mouse trong Proteus:
Chọn linh kiện để vẽ:Chuột trái lên tên linh kiện trong cửa sổ “Object
selector”
Đặt linh kiện:Chuột trái lên cửa sổ mạch điện Right click lên linh kiện
trong cửa số mạch điện sẽ làm cho linh kiện đó được bao bởi màu “đỏ”, tức bạn đang chọn linh kiện đó
Bỏ chọn linh kiện:thực hiện bằng cách chuột phải lên một vị trí trống
trên cửa sổ mạch điện
Delete linh kiện:Chuột phải 2 lần lên 1 linh kiện là delete linh kiện đó
khỏi cửa sổ mạch điện, hoặc chuột phải 1 lần lên 1 linh kiện đã được chọn trước đó (có màu đỏ) cũng sẽ xóa linh kiện này
Di chuyển linh kiện:chọn linh kiện trước (chuột phải) và drag để di
chuyển linh kiện bằng chuột trái
Trang 35 Zoom To – Zoom Nhỏ mạch:Sử dụng con lăn chuột giữa để zoom
mạch
Xoay và lật linh kiện:chọn linh kiện cần xoay hay lật, dùng các nút công
cụ để xoay hoặc lật linh kiện Để tiết kiệm thời gian thì xoay lật linh kiện trước khi đặt nó vào trong bản mạch
Bước 11: Nối dây, không cần công cụ, để nối dây bạn chỉ cần rê mouse đến điểm cần nối của linh kiện, bạn sẽ thấy xuất hiện 1 dấu chéo “x”, lúc đó hãy click chuột và di chuyển (không cần giữ chuột) đến vị trí tiếp theo và click lần nữa.
Như vậy là các bạn đã vẽ xong 1 mạch cơ bản sử dụng chip 89C52 Để mạch hoạt động được, các bạn điền các thông số cho các linh kiện bằng các bước sau:
Bước 12: Nháy đúp chuột trái vào tụ C1 như hình,Cửa sổ hiển thị các bạn
Trang 36điền vào giá trị “33pF”
Với thạch anh các bạn nhập giá trị 12MHz
Trang 37Các bạn lặp lại bước trên để được các thông số như hình:
Vậy là chúng ta đã vẽ xong mạch nguyên lý bằng Proteus với đầy đủ các thông
số của mạch
Trang 38Để chạy mô phỏng, bạn dùng đoạn code sau cho file KeilC và buil ra file HEX,sau đó nạp vào vi điều khiển bằng Proteus.
Code điều khiển led đơn
Trang 39Sau khi build các bạn được file hex, add file hex vào chip 89c52 trong proteus như sau:
Bước 13: Nháy đúp chuột vào chip AT89C52 trong mạch, cửa sổ hiển thị, các bạn chọn đường dẫn tới file hex, sau đó bấm OK.
Bước 14: Để chạy mô phỏng các bạn chọn Debug -> Run Simulation hoặc bấm phím F12
Trang 40Bước 15: Để tắt mô phỏng các bạn bấm Debug -> Stop VSM Debugging (Tab Message xuất hiện, các bạn tắt đi)
Vậy là chúng ta đã hoàn thành tạo project với phần mềm Proteus 8.1 SP1 + nạp code mô phỏng Tận hưởng thành quả đầu tiên đi nào!
ĐÂY LÀ BÀI TẬP 1.1.
Trang 41Bài 3:Tổng quan cách khai báo biến,hằng và các
kiểu dữ liệu trong ngôn ngữ C.
Để lập trình cho các họ vi điều khiển có thể sử dụng nhiều ngôn ngữ khác nhau,nhiều trình biên dịch khác nhau, trong dó C là ngôn ngữ thông dụng hơn cảtrong kỹ thuật vi điều khiển
Khi sử dụng ngôn ngữ C người lập trình không cần hiểu chi tiết về cấu trúc của
bộ vi điều khiển Điều này sẽ giúp tiết kiệm rất nhiều thời gian khi chúng ta tiếpcận một vi điều khiển mới
Sau đây là một số kiến thức liên quan đến cách khai báo biến, hằng, các kiểu dữliệu cũng như các toán tử phổ biến hay sử dụng khi lập trình vi điều khiển bằngngôn ngữ C
1.Khai báo biến.
Biến dùng để lưu trữ một giá trị nào đó Bạn cứ tưởng tượng rằng giả sử bạn cómột cái bao và bạn có thể sử dụng cái bao đó với nhiều mục đích khác nhau nhưdùng để chứa gạo, chưa ngô, chứa khoai, … thì lúc này cái bao đó được ví như
là một biến trong C
Khai báo dữ liệu tổng quát trong C sử dụng với KeilC có dạng như sau:
Kiểu_dữ_liệu [Vùng_nhớ] Tên_biến [_at_ Đia_chỉ];
Hai thông tin [Vùng_Nhớ] và [Địa_chỉ] có thể thêm hoặc không lúc đó trìnhbiên dịch sẽ biên dịch tự động Các vùng nhớ trong vi điều khiển 8051 được liệt
kê trong bảng sau:
Trang 42Để gán giá trị cho biến ta chỉ việc dùng cú pháp Tên biến = x:
Để giúp tăng cường độ an toàn trong các chương trình, các giá trị có thể được
đánh dấu là các hằng bằng từ khóa định tính const Với từ khóa này thì một biến
khai báo trở thành một hằng Mọi thao tác do vô ý hay cố ý để điều chỉnh giá trịcủa nó sẽ bị báo lỗi bởi hầu hết các trình dịch Bởi vì sau khi đã dùng từ khóa
định tính const thì các giá trị của biến không thể thay đổi nữa nên người lập
trình phải gán giá trị ban đầu ngay lúc khai báo
Chuẩn C cho phép hoán đổi vị trí của các hiệu chính Thí dụ cả hai khai báohằng sau đây là tương đương:
int const Hang_So = 12;
const int Hang_So = 12;
Trang 43Cả hai cách khai báo trên đều được chấp nhận Sau khi thực hiện khai báo trênchúng ta có biến Hang_So mang dữ liệu là 12 và không thể thay đổi trong suốtquá trình thực thi chương trình.
3.Các kiểu dữ liệu.
Với C chúng ta có các kiểu dữ liệu sau hay được sử dụng Các bạn có thể dễdàng thấy sự khác nhau giữa SỐ KHÔNG DẤU VÀ SỐ CÓ DẤU mặc dùchúng có cùng độ dài (số lượng bit)
Tùy với mục đích sử dụng và dữ liệu tối đa mà các bạn nghĩ biến có thể đạt đếncác bạn nên chọn kiểu dữ liệu vừa đủ nhất để tránh lãng phí tài nguyên vì vớiđiều khiển 8051 thì số lượng Ram khá là hạn chế (128 Byte với dòng cũ vàthêm 128 Byte Ram với một dòng sau này được cấp phát ở vùng idata)
Ngoài ra, với riêng KeilC còn có thêm một số kiểu dữ liệu được sử dụng riêngcho dòng vi điều khiển 8051 Bảng dữ liệu đó như sau:
Trang 44– bit : Dùng để khai báo các biến có giá trị 0 hoặc một hay các biến logic trênvùng RAM của vi điều khiển Khi khai báo biến kiểu bit trình dịc Keil C sẽ mặcđịnh vùng nhớ sử dụng là BDATA.
– sbit, sfr, sfr16: Dùng để định nghĩa các cho các thanh ghi chức năng hoặc cáccổng trên vi điều khiển dùng để truy nhập các đoạn dữ liệu 1 bit, 8 bit, 16 bit.SBIT có thể dùng khai bảo một chân của một cổng
Trên đây là các thông tin cơ bản liên quan đến khai báo dữ liệu và hằng được sửdụng trong suốt quá trình lập trình của chúng ta Các bạn cần nắm chắc kiếnthức này để có thể tiếp cận sâu hơn về lập trình nói chung và lập trình vi điềukhiển nói riêng
Trang 45Bài 4: Lập trình nháy LED với 8051.
Ở bài này sẽ hướng dẫn các bạn lập trình điều khiển Output cơ bản thực hành với LED đơn Các bạn thực hiện vẽ mạch sau trong Proteus
Các bạn chú ý: do là mô phỏng thử nghiệm chương trình nên mình vẽ mạch ởmức độ cơ bản tuy nhiên ở mạch thật các bạn cần bổ sung nguồn, thạch anh vàmạch reset cho mạch để chương trình có thể chạy được Với mạch như trênchúng ta đã có thể thực hiện mô phỏng chương trình cơ bản với LED đơn
a.Lập trình điều khiển từng Pin của vi điều khiển.
8051 cho phép chúng ta tác động tới từng chân IO của vi điều khiển Để sử
dụng tính năng này chúng ta có thể sử dụng khai báo sbit để định nghĩa tên cho
chân chúng ta muốn sử dụng Khai báo sbit được thực hiện theo mẫu sau:
sbit Tên_Chân_Định_Nghĩa = Địa_Chỉ_Pin;
Trang 46Ví dụ cụ thể như sau:
sbit LED = P1^0;
Ở đây, chân P1.0 được định nghĩa có tên là LED
Sau khi khai báo sbit như trên chúng ta có thể sử dụng Tên chân mà chúng tamới định nghĩa để có thể điều khiển độc lập từng chân Khi các bạn gán chân đóbằng giá trị 0 thì đầu ra sẽ ở mức 0V còn khi các bạn gán cho chân đó ở mức 1thì sẽ có mức điện áp ra là 5V
Ví dụ ở chương trình sau chúng ta sẽ sử dụng định nghĩa sbit để điều khiển chânP1.0 của 8051 thực hiện chức năng nhấp nháy một con LED Các bạn xem codetheo mẫu sau
/* Khai bao su dung thu vien cho 89c52 */
#include <REGX52.H>
/* Su dung sbit de dinh nghia cho tung chan cua Vi dieu khien*/
sbit LED = P1^0;
/* Trien khai ham tao do tre */
void Fn_Delay (unsigned intTime)
{
while(Time );
}
/* Chuong trinh chinh */
void main(void)
Trang 47Fn_Delay(50000); // Tre 1 thoi gianLED = 1; // Xuat 1 ra chan LEDFn_Delay(50000); // Tre 1 thoi gian}
}
ĐÂY LÀ BÀI TẬP 1.2
Với việc lập trình như trên các bạn sẽ LED nối với chân P1.0 sẽ được thay đổi
giữa sáng và tắt Ở đây có hàm Fn_Delay() có chức năng thay đổi tốc độ nhấp
nháy của con LED Khi tham số truyền vào hàm này càng lớn thì độ trễ càng lâucủa nó cũng chỉ có 8 pin Vì thế bạn có thể xuất data cho 8 pin một lúc với 1dòng lệnh tức tần số nháy nháy các chậm Các bạn có thể thay đổi thông số chohàm này để thấy rõ hơn
Sau khi lập xong Project theo các bước đã hướng dẫn ở các bài trước các bạn gõ
các dòng code trên vào và thực hiện Build để tạo ra file hex sau đó các bạn
chuyển file hex đó vào IC 89C52 trên Proteus và chạy chế độ mô phỏng Cácbạn sẽ thấy kết quả Như vậy là các bạn đã có thể điều khiển được một chân của
8051 ở chế độ Output
Sau khi thực hiện cho chân P1.0 các bạn có thể thực hiện trên các chân kháchoặc thực hiện nhiều hơn một chân nếu các bạn muốn
b.Lập trình điều khiển theo Port của vi điều khiển.
Ngoài điều khiển theo từng chân chúng ta có thể xuất dữ liệu ouput theo cả Porttrên 8051 8051 là một vi điều khiển 8 bit và một Port với điều kiện các Pin đóchung một Port Để can thiệp đến một Port các bạn chỉ cần gán dữ liệu các bạnmong muốn cho tên Port đó Ví dụ như sau:
1 P2 = 0x55;