File đính kèm 013.rarLỜI MỞ ĐẦU Ngày nay bộ vi điều khiển Micro-controller đã rất phổ biến trong cácthiết bị điện và điện tử dân dụng, các bộ vi điều khiển khống chế hoạt độngcủa các thi
Trang 1File đính kèm 013.rar
LỜI MỞ ĐẦU
Ngày nay bộ vi điều khiển (Micro-controller) đã rất phổ biến trong cácthiết bị điện và điện tử dân dụng, các bộ vi điều khiển khống chế hoạt độngcủa các thiết bị như TV, máy giặt, đầu đọc laser, điện thoại…Trong hệ thốngsản xuất tự động, bộ vi điều khiển được sử dụng trong robot, dây chuyền tựđộng Các hệ thống càng thông minh thì vai trò của vi điều khiển càng quantrọng Nhưng bộ vi điều khiển là gì, nó có tác dụng và hoạt động như thế nào?
Thực ra bộ vi điều khiển (Micro-controller) là một mạch tích hợp trênmột bộ Chíp có thể lập trình được, dùng để điều khiển hoạt động của hệthống Bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lý thông tin, đolường thời gian và tiến hành đọc mở một cơ cấu nào đó.Người lập trình có thể
sử dụng nhiều ngôn ngữ để lập trình cho vi điều khiển Nhưng thông thườngngười ta thường sử dụng hai ngôn ngữ chính để lập trình là: ngôn ngữ lậptrình C và Assembly
Trong qúa trình học tập và đặc biệt được sự giúp đỡ tận tình của thầyNguyễn Anh Dũng - Giảng viên bộ môn Vi điều khiển - nhóm sinh viênchúng tôi đã quyết định làm đồ án kết thúc môn vi điều khiển là thiết kế mạch
“đo tần số và hiển thị qua LCD”
Trang 2Tuy đã rất cố gắng tìm hiểu,nghiên cứu và hoàn thiện bài tập lớn nhưng
có thể vẫn còn có những sai sót Chúng tôi rất mong nhận được sự góp ý củathầy giáo và các bạn để có thêm những kiến thức vững chắc trong lĩnh vựcđiện tử đang theo học Chắc chắn những kiến thức đó sẽ giúp chúng tôi rấtnhiều trong việc nghiên cứu học tập và công tác sau này
Xin chân thành cảm ơn !
Giáo viên hướng dẫn : Nguyễn Anh Dũng Sinh viên thực hiện : Ngô Đông Y
Nguyễn Văn Hồng Phùng Gia Long Lớp điện tử 2 – K9
Trang 3Cùng với họ 89S52 có một số vi điều khiển khác Về cơ bản chúng đềugiống nhau, chúng chỉ khác nhau ở vùng nhớ nội bao gồm vùng nhớ mã lệnh,vùng nhớ dữ liệu và một số Timer Sự khác nhau đó được mô tả bằng bảngdưới đây:
Vi điều khiển Vùng mã lệnh nội Vùng dữ liệu nội Số Timer
Trang 4Bảng 1 Giới thiệu một số IC họ 8951
2.Cấu trúc của IC 89S52:
Trung tâm của 89S52 vẫn là vi xử lý trung tâm (CPU) Để kích thíchcho toàn bộ hệ thống hoạt động, 89S52 có bộ tạo dao động nội với thạch anhđược ghép từ bên ngoài với tần số khoảng từ vài Mhz đến 24 Mhz Liên kếtcác phần tử với nhau là hệ thống BUS nội, gồm có BUS dữ liệu, BUS địa chỉ
và BUS điều khiển 89S52 có 8K ROM, 256 bytes RAM và một số thanh ghi
bộ nhớ… Nó giao tiếp với bên ngoài qua 3 cổng song song và một cổng nốitiếp có thể thu, phát dữ liệu nối tiếp với tốc độ lập trình được Hai bộ địnhthời 16 bit của 89S52 còn có 2 ngắt ngoài cho phép nó đáp ứng và xử lý điềukiện bên ngoài theo cách ngắt quãng, rất hiệu quả trong các ứng dụng điềukhiển Thông qua các chân điều khiển và các cổng song song 89S52 có thể
mở rộng bộ nhớ ngoài lên đến 64Kbs dữ liệu
Sau đây là sơ đồ khối vi điều khiển:
Trang 5Hình 1 Sơ đồ khối Vi điều khiển họ 89S52
3 Sơ lược về các chân IC 89S52:
Trang 6IC 89S52 có 40 chân Có đến 32 chân làm nhiệm vụ xuất nhập, truyền
dữ liệu Các chân phục vụ ngắt, các chân Timer, trong đó 24 chân làm 2nhiệm vụ khác nhau Mỗi chân có thể là đường xuất nhập, đường điều khiểnhoặc là một phần của địa chỉ hay dữ liệu Thiết kế thường có bộ nhớ ngoàihay các thiết bị ngoại vi sử dụng những Port để xuất nhập dữ liệu Tám đườngtrong mỗi Port được sử dụng như một dơn vị giao tiếp song song như máy in,
bộ biến đổi tương tự số… Hoặc mỗi đường cũng có thể hoạt động độc lậptrong giao tiếp với các thiết bị đơn bit khác như: transistor, LED, switch…
Sau đây là hình dạng sơ đồ của IC 89S52:
Trang 7Hình 2 Hình dạng sơ đồ IC 89S52
4 Chức năng các chân IC 89S52:
Trang 8Sau đây là phần giới thiệu chức năng các chân , các Port tương ứng,chân PSEN, chân ALE, chân REST…
a Port 0
Port 0 là cổng song song dùng cho 2 mục đích, nó là các chân từ 32.Trong những thiết kế nhỏ nó được dùng trong các cổng xuất nhập bìnhthường Ở những thiết kế có sử dụng bộ nhớ ngoài, nó vừa là Bus dữ liệu vừa
là bytes thấp của Bus địa chỉ Nó còn được dùng chứa những bytes mã khinạp ROM nội
b Port 1
Port 1 dành cho cổng xuất nhập và chỉ dành cho mục đích này mà thôi
Nó dùng để giao tiếp với các thiết bị ngoại vi theo từng bit hoặc bytes Port 1chiếm các chân từ 1 đến 8
c Port 2
Port 2 (chân 21÷ 28) là Port có 2 chưc năng Ngoài mục đích dành choxuất nhập thông thường nó còn dùng làm bytes cao cho các địa chỉ bộ nhớngoài
d PSEN (cho phép nạp chương trình)
89S52 có 4 chân tín hiệu điều khiển PSENT là tín hiệu điều khiểnđược xuất ra ở chân 29 Tín hiệu điều khiển này cho phép lập trình ở bộ nhớngoài và thường được nối với các chân OE của EPROM để đọc mã lệnh từ bộnhớ ngoài vào thanh ghi đệm của 89S52 Nó xuống mức thấp nhất trong khiđọc lệnh Mã lệnh đọc từ EPROM, qua Bus dữ liệu, được chốt vào thanh ghicủa 89S52 Khi thi hành chương trình từ ROM nội PSEN được giữ ở mức cao(trạng thái không tác động)
e EA (truy xuất vùng nhớ ngoài)
EA là một tín hiệu vào có thể ở mức cao hay thấp Nếu ở mức cao89S52 thi hành chương trình ở ROM nội, 4K/8K chương trình Nếu ở mức
Trang 9thấp, chương trình chỉ được thi hành ở bộ nhớ ngoài Đối với 80431/ 8231 EAphải được giữ ở mức thấp vì chúng không có ROM nội EA cũng chính làchân nhận điện áp mức cao để nạp EPROM nội.
f ALE ( cho phép chốt địa chỉ)
ALE là tín hiệu được xuất ra ở chân 20, rất quen thuộc với những ai đãtùng làm việc với vi xử lý 8085, 8086 của Intel 89S52 dùng ALE để phânkênh cho từng Bus địa chỉ và Bus dữ liệu Khi Port 0 được dùng làm Bus dữliệu và bytes thấp của Bus địa chỉ - ALE là tín hiệu dùng để chốt địa chỉ vàothanh ghi chốt bên ngoài trong nửa đầu của một chu kỳ máy Sau đó Port 0sẵn sàng để truy xuất dữ liệu trong nửa chu kỳ còn lại
Xung ALE có tần số bằng 1/6 lần tần số bộ dao động nội và có thểdùng như một xung clock cho mục đích nào đó khi hệ thống không làm việc.Nếu tần số của 89S52 là 12MHz thì tần số xung ALE là 2MHz Một xungALE bị mất khi có một lệnh MOVX được thi hành
g Ngõ vào dao động nội
Ngõ vào đao động nội được mô tả như dưới hình hai, có một thạch anhđược nối vào chân 19 (XTAL1) và 18 (XTAL2) Có thể mắc thêm tụ để ổnđịnh dao động Thạch anh 12MHz thường dùng cho họ IC MCs-51, trừ IC80C31BH có thể dùng thạch anh lên đến 16MHz Tuy nhiên, không nhất thiếtphải dùng thạch anh mà ta có thể dùng mạch dao động TTL tạo xung Clockđưa vào chân XTAL1 và lấy đảo của nó đưa vào XTAL2
h RST (RESET)
Ngõ vào chân RST (chân 19) là chân master reset của 89S52 Khi nó ởmức cao nhất (trong khoảng ít nhất 2 chu kỳ máy ) các thanh ghi nội được nạpvới giá trị tương ứng theo thứ tự khởi động hệ thống
i Nguồn cung cấp
Trang 1089S52 sử dụng nguồn cung cấp Vcc=5V được cấp vào chân 40,GNDđược nối vào chân 20.
Nhận dữ liệuPhát dữ liệuNgắt ngoài 0Ngắt ngoài 1Ngõ vào Timer/couter 0Ngõ vào Timer/ couter 1Đọc dữ liệu từ bộ nhớ ngoàiĐọc dữ liệu vào bộ nhớ ngoàiNgõ vào của Timer/ couter
Bảng 2 Giới thiệu một số chân IC họ 8951
5 Các thanh ghi có chức năng đặc biệt
Các thanh ghi nội của 89S52 chiếm một phần của vùng nhớ nội, vì vậymỗi thanh ghi đều có một địa chỉ Các thanh ghi chức năng (FSRs) trong vùngnhớ cao từ 80H đến FFH Lưu ý có một số bytes trong vùng này không đượcđịnh nghĩa Chỉ có 21 địa chỉ thanh ghi chức năng được định nghĩa (26 địa chỉđối với 8052/8032)
a Các thanh ghi chương trình
Trang 11b Thanh ghi B
c Con trỏ ngăn sắp xếp
d Con trỏ dữ liệu
e Các thanh ghi Port
f Các thanh ghi bộ định thời
g Các thanh ghi cổng nối tiếp
- Loại hiển thị ký tự (character LCD) có các kích cỡ: 16x1, 16x2,16x4…mỗi ký tự được tạo thành bởi một ma trận các điểm sángkích thước 5x7 hoặ 5x10 điểm ảnh
Trang 12- Loại hiển thị đồ họa (Grafic LCD) đen trắng hoặc màu, gồm các kícthước 1.47 inch (128x128 điểm ảnh) 1,8 inch (128x160 điểm ảnh), 2inch (176x220 điểm ảnh), 2,2 inch (240x320 điểm ảnh), 2,4 inch(240x320 điểm ảnh), 3,5 inch (320x240 điểm ảnh), 4,3 inch(480x272 điểm ảnh ), 7 inch (800x480 điểm ảnh), 8 inch (800x600điểm ảnh) Được dùng nhiều trong điện thoại di động, máy ảnh số,camera…
Trang 135 R/W I R/W= 1 đọc dữ liệu R/W = 0 ghi dữ
liệu
Bảng 3 Các chân của LCD
a Chân Vcc, Vss và Vee
Cấp dương nguồn -5V và đất tương ứng thì Vee được dùng để điềukhiển độ tương phản của LCD
b Chân chọn thanh ghi RS (Register select).
Có hai thanh ghi rất quan trọng bên trong LCD, chân RS được dùng đểchọn các thanh ghi này như sau: Nếu RS = 0 thì thanh ghi mã lệnh được chọn
để cho phép người dùng gửi đến một lệnh như xóa màn hình, con trỏ về đầudòng… Nếu RS = 1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi
dữ liệu cần hiển thị trên LCD
c Chân đọc/ghi(R/W).
Đầu đọc/ghi cho phép người dùng ghi thông tin trên LCD Khi R/W = 0thì ghi, R/W = 1 thì đọc
d Chân cho phép E(Enable)
Chân cho phép E được sử dụng bởi LCD để chốt thông tin hiện hữutrên chân dữ liệu của nó, khi dữ liệu được cấp đến chân đữ liệu thì một mức
Trang 14xung từ cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trêncác chân chốt dữ liệu Xung này phải rộng tối thiểu 450ns.
Mã HEX Lệnh đến thanh ghi của LCD
4 Giảm con trỏ (Con trỏ dịch sang trái)
6 Tăng con trỏ (Con trỏ dịch sang phải)
Trang 15F Tăt con trỏ, nhấp nháy con trỏ
Trang 161.64µs
Trang 17vị trí gốc DDRAM không thay
đổi
1.64µs
Đặt hướngchuyển dịch contrỏ và xác địnhdịch hiển thị cácthao tác nàyđược thực hiệnkhi đọc và ghi dữ
trỏ(C) Và nhấpnháy ký tự ở vịtrí con trỏ(B)
40µs
Trang 18CG RAM đượcgửi đi và nhậnsau thiết lập này
và đọc nội dungđếm địa chỉ
40µs
Trang 19- Thời gian thời gian cực đại khi tần số fCP hoặc fosc là 250KHz.
- Thời gian thực thay đổi khi tần số thay đổi Khi tần số fEP hay fosc là270kHz thì thời gian thực hiện được tính 250/270 x 4 = 35 µs…
- Các ký hiệu viết tắt trong bảng là :
DD RAM : RAM dữ liệu hiển thị (Display Data RAM)
CG RAM : RAM máy phát ký tự (character Generator)
ACC : Địa chỉ của RAM máy phát ký tự
ADD : Địa chỉ của RAM dữ liệu hiển thị phù hợp với địa
Trang 20chỉ con trỏ
AC : Bộ đếm địa chỉ (Address Counter) được dùng cho
các địa chỉ DD RAM và CG RAM
1 Cấu tạo của IC 555:
Cấu tạo LM555 gồm OP-amp so sánh điện áp, mạch lật và transistor để
xả điện Cấu tạo của IC đơn giản nhưng họat động tốt Bên trong gồm 3điện trở mắc nối tiếp chia điện áp Vcc thành 3 phần Cấu tạo này tạo nên điện
áp chuẩn Điện áp 1/3 Vcc nối vào chân dương của OP-amp 1 và điện áp 2/3Vcc nối vào chân âm của OP-amp 2 khi điện áp ở chân 2 nhỏ hơn 1/3 Vcc,
Trang 21chân S = [1] và FF được kích Khi điện áp ở chân 6 lớn hơn 2/3 Vcc, chân Rcủa FF = [1] và FF được reset.
Hình 4 Sơ đồ nguyên lý của IC 555
3 Giai đoạn ngõ ra ở mức 1:
Trang 22Khi bấm công tắc khởi động, chân 2 ở mức 0 Vì điện áp ở chân 2 (V-)nhỏ hơn V1(V+), ngõ ra của OP-amp 1 ở mức 1 nên S = [1], Q = [1] và Q =[0] Ngõ ra của IC ở mức 1 Khi Q = [0], transistor tắt, tụ C tiếp tục nạp qua
R, điện áp trên tụ tăng Khi nhấn công tắc lần nữa OP-amp 1 có V- =[1] lớnhơn V+ nên ngõ ra của OP-amp 1 ở mức 0, S=[0]q và Q vẫn không đổi.Trong khi điện áp tụ C nhỏ hơn V2, FF vẫn giữ nguyên trạng thái đó
Hình5 Sơ đồ chân IC 555
II TRÌNH TỰ THIẾT KẾ VÀ HOÀN CHỈNH ĐỒ ÁN
1 Lập lưu đồ thuật toán
Trang 23Đề tài của chúng tôi là đo tần số hiển thị LCD và yêu cầu đo được 3 dảitần 10Hz – 100Hz, 100Hz – 500Hz, 1Khz – 5Khz qua thảo luận của nhóm chúng tôi quyết định chia đề tài thành 2 bài toán Bài toán thứ nhất là thuật toán tính tần số để khi có tần số đưa vào sẽ cho kết quả chính xác Bài toán thứ hai là thuật toán so sánh để khi có tần số xuất ra chương trình có thể tự động nhận ra tần số đo được thuộc dải tần nào để hiển thị dải tần tương ứng.
Sau đây là 2 lưu đồ thuật toán tương ứng 2 bài toán trên:
a Lưu đồ thuật toán tính tần số:
Trang 24Hình 6 Lưu đồ thuật toán tính tần số
b Lưu đồ thuật toán tự động
chuyển dải đo
Bắt đầu
Đưa f vào đo
Trang 25Hình 7 Lưu đồ thuật toán tự động chuyển dải đo
2 Lập trình
Sau khi vẽ được lưu đồ thuật toán chúng tôi tiến hành lập trình cho
IC 89S52 bằng ngôn ngữ C và viết trên phần mềm KeilC Version 3
Sau đây là toàn bộ chương trình viết bằng C được nạp vào IC
unsigned char message[32];
void delay30ms(void) //Tạo trễ 30ms
Trang 29if (f>10){
ngoaidaitan();
}else if (1<f&&f<=10){
daitan=10000;
thuattoan();
f=n;
if (100<f&&f<=1000){
daitan=20000;
thuattoan();
f=n/2;
if (0<f&&f<10){
ngoaidaitan();
}else if(f==0)
write_command(0x80);
write_string("Moi dua vao ");
Trang 30write_string("tan so can do ");
}else{
write_command(0x80);
write_string("Dai 10Hz-100Hz ");write_command(0xc0);
sprintf(&message[0],"F = %0.1f Hz ",f);write_string(&message[0]);
}}
}}
Sau khi lập trình xong để kiểm tra xem chương trình của mình
chạy đã chính xác chưa chúng tôi tiến hành mô phỏng mạch điện trên
phần mềm Proteus version 7.5 SP3
Trang 31Hình 8 mạch điện mô phỏng
4 Test mạch trên bo đồng và vẽ sơ đồ nguyên lý
Trang 32Sau khi đã kiểm tra thấy lập trình và mô phỏng chính xác chúng tôi tiếnhành mua linh kiện về cắm trên bo đồng để kiểm tra trên thực tế mạch có chạy chính xác giống mô phỏng hay không vì trong mô phỏng chúng ta luôn
có mọi yếu tố là lý tưởng nhưng trên thực tế có rất nhiều yếu tố tạo nên sai số cho một mạch điện Ngoài ra mạch điện còn kèm theo một mạch phát xung
555 nhằm tạo ra 3 dải tần khác nhau theo yêu cầu đề bài giúp mọi người có thể trực tiếp kiểm tra mạch mà không cần thiết bị tạo tần số ngoài Khi cắm trên bo chúng ta sẽ nhìn thấy mạch điện chạy giống như mạch điện hoàn chỉnh Khi nhận thấy mọi thứ đều tốt chúng tôi tiến hành vẽ mạch nguyên lý trên Orcad 9.2
Hình 9 Sơ đồ nguyên lý mạch điện
5 Vẽ mạch in và tiến hành làm mạch
Trang 33Sau khi vẽ xong mạch nguyên lý chúng tôi chuyển sang vẽ luôn mạch
Trang 34- Mạch có khả năng đo tần số với dải tần lớn từ 10Hz đến 10Khz.
- Mạch có khả năng tự động chuyển dải tần đo khi dải tần thay đổi 1 trong 3 dải nhỏ là 10Hz – 100Hz, 100Hz – 1000Hz, 1Khz – 10Khz
để chọn ra thuật toán phù hợp khi tính toán trong dải nhằm giảm sai
số và thời gian khi đo
- Mạch điện hiển thị trên LCD nên quy trình đo tần số và hiển thị dải
đo cũng như giá trị tần số sau khi đo được chú thích đầy đủ nhằm đơn giản rất nhiều cho người sử dụng
- Mạch điện được thiết kế nhỏ gọn và tích hợp với kích cỡ nhỏ nhất
có thể theo thiết kế nhằm đơn giản cho người sử dụng khi mang theo và làm việc với thiết bị
- Mạch có khả năng đáp ứng nhanh khi đo với tần số cao
3 Tính thực tế của mạch điện:
- Mạch điện được thiết kế với khả năng ứng dụng cao nên hoàn toàn
có thể đo được chính xác các dải tần nằm trong dải đo của thiết bị Thiết bị có thể đưa vào thực tế và tiến hành đo đạc tần số theo yêu cầu của người sử dụng
Trang 35- Thiết bị rất nhỏ gọn, có khả năng tự động cao, được chú thích chi tiết trên màn hình nên kể cả những người chưa có chuyên môn vẫn
có thể sử dụng đo tần số một cách chính xác
- Thiết bị được tích hợp 2 que đo chuyên dụng có khả năng linh động cao nên có thể đo được cả trên những vật cần đo có diện tích nhỏ và hẹp
4 Hướng phát triển:
- Với yêu cầu đo tần số đơn thuần mạch điện hoàn toàn có thể đáp ứng tốt yêu cầu của người sử dụng nhưng với những linh kiện như trên chúng ta hoàn toàn có thể thiết kế thêm nhằm mở rộng khả năngcủa thiết bị để đo được những đại lượng khác như điện áp, dòng điện, nhiệt độ…
- Với thiết bị này chúng ta có thể dùng để đo tần số với độ chính xác cao nhưng có thời gian trễ là vài giây mặc dù hoàn toàn có thể chấp nhận được Tùy theo yêu cầu người sử dụng chúng ta có thể phát triển thiết bị theo 2 hướng:
Hướng thứ nhất dành cho những cá nhân,tổ chức dùng để đo đạc vớikhả năng chính xác không cao nhưng thời gian đáp ứng nhanh
Hướng thứ hai dành cho những cá nhân, tổ chức dùng để đo đạc với
độ chính xác cao và có thể chấp nhận một khoảng thời gian trễ tùy theo mức độ sai số khi đo