Ở nhữngtrường hợp không cần thiết phải dùng áp chuẩn nhỏ ta nên sử dụng ápchuẩn là 4.095mV, điều này sẽ làm giảm sai số của quá trình chuyển đổiđồng thời giúp ta dễ dàng tính được giá tr
Trang 1thống thu thập dữ liệu và điều khiển ” Hệ thống này sẽ thu thập dữ liệutừ các kênh chuyển đổi Analog sang Digital, điều khiển hệ thống bằng tínhiệu điện áp được xuất ra, thiết bị hiển thị là màn hình tinh thể lỏng(LCD) Hệ thống được kết nối với máy tính qua cổng nối tiếp, giao diệnđiều khiển được viết bằng ngôn ngữ Visual Basic
Đễ có thể hoàn thành đề tài này em xin chân thành cám ơn thầyhướng dẫn HUỲNH HỮU PHƯƠNG, toàn bộ các anh trong công tyControl nói chung và phòng Điện tử nói riêng đã chỉ bảo tận tình và tạođiều kiện tốt nhất cho em trong quá trình thực hiện luận văn
Ngày 10 tháng 1 năm 2002
Sinh viên Nguyễn hoàng Huy
Trang 2I/ Chuyển đổi AD dùng ADS7841
A/ Sơ lược về ADS7841
B/ Aùp dụng vào luận văn
II/ Chuyển đổi DA dùng DAC7611
A/ Sơ lược về DAC7611
B/ Aùp dụng vào luận văn
III/ Truyền thông nối tiếp với Visual Basic
A/ Sơ lược về truyền thông nối tiếp 27 - 28
IV/ Màn hình tinh thể lỏng LCD
D/ Aùp dụng vào luận văn
Trang 3C/ Các chế độ hoạt động 52 - 56D/ Khởi động và truy xuất các thanh ghi cổng nối tiếp 57 - 58
VI/ Hệ thống thu thập số liệu và điều khiển
B/ Kết nối phần cứng và phần mềm điều khiển 62 - 71
VII/ Các hộp điều khiển ActiveX
Trang 4CHUYỂN ĐỔI AD DÙNG ADS7841
Chuyển đổi từ Analog sang Digital (ADC) là quá trình không thểthiếu trong các hệ thống điều khiển tự động Ngoài IC ADC0809 quenthuộc trên thị trường có rất nhiều IC thực hiện việc chuyển đổi AD,ADC0809 có một số nhược điểm là độ chính xác không cao (chuyển đổi 8bit), thời gian chuyển đổi cao (khoảng 120 s) và giao tiếp dữ liệu dạngsong song chỉ thích hợp cho các hệ thống cần độ chính xác không cao vàtốn nhiều chân port hoặc phải giao tiếp dữ liệu qua data bus
Trong đề tài thực hiện trong luận văn này ta thực hiện việc biến đổi
AD bằng IC ADS7841 của hãng BURR-BROWN ADS7841 có một sốđặc tính nổi trội so với ADC0809 đó là độ chính xác tương đối cao(chuyển đổi 12 bit), tốc độ chuyển đổi cao có thể đạt tới tốc độ 5s Vàđặc biệt là giao tiếp dữ liệu dạng nối tiếp do đó tốn ít chân port của vi xử
lí (có thể chỉ cần tốn 3 chân port)
Ngoài ra đối với ADS7841 ta còn có thể sử dụng ở chế độ chuyểnđổi 8 bit đễ tăng tốc độ chuyển đổi dữ liệu đối với các hệ thống khôngcần độ chính xác cao Trước khi áp dụng vào hệ thống ta giới thiệu sơlược về ADS7841
A/ SƠ LƯỢC VỀ ADS7841
1/ GIỚI THIỆU :
ADS7841 là IC chuyển đổi tín hiệu analog sang tín hiệu số 12 bitbằng giao tiếp nối tiếp do công ty BURR-BROWN sản xuất ADS7841gồm 4 kênh chuyển đổi và cho phép ta lập trình đễ chọn chuyển đổi AD
12 bit hoặc 8 bit tùy theo nhu cầu sử dụng Công suất tiêu thụ khoảng2mw , nguồn cung cấp đơn VCC =+5V , áp chuẩn VREF được cung cấp trongkhoảng từ 100mV đến VCC Tầm điện áp ngõ vào cần đo trong khoảng từ0V đến VREF
1
Trang 5Tiêu thụ năng lượng thấp , làm việc ở tốc độ cao và có khả năngphân kênh dễ dàng nên ADS7841 được dùng rất hữu dụng trong các hệthống đo lường và điều khiển công nghiệp , kiểm tra và đo lường cácnguồn năng lượng với độ chính xác cao Ngoài ra do sử dụng giao tiếpdữ liệu dạng nối tiếp nên ADS7841 thuận lợi trong việc trao đổi dữ liệutừ xa ADS7841 bao gồm 16 chân có sơ đồ chân được vẽ ở hình trên Nhà sản xuất bảo đảm hoạt động tốt trong tầm nhiệt độ môi trườngtừ-400C đến +850C
2/MÔ TẢ CHÂN :
_ 1- +VCC : Chân cung cấp nguồn từ 2.7V đến 5V_ 2- CH0 : Ngõ vào kênh 0
_ 3- CH1 : Ngõ vào kênh 1
_ 4- CH2 : Ngõ vào kênh 2
_ 5- CH3 : Ngõ vào kênh 3
_ 6- COM : Ground của ngõ vào analog , nối với GND
ở chế độ đơn cực , ở chế độ visai nốivới
cực “”
_ 7- SHDN : Khi tích cực (mức 0) IC sẽ ở chế độ nghĩ ,
tiêu thụ rất ít năng lượng_ 8- VREF : Ngõ vào áp chuẩn
_ 9- +VCC : Chân cung cấp nguồn từ 2.7V đến 5V
2
Trang 6_ 10- GND : Ground
_ 11- MODE : Chọn chế độ chuyển đổi , khi ở mức thấp
luôn là chuyển đổi 12 bit , khi ở mức caochế độ chuyển đổi được quyết định bởibit mode trong byte điều khiển (sẽ nói ởphần sau)
_ 12- DOUT : Ngõ ra của dữ liệu nối tiếp , dữ liệu được
dịch ra dựa trên xung clock DCLK Ngõ ranày sẽ ở dạng tổng trở cao khi chân “CS”
ở mức 1
_ 13- BUSY : Ngõ ra này sẽ ở dạng tổng trở cao khi
chân “CS” ở mức 1
_ 14- DIN : Ngõ vào dữ liệu nối tiếp , dữ liệu được đưa
vào dựa trên xung clock ở chân DCLK
_ 15- CS : Tín hiệu chọn chip
_ 16- DCLK : Ngõ vào xung clock, xung clock này đễ
nhận biết dữ liệu được đưa vào (chân DIN)
hoặc đưa ra(chân DOUT)
3/ KỸ THUẬT ĐIỀU KHIỂN :
3
Trang 7Trong trường hợp này các kênh chuyển đổi luôn ở dạng đơn cực nên tanối thẳng chân “COM” với “GND” ADS7841 được cung cấp nguồn đơncực +5V, tụ 0.1F được dùng đễ lọc nguồn cung cấp Chân “SHDN” luônđược đặt ở mức 1 (nối với VCC) Áp chuẩn cung cấp cho chân VREF lấybằng nguồn VCC Chân “MODE” được đặt ở mức 0 đễ chọn chế độchuyển đổi 12 bit Chân “BUSY” khôg cần sử dụng tới , các chân
“DCLK”, “CS”, “DIN”, “DOUT” được nối tới các chân của vi xử lí
ADS7841 cần được cung cấp xung clock từ bên ngoài thông quachân “DCLK”, và một áp chuẩn từ bên ngoài vào chân VREF , áp chuẩnnày có thểø dao động từ +100mV đến +VCC , nguồn cung cấp VCC từ +2.7Vtới +5.25V Giá trị áp chuẩn sẽ trực tiếp đặt tầm ngõ vào của bộ biến đổi Dòng điện chuẩn ngõ vào phụ thuộc vào tốc độ chuyển đổi củaADS7841
Ngõ vào analog của tín hiệu cần chuyển đổi có thể ở dạng đơn cựchoặc vi sai và được đưa vào một trong bốn kênh (CH0, CH1, CH2, CH3).Điện áp này phải nằm trong tầm từ điện áp chuẩn VREF đến áp của chân
“COM”(trong trường hợp này là đất) hoặc trong trường hợp áp vi sai ta sửdụng hai trong bốn kênh (CH0, CH1, CH2, CH3)
4
A2 A0
(Trường hợp : 001B)
CH0 CH1 CH2 CH3
COM
SGL/DIF (Trường hợp mức cao)
+IN BỘ BIẾN ĐỔI -IN
Trang 8Hình trên là sơ đồ khối của khối phân kênh ngõ vào củaADS7841 Ngõ vào của bộ biến đổi là áp của một trong bốnkênh so với chân “COM” hoặc hai trong bốn kênh này Haibảng sau sẽ chỉ mối quan hệ giữa các bit A2, A1, A0 và bit điềukhiển SGL/DIF trong việc phân kênh ngõ vào analog
Điện áp đơn cực (trường hợp bit SGL/DIF ở mức cao)
Những bit điều khiển này được đưa tuần tự thông qua chân “DIN”
Ta sẽ thấy giao tiếp nối tiếp này một cách chi tiết hơn ở phần sau Khi bộbiến đổi nhập vào chế độ làm việc , sai lệch điện áp giữa chân +IN và–IN sẽ được bảo vệ bởi dãy tụ điện có sẵn trong ADS7841 Điện áp ởngõ vào –IN được giới hạn trong khoản từ –0.2V đến 1.25V Ngõ vào+IN có tầm từ –0.2V đến VCC + 0.2V Dòng điện ngõ vào của tín hiệuanalog phụ thuộc tốc độ chuyển đổi của ADS7841 Suốt quá trình lấymẫu nguồn phải nạp điện cho các tụ điện lấy mẫu nằm trong ADS7841(khoảng 25pF), sau khi tụ điện này được nạp điện đầy đủ nó sẽ giảiphóng ra một dòng điện ở ngõ vào Tốc độ nạp từ nguồn analog tới bộchuyển đổi thì phụ thuộc vào tốc độ chuyển đổi
5
Trang 9chuyển đổi ADS7841 sẽ điều khiển điện áp chuẩn này trong tầm từ100mV đến +VCC Phải giữ sai lệch điện áp analog của 2 chân ngõ vàocần chuyển đổi +IN và –IN trong khoảng cho phép Ví dụ như trong chếđộ đơn cực với điện áp chuẩn là 1.25V , và với chân “COM” được nối đấtthì kênh ngõ vào được chọn ( CH0, CH1, CH2, CH3 ) phải nằm trong tầmtừ 0V đến 1.25V Nếu chân “COM”được kết nối với 0.5V thì tầm áp vàocủa kênh được chọn sẽ từ 0.5V đến 1.75V.
Có một vài vấn đề về cách định chuẩn áp ngõ vào Khi áp chuẩnđược cung cấp không phải là ước số của 4096 ( 212) thì với cùng lượngđiện áp ngõ vào analog cần đo , giá trị của ngõ ra (dạng số) sẽ bị giảmxuống Điều này rất thường xảy ra ở bit có trọng số thấp nhất (LSB) Dođó khi sử dụng áp chuẩn là những con số này ta phải bù lại lượng đã mất
đi Ví dụ như khi sử dung áp chuẩn là 2.5V thì ta phải bù lại 2LSBs ( tứcphải cộng 2 vào giá trị (dạng số) ngõ ra của bộ biến đổi Khi sử dung ápchuẩn là 0.5V thì ta phải bù lại 10LSBs
Trong mỗi trường hợp này giá trị bù lại khoảng 1.22mV Ở nhữngtrường hợp không cần thiết phải dùng áp chuẩn nhỏ ta nên sử dụng ápchuẩn là 4.095mV, điều này sẽ làm giảm sai số của quá trình chuyển đổiđồng thời giúp ta dễ dàng tính được giá trị áp ngõ vào cần đo (1 LSBbằng 1mV)
Tương tự như trên thì nhiễu của ngõ ra sẽ tăng khi giá trị của mộtLSB thấp Với điện áp chuẩn là 100 mV thì giá trị của mỗi LSB sẽ là24V Đây là mức thấp so với các loại nhiễu có trong thiết bị Kết quả làngõ ra (dạng số) sẽ không ổn định và sẽ thay đổi xung quanh một giá trịchính bằng một số LSBs Với áp chuẩn thấp ta cần phải mắc một tụbypass đễ lọc nguồn , áp chuẩn cung cấp phải ít nhiễu, tín hiệu ngõ vàocần đo phải ít nhiễu
Điện áp chuẩn đưa vào chân VREF sẽ không được đệm mà trực tiếplái các tụ điện có chức năng biến đổi AD của ADS7841, cụ thể là dòngđiện đi vào là 13A ứng với áp chuẩn 2.5V Dòng chuẩn này sẽ trực tiếplàm giảm tốc độ chuyển đổi lẫn điện áp chuẩn
6
Trang 10 XỬ LÍ GIAO TIẾP SỐ
Giản đồ thời gian của một sự chuyển đổi trong 24 chu kỳ xung clock
Hình trên chỉ ra cách điều khiển cơ bản của việc xử lí số củaADS7841 Giản đồ trên mô phỏng nguồn của tín hiệu số là các chân Portcủa một vi điều khiển hoặc một bộ xử lí tín hiệu số với giao tiếp nối tiếp
cơ bản ( chú ý rằng tín hiệu số đi vào không được vượt quá 5.5V) Trongmỗi lần giao tiếp giữa vi xử lí và bộ điều khiển bao gồm tám chu kỳ xungclock Một chuyển đổi được hoàn tất có thể bao gồm ba lần giao tiếp nốitiếp , trong tổng 24 chu kỳ xung clock trên ngõ vào DCLK Tám xungclock đầu tiên được sử dụng đễ cung cấp byte điều khiển được đưa vào ởchân DIN Khi bộ chuyển đổi có đủ thông tin cho quá trình chuyển đổisắp tới đễ đặt kênh ngõ vào , chế độ chuyển đổi Sau khi byte điều khiểnđược hoàn thành thì ở 12 xung clock kế tiếp sẽ là kết quả chuyển đổianalog sang digital, xung clock thứ 13 cho bit cuối cùng của kết quả
7
Trang 11cùng (DOUT sẽ ở mức thấp) Những xung clock này sẽ được bộ chuyểnđổi bỏ qua.
Phần trên ta đã biết việc chọn các thông số cho bộ chuyển đổi đượcthông qua byte điều khiển, ta sẽ xem xét chi tiết về các chức năng củatừng bit trong byte điều khiển này Bit đầu tiên là ‘S’ bit (start bit) phảiluôn ở mức cao và báo hiệu cho sự bắt đầu của byte điều khiển ADS7841 sẽ bỏ qua những giá trị ngõ vào trên chân “DIN“ cho đến khibit ‘S’ được xác lập Ba bit kế tiếp (A2 đến A0) đễ chọn kênh ngõ vàocần chuyển đổi Các thông tin chi tiết về ba bit này đã được trình bày ởphần trên
‘MODE’ bit và chân MODE có quan hệ với nhau đễ đặt số bit chomột lần chuyển đổi Nếu chân MODE ở mức thấp thì bộ chuyển đổi luônlàm việc ở chế độ 12 bits mà không phụ thuộc vào trạng thái của bitMODE trong byte điều khiển Nếu chân MODE ở mức cao thì bit MODEsẽ quyết định số lượng bit trong mỗi lần chuyển đổi , cụ thể là khi bitMODE bằng 0 tương ứng là chuyển đổi 12 bits , bằng 1 tương ứng làchuyển đổi 8 bits
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
S A2 A1 A0 Mode Sgl/Dif PD1 PD0
Thứ tự của những bit điều khiển trong byte điều khiển
Bit Sgl/Dif là bit chọn chế độ ngõ vào cần đo, cụ thể là khi ở mứccao là chọn chế độ ngõ vào đơn cực , ở mức thấp là chọn chế độ vi sai , ởchế độ đơn cực kênh ngõ vào được chọn là chênh lệch áp so với chân
“COM”., ở chế độ vi sai hai ngõ vào vi sai được cho bởi hai trong bốnkênh (CH0 đến CH4) tùy thuộc vào các bit A2, A2, A0 như đã nói ở phầntrên
8
Trang 12Hai bit cuối cùng PD1 và PD0 chọn chế dộ sử dụng công suấtnguồn , bảng dưới đây chỉ ra chi tiết về hai bit này Nếu cả hai bit ở mứccao thì dụng cụ luôn tiêu thụ công suất , nếu cả hai bit ở mức thấp thìdụng cụ sẽ không tiêu thụ công suất giữa hai lần chuyển đổi Khi mộtchuyển đổi mới được bắt đầu , dụng cụ sẽ lấy lại trạng thái hoạt độngbình thường, không cần thiết phải trì hoãn đễ cho phép dụng cụ bật nguồnvà ngay lần chuyển đổi đầu tiên sẽ có hiệu lực.
0 0 Công suất sẽ tắt giữa hai lần chuyển đổi , sau
mỗi lần chuyển đổi kết thúc , bộ biến đối sẽ nhập vào chế độ công suất thấp, ở lần chuyển đổi kế tiếp thiết bị sẽ tự nạp lại nguồn đầy đủ
0 1 Dành cho lần sử dụng sau
1 0 Dành cho lần sử dụng sau
1 1 Không tắt công suất nguồn giữa hai lần chuyển đổi , dụng cụ luôn tiêu thụ công suất
Phần trên ta đã xem xét chuyển đổi AD trong 24 chu kỳ xungclock, đó là chuyển đổi cơ bản Nhằm làm tăng tốc độ chuyển đổi củaADS7841 ta sẽ xét chuyển đổi trong 16 chu kỳ xung clock
Những bit điều khiển chuyển đổi thứ n+1 có thể được đưa vàotrong chuyển đổi thứ n trong mỗi 16 chu kỳ xung clock, giản đồ thời gian
ở dưới sẽ chỉ rõ điều này Giản đồ cũng chỉ ra cách giao tiếp nối tiếp với
vi xử lí ở mỗi byte được dịch ra giữa việc xử lí và chuyển đổi
Các thông số thời gian đặc biệt :
Trang 14Giản đồ thời gian chi tiết
Trang 15áp ngõ vào
1LSB = VREF/4096
Ngoài chế độ chuyển đổi AD 12 bit ADS7841 còn cung cấp chongười sử dụng chế độ chuyển đổi 8 bit Chế độ này cần thiết khi người sửdụng muốn tăng tốc độ chuyển đổi và kết quả dữ liệu ngõ ra không cầnphải thật chính xác Khi sử dụng ở chế độ này một chuyển đổi sẽ hoànthành sớm hơn bốn chu kỳ xung clock
Có nghĩa là là trong giao tiếp nối tiếp với vi xử lí thì chân
“DOUT“ sẽ được dịch ra 12 bit Không những thời gian được rút ngắnbằng việc bớt đi 4 chu kỳ xung clock (nhanh hơn 25%) mà tốc độ chuyểnđổi có thể rút ngắn bằng cách tăng tốc độ của xung clock nhanh hơn 50%.Cả hai điều này giúp chúng ta có thể tăng khoảng gấp đôi tốc độ chuyểnđổi
Có ba chế độ điều khiển nguồn cung cấp cho ADS7841: chế độ đầy(PD1-PD0 = 11B) , tự động tắt (PD1-PD0 = 00B), và chế độ nghĩ (chân
“SHDN” ở mức thấp) Sự hữu dụng của ba chế độ này tùy thuộc vào việcADS7841 được điều khiển như thế nào Ví dụ như ở tốc độ chuyển đổicao và chuyển đổi ở chế độ 16 chu kỳ xung clock chỉ có sự khác biệt rấtnhỏ giữa chế độ đầy và chế độ tự động tắt nguồn, tương tự như thế nếuADS7841 được nhập vào chế độ tự động tắt nguồn thì khi shutdown (chân
“SHDN” ở mức thấp ) thì hầu như không có sự khác biệt
Khi điều khiển ở tốc độ cao và chế độ chuyển đổi 16 chu kỳ xungclock , ADS7841 sử dụng hầu hết thời gian có được vào việc chuyển đổi
do đó có rất ít thời gian cho việc tự động tắt nguồn , chế độ này hầu nhưluôn tích cực Tức là sự khác biệt giữa chế độ đầy và chế độ tự động tắtnguồn hầu như là như nhau
Nếu tốc độ chuyển đổi được giảm xuống bằng cách đơn giản làgiảm tần số của ngõ vào xung clock (DCLK) hoặc vẫn duy trì DCLK ởtốc độ cao nhưng giảm số lần chuyển đổi trong 1 giây, trong trường hợp
12
Trang 16này bộ biến đổi sẽ tăng tỉ lệ thời gian ở chế độ tắt nguồn ( nói chung làchế độ tự động tắt nguồn sẽ tích cực) Tuy nhiên dụng cụ vẫn tiếp tục bịhao phí năng lượng ở các chân logic khác, ta có thể giảm tối đa bằng cáchgiữ CS ở mức cao.
B/ÁP DỤNG VÀO LUẬN VĂN:
1/KẾT NỐI PHẦN CỨNG
Mạch giao tiếp giữa ADS7841 với vi xử lí 8951
Cấp nguồn đơn +5V cho ADS7841, nối các chân “DCLK”, “CS”,
“DIN”, “DOUT” cho các chân P1.0, P1.1, P1.2, P1.3 , ta không cần thiếtdùng chân “BUSY” , chân “MODE” luôn ở mức 0 tức là ta luôn chọn chếđộ chuyển đổi 12 bits , chân “SHDN” luôn ở mức 1 tức là ta không dùngđến khả năng Shutdown của ADS7841 (chân “SHDN” tích cực mức thấp )Điện áp chuẩn “VREF” đưa vào là 4.095V được tạo bởi LM431
13
Trang 172/PHẦN MỀM ĐIỀU KHIỂN:
Ta viết dưới dạng chương trình con ADC , chương trình con này sẽ lấy các thông số của AD ( kênh chuyển đổi , chế độ vi sai hay đơn cực )từ ô nhớ 21H của vi xử lí , giá trị mặc định của ô nhớ này là 94H ( tức làchọn kênh 0 , ở chế độ đơn cực , bật chế độ tự động tắt nguồn), giá trịnày người sử dụng có thể thay đổi bằng việc truyền lệnh từ máy tính tới
vi xử lí , chuyển đổi trong chương trình con này là chuyển đổi trong 24chu kỳ xung clock Sau khi thực hiện xong chương trình con này giá trịchuyển đổi sẽ được lưu vào hai thanh ghi A và B (B chứa 4 bit cao , Achứa 8 bit thấp )
LƯU ĐỒ GIẢI THUẬT
Lặp 8 lần
14
A 21H
RLC ACLR CS
Tạo xung DCLK
Trang 19MOV A,21H ; lấy byte điều khiển
NHAPDIN:
SETB P1.0 ; nhập xung cho DCLK
LOOPAD1:
MOV C,P1.3 ; lấy giá trị ra
LOOPAD2:
16
Trang 20SETB P1.0 ; nhập xung cho DCLK
CHUYỂN ĐỔI DA DÙNG DAC7611
Chuyển đổi tín hiệu Digital sang tín hiệu Analog là quá trình quantrọng trong việc điều khiển hệ thống điều khiển tự động Ta không sửdụng IC DAC0808 quen thuộc vì một số nhược điểm của nó là độ chínhxác không cao (chuyển đổi 8 bit), giao tiếp dữ liệu dạng song song do đótốn nhiều chân port của vi xử lí (hoặc phải sử dụng dạng giao tiếp quadata bus)
Trong luận văn này ta sử dụng IC DAC7611 của hãng BROWN So với DAC0808 thì DAC7611 có độ chính xác cao hơn 16 lần(chuyển đổi 12 bit, độ phân giải là 1mv), ngoài ra giao tiếp dữ liệu củaDAC7611 dạng nối tiếp nên tốn ít chân port Ta có thể chỉ cần sử dụng 3chân port Trước khi áp dụng vào hệ thống ta giới thiệu sơ lược vềDAC7611
BURR-A/ SƠ LƯỢC VỀ DAC7611
1 / GIỚI THIỆU :
DAC7611 là IC chuyển đổi Digital sang Analog 12 bit của hãngBURR-BROWN , sử dụng nguồn đơn +5V Có thể cung cấp công suất2.5mw (0.5ma ở 5V) Ngõ điện áp ra sẽ thay đổi 1 LSB trong 7s Dữliệu giao tiếp với các chân của Port của vi xử lí là dạng giao tiếp nốitiếp bao gồm các chân xung clock (CLK), chân dữ liệu vào (SDI) ,
17
Trang 21động ở nhiệt độ từ –40o C đến +80o C
Nguồn cung cấp cho DAC7611 nên được bypass bởi một tụ lọc giátrị khoảng 0.1 F Do DAC7611 sử dụng nguồn đơn +5V chỉ có một chânGND nên tất cả các dòng điện bao gồm dòng điện số và dòng điệnanalog đều được đổ về chân này Do đó chân GND nên được kết nối trựctiếp đến ground của analog Điện áp cung cấp tới VDD phải được điềuchỉnh tốt và ít nhiễu
DAC7611 được sử dụng trong nhiều lĩnh vực như :
_ Điều khiển quá trình _ Các hệ thống thu thập dữ liệu_ Điều khiển các hệ thống tùy động vòng kín
2/ MÔ TẢ CHÂN :
- 3 CLK : Xung clock đễ trao đổi dữ liệu
- 4 SDI : Ngõ vào của dữ liệu nối tiếp (12 bit)
Dữ liệu được đưa vào thông qua xung clock CLK
- 5 LD : Đọc dữ liệu từ thanh ghi nội Dac Thanh
ghi Dac sẽ được chuyển đổi LD ở mức thấp (trong trường hợp CS ở mức thấp
- 6 CLR : Xung xóa thanh ghi Dac , khi CLR ở mức
thấp thanh ghi DAC được đặt giá trị 000H,điện áp ngõ ra bằng 0V
- 8 Vout : Điện áp chuyển đổi ngõ ra , tầm điện áp từ
0V đến 4.095V ( 1mv/LSB ),Giá trị này sẽ đựơc duy trì cho đến lần chuyển đổi kế
18
Trang 22Cấu tạo tương đương của các ngõ vào Logic trong DAC7611
Điện áp ra
Data
Thanh ghi dịch
Trang 23CLKo
BẢNG CÁC THÔNG SỐ HOẠT ĐỘNG CỦA DAC7611
Sai số điện áp cho phép : 5% (+4.75V đến 5.25V)Dòng đi vào chân VDD , IDD : 0.5ma
Ngõ vào số so với đất : -0.3V đến VDD+0.3VĐiện áp ra so với đất : -0.3V đến VDD+0.3V
Nhiệt độ thấp tối thiểu : -650C
Tầm nhiệt độ hoạt động bình thường: -400C đến 850C
Thời Gian thay đổi điện áp ngõ ra khi
thay đổi 1 LSB ngõ vào : 7s
3/ HOẠT ĐỘNG :
20
Trang 24Hình trên chỉ cách kết nối cơ bản giữa Vi xử lí với DAC7611 Giaotiếp gồm một tín hiệu chọn chip (CS), tín hiệu xung clock nối tiếp (CLK), dữ liệu nối tiếp (SDI) , và một tín hiệu nạp (LD) Bốn tín hiệu này ta cóthể đưa vào 4 chân port của Vi xử lí Tín hiệu CLR luôn được đặt ở mứcmột Dữ liệu được định dạng ở hệ nhị phân và bit đầu tiên là bit có trọngsố lớn nhất (MSB) Tầm điện áp ra từ 0V đến 4.095V, đây là biến đổi
DA 12 bit nên độ phân giải sẽ là 1mv (212 = 4095)
Mã nhị phân ngõ vào Điện áp ngõ ra (V)
Bảng chuyển đổi dữ liệu của DAC 7611
Dữ liệu số đưa vào trong DAC7611 được chứa trong 2 bộ đệm Điều này có nghĩa là dữ liệu mới có thể được nhập vào DAC mà khôngcó bị chèn lên dữ lệu cũ và điện áp ra của sự chuyển đổi Tại thời điểmsau khi dữ liệu được nhập vào thanh ghi dịch , dữ liệu này có thể đượcđưa vào thanh ghi DAC Quá trình chuyển đổi này sẽ hoàn tất khi chân
LD được chuyển từ mức cao sang mức thấp (1 sang 0) Nếu dữ liệu mớiđược dịch vào thanh ghi dịch trong khi LD ở mức thấp thì điện áp ra sẽthay đổi sau mỗi bit được dịch vào Đễ ngăn ngừa điều này chân LD phảiđược trả về mức cao trong khi ta dịch dữ liệu mới vào
Ở bất kỳ thời điểm nào giá trị của thanh ghi DAC đều có thể đượcđặt giá trị 000H (điện áp ra bằng 0) bằng việc cho chân CLR xuống mứcthấp Thanh ghi DAC sẽ duy trì giá trị này cho đến khi chân CLR trở lạimức cao và chân LD phải ở mức thấp đễ cho phép giá trị của thanh ghidịch được chuyển vào thanh ghi DAC Nếu LD ở mức thấp trong khi CLR
ở mức thấp thanh ghi DAC sẽ được đặt giá trị là 000H và điện áp ra sẽbằng không Khi CLR trở lại mức cao , thanh ghi DAC sẽ sẽ lấy giá trịtrong thanh ghi dịch và điện áp ra sẽ tương ứng giá trị này
21
Trang 25GIẢN ĐỒ THỜI GIAN
BẢNG CÁC HẰNG SỐ THỜI GIAN
Ký hiệu Miêu tả Thời gian nhỏ nhất
22
6
Trang 26tLDW Độ rộng xung LD 20ns
tCSH Thời gian trễ khi không chọn chip 20ns
BẢNG CHÂN TRỊ
CS CLK CLR LD THANH GHI DỊCH THANH GHI DAC
H X H H Không đổi Không đổi
L L H H Không đổi Không đổi
L H H H Không đổi Không đổi
L H H Đưa ra một bit Không đổi
L H H Đưa ra một bit Không đổi
H X H Không đổi Thay đổi tới giá trị
của thanh ghi dịch
H X H L Không đổi Chuyển đổi ra áp
H X L X Không đổi Nạp giá trị 000H
H X H Không đổi Nạp giá trị 000H
: Tích cực cạnh lên
: Tích cực cạnh xuống
X : Trạng thái tùy ý
_ Chú ý : Nếu dữ liệu được đưa tới thanh ghi dịch trong khi LD ở mức thấp thì điện áp ngõ ra sẽ thay đổi
B/ ÁP DỤNG VÀO LUẬN VĂN
1/ KẾT NỐI PHẦN CỨNG
23
Trang 27Đưa các chân CS , CLK , SDI , LD , lần lượt tới các chân P1.7 ,P1.6 , P1.5 và P1.4 của vi xử lí 8951 Chân CLR luôn được đặt ở mứclogic 1 (nối với nguồn )
2/ PHẦN MỀM ĐIỀU KHIỂN
Dùng chức năng soạn thảo văn bản có trong “NC” đễ viết chươngtrình cho vi xử lí 8951 Ở đây ta sẽ viết chương trình con chuyển đổi DAđược đặt tên là “DAC”
Giả sử giá trị cần chuyển đổi 12 bit được chứa trong hai thanh ghiB(4 bit cao) và A(8 bit thấp) Chương trình con DAC sẽ lấy giá trị trong 2thanh ghi này đễ chuyển đổi
SWAP A
SETB LD
CLR CS
Trang 28A STACK RLC A SDI C Tạo xung CLK
CLR LD
SETB CS
RET
Trang 29Chương trình con DAC nạp cho 8951
DAC:
PUSH ACC ; Cất A vào Stack
LOOPDA1:
SETB P1.6 ; Tạo xung cho CLK
LOOPDA2:
26
Trang 30DJNZ R7,LOOPDA2
RET
TRUYỀN THÔNG NỐI TIẾP VỚI VISUAL BASIC
A/ SƠ LƯỢC VỀ TRUYỀN THÔNG NỐI TIẾP
Trong phần này ta sẽ tìm hiểu về cách thức truyền và nhận dữ liệutừ máy tính với vi xử lí 8951 thông qua cổng COM ( dữ liệu dạng nốitiếp) bằng ngôn ngữ Visual Basic
Bình thường khi cho chạy phần mềm Visual Basic ta chỉ thấy mộtsố thành phần quan thuộc trên thanh công cụ (toolbar) Nhưng VisualBasic còn cho phép nhiều thành phần có thể được bổ sung thêm vào Hộp công cụ Microsoft Comm của Visual Basic là một trong nhiều côngcụ có thể được bổ sung vào đễ tham gia vào các ứng dụng chuyển nhậndữ liệu qua cổng nối tiếp
Như vậy ngoài việc sử dụng các tệp DLL, trong Visual Basic còncó sẵn các hộp điều khiển khác, MSComm là một trong các hộp điềukhiển đó Bản thân Visual Basic có rất nhiều hộp điều khiển mà ta chỉgọi ra khi có một ứng dụng cần đến nó Điều khiển truyền thôngMSComm cần dùng cho các ứng dụng ghép nối qua cổng nối tiếp
Ta có thể bổ sung hộp công cụ này vào thanh công cụ bằng cáchchọn mục Project ,sau đó chọn tiếp mục Component, trên màn hình sẽhiện ra bảng chứa nhiều hộp công cụ, chọn mục Microsoft Com Control Biểu tượng của hộp công cụ này như hình sau:
27
Trang 31Khi đó biểu tượng này sẽ xuất hiện trên thanh công cụ (toolbar).Đễ sử dụng hộp công cụ này ta phải có các tập tin MSCOMM16.OCXhoặc MSCOMM32.OCX
Có hai khả năng đễ điều khiển việc trao đổi dữ liệu đó là điềukhiển sự kiện và hỏi vòng
Điều khiển sự kiện :
Phương pháp điều khiển sự kiện là phương pháp tốt nhấtđược sử giải phóng máy tính đễ làm những công việc khác ,tương tự như khái niệm ngắt trong vi xử lí 8951 Ví dụ như sựkiện Oncomm cho phép ta biết được khi nào có một kí tự đượcgửi tới trong quá trình điều khiển việc trao đổi dữ liệu nối tiếp,ngoài ra còn cho phép phát hiện và điều khiển các lỗi khi truyềndữ liệu
Hỏi vòng :
Ngoài phương pháp điều khiển sự kiện trên ta có thểhỏiïvòng các sự kiện và lỗi bằng cách kiểm tra giá trị của đặctính ComEvent sau mỗi chu kì của chương trình đễ xác địnhxem liệu một sự kiện hay một lỗi đã xuất hiện chưa Chẳng hạnchương trình có thể tạo vòng lặp đễ chờ một kí tự cần đượcnhận Cứ mỗi lần như vậy , kí tự được đọc từ bộ đệm nhận Domáy tính luôn ở trạng thái lặp vòng chờ nhận lệnh nên trongthời gian chưa có kí tự được nhận vào máy tính vẫn không làmđược công việc nào khác , do đó phương pháp này chỉ sử dụngcho các ứng dụng mà không cần làm việc khác khi chưa có kí tựđược nhận vào.
B/ CÁC ĐẶC TÍNH CỦA MSCOMM
Hộp công cụ được bổ sung vào form bất cứ khi nào cần đến việctruyền thông nối tiếp Theo mặc định cổng thứ nhất tạo ra đối tượng cótên MSComm1, đối tượng ứng với cổng thứ hai được gọi là MSComm2, Các đặc tính chính của đối tượng này là :
Comport : Đặt và trả lại số cổng truyền thông
Input (nhập vào) : Trả lại và loại bỏ các kí tự khỏi bộ đệm nhận
28
Trang 32Output (xuất ra) : Viết một xâu kí tự vào bộ đệm truyền
Portopen : Mở đóng một cổng (tùy thuộc vào thông số
“True“ hoặc “False”
Settings : Đặt và trả lại các thông số truyềng thông nối
tiếp như tốc độ baud ,truyền theo bit chẵn, lẽ, số các bit dữ liệu
Ví dụ sau đây chỉ ra cách truyền thông qua cổng nối tiếp có thểđược tiến hành như sau :
Tạo một form chứa hộp công cụ MSComm , chương trình đưa vàoform_load như sau :
Private Sub Form_load( )
Dim Instring as String
‘Dùng Com1MSComm1.Comport = 1
‘Tốc độ baud là 9600, không bit chẵ lẻ, 8 bit dữ liệu, 1 bit topMSComm1.Settings = “9600,N,8,1”
‘Đọc hết bộ đệm khi lệnh input được dùngMSComm1.Inputlen = 0
‘Mở cổng MSComm1.Portopen = True
‘Xuất chuỗi “HUY” ra cổng nối tiếpMSComm1.Output =”HUY”
‘Đợi dữ liệu trở lại cổng nối tiếp
Do Dummy = DoEvent()Loop Until MSComm1.InbufferCount >= 2
‘Đọc dữ liệu vềInstring = MSComm1.Input
‘Đóng cổng nối tiếpMSComm1.Portopen = FalseEnd Sub
Sau đây ta sẽ tìm hiểu kỉ một số đặt tính quan trọng của việc điềukhiển truyền thông nối tiếp :
1/ SETTINGS
29
Trang 33cho cổng RS232, như tốc độ baud, kiểm tra chẵ lẽ, số bit dữ liệu và số cácbit stop Cú pháp của lệnh này là :
MSComm1 Setting = String
Nếu String không có khi mở cổng thì điều khiển truyền thông sẽphát sinh ra lỗi
String là một xâu kí tự có chứa bốn thông số thiết lập cho cổng RS-232 và có dạng như sau :
“BBBB, P, D, S”
Trong đó BBBB xác định tốc độ Baud, P là bit chỉ tính chẵn lẽ, D làsố bit dữ liệu , và S là số các bit dừng ( bit stop ) Giá trị mặc định củachuỗi String này là:
“9600, N, 8, 1”
Lưu ý rằng tốc độ baud phải được đặt theo một tiêu chuẩn nhấtđịnh không phải tùy ý chọn các giá trị bất kì Bảng sau đây liệt kê các giátrị tốc độ baud hợp lệ :
Trang 34Ta xét một ví dụ cần đặt thông số cho cổng truyền ở tốc độ baud là
4800, không kiểm tra bit chẵn lẻ, 8 bit dữ liệu và 1 bit stop :
3/ PortOpen
Đặc tính PortOpen này đặt và trả lại trạng thái của cổng tuyềnthông (đóng hoặc mở) Cú pháp của câu lệnh này là :
MSComm1.PortOpen ={True / False}
Thông số thiết lập là “True” tương ứng với mở cổng, còn “False”tương ứng với đóng cổng và xóa nội dung các bộ đệm nhận và bộ đệmtruyền ( tác động này tự động xảy ra khi một ứng dụng được đóng ).Trước khi sử dụng đặc tính này phải đặt cổng số mấy bằng đặc tínhComPort , nếu không sẽ phát sinh lỗi
4/ Nhập dữ liệu :
Có ba đặc tính chính được sử dụng đễ đọc dữ liệu từ bộ đệm nhậnlà Input, InBufferCount và InBufferSize
Input (nhập vào)
Đặc tính Input trả lại và xoá bỏ một xâu kí tự từ bộ đệmnhận Cú pháp của câu lệnh này là :
MSComm1.Input
31
Trang 35tự được đọc bởi câu lệnh Input Đặt Inputlen = 0 đễ đọc toàn bộnội dung của bộ đệm nhận.
Ví dụ sau đây chỉ ra cách lấy dữ liệu từ bộ đệm nhận
MSComm1.Inputlen = 0
If MSComm1.InBufferCount >= 1 thenInstring = MSComm1.Input
End IfKiểu dữ liệu được lấy ra từ đặc tính Input trên là xâu kí tự(String)
InBufferCount
Đặc tính InBufferCount trả lại số kí tự trong bộ đệm nhận Nó cũng có thể được sử dụng đễ xóa bộ đệm nhận bằng cách đặt số các kí tự bằng 0 Cú pháp của câu lệnh này là:
Output
Đặc tính Output sẽ viết một xâu kí tự vào bộ đệm truyền Cúpháp của câu lệnh này là:
32
Trang 36 OutBufferCount
Đặc tính OutBufferCount trả lại số kí tự trong bộ đệm truyền
Ta cũng có thể sử dụng đặc tính này đễ xóa nội dung bộ đệmtruyền bằng cách đặc giá trị của đặc tính này bằng 0 Cú phápcủa câu lệnh này là:
MSComm1.OutBufferCount = [count]
Lưu ý rằng không nên nhầm lẫn giữa 2 đặc tính OutBufferSizevà OutBufferCount Đặc tính OutBufferCount nói lên số bytehiện đang có trong bộ đệm nhận , còn OutBufferSize quy địnhtổng kích thước của bộ đệm truyền
6/ Các đặc tính khác
Ngoài các đặc tính quan trọng trên còn có các đặc tính khác cũngcần quan tâm là:
Break
Đặc tính này đặt hoặc xóa trạng thái tín hiệu Break Cú phápcủa câu lệnh này là :
MSComm1.Break = [True/ False]
Đặt giá trị Break = True đễ thiết lập trạng thái tín hiệu Break
33
Trang 37Khi đặt là True thì đặc tính Break gửi đi tín hiệu Break, tín hiệunày làm dừng việc truyền các kí tự và đặt chúng trên đườngtruyền trong trạng thái Break Quá trình này chỉ kết thúc khi tađặt giá trị đặc tính Break thành False.
CDTimeout
Đặc tính CDTimeout đặt và trả lại giá trị cực đại của thờigian (tính bằng mili giây) Đây là khoảng thời gian điều khiểnđợi tín hiệu phát hiện được tín hiệu mang trước một timeout(quá giờ).Đặc tính này chỉ ra thời gian vượt quá bằng việc đặtthông số đặc tính CommEvent thành CDTO và phát sinh sự kiệnOnComm Cú pháp của câu lệnh này là :
MSComm1.CDTimeout = [milisecond]
Khi đường dẫn CD cuống mức thấp (CTSHolding = False) vàSố miligiây chỉ khoảng thời gian đợi tín hiệu đã hết thì điềukhiển truyền thông đặt đặc tính CommEvent thành CDTO vàphát sinh sự kiện OnComm
CTSHolding
Đặc tính CTSHolding cho phép các định xem đường CTS đãđược phát hiện hay chưa Đường dẫn CTS được sử dụng điểnhình cho bắt tay bằng phần cứng Ví dụ như tín hiệu CTS đượcgửi đi từ modem đến máy tính đễ chỉ ra rằng sự chuyển giao dữliệu có thể được xử lí Cú pháp của câu lệnh này là :
MSComm1.CTSHolding = [True/ False]
Đặt giá trị của đặc tính này bằng True đễ đưa CTS xuốngmức thấp Đường CTS được dùng trong chế độ bắt bằng phầncứng Nếu muốn xác định trạng thái của đường CTS thì đặc tínhCTSHolding cho phép ta hỏi vòng đường CTS
DSRHolding
Xác định trạng thái đường dẫn DSR DSR được sử dụng điểnhình đễ báo hiệu sự có mặt của một modem Nếu như thông sốđược đặt là True thì đường dẫn DSR ở mức cao , nếu không thìlà thấp Cú pháp của câu lệnh này là:
MSComm1.DSRHolding = [True/ False]
34
Trang 38MSComm1.CTSTimeout = [mili giây]
DTREnable
Đặc tính này xác định xem liệutín hiệu DTR được cho phép Thông thường tín hiệu này được gửi từ máy tính tới modem đểbáo hiệu là máy tính đã sẵn sàng nhận dữ liệu Thông số đượcđặt là True sẽ cho phép đường dẫn DTR (đặt lên mức cao) Cúpháp của câu lệnh này là:
MSComm1.DTREnable = [True/ False]
RTSEnable
Đặc tính này cho phép xác định xem đường RTS đã đượcphép (tích cực) hay chưa Ví dụ như tín hiệu RTS yêu cầu sự chophép truyền dữ liệu từ máy tính đến modem Bình thường tínhiệu này được sử dụng đễ bắt tay đầu vào dữ liệu và được điềukhiển bởi máy tính Cú pháp của câu lệnh này là:
MSComm1.RTSEnable = [True/ False]
Xác lập đặc tính này bằng True đễ đưa đường RTS lên mứctích cực (trạng thái cho phép), ngưọc lại (cũng là mặc định) xáclập bằng False đễ đưa đường RTS xuống mức không tích cực.Đường RTS được dùng cho việc bắt tay phần cứng nhờ tín hiệuRTS/CTS Đặc tính RTSEnable cho phép hỏi vòng đường RTSkhi ta cần xác định trạng thái của nó
NullDiscard
Đặc tính này xác định các kí tự rỗng (Null) được đọc vàotrong bộ đệm nhận Thông số được đặt là True thì các kí tự Nullkhông đưọc chuyển đến bộ đệm nhận, nếu đặt là False thì các kí
35
Trang 39nghĩa với mã ASCII = 0 Cú pháp của câu lệnh này là:
MSComm1.NullDiscard = [True/ False]
Sthreeshold
Đặc tính này cho phép đặt và trả lại số tối thiểu của các kí tựcó thể cho phép trong bộ đệm truyền trước khi điều khiểntruyền thông xác lập đặc tính CommEvent và phát sinh sự kiệnOnComm Xác lập đặc tính Sthreshold đễ vô hiệu hóa việc phátsinh sự kiện OnComm Ngược lại nếu đặt bằng1 thì điều khiểntruyền thông phát sinh sự kiện OnComm (sự kiện OnCommđược gọi) khi bộ đệm truyền không có dữ liệu (bộ đệm truyềnrỗng) Cú pháp của câu lệnh này là:
MSComm1.Sthreshold = [number]
Handshaking
Đặc tính này cho phép xác lập và trả lại giao thức bắt tay(Handshaking) Nó có thể được đặt thành : không cóhandshaking, handshaking phần cứng (sử dụng RTS/CTS) hoặchandshaking phần mềm (sử dụng XON/ XOFF) Cú pháp củacâu lệnh này là:
MSComm1.Handshaking = [protocol]
Việc bắt tay có liên quan đến giao thức truyền thông, vớigiao thức này dữ liệu được chuyển giao từ phần cứng của cổngđến bộ bộ đệm nhận Khi dữ liệu đến cổng nối tiếp thì thiết bịtruyền không phải chuyển dữ liệu đến bộ đệm nhận đễ chươngtrình ta viết có thể đọc nó Nếu không có bộ đệm nhận vàchượng trình của ta phải đọc trực tiếp từng kí tự từ phần cứng thìrất có thể sẽ bị mất dữ liệu vì dữ liệu được truyền đến rất nhanh.Những giao thức có hiệu lực được liệt kê ở bảng sau:
RTS và XON/ XOFF
36
Trang 40Giá trị mặc định của đặc tính này là ComNone ( tức là khôngbắt tay).
Đặc tính này trả lại hầu hết sự kiện hoặc lỗi truyền thônggần nhất Cú pháp của câu lệnh này là:
MSComm1.CommEventMặc dù sự kiện OnComm phát sinh cả lỗi truyền thông và cảcác sự kiện nhưng đặc tính CommEvent lại chứa mã số của cáclỗi và sự kiện đó
Các lỗi truyền thông bao gồm:
Xác lập Giá trị Mô tả
ComBreak 1001 Tín hiệu Break đã được nhận
ComCTSTO 1002 Xảy ra khi truyền một kí tự và CTS
Ơû mức thấp trong thời gianCTStimeout
ComDSRTO 1003 Xảy ra khi truyền một kí tự và DTR
Ỏû mức thấp trong thời gianDTRtimeout
ComFrame 1004 Phần cứng phát hiện một lỗi
sai số khung truyền
ComOver 1006 Phần cứng không đọc kí tự trước khi
kí tự tiếp theo được gửi đến
ComCDTO 1007 Xảy ra khi truyền một kí tự và CD ở
mức thấp trong thời gian Cdtimeout.ComRxOver 1008 Tràn bộ đệm nhận (không đủ chỗ đễ
chứa các kí tự tiếp theo vào bộ đệmnhận)
ComRxParity 1009 Phần cứng phát hiện một lỗi chẵn lẽ
ComTxFull 1010 Đầy bộ đệm truyền , bộ đệm truyền
bị đầy khi đưa kí tự vào
Các sự kiện truyền thông bao gồm:
37