Thuật toán thiết kế phần mềm

Một phần của tài liệu Đề tài “ Nghiên cứu về Vi điều khiển 8051. Thiết kế mô hình đồng hồ thời gian thực hiển thị trên Led 7 thanh” docx (Trang 57 - 130)

L ỜI NÓI ĐẦU

2.1.4.4Thuật toán thiết kế phần mềm

Như đã trình bày trong phần thuật toán giao tiếp và sơ đồ khối tổng quát, thì

chương trình MAIN sẽ gồm 3 mục chính được mô tả cụ thể trong lưu đồ của chương trình MAIN ở hình 2.11

Giải thích lưu đồ chính này: Bắt đầu, chương trình sẽ gọi chương trình con đọc

dữ liệu từ con DS1307 với chuẩn giao tiếp I2C, sau đó sẽ gọi chương trình con để quét Led 7 đoạn hiển thị 15 số: 2 số hiển thị giá trị của Giờ, 2 số hiển thị giá trị của

Phút, 2 số hiển thị giá trị của Giây, 1 số hiển thị thứ, 2 số hiển thị ngày, 2 số hiển thị

tháng, 4 số hiển thị năm. Nếu phím MODE (chọn chế độ cài đặt) không được nhấn

thì vòng lặp của chương trình này sẽ chạy vô tận. Nếu phím MODE được nhấn, nó

sẽ nhảy tới chương trình con cài đặt giờ hay phút còn tùy thuộc vào số lần nhấn

phím MODE. Sau đây ta đi vào chi tiết của từng khối nhỏ:

ĐỌC DỮ LIỆU TỪ DS1307 LƯU VÀO TRONG RAM CỦA 89S52. Xem lưu đồ chương trình như hình dưới. Ở đây, các chương trình con nhỏ hơn, chẳng hạn như : CTC Start, Stop…

- Cài đặt thời gian.

Hình 2.13 Thuật toán cài đặt giờ

Trong lưu đồ giải thuật trên hình 2.13 cho thấy, vòng lặp của chương trình sẽ chạy

vô tận cho đến khi có phím MODE được ấn xuống. Khi đó, nó nhảy đến CTC để

giải quyết việc cài đặt thời gian.

Lưu đồ CTC cài đặt giờ CTC cài đặt phút cũng có nguyên tắc tương tự như cài đặt

giờ nên không được nói ra ở đây. Nhìn vào lưu đồ chúng ta thấy, thanh ghi= 02H, là

địa chỉ của thanh ghi giờ trong con DS1307, như vậy, mục đích của việc định nghĩa

ô nhớ thanh ghi là để xác định địa chỉ thay đổi giá trị trong ô nhớ RAM của DS1307. CTC cài đặt giờ sẽ lặp vô tận và CTC hiển thị giờ sẽ chỉ cho hiển thị 2 Led 7 đoạn, chỉ hiển thị giờ trong khi cài đặt, tất cả các đèn Led còn lại đều tắt hết. Trong khi CTC cài đặt đang chạy vô tận, nếu có phím INC hoặc DEC được nhấn thì nó sẽ nhảy đến CTC tăng hoặc giảm tùy vào phím được nhấn.

Hình 2.14 Thuật toán cập nhật dữ liệu cho DS1307 2.2 Bộ biến đổi tương tự sang số (ADC0804)

2.2.1 Giới thiệu

Chíp ADC0804 là bộ chuyển đổi tương tự sang số thuộc họ ADC800 của

hãng National Semiconductor. Chíp này cũng được nhiều hãng khác sản xuất. Chíp

có điện áp nuôi +5V và độ phân giải 8 bit. Ngoài độ phân giải thì thời gian chuyển đổi cũng là một tham số quan trọng khi đánh giá bộ ADC. Thời gian chuyển đổi được định nghĩa 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. Đối với ADC 0804 thì thời gian chuyển đổi phụ thuộc vào tần số đồng hồ được cấp chân CLKvà CLK IN và không bé hơn 110µs.

