Để phân biệt được sự khác nhau cơ bản giữa μP và vi xử lý tín hiệu (Digital Signalprocessor, viết tắt: DSP) ta phải xem xét kỹ hơn khâu tính toán thuộc CPU của μP. Đối với μP thông thường, các phép tính số học thường được thực hiện giữa các thanh ghi số liệu có bề rộng chính bằng bề rộng của số liệu. Ví dụ: nếu μP 16-Bit thì các thanh ghi số liệu cũng là 16-Bit. Điều này dẫn đến nhược điểm sau đây: Bất kỳ thanh ghi nào cũng có thể nhận kết quả của phép tính số học như cộng trừ. Điều này gây khó khăn khi thực hiện các phép cộng trừ có tích lũy, nhất là khi kết quả của các phép tính đó vượt quá kích cỡ số liệu cho phép (ở ví dụ trên: 16-Bit) Khi thực hiện phép nhân, kết quả bao giờ cũng có bề rộng gấp đôi của số liệu chuẩn. Ví dụ: phép nhân 16-Bit x 16-Bit cho kết quả 32 Bit. Các μP có hỗ trợ phép nhân thường cất kết quả ở 2 thanh ghi số liệu riêng biệt. Điều này làm cho người lập trình sẽ phải tốn kém thêm vài thao tác lệnh nữa để làm tròn số mới đi đến kết quả 16-Bit cuối cùng mà ít gây sai số. Bí quyết thành công của DSP có thể được diễn giải một cách đơn giản công thức:
Trang 1LỜI CẢM ƠN
Trong những năm gần đây công nghệ thong tin có những bước pháttriển vượt tăng vọt, đặc biệt là sự ra đời của máy tính đã tạo cho xã hội mộtbước phát triển mưới, nó ảnh hưởng đến hầu hết các vấn đề của xã hội trongcông nghiệp cũng vậy Hòa cùng với sự phát triển đó, ngày càng nhiều nhàsản xuất đã ứng dụng các họ vi xử lí có tính năng mạnh vào trong công
nghiệp, trong việc điều khiển và xử lý dữ liệu Những hạn chết trong kỹ thuậttương tự như sự trôi thông số, sự làm việc cố định dài hạn, những khó khăncủa việc chuyển nhanh công nghệ số Ngoài ra điều khiển số còn cho phép tiếtkiệm linh kiện phần cứng, cho phép tiêu chuẩn hóa Với cùng một bộ vi xử lý,một cấu trúc phần cứng có thể dùng cho mọi ứng dụng, chỉ cần thay nội dung
ô nhớ Tuy nhiên kỹ thuật số có những nhược điểm như xử lý các tín hiệu rờirạc,…, đồng thời tín hiệu tương tự có ưu điểm mà kỹ thuật số không có nhưtác động nhanh và liên tục Vì cậy ngày nay xu hướng trong điều khiển làphối hợp điều khiển số và điều khiển tương tự
Để nắm vững được những kiến thức đã học thì việc nghiên cứu là cầnthiết đối với sinh viên Bài tập lớn môn học Vi xử lý trong đo lường và điềukhiển đã giúp cho chúng em biết them được rất nhiều về cả kiến thức lẫn kinhnghiệm
Nhân đây em cũng xin cảm ơn rất nhiều đến thầy giáo Bùi Văn Huy đãtận tình hướng dẫn và chỉ bảo em để làm bài này
MỤC LỤ
Trang 2LỜI CẢM ƠN 1
MỤC LỤC 2
DANH MỤC HÌNH VẼ 4
CHƯƠNG 1: TỔNG QUAN VỀ VI XỬ LÝ TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN 5
1.1 Cấu trúc hệ thống đo lường điều khiển có sử dụng Vi xử lý 5
1.1.1 Vi xử lý 5
1.1.2 Vi xử lý tín hiệu 6
1.2 Cấu trúc chung họ 8051 10
1.2.1 Giới thiệu về dòng vi điều khiển 8051 10
1.2.2.1 Sơ độ khổi 12
1.2.2.2 Sơ đồ và chức năng của các chân 13
1.2.3 Tổ chức bộ nhớ 17
1.2.3.1 Bộ nhớ chương trình 17
1.2.3.2 Bộ nhớ dữ liệu 17
1.3 Tổng quan về ngôn ngữ C và các hàm, kiểu dữ liệu hay dùng cho việc lập trình cho Vi điều khiển 18
1.3.1 Giới thiệu ngôn ngữ C 18
1.3.2 Kiểu dữ liệu trong C 19
CHƯƠNG 2: Cảm biến DHT11 và giao tiếp chuẩn 1 Wire 20
2.1 Cấu tạo và đặc điểm của DHT11 20
2.2 Nguyên lí giao tiếp Vi điều khiển theo chuẩn 1 Wire 20
2.2.1 Giới thiệu chuẩn giao tiếp 1 wire: 20
Hình 2.1: Cấu trúc mạng 1 wire 20
2.2.2 Cách thức hoạt động: 21
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG TRÊN CƠ SỞ 8051 23
3.1 Lưu đồ thuật toán 23
3.2 Chương trình điều khiển xây dựng trên KeilC 23
Trang 33.2.1 Khai báo thư viện cà các biến dùng trong chương trình 23
3.2.2 Chương trình giao tiếp với LCD16x2 23
3.2.4 Chương trình chính 29
3.3 Kết quả mô phỏng, thiết kế mạch nguyên lí và thực nghiệm trên mạch thực 31
3.3.1 Kết quả mô phỏng 31
3.3.2 Thiết kế mạch nguyên lí và mạch in 32
3.2.4 Kết quả thực hiện trên mạch thực 34
KẾT LUẬN 35
TÀI LIỆU THAM KHẢO 36
Trang 4DANH MỤC HÌNH VẼ
Hình 1.1: Đơn vị xử lí trung tâm 5
Hình 1.2: Cấu trúc Vonneumann 8
Hình 1.3: Các đặc tính của dòng 8051 11
Hình 1.4: Kiến trúc cơ bản trong 8051 12
Hình1.5:Sơ đồ chân của 8051 13
Hình 1.6: Sơ đồ reset ngoài của 8051 14
Hình 1.7 : Bảng mô tả chức năng riêng của Port 3 14
Hình 1.8: Mạch dao động thạch anh ngoài của 8051 15
Hình 1.8 : Nối trở kéo cho Port 0 16
Hình 1.9: Kiểu số nguyên trong C 19
Hình 1.10: Kiểu số thực trong C 19
Hình 2.1: Cấu trúc mạng 1 wire 20
Hình 3.1: Kết quả mô phỏng trên proteus 31
Hình 3.2: Thiết kế mạch nguyên lí 32
Hình 3.3: Thiết kế mạch in 33
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ VI XỬ LÝ TRONG ĐO LƯỜNG
VÀ ĐIỀU KHIỂN 1.1 Cấu trúc hệ thống đo lường điều khiển có sử dụng Vi xử lý
1.1.1 Vi xử lý
Chữ "vi " trong khái niệm trên có nguồn gốc từ chữ "micro" ký hiệu là
"μ", có ý nghĩa là "một phần triệu" hoặc "rất nhỏ" Vi xử lý (Microprocessor)
có nghĩa là "bộ xử lý rất nhỏ", được ký hiệu là "μP"
Hình 1.1: Đơn vị xử lí trung tâm
Về cơ bản, μP thường có cấu trúc được thể hiện trong hình trên Tùytừng loại μP, chúng có thể có thêm một vài đơn vị chức năng khác nữa, nhưngcấu trúc tối thiểu của chúng bao giờ cũng có ba khâu:
Khâu tính toán: gồm có đơn vị số học và lôgic (Arithmetic Logic Unit:
Trang 6Khâu điều khiển: gồm có bộ giải mã lệnh và bộ đếm chương trình.
Khâu đệm: với các bộ đệm (thường là ba trạng thái: Tri-State), ghép
nối Bus trên phiến của μP với các Bus điều khiển, số liệu và địa chỉ nằm bênngoài
Hai khâu tính toán và điều khiển thường được gọi ghép chung là đơn vị
xử lý trung tâm (Central Processing Unit: CPU) Khi nảy sinh nhu cầu sử
dụng μP trong các hệ thống điều khiển tự động (ĐKTĐ), ta sẽ phải sử dụngthêm các phần tử ngoại vi, tạo thành giao diện thích hợp giữa μP với môi
trường công nghệ bên ngoài phiến (Chip).
1.1.2 Vi xử lý tín hiệu
Để phân biệt được sự khác nhau cơ bản giữa μP và vi xử lý tín hiệu
(Digital Signalprocessor, viết tắt: DSP) ta phải xem xét kỹ hơn khâu tính toán
thuộc CPU của μP
Đối với μP thông thường, các phép tính số học thường được thực hiệngiữa các thanh ghi số liệu có bề rộng chính bằng bề rộng của số liệu Ví dụ:nếu μP 16-Bit thì các thanh ghi số liệu cũng là 16-Bit Điều này dẫn đếnnhược điểm sau đây: Bất kỳ thanh ghi nào cũng có thể nhận kết quả của phéptính số học như cộng trừ Điều này gây khó khăn khi thực hiện các phép cộngtrừ có tích lũy, nhất là khi kết quả của các phép tính đó vượt quá kích cỡ sốliệu cho phép (ở ví dụ trên: 16-Bit)
Khi thực hiện phép nhân, kết quả bao giờ cũng có bề rộng gấp đôi củasố liệu chuẩn Ví dụ: phép nhân 16-Bit x 16-Bit cho kết quả 32 Bit Các μP có
hỗ trợ phép nhân thường cất kết quả ở 2 thanh ghi số liệu riêng biệt Điều nàylàm cho người lập trình sẽ phải tốn kém thêm vài thao tác lệnh nữa để làmtròn số mới đi đến kết quả 16-Bit cuối cùng mà ít gây sai số
Bí quyết thành công của DSP có thể được diễn giải một cách đơn giảncông thức:
∑a i x1(1)
Trang 7Đó là công thức nổi tiếng tính "tổng tích lũy" được sử dụng trong hầu
hết các thuật toán xử lý tín hiệu số (digital) như các khâu lọc tín hiệu, biến đổi
Fourier Phần lớn các thuật toán điều khiển/ điều chỉnh (ĐK/ĐC) cũng cóthể quy về công thức đó Nếu μP thông thường muốn thực hiện thuật toán (1)với tốc độ cao, μP đó phải có khả năng thực hiện đồng thời một phép nhân vàmột phép cộng chỉ trong một nhịp lệnh duy nhất Vì giá trị của tổng (1) liêntục được tăng thêm lượng bằng kết quả của phép nhân μP sẽ phải có bộ phậncứng và một thanh ghi tích lũy Trong các μP thông thường không có thanhghi này, chí ít cũng thiếu bộ nhân Khâu tính toán của DSP vì vậy được bổ
sung thêm một thanh ghi tích lũy (Accumlator, viết tắt: ACC) có bề rộng gấp
đôi bề rộng số liệu chuẩn Ví dụ: nếu bề rộng số liệu là 16-Bit, ACC sẽ là Bit Duy nhất thanh ghi ACC là nơi thực hiện và chứa kết quả của mọi phépcộng/trừ, vì vậy rất thuận tiện cho các phép tính tích lũy sau khi nhân, chophép giảm một cách đáng kể (so sánh với μP thông thường) thời gian thựchiện các phép tính xử lý tín hiệu
32-Như vậy, về bản chất DSP là μP có thêm thanh ghi ACC và bộ nhâncứng Nhiều DSP kết hợp cả hai khâu đó trong một đơn vị gọi là MACC, ởtrên ta đã nhắc đến nhược điểm cố hữu của μP khi thực hiện phép nhân: đó làviệc bề rộng của kết quả nhân tăng gấp đôi và được cất ở 2 thanh ghi khácnhau khiến cho thao tác làm tròn hoặc xử lý kết quả rất tổn thất thời gian.Cũng tại đây, nổi bật lợi thế của DSP: nhiều DSP cho phép thực hiện các thaotác đó đồng thời với nhân và tích lũy chỉ trong một nhịp lệnh duy nhất Tuynhiên, có được thế mạnh đó còn là nhờ thay đổi cấu trúc Bus trên chip
Ta hãy xét cách thực hiện một lệnh nhân của μP thông thường khi tínhcông thức (1) Công thức đó có chứa các hệ số ai cố định, vì vậy chúng sẽđược cất ở bộ nhớ chương trình Các dữ liệu xi được cất ở bộ nhớ số liệu.Chương trình và số liệu của các μP thông thường đều sử dụng chung 1 Busđịa chỉ là 1 Bus số liệu Vì vậy trình tự tính thường là như sau:
Trang 8 Xâm nhập vào bộ nhớ lần thứ 1 để đọc mã lệnh, mã lệnh được đưa từbộ nhớ tới μP.
μP giải mã lệnh và biết là phải thực hiện phép nhân
Xâm nhập lần thứ 2 vào bộ nhớ chương trình để đọc giá trị của ai
Xâm nhập lần thứ 3 vào bộ nhớ số liệu để đọc giá trị của xi
Thực hiện phép nhân
Ta đã biết, cách tổ chức Bus như trên được gọi là cấu trúc Vonneumann
Hình 1.2: Cấu trúc Vonneumann
Ngược với μP thông thường, DSP có nhiệm vụ chuyển số liệu tính tớikhâu tính càng nhanh càng tốt Để làm được điều này, buộc phải tốn kém hơn:phải chia không gian nhớ trên chip ra làm 2 và vì thế phải có 2 Bus địa chỉ và
2 Bus số liệu (hình b) độc lập cho 2 vùng nhớ Nhờ cách tổ chức này, DSP cókhả năng thâm nhập vào 2 vùng nhớ để đọc 2 toán hạng chỉ trong 1 nhịp duynhất vì vậy tiết kiệm được nhiều thời gian Cấu trúc Bus này có tên là cấu trúcHarward
Trang 9Trên thực tế, vì lý do giá thành chỉ có thể thực hiện cấu trúc BusHarward cho các bộ nhớ trên phiến (on-chip) Do đó, khi tra cứu về cấu trúcbên trong của DSP, bạn đọc sẽ thường gặp khái niệm Promgram Bus (hình b):(Bus số liệu 2, Bus địa chỉ 2) và Data bus (Bus số liệu 1, Bus địa chỉ 1) Đốivới bên ngoài phiến, DSP vẫn sử dụng Bus địa chỉ, Bus số liệu chung cho cảhai vùng nhớ Điều này giải thích cho ta thấy: Tại sao DSP chỉ có khả năngthực hiện phép nhân trong một nhịp duy nhất, nếu các toán hạng đều nằm ởvùng nhớ on-chip.
Ngoài ra, khi thực hiện phép cộng tích lũy (1),đồng thời DSP có thểphải thực hiện thêm các thao tác dịch trái, dịch phải (vị trí dấu phẩy) hay làmtròn tổng cuối cùng Nhiều DSP có khả năng kết hợp thao tác đó trong mộtlệnh duy nhất
Tóm lại DSP được phân biệt với μP thông thường là nhờ ở:
Có thêm thanh ghi tích lũy ACC và bộ nhân cứng
Có cấu trúc Bus trên phiến theo kiểu cấu trúc Harward
Có khả năng tích hợp nhiều thao tác lệnh trong cùng một lệnh duynhất Tất cả các điểm khác nhau đó chỉ nhằm tạo cho DSP khả năng thực hiệnvới tốc độ có phép tính tổng tích lũy (1)
Dễ dàng thấy rằng, ứng dụng của DSP không chỉ giới hạn trong việcthực hiện các thuật toán xử lý số liệu (xử lý tín hiệu) tốc độ cao DSP có thểphát huy được ưu thế của nó trong tất cả các ứng dụng ĐK/ĐC thời gian thực,nơi mà: thời gian tính toán (thời gian trích mẫu) chỉ nằm trong khoảng vàitrăm ms và phép cộng tích lũy (thuật toán điều chỉnh digital) thường xuyênđược cần đến
Vi điều khiển = μP (hoP (hoặc DSP) + ngoại vi + ngắt không cần thủ tục
Trang 10Trong quá trình đi lên của công nghệ tự động, μP được sử dụng ngàycàng nhiều trong các thiết bị ĐK/ĐC Nhằm tăng độ tin cậy, đồng thời giảmgiá thành của hệ thống, người ta đã tìm cách tích hợp các phần tử ngoại vi cơbản trên phiến Đó là những phần tử ngoại vi thường gặp nhất trong kỹ thuật:
Khâu biến đổi tượng tự số (Analog to Digital Con-verter, viết tắt:
ACD): Khâu này có thể gồm 1-2 bộ ADC với khả năng xen nhiều kênh Độ
phân giải thường là 8-10 Bit.
Khâu điều chế điện áp hình sin (Puls Width Modulation, viết tắt:
PWM): Khâu PWM có thể có nhiều kênh, đặc biệt là khả năng tạo điện áp
xoay chiều 3 pha với cơ chế bù thời gian an toàn bảo vệ van bán dẫn côngsuất lớn Độ phân giải từ 50nsec - vài msec
Hệ thống thanh ghi CAPCOM(Capture/compara Register) phục vụ
việc ghi nhận tín hiệu từ bên ngoài đến (rất quan trọng trong đo lường) hoặctạo tín hiệu phát ra ngoài (rất quan trọng trong điều khiển)
Hệ thống các thanh ghi và cổng đặc biệt: Khi các phần tử ngoại vi
được tích hợp chung với μP trên cùng một phiến, linh kiện mới này được gọi
là "Vi điều khiển" (Microcontroller Viết tắt: μCC).
Tóm lại: μC được phân biệt với μP là do các đặc điểm có thêm cácphần tử ngoại vi cơ bản trên phiến và có cơ chế ngắt không cần thủ tục ngắt.Điều này cho phép nâng cao tốc độ tính toán, tăng độ tin cậy, đồng thời giảmgiá thành của hệ thống
1.2 Cấu trúc chung họ 8051
1.2.1 Giới thiệu về dòng vi điều khiển 8051
Vào năm 1981 hãng Intel giới thiệu bộ vi điều khiển được gọi là 8051.Bộ vi điều khiển này có 128 byte RAM, 4K byte ROM trên chip, hai bộ địnhthời, một cổng nối tiếp và 4 cổng (độ rộng 8 bit) vào – ra tất cả được đặt trênmột chip 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ có thể làm việc với 8
Trang 11bit dữ liệu tại một thời điểm Dữ liệu lớn hơn 8 bit được chia ra thành các dựliệu 8 bit để xử lý 8051 đã trở lên phổ biến sau khi Intel cho phép các nhà sảnxuất khác sản xuất và bán các dạng biến thể của 8051 Điều này dẫn đến sự rađời nhiều phiên bản của 8051 với các tốc độ khác nhau và dung lượng ROMtrên chip khác nhau Mặc dù có nhiều biến thể khác nhau của 8051 về tốc độvà dung lượng nhớ ROM trên chip, nhưng tất cả chúng đều tương thích với
8051 ban đầu về các lệnh Điều này có nghĩa là nếu viết chương trình củamình cho một phiên bản nào của 8051 thì nó cũng sẽ chạy với mọi phiên bảnkhác mà không phân biệt nó được sản xuất từ hãng nào
Bảng 1.1: Các đặc tính của dòng 8051
Trang 121.2.2 Kiến trúc phân cứng
1.2.2.1 Sơ độ khổi
Kiến trúc cơ bản bên trong 8051 bao gồm các khối chức năng sau:
Hình 1.4: Kiến trúc cơ bản trong 8051
CPU : Đơn vị điều khiển trung tâm
I/O Ports : Cổng nhập xuất
Timer/Counter : Bộ định thời/bộ đếm 16 bit
Serial Port : Cổng nối tiếp
Interrupt Control : Khối điều khiển ngắt
Trang 131.2.2.2 Sơ đồ và chức năng của các chân
Hình1.5:Sơ đồ chân của 8051
Chân 9 – RST: Chân Reset
Khi tín hiệu này được đưa lên mức cao trong ít nhất là 2 chu kỳ máy,các thanh ghi trong bộ vi điều khiển được tải những giá trị thích hợp để khởiđộng hệ thống Hay nói cách khác là vi điều khiển sẽ bị reset nếu chân nàyđược kích hoạt mức cao
Trang 14Hình 1.6: Sơ đồ reset ngoài của 8051
Chân 10 đến 17: được gọi là Cổng 3 (Port 3)
Tám chân này ngoài chức năng là xuất và nhập như các chân ở cổng 1(chân 1 đến 8) thì mỗi chân này còn có chức năng riêng nữa, cụ thể như sau:
P3.0 RxD Chân nhận dữ liệu cho cổng nối tiếp
P3.1 TxD Chân truyền dữ liệu cho cổng nối tiếp
Bảng 1.2 : Bảng mô tả chức năng riêng của Port 3
Trang 15 Chân 18 và 19 (XTAL1 và XTAL2)
Hai chân sử dụng để nối với bộ dao động thạch anh ngoài
Hình 1.8: Mạch dao động thạch anh ngoài của 8051
Thông thường một bộ dao động thạch anh sẽ được nối tới các chân đầu vàoXTAL1 (chân 19) và XTAL2 (chân 18) cùng với hai tụ gốm giá trị khoảng30pF Một phía của tụ điện được nối xuống đất như hình trên Các hệ thốngxây dựng trên 8051 thường có tần số thạch anh từ 10 đến 40 MHz, thôngthường ta dùng thạch anh 11.0592 Mhz
Chân 20: được nối vào chân 0V của nguồn cấp
Chân 21 đến chân 28: được gọi là cổng 2 (Port 2)
Tám chân của cổng 2 có 2 công dụng, ngoài chức năng là cổng xuất và nhậpnhư cổng 1 thì cổng 2 này còn là byte cao của bus địa chỉ khi sử dụng bộ nhớngoài
Chân 29 (PSEN): Chân PSEN là chân điều khiển đọc chương trình ở bộnhớ ngoài, nó được nối với chân OE của ROM ngoài để cho phép đọc các
Trang 16byte mã lệnh trên ROM ngoài PSEN ở mức thấp trong thời gian đọc mã lệnh.Khi thực hiện chương trình trong ROM nội thì PSEN được duy trì ở mức cao
Chân 30 (ALE): Chân ALE cho phép tách các đường dữ liệu và cácđường địa chỉ tại Port 0 và Port 2
Chân 31 (EA): Tín hiệu chân EA cho phép chọn bộ nhớ chương trình làbộ nhớ trong hay ngoài vi điều khiển Nếu chân EA được nối ở mức cao (nốinguồn Vcc), thì vi điều khiển thi hành chương trình trong ROM nội Nếu chân
EA ở mức thấp (được nối GND) thì vi điều khiển thi hành chương trình từ bộnhớ ngoài
Chân 32 đến 39: được gọi là cổng 0 (Port 0) Cổng 0 gồm 8 chân cũngcó 2 công dụng, ngoài chức năng xuất nhập, cổng 0 còn là bus đa hợp dữ liệuvà địa chỉ, chức năng này sẽ được sử dụng khi 8051 giao tiếp với các biết bịngoài có kiến trúc Bus như các vi mạch nhớ Vì cổng P0 là một máng mởkhác so với các cổng P1, P2 và P3 nên các chân ở cổng 0 phải được nối vớiđiện trở kéo khi sử dụng các chân này như chân vào/ra Điện trở này tùythuộc vào đặc tính ngõ vào của thành phần ghép nối với chân của port 0.Thường ta dùng điện trở kéo khoảng 4K7 đến 10K
Hình 1.8 : Nối trở kéo cho Port 0
Chân 40: chân nguồn của vi điều khiển, được nối vào chân Vcc củanguồn
Trang 171.2.3 Tổ chức bộ nhớ
Trên vi điều khiển 8051/8052 đều có cả bộ nhớ chương trình (ROM) vàbộ nhớ dữ liệu (RAM) Tuy nhiên dung lượng của các bộ nhớ trên chip là hạnchế Khi thiết kế các ứng dụng đòi hỏi bộ nhớ lớn người ta có thể dùng bộnhớ ngoài
1.2.3.1 Bộ nhớ chương trình
Bộ nhớ chương trình là bộ nhớ chỉ đọc, là nơi lưu trữ chương trình của
vi điều khiển Bộ nhớ chương trình của họ 8051 có thể thuộc một trong cácloại sau ROM, EPROM, FLASH hoặc không có bộ nhớ chương trình trênchip Với họ vi điều khiển 89xx, bộ nhớ chương trình được tích hợp sẵn trongchip có kích thước nhỏ nhất là 4kByte Với các vi điều khiển không tích hợpsẵn bộ nhớ chương trình trên chip, buộc phải thiết kế bộ nhớ chương trình bênngoài
Địa chỉ đầu tiên của bộ nhớ chương trình là 0000H, chính là địa chỉreset của vi điều khiển Ngay khi bật nguồn hoặc reset vi điều khiển, thì CPU
sẽ nhảy đến thực hiện lệnh ở địa chỉ 0000H này
Khi sử dụng bộ nhớ trên chip thì chân EA phải được nối lên mức logiccao (+5V) Nếu bạn muốn mở rộng bộ nhớ chương trình thì chúng ta phảidùng bộ nhớ ngoài với dung lượng tối đa là 64Kbyte
1.2.3.2 Bộ nhớ dữ liệu
Bộ nhớ dữ liệu tồn tại độc lập so với bộ nhớ chương trình Họ vi điềukhiển 8051 có bộ nhớ dữ liệu tích hợp trên chip nhỏ nhất là 128byte và có thểmở rộng với bộ nhớ dữ liệu ngoài lên tới 64kByte
Bộ nhớ dữ liệu được phân chia như sau:
Các băng thanh ghi có địa chỉ từ 00H đến 1FH
32 byte thấp của bộ nhớ nội được dùng cho các băng thanh ghi (dãythanh ghi) Bộ lệnh 8051 hỗ trợ 8 thanh ghi R0 đến R7 và theo mặc định saukhi reset hệ thống, các thanh ghi này có các địa chỉ từ 00H đến 07H
Trang 18Do có 4 băng thanh ghi nên tại một thời điểm chỉ có duy nhất 1 băngthanh ghi được truy suất bới các thanh ghi R0 - R7, để thay đổi các băngthanh ghi thì ta thay đổi các bit chọn băng trong thanh ghi trạng thái PSW.
Vùng RAM địa chỉ hóa từng bit có địa chỉ từ 20h đến 2Fh
8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trongcác byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lạichứa trong các thanh ghi đặc biệt Ngoài ra 8051 còn có các cổng xuất/nhậpcó thể định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phầnmềm với các thiết bị xuất/nhập đơn bit
Vùng RAM đa dụng có địa chỉ từ 30h đến 7Fh
Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể đượctruy xuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc giántiếp
Các thanh ghi chức năng đặc biệt có địa chỉ từ 80h đến FFh
Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năngđặc biệt SFR chiếm phần trên của Ram nội từ địa chỉ 80H đến FFH Cần lưu ýlà không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉcó 21 địa chỉ được định nghĩa
1.3 Tổng quan về ngôn ngữ C và các hàm, kiểu dữ liệu hay dùng cho việc lập trình cho Vi điều khiển
1.3.1 Giới thiệu ngôn ngữ C
Trong kỹ thuật lập trình vi điều khiển ngôn ngữ lập trình chia làm 2loại: Ngôn ngữ bậc thấp và Ngôn ngữ bậc cao Ngôn ngữ bậc cao là các ngônngữ gần vơi ngôn ngữ con người hơn nên đọc dễ hiểu Có nhiều ngôn ngữ lậptrình bậc cao như Basic, Pascal,C,…
C là ngôn ngữ lập trình thông dụng
Chương trình viết bằng ngôn ngữ bậc cao cũng sẽ được một phần mềm
trên máy tính gọi là trình biên dịch (Compiler) chuyển sang dạng hợp
ngữ trước khi chuyển sang mã máy.
Trang 19Khi sử dụng ngôn ngữ C người lập trình không cần hiểu sâu sắc về cấutrúc của bộ vi điều khiển Có nghĩa là với một người chưa quen với một viđiểu khiển cho trước sẽ xây dựng được chương trình một cách nhanh chónghơn, do không phải mất thời gian tìm hiểu kiến trúc của vi điều khiển đó Vàviệc sử dụng lại các chương trình đã xây dựng trước đó cũng dễ dàng hơn, cóthể sử dụng toàn bộ hoặc sửa chữa một phần.
1.3.2 Kiểu dữ liệu trong C
Int 2 byte hoặc 4 byte -32,768 đến 32,767
Unsigned int 2 byte hoặc 4 byte 0 đến 65535
Unsigned long 4 byte 0 tới 4,294,967,295
Bảng 1.3: Kiểu số nguyên trong C
Long double 10 byte 3.4E-4932 tới 1.1E+4932
Bảng 1.4: Kiểu số thực trong C
1.3.3.Khai báo biến
– Cú pháp: Kiểu_dữ_liệu Vùng_nhớ Tên_biến _at_ Đia_chỉ;
Ví dụ: Unsigned char data x;
– Khi khai báo biến có thể gán luôn cho biến giá trị ban đầu
Ví dụ: Thay vì unsigned char x;
x = 0;
Ta chỉ cần: unsigned char x = 0;
– Có thể khai báo nhiều biến cùng một kiểu một lúc
Ví dụ: Unsigned int x,y,z,t;
CHƯƠNG 2: Cảm biến DHT11 và giao tiếp chuẩn 1 Wire
2.1 Cấu tạo và đặc điểm của DHT11
2.1.1 Giới thiệu về cảm biến DHT11
Trang 20Cảm biến nhiệt độ và độ ẩm DHT11