Hầu hết là các thiết bị được điều khiển tự động từ các thiết bị vănphòng cho đến các thiết bị trong gia đình đều dùng các bộ vi điều khiển nhằmđem lại sự tiện ghi cho con người trong thờ
Trang 1Mục Lục
Trang
Lời mở đầu………2
Chương 1: Giới thiệu về vấn đề đo điện áp……… 3
1.1 Khái niệm đo điện áp……… 3
1.2 Một số phương pháp đo điện áp………3
Chương 2: Thiết kế mạch phần cứng……….4
2.1 Sơ đồ khối mạch phần cứng……… 4
2.2 Chức năng của các khối……… 4
2.3 Nguyên lý đo và chuyển đổi tương tự/số của ADC……… 23
Chương 3: Thiết kế phần mềm……… …26
3.1 Xây dựng lưu đồ thuật toán……… 26
3.2 Viết code điều khiển thuyết minh nguyên lý hoạt động………… 27
3.3 Kết quả đạt được và mở rộng………28
Trang 2Lời mở đầu
Ngày nay cùng với sự tiến bộ của khoa học kỹ thuật, đặc biệt là ngành
Kỹ thuật Điện tử Đời sống xã hội ngày càng phát triển cao dựa trên những ứngdụng của khoa học vào đời sống Vì vậy mà những công nghệ điện tử mangtính tự động ngày càng được ứng dụng rộng rãi Trong đó có sự đóng gópkhông nhỏ của kỹ thuật vi điều khiển Các bộ vi điều khiển đang đựơc ứngdụng rộng rãi và thâm nhập ngày càng nhiều trong các lĩnh vực kỹ thuật và đờisống xã hội Hầu hết là các thiết bị được điều khiển tự động từ các thiết bị vănphòng cho đến các thiết bị trong gia đình đều dùng các bộ vi điều khiển nhằmđem lại sự tiện ghi cho con người trong thời đại công nghiệp hoá, hiện đại hoá Điện áp là một đại lượng rất quan trọng trong kĩ thuật điện–điện tử, muốnđiều khiển một thiết bị hay một linh kiện điện tử nào đó ta phải quan tâm đếnđiện áp để điều khiển nó đầu tiên Thị trường đã sản xuất ra loại đồng hồ cơ,tuy có thể đo điện áp nhưng ko thực sự chính xác, do vậy việc chế tạo ra mộtloại thiết bị đo có độ chính xác cao là rất cần thiết
Bằng những kiến thức cơ bản về vi xử lý em tiến hành thực hiện bài tập
lớn:“Thiết kế mạch đo điện áp một chiều trong dải (-5VDC đến -24VDC)
có hiển thị kết quả trên LED 7 vạch” Với mong muốn đáp ứng được yêu cầu
đặt ra trong việc nghiên cứu, đo lường về điện áp một chiều Từ đó có thể điềukhiển và sử dụng điện một cách chính xác hơn
Trang 3Chương 1: Giới thiệu về vấn đề đo điện áp một chiều.
1.1 Khái niệm đo điện áp.
Đo điện áp là ta dùng một thiết bị có khả năng chuyển từ tín hiệu tương tự sangmột tín hiệu khác mà chúng ta có thể đọc nhìn thấy được giá trị của chúng mộtcách cụ thể nhất
1.2 Các phương pháp đo điện áp.
Có nhiều cách mà chúng ta có thể đo được điện áp 2 cách mà chúng ta thường
sử dụng đó là:
+ Dùng các loại đồng hồ đo
+ Sử dụng mạch vi xử lý
Trang 4Chương 2: Thiết kế mạch phần cứng.
2.1 Sơ đồ khối mạch phần cứng.
Cấu trúc chung của hệ thống
- Khối nguồn: để cung cấp nguồn cho bộ chuyển đổi, vi xử lí, và khối hiểnthị
- Bộ chuyển đổi ADC: chuyển đổi tín hiệu Analog từ khối công suất thành tínhiệu Digital
- Khối hiển thị: để hiển thị giá trị đo
- Vi xử lí: nhận tín hiệu từ bộ chuyển đổi ADC hiển thị dữ liệu trên Led 7vạch
2.2 Chức năng của các khối.
2.2.1 Khối nguồn.
Chức năng cung cấp nguồn cho mạch điều khiển
Sơ đồ nguyên lý của khối nguồn
Điện áp
Bộ chuyển đổi ADC
Nguồn
Khối hiển thị
Trang 5Các thành phần trong khối nguồn:
a Biến áp T1:
- Biến đổi điện áp nguồn thành điện áp phù hợp đặt lên bộ chỉnh lưu
- Đảm bảo cho nguồn và bộ chỉnh lưu chỉ quan hệ với nhau về từ mà khôngquan hệ trực tiếp về điện nên bảo vệ an toàn cho người sử dụng
b Cầu chỉnh lưu 1 pha D1:
Bao gồm 4 Diode ghép lại có tác dụng chỉnh lưu 2 nửa chu kỳ điện áp xoaychiều thành điện áp 1 chiều
Cấu tạo và hình dạng thực tế của cầu diode chỉnh lưu
Trang 6Input 1 : Chân điện áp vào
GND 2: Chân nối mass
Output 3: Chân điện áp ra 5V
Thông số của IC ổn áp 7805
Ta chọn IC KA7805 với các thông số tương đối phù hợp:
- Điện áp ngõ vào chịu có thể chịu được: V IN 35 40V
- Công suất tiêu thụ tương đối vừa phải : P D 20 8W
- Tầm nhiệt độ chịu được khi kéo tải: T 30 150 0C
- Dòng ra đạt được: I0 100mA
2.2.2 Bộ chuyển đổi ADC.
Chip ADC 0804
Chíp ADC 0804 là bộ chuyển đổi tương tự sang số Nó làm việc với +5V và
có độ phân giải là 8 bít Ngoài độ phân giải thì thời gian chuyển đổi cũng là một
Trang 7yếu tố quan trọng khác khi đánh giá một bộ ADC Thời gian chuyển đổi đượcđịnh nghĩa như là thời gian mà bộ ADC cần để chuyển một đầu vào tương tựthành một số nhị phân Trong ADC 0804 thời gian chuyển đổi thay đổi phụthuộc vào tần số đồng hồ được cấp tới chân CLK R và CLK IN nhưng khôngthể nhanh hơn 110s Các chân của ADC 0804 được mô tả như sau:
1 Chân CS (chọn chíp)
Là một đầu vào tích cực mức thấp được sử dụng để kích hoạt chíp ADC
0804 Để truy cập ADC 0804 thì chân này phải ở mức thấp
2 Chân RD (đọc)
Đây là một tín hiệu đầu vào được tích cực mức thấp Các bộ ADC chuyểnđổi đầu vào tương tự thành số nhị phân tương đương với nó và giữ nó trongmột thanh ghi trong RD được sử dụng để nhận dữ liệu được chuyển đổi ở đầu
ra của ADC 0804 Khi CS = 0 nếu một xung cao xuống thấp được áp đến chân
RD thì đầu ra số 8 bít được hiển diện ở các chân dữ liệu D0 - D7 Chân RDcũng được coi như cho phép đầu ra
3 Chân ghi WR(thực ra tên chính xác là “bắt đầu chuyển đổi”)
Đây là chân đầu vào tích cực mức thấp được dùng để báo cho ADC 0804 bắtđầu quá trình chuyển đổi Nếu CS = 0 khi WRtạo ra xung cao xuống thấp thì bộADC 0804 bắt đầu chuyển đổi giá trị đầu vào tương tự Vin về số nhị phân 8 bít.Lượng thời gian cần thiết để chuyển đổi thay đổi phụ thuộc vào tần số đưa đếnchân CLK IN và CLK R Khi việc chuyển đổi dữ liệu được hoàn tất thì chânINTR được ép xuống thấp bởi ADC 0804
4, 19 Chân CLK IN và CLK R.
Chân CLK IN là một chân đầu vào được nối tới một nguồn đồng hồ ngoàikhi đồng hồ ngoài được sử dụng để tạo ra thời gian Tuy nhiên 0804 cũng cómột bộ tạo xung đồng hồ Để sử dụng bộ tạo xung đồng hồ trong (cũng cònđược gọi là bộ tạo đồng hồ riêng) của 0804 thì các chân CLK IN và CLK Rđược nối tới một tụ điện và một điện trở Trong trường hợp này tần số đồng hồđược xác định bằng biểu thức:
Trang 8f =
Giá trị tiêu biểu của các đại lượng trên là R = 10k và C= 150pF và tần sốnhận được là f = 606kHz và thời gian chuyển đổi sẽ mất là 110s
5 Chân ngắt INTR(ngắt hay gọi chính xác hơn là “kết thúc chuyển đổi’)
Đây là chân đầu ra tích cực mức thấp Bình thường nó ở trạng thái cao vàkhi việc chuyển đổi hoàn tất thì nó xuống thấp để báo cho CPU biết là dữ liệuđược chuyển đổi sẵn sàng để lấy đi Sau khi INTR xuống thấp, ta đặt CS = 0 vàgửi một xung cao xuống - thấp tới chân RDlấy dữ liệu ra của 0804
6, 7 Chân Vin (+) và Vin (-)
Đây là các đầu vào tương tự vi sai mà Vin = Vin (+) - Vin (-) Thông thường
Vin (-) được nối xuống đất và Vin (+) được dùng như đầu vào tương tự đượcchuyển đổi về dạng số
10 Chân D GND: Chân nối đất
V
out
Trang 9Với Dout là đầu ra dữ liệu số (dạng thập phân) Vin là điện áp đầu vào tương
tự và độ phân dải là sự thay đổi nhỏ nhất được tính như là (2 Vref/2) chia cho
256 đối với ADC 8 bít
Hình 2.1: Sơ đồ chân của ADC0804 Bảng 2.2: Điện áp V ref/2 liên hệ với dải V in
2.2.3 Khối hiển thị Led 7 vạch.
Cấu trúc và dạng mã hiển thị dữ liệu trên led 7 vạch
Trang 10Dạng Led
- Led Anode chung
Đối với dạng led anot chung chân com phải có mức logic bằng 1 để led sángtương ứng các chân từ a đến f, dp phải có mức logic bằng 0
Bảng mã đối với led anot chung (a la MSB,dp là LSB)
Trang 11Bảng mã led đối với loại led mắc anot chung (a là LSB, dp là MSB)
- Led Cathode chung
Đối với Led mắc kiểu cathode chung chan COM phải có mức logic là 0,muốn led sáng thì các chân từ a đến f,dp phải có mức logic là 1
Bảng mã Led đối với led mắc Cathode chung (a là MSB, dp là LSB)
Trang 12Bảng mã Led mắc kiểu cathade chung (a là LSB, dp là MSB)
Để cho Led 7 vạch sáng ổn định, đều và đẹp thì ta chọn phương án mắc Anode chung: a là LSB dp là MSB
Tính toán điện trở hạn chế dòng cho Led 7 vạch
Do Led 7 thanh không phải lúc nào cũng sáng đủ cả 7 thanh nên dẫn tới hiệntượng Led sáng khôngđều
Nếu chỉ mắc điện trở ở cực chung:
Ở đây ta chọn điện trở 220 Ω do dòng qua Led 5mA < I < 25mA, và ở mức14mA thì Led sẽ sáng đẹp:
+ Nếu chỉ có 1 thanh sáng thì dòng qua thanh sẽ là I = 14mA
Trang 13+ Nếu cả 7 thanh đều sang thì dòng qua mỗi led I = 14mA/7 = 2mA Do đóLed 7 thanh sẽ sáng không đều Nếu ta giảm điện trở thì dòng qua led khi cả 7thanh sáng cũng tăng theo nhưngkhi 1 thanh sáng thì nó sẽ quá sáng Do đó Led
7 thanh cũng sẽ có hiện tượng sáng không đều
+ Mạch giao tiếp nối tiếp
+ Không gian nhớ chương trình (mã) ngoài 64k byte
+ Không gian nhớ Data ngoài 64k byte
+ Bộ xử lý bit thao tác trên các bit riêng
+ 210 vị trí nhớ định địa chỉ, mỗi vị trí một bit
+ Các thanh ghi chức năng, cơ chế điều khiển ngắt
+ Các bộ thời gian dùng trong limh vực chia tần số và tạo thời gian thực
Trang 14+ Có thể lập trình được qua cổng nối tiếp
+ Bộ vi điều khiển có thể lạp chương trình để điều khiển các thiết bị thôngtin, viễn thông thiết bị đo lường,thiết bị điều chỉnh cũng nhuu các ứng dụngtrong công nghệ thong tin và kỹ thuật điều khiển tự động có thể xem bộ VĐKnhư một hệ VXL on-chíp đối với AT89C51, nó có đầy đủ chức năng của một
hệ VXL 8 bit, được điều khiển bởi một hệ lệnh, có số lệnh đủ mạnh, cho phéplập trình bằng hợp ngữ (Assemply)
Cơ bản về cấu tạo của AT89C51
Hình 2.3: Sơ đồ chân của 89C51
+ GND (chân 20): Chân nối với 0v
+ Port 0 (chân 32 – chân 29)
Port 0 là Port xuất nhập 8 bit hai chiều Port 0 còn được cấu hình làm busđịa chỉ (byte thấp) và bus dữ liệu đa hợp trong khi truy xuất bộ nhớ dữ liệungoài và bộ nhớ chương trình ngoài Port cũng nhận các byte mã trong khi lậptrình cho Flash và xuất các byte mã trong khi kiểm tra chương trình (các điệntrở kéo lên bên ngoài được cần đến trong khi kiểm tra chương trình)
Trang 15+ Port 1 (chân 1- 8): port 1 là port xuất nhập 8 bit hai chiều Port1 cũngnhận byte địa chỉ thấp trong thời gian lập trình cho Flash.
+ Port 2 ( chân 21 – 28): Port 2 là port xuất nhập 8 bit hai chiều Port 2 tạo
ra các byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chươngtrình ngoài và trong thời gian truy xuất bộ nhớ dữ liệu ngoài, sử dụng các địachỉ 16 bit Trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 8bit, port 2 phát các nội dung của các thanh ghi đặc biệt, port 2 cũng nhận cácbits địa chỉ cao và vài tín hiệu điều khiển trong thời gian lập trình cho Flash vàkiểm tra chương trình
+ Port 3 (chân 10- 17): Port 3 cũng nhận một vài tín hiêu điều khiển choviệc lập trình Flash và kiểm tra chương trình Port 3 là port xuất nhập 8 bit haichiều, port 3 cũng còn làm các chức năng khác của AT89C51 các chức năngnày được nêu như sau:
Chân Tên Chức năng
P3.0 RxD Ngõ vào port nối tiếp
P3.1 TxD Ngõ ra port nối tiếp
P3.2 INT0 Ngõ vào ngắt ngoài 0
P3.3 INT1 Ngõ vào ngắt ngoài 1
P3.4 T0 Ngõ vào bên ngoài của bộ định thời 1
P3.5 T1 Ngõ vào bên ngoài của bộ định thời 0
P3.6 WR Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 RD Điều khiển đọc bộ nhớ dữ liệu ngoài
Trang 16được set, ALE chỉ tích cực trong thời gian thực hiện lệnh MOVX hoặc MOVC.Ngược lại chân này sẽ được kéo lên cao Việc set bit không cho phép hoạt độngchôt byte thấp của địa chỉ sẽ không có tác dụng nếu bộ vi điều khiển đang ở chế
độ thực thi chương trình ngoài
+ PSEN (chân 29): PSEN (program Store Enable) là xung điều khiển truyxuất chương trình ngoài Khi AT89C51 đang thực thi chương trình từ bộ nhớchương trình ngoài, PSEN được kích hoạt hai lần mỗi chu kỳ máy, nhưng haihoạt động PSEN sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài
+ EA vpp (chân 31): Là chân cho phép truy xuất bộ nhớ chương trình ngoài( địa chỉ từ 0000 H tới FFFF H) EA = 0 cho phép truy xuát bộ nhớ chươngtrình ngoài, ngược lại EA = 1 sẽ thực thi chương trình bên trong chip Tuynhiên, lưu ý rằng nếu bít khoá 1 được lập trình EA được chốt bên trong khireset
+ XTAL1&XTAL2: Là hai ngõ vào ra của hai bộ khuyếch đại đảo củamạch dao động, được cấu hình để dùng như một bộ tạo dao động trên chip
Trang 17CẤU TRÚC RAM NỘI
Bộ nhớ bên trong chip bao gồm ROM, RAM va EPROM RAM trên chipbao gồm vùng RAM đa chức năng, vùng RAM với từng bit được định địa chỉ,các dây thanh ghi (bank) và các thanh ghi chức năng đặc biệt
Có 2 đặc tính đáng lưu ý:
+ Các thanh ghi và các port I/O được định địa chỉtheo kiểu ánh xạ bộ nhớ
và được truy xuất như một vị trí nhớ trong bộ nhớ
+ Vùng track thường trú trong RAM trên chip thay vì ở trong RAM ngoàinhư đối với các bộ vi xử lý
Vùng RAM đa mục đích: Có 80 byte, địa chỉ từ 30H đến 7FH
Bất cứ vị trí nào trong vùng RAM ta đều có thể truy xuất tự do bằng cách sửdụng định địa chỉ trực tiếp hoặc gián tiếp
Ví dụ:
Trang 18+ Kiểu định địa chỉ trực tiếp:
MOV A,5FH ;Đọc nội dung tại địa chỉ 5FH của RAM
+ Kiểu định địa chỉ gián tiếp: (Qua các thanh ghi R0,R1)
MOV R0,#5FH ; Di chuyển giá trị5FH vào thanh ghi R0
MOV A,@R0 ; Di chuyển dữ liệu trỏ tới R0 và thanh chứa A
Vùng RAM định địa chỉ:
Chip 8951 chứa 210 vị trí định địa chỉ in đó có 128 byte chứa trong các byte
ở địa chỉ 20H đến 2FH (16 byte x 8 = 128 bits), phần còn lại chứa trong cácthanh ghi chức năng đặc biệt
Công dụng: + Truy xuất các bit riêng rẽ thông qua các phần mền
+ Các port có thể địng địa chỉ từng bit, làm đơn giản việc giaotiếp băng phần mền với các thiết bị xuất nhập đơn bit
Ví dụ: + Set bit trực tiếp:
SETB 67H; lệnh làm nhiệm vụ set bit 67H bằng 1
+ Hoặc ta có thẻ sử dụng lệnh sau để set bít 67H là bit lớn nhất củabyte 2CH:
ORL A,#10000000B ;Tác dung set bit
Các thanh ghi chức năng đặc biệt (SFR)
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
Các thanh ghi chức năng đặc biệt bao gồm:
+ Tử trạng thái chương trình PSW: có địa chỉ là D0H
+ Thanh ghi B: Có địa chỉ F0Hđược dùng chung với thanh chứa A trong cácphếp toán nhân và chia
+ Con trỏ Stack (SP) : là thanh ghi 8 bit ở địa chỉ 81H, nó chứa địa chỉ của
dữ liệu hiện đang ở đỉnh của stack
Trang 19MOV DPTR,%1000 ;Nạp hằng địa chỉ 16 bit 1000H cho
; con trỏ DPTR
MOV @DPTR,A ; Chuyển dữ liệu từ A vao RAM ngoài
; tai địa chỉ DPTR trỏ tới
+ Các thanh ghi port:
- Port 0 : địa chỉ 80H
- Port 1 : địa chỉ 90H
- Port 2 : địa chỉ A0H
- Port 3 : địa chỉ B0H
+ Các thanh ghi định thời:
IC 8951 có 2 bộ định thời/đếm dùng để định khoảng thời gian hoặc đếm các
+ Các thanh ghi của port nối tiếp: Chip 8951 có 1 port nối tiếp để truyềnthông với các thiết bị như các thiết bị đầu cuối hoặc model
+ Các thanh ghi ngắt: có một cấu trúc ngắt với 2 mức ưu tiên và 5 nguyênnhân ngắt Các ngắt bị vô hiệu hoá sau khi Reset hệ thống và được phép bằngcách vào thanh ghi IE ở địa chỉA8H Mức ưu tiên ngắt được thiết lập bơit thanhghi IP ở địa chỉ B8H
+ Thanh ghi điều khiển nguồn: PCON có địa chỉ 87H
Trang 20ADD A , nguồn: Cộng toán hạng nguồn vào A
ADD A, #data : Cộng dữ liệu data với A
ADDC A,nguồn: Cộng nguồn với A và cờ nhớ
ADDC A,#data : Cộng dữ liệu data với A và cờ nhớ
SUBB A, nguồn: Trừ A với nguồn
SUBB A,#data : Trừ A với data
INC A : Tăng nội dung thanh ghi A lên 1 DEC A : Giảm nội dung thanh ghi A lên 1 INC DPTR : Tăng DPTR
MUL AB : Nhân nội dung thanh ghi A và B DIV AB : Chia A cho B
DA A : Hiệu chình thập phân thanh ghi A + Nhóm lệnh Logic
ANL A, nguồn AND