2.2.2 Sơ đồ và chức năng các chân ADC0804 2.2.2.1 Sơ đồ chân 2.2.2.1 Sơ đồ chân

Hình 2.15 Sơ đồ chân thực tế của ADC0804 2.2.2.2 Chức năng các chân

 Chân CS (Chip select).

Chân số 1, là chân chọn chip, đầu vào tích cực mức thấp được sử dụng để kích

hoạt chip ADC0804.Để truy cập ADC0804 thì chân này phải ở mức thấp.

 Chân RD (Read).

Chân số 2 là một tín hiệu vào, tích cực ở mức thấp. Các bộ chuyển đổi đầu vào (adsbygoogle = window.adsbygoogle || []).push({});

tương tự thành số nhị phân và giữ nó một thanh ghi trong.RD được sử dụng để

có dữ liệu đã được chuyển đổi tới đầu ra của ADC0804.

Khi CS = 0 nếu có một xung cao xuống thấp đến chân RD thì dữ liệu ra dạng

số 8 bit được đưa tới các chân dữ liệu (DB0-DB7).  Chân WR (Write).

Chân số 3, đây là chân tích cực mức thấp được dùng để báo cho ADC biết bắt đầu quá trình biến đổi. Nếu CS=0 khi WR tạo ra xung cao xuống thấp thì bộ

ADC0804 bắt đầu quá trình chuyển đổi giá trị đầu vào tương tự Vin về số nhị

phân 8 bit. Khi việc chuyển đổi hoàn tất thì chân INTR được ADC hạ xuống

thấp.

 Chân CLKIN và CLKR.

CLKIN (chân số 4), là chân vào nối tới đồng hồ ngoài được sử dụng để tạo thời

gian. Tuy nhiên ADC0804 cũng có một bộ tạo đồng hồ riêng. Để dùng đồng hồ

riêng thì các chân CLKIN và CLKR (chân 19) được nối với một tụ điện và một điện trở (như hình 2.16). Khi đó tần số được xác định bằng biểu thức:

Với R=15kΩ, C=151pF

Hình 2.16 Cách mắc tạo xung đồng hồ cho chíp ADC0804

 Chân Ngắt INTR (Interrupt).

Chân số 5 là chân ra tích cực mức thấp. Bình thường chân này ở 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 dữ liệu

chuyển đổi sẵn sàng lấy đi. Sau khi INTR xuống thấp, cần đặt CS = 0 và gửi

một xung cao xuống thấp tới chân RD để đưa dữ liệu ra.

 Chân Vin(+) và Vin(-).

Chân số 6 và chân số 7, đây là hai đầu vào tương tự vi sai, trong đó Vin = Vin(+) - Vin(-). Thông thường Vin(-) được nối với đất và Vin(+) được dùng

làm đầu vào tương tự và sẽ được chuyển đổi về dạng số.

 Chân Vcc.

Chân số 20 là chân nguồn nuôi +5V. Chân này còn được dùng làm điện áp

tham chiếu khi đầu vào Vref/2 để hở.

 Chân Vref/2.

Chân số 9 là chân điện áp đầu vào được dùng làm điện áp tham chiếu. Nếu

Tuy nhiên, có nhiều ứng dụng mà đầu vào tương tự đến Vin khác với dải 0-5V.

Chân Vref/2 được dùng để thực hiện các điện áp đầu ra khác 0-5V.

Bảng 2.1 Bảng so sánh điện áp (adsbygoogle = window.adsbygoogle || []).push({});

Vref/2 (V) Vin (V) Kích thước bước (mV)

Hở 0 - 5 5/256 = 19.53 2.0 0 - 4 4/256 = 15.62 1.5 0 - 3 3/256 = 11.71 1.28 0 - 2.56 2.56/256 = 10 1.0 0 - 2 2/256 = 7.81 0.5 0 - 1 1/256 = 3.90  Chân dữ liệu (DB0-DB7).

D0-D7, chân 18-11, là các chân ra dữ liệu số (D7 là bit cao nhất MSB và D0 là bit thấp nhất LSB). Các chân này được đệm ba trạng thái và dữ liệu đã được

chuyển đổi chỉ được truy cập khi chân CS = 0 và chân RD đưa xuống mức

thấp.Để tính điện áp đầu ra ta tính theo công thức sau.

Dout=Vin /(kích thước bước).

2.3 Vi điều khiển AT89S52 2.3.1 Giới thiệu 2.3.1 Giới thiệu

AT89S52 cung cấp những đặc tính chuẩn như: 8 KByte bộ nhớ chỉ đọc có

thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 3 TIMER/COUNTER 16 Bit, 6 vectơ ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp

bán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP.

Các đặc điểm của chip AT89S52 được tóm tắt như sau:

 8 KByte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳ

ghi/xoá

 Tần số hoạt động từ: 0Hz đến 24 MHz

 3 bộ Timer/counter 16 Bit

 128 Byte RAM nội.

 4 Port xuất /nhập I/O 8 bit.

 Giao tiếp nối tiếp.

 64 KB vùng nhớ mã ngoài  64 KB vùng nhớ dữ liệu ngoại.

 4 s cho hoạt động nhân hoặc chia.

2.3.2 Sơ đồ chân và chức năng các chân của AT89S52

2.3.2.1 Sơ đồ chân của AT89S52

Hình 2.17 Sơ đồ chân của AT89S52

Mặc dù các thành viên của họ 8051 (ví dụ 8751, 89S52, 89C51, DS5000) đều có các kiểu đóng vỏ khác nhau, chẳng hạn như hai hàng chân DIP (Dual In- Line Pakage), dạng vỏ dẹt vuông QPF (Quad Flat Pakage) và dạng chip không có chân đỡ LLC (Leadless Chip Carrier) thì chúng đều có 40 chân cho các chức năng khác nhau như vào ra I/O, đọc RD, ghi WR, địa chỉ, dữ liệu và ngắt. Cần phải lưu

ý một số hãng cung cấp một phiên bản 8051 có 20 chân với số cổng vào ra ít hơn

chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta chỉ tập trung mô tả phiên bản

này.

2.3.2.2 Chức năng các chân của AT89S52

* Port 0 (P0.0-P0.7)

Port 0 gồm 8 chân (từ chân 32 đến chân 39), có hai công dụng. Trong các thiết kế có tối thiểu thành phần, Port 0 được sử dụng làm nhiệm vụ xuất nhập. (adsbygoogle = window.adsbygoogle || []).push({});

Trong các thiết kế lớn hơn có bộ nhớ ngoài, Port 0 trở thành bus địa chỉ và bus dữ

liệu đa hợp ( byte thấp của bus địa chỉ ).

Hình 2.18 Cấu trúc của các chân trên Port0

* Khi muốn sử dụng Port 0 cho việc xuất nhập dữ liệu ta cần kéo một hàng điện trở

vào Port 0 và nối lên Vcc.

* Port 1 (P1.0-P1.7)

Đối với 8051, chức năng duy nhất của Port 1 là chức năng xuất nhập cùng Port khác, Port 1 có thể xuất nhập theo bit và theo byte. Port 1 được dùng để giao

tiếp với thiết bị ngoài khi có yêu cầu. Không có chức năng nào khác nữa gán cho

Port 1, ngoài hai việc trên.

* Riêng dòng 89Sxx, ba chân P1.5, P1.6, P1.7 được dùng để nạp Rom theo chuẩn

Hình 2.19 Cấu trúc của các chân trên Port 1 và Port 3

* Port 2 (P2.0-P2.7)

Port 2 (các chân từ 21 đến 28) có hai công dụng hoặc làm nhiệm vụ

xuất/nhập hoặc là byte địa chỉ cao của bus địa chỉ 16 bit cho các thiết kế có bộ nhớ chương trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài.

Hình 2.20 Cấu trúc của các chân trên Port2

* Port 3 (P3.0-P3.7)

Mỗi chân trên Port 3 ngoài chức năng xuất nhập còn có một số chức năng

Bảng 2.2 Tên chân và chức năng các chân của Port 3

Bit Tên Chức năng

P3.0 RXD Dữ liệu nhận cho port nối tiếp

P3.1 TXD Dữ liệu truyền cho port nối tiếp

P3.2 INT0 Ngắt ngoài 0

P3.3 INT1 Ngắt ngoài 1

P3.4 T0 Ngõ vào của Timer/Counter 0

P3.5 T1 Ngõ vào của Timer/Counter 1

P3.6 /WR Xung ghi bộ nhớ dữ liệu ngoài

P3.7 /RD Xung đọc bộ nhớ dữ liệu ngoài

* Chân /PSEN (Program Store Enable)

/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 để cho phép đọc các byte mã lệnh trên Rom ngoài. /Psen sẽ ở mức thấp (adsbygoogle = window.adsbygoogle || []).push({});

trong thời gian đọc mã lệnh. Mã lệnh được đọc từ bộ nhớ ngoài bus dữ liệu (Port 0) thanh ghi lệnh để được giải mã.

Khi thực hiện chương trình trong Rom nội thì /Psen ở mức cao.

* Chân ALE (Address Latch Enable)

ALE là tín hiệu điều khiển chốt địa chỉ có tần số bằng 1/6 tần số dao động

của vi điều khiển. Tín hiệu ALE được dùng để cho phép vi mạch chốt bên ngoài

như 74373 , 74573 chốt byte địa chỉ thấp ra khỏi bus đa hợp địa chỉ/dữ liệu (Port 0).

* Chân /EA (External Access)

Tín hiệu /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 /EA ở mức cao (nối Vcc), thì vi điều khiển thi hành chương trình trong Rom nội. Nếu /EA ở mức thấp ( nối GND ) thì vi điều khiển thi hành chương

trình từ bộ nhớ ngoài.

* Chân RST (Reset)

Ngõ vào RST trên chân 9 là ngõ reset của 8051. Khi tín hiệu này được đưa

lên mức cao trong ít nhất 2 chu kì máy, các thanh ghi trong bộ nhớ vi điều khiển được tải những giá trị thích hợp để khởi động lại hệ thống. Quá trình này diễn ra

nhờ nối một tụ điện (có giá trị 1-10 micro fara) và một điện trở khoảng 10kΩ vào chân này.

Hình 2.21 Mạch reset AT89S52

* Chân XTAL1, XTAL2

AT89S52 có một bộ dao động trên chíp, nó thường được nối với bộ dao động

thạch anh có tần số lớn nhất là 33MHz, thông thường là 12MHz. Thường có thêm hai tụ điện loại 33pF được nối với bộ dao động thạch anh.

Hình 2.22 Mạch tạo dao động

Độ lớn của một chu kì máy có thể nhận được bằng cách chia tần số của bộ

cộng hưởng thạch anh cho 12. Như vậy chu kì máy sẽ bằng 2 micro giây nếu tần số

bộ cộng hưởng thạch anh 12MHz. Hầu hết các lệnh được thực hiện trong một chu kì máy.

Hình 2.23 Mạch tạo xung cho Vi điều khiển

* Chân Vcc, GND

AT89S52 dùng nguồn một chiều có dải điện áp từ 4V đến 5,5V được cấp qua

chân 40 và 20.

2.4 IC ghi dịch 74HC595 2.4.1 Giới thiệu 2.4.1 Giới thiệu

Là IC ghi dịch 8 bit kết hợp chốt dữ liệu,đầu vào nối tiếp đầu ra song song.

Chức năng: thường dùng trong các mạch quét led 7 thanh, led matrix…để

tiết kiệm số chân VĐK tối đa (3 chân). Có thể mở rộng số chân VĐK bao nhiêu tùy thích mà không IC nào có thể làm được bằng việc mắc nối tiếp đầu vào dữ liệu các (adsbygoogle = window.adsbygoogle || []).push({});

IC với nhau.

2.4.2 Sơ đồ chân và chức năng các chân 2.4.2.1 Sơ đồ chân 2.4.2.1 Sơ đồ chân

2.4.2.2 Chức năng các chân

 Chân 14: đầu vào dữ liệu nối tiếp. Tại một thời điểm xung clock chỉ đưa

vào 1 bit.

 Chân (15, 1, 2, 3, 4, 5, 6, 7): xuất dữ liệu khi chân 13 tích cực ở mức thấp

và có một xung tích cực ở sườn âm tại chân chốt 12.

 Chân 13: chân cho phép tích cực ở mức thấp. Khi ở mức cao, tất cả các đầu

ra của 74HC595 trở về trạng thái cao trở, không có đầu ra nào được cho

phép.

 Chân 9: chân dữ liệu nối tiếp. Nếu dùng nhiều 74HC595 mắc nối tiếp nhau

thì chân này đưa vào đầu vào của con tiếp theo khi đã dịch đủ 8 bit.

 Chân 11: chân vào xung clock. Khi có một xung clock tích cực ở sườn dương (từ 0 lên 1)thì 1 bit được dịch vào IC.

 Chân12: xung clock chốt dữ liệu. Khi có một xung clock tích cực ở sườn dương thì cho phép xuất dữ liệu trên các chân output.

 Chân 10: khi chân này ở mức thấp (mức 0) thì dữ liệu sẽ bị xóa trên chip.

2.5 Led 7 đoạn

2.5.1 Giới thiệu

Trong các thiết bị, để báo trạng thái hoạt động của thiết bị đó cho người sử

dụng với thông số chỉ là các dãy số đơn thuần, thường người ta sử dụng “ led 7 đoạn”. Led 7 đoạn được sử dụng khi các dãy số không đòi hỏi quá phức tạp, chỉ cần

hiển thị số là đủ, chẳng hạn led 7 đoạn được dùng để hiển thị nhiệt độ phòng, trong

các đồng hồ treo tường bằng điện tử, hiển thị số lượng sản phẩm được kiểm tra sau

một công đoạn nào đó…

Led 7 đoạn có cấu tạo bao gồm 7 led đơn có dạng thanh xếp theo hình và có thêm một led đơn hình tròn nhỏ thể hiện dấu chấm tròn ở góc dưới, bên phải của led 7 đoạn.

7 led đơn trên led 7 đoạn có Anode (cực +) hoặc Cathode (cực -) được nối

chung với nhau vào một điểm, được đưa chân ra ngoài để kết nối với mạch điện. 8

cực còn lại trên mỗi led đơn được đưa thành 8 chân riêng, cũng được đưa ra ngoài để kết nối với mạch điện. Nếu led 7 đoạn có Anode (cực +) chung, đầu chung này

led đơn, led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 0. Nếu led 7 đoạn có

Cathode (cực -) chung, đầu chung này được nối xuống Ground (hay Mass), các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn, led chỉ sáng khi

tín hiệu đặt vào các chân này ở mức 1.

Vì led 7 đoạn chứa bên trong nó các led đơn, do đó khi kết nối cần đảm bảo (adsbygoogle = window.adsbygoogle || []).push({});

dòng qua mỗi led đơn trong khoảng 10mA-20mA để bảo vệ led. Nếu kết nối với

nguồn 5V có thể hạn dòng bằng điện trở 330Ω trước các chân nhận tín hiệu điều

khiển.

Hình 2.25 Sơ đồ chân 7 SEG-COM-ANODE và hình ảnh minh họa

2.5.2 Kết nối với vi điều khiển

Ngõ nhận tín hiệu điều khiển của led 7 đoạn có 8 đường, vì vậy có thể dùng

1 Port nào đó của Vi điều khiển để điều khiển led 7 đoạn. Như vậy led 7 đoạn nhận

Một phần của tài liệu Đề tài “ Nghiên cứu về Vi điều khiển 8051. Thiết kế mô hình đồng hồ thời gian thực hiển thị trên Led 7 thanh” docx (Trang 57 - 130)