ENCYCLOPEDIA VỀ ĐIỆN TỬ TRUYỀN THANH VÀ KỸ THUẬT ĐIỆN Một đời sống khác của cổng LPT. Phần 2. Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện / Máy tính Để ghi tín hiệu trên cổng LPT, tôi khuyên bạn nên lắp ráp một mạch (Hình 1) bao gồm tám công tắc và tám điện trở có điện trở 270 Ohm - 1 kOhm. Với vị trí này của các công tắc (nút) SW1-SW8, tất cả các tiếp điểm phía trên đều có logic "1", khi bất kỳ tiếp điểm nào được đóng, logic "0" sẽ xuất hiện trên tiếp điểm tương ứng. Các chân có thể được kết nối trực tiếp với bus D0-D7 (chân 2-9, địa chỉ &H378) hoặc với ERROR, SELECT, PAPER END, ACK và -BUSY (chân 15, 13, 12, 10 và 11, địa chỉ &H379) .
Để hiển thị dữ liệu đến từ cổng LPT, tôi đề xuất sơ đồ sau.
Điện trở R1-R8 với giá trị danh nghĩa là 270 - 330 ohms, bất kỳ đèn LED nào, chẳng hạn như AL307B. Một mạch như vậy không cần nguồn điện, mọi thứ sẽ phát sáng. Tôi mang tất cả các tín hiệu cho chính mình, mọi thứ đều có thể nhìn thấy ngay lập tức. Nói chung, tôi thực sự khuyên bạn nên tải xuống chương trình LPT 3D HARD Analyzer tại valery-us4leh.narod.ru/dlpt.html. Viết bởi Valery Kovtun. Với sự giúp đỡ của chương trình này ... nói chung, bạn sẽ thấy cho chính mình. Hãy lắp ráp một bộ tạo xung hình chữ nhật trên chip K561LA7. Máy phát điện +5V. Thực tế là sẽ thuận tiện hơn khi lắp ráp tất cả các thiết bị, chẳng hạn như trên dòng 155, 555 để tín hiệu có mức TTL. Logic "không" 0-0,8V và log "một" 2,4-4,2V. Sự tiện lợi của dòng 561 nằm ở tính linh hoạt của nguồn điện - nó hoạt động tốt như nhau từ + 3V đến + 12V. Do đó, việc lựa chọn vi mạch vẫn tùy theo sở thích của bạn, câu hỏi duy nhất là lấy các xung hình chữ nhật có biên độ không quá + 5V. Sơ đồ của một máy phát xung đơn giản được thể hiện trong Hình 3.
Bản thân bộ tạo được lắp ráp trên các phần tử D1.1-D1.3 và tôi chỉ sử dụng phần tử D1.4 để có mặt trước "đẹp" hơn của các xung đầu ra. R1, R2, C1 - các phần tử cài đặt tần số. Với các thông số này của các phần tử, tần số tạo xấp xỉ 5-7 Hz. Để rõ ràng, hoạt động của trình tạo có thể được biểu diễn dưới dạng biểu đồ sau:
Đầu ra biến tần D1.4 được kết nối với chân 2 của đầu nối LPT (bus D0). Trước khi sử dụng máy phát cần đưa bus D0-D7 vào chế độ nhận dữ liệu. Để thực hiện việc này, chúng tôi gửi 37 đến &H43A.
Sau đó, chúng tôi bắt đầu bỏ phiếu cổng & H378.
Biến A sẽ nhận giá trị 254 hoặc 255. Tại sao?
Thực tế là sau khi các bus D0-D7 được chuyển sang chế độ nhận dữ liệu, chúng được đặt ở mức của một đơn vị logic (hàng màu vàng). Khi mức D0 xuất hiện trên bus D0, nhật ký "0" (hàng màu xanh) - bit đầu tiên nhận giá trị bằng 2, có nghĩa là XNUMX + XNUMX1+22+23+24+25+26+27 = 254. Như vậy, chúng ta có thể theo dõi sự thay đổi của tín hiệu trên bus D0, nhưng nếu đếm số lần thay đổi trong 1 giây, chúng ta sẽ nhận được ... đúng - một bộ đếm tần số kỹ thuật số. biết số xung động đến môi giây có thể nói về tần số trong hertz. Vì vậy, chương trình đếm tần số. Biểu mẫu phải có 3 nút và Nhãn. Nút 1 bắt đầu đo tần số, Nút 2 dừng, Nút 3 - thoát, Nhãn - cho biết tần số. ******************************************* Đối với những người sử dụng inpout32.dll Tùy chọn rõ ràng 'khai báo thư viện để làm việc với địa chỉ cổng Chức năng khai báo riêng Inp Lib "inpout32.dll" Bí danh "Inp32" (ByVal PortAddress As Integer) As Integer Khai báo riêng Sub Out Lib "inpout32.dll" Bí danh "Out32" (ByVal PortAddress dưới dạng số nguyên, giá trị ByVal dưới dạng số nguyên) 'khai báo thư viện để đếm mili giây Chức năng khai báo riêng GetTickCount Lib "kernel32" () Miễn là Dim FTV As Long 'giá trị ban đầu của thời gian hệ thống Làm mờ giá trị cuối STV As Long 'của thời gian hệ thống Dim FV As Integer 'FV là trạng thái ban đầu của cổng Dim SV As Integer 'Trạng thái cổng so sánh SV Dim cntr 'đếm xung Dim J As Integer 'J = 1 được phép đếm, J = 0 không được phép đếm Lệnh phụ riêng1_Click () Out & H37A, 43 'chúng tôi đặt lốp D0-D7 vào chế độ đọc FTV = GetTickCount 'đã ghi nhớ thời gian hệ thống tính bằng mili giây J = 1 'đếm - cho phép FV = Inp(&H378) 'đọc trạng thái cổng SV = FV 'SV bằng trạng thái cổng cntr = 0 'truy cập bằng XNUMX Làm trong khi J <> 0 làm sự kiện STV = GetTickCount 'ghi nhớ thời gian hệ thống hiện tại Nếu STV > FTV + 1000 Thì hiển thị tần số 'nếu một giây trôi qua, hiển thị kết quả FV = Inp(&H378) 'liên tục thăm dò địa chỉ &H378 If FV <> SV Then 'nếu trạng thái cổng đã thay đổi SV = FV 'SV bằng trạng thái cổng cntr = cntr + 0.5 'bộ đếm + 0.5 Cuối Nếu If J = 0 then Exit Do 'nếu người dùng nhấn Stop Vòng lặp End Sub Lệnh phụ riêng2_Click () 'dừng vòng lặp 'nếu người dùng nhấn Dừng J=0 End Sub Lệnh phụ riêng3_Click () J = 0 'đếm - dừng lại Hết &H37A, 0' khôi phục trạng thái bus D0-D7 Unload me 'thoát khỏi chương trình End Sub 'Quy trình hiển thị tần số Public SubFrequencyShow () Kết quả hiển thị Label1.Caption = Int(cntr) & " Hz" ' cntr = 0 'truy cập bằng XNUMX Tạm dừng (0.2) 'trễ. Cần thiết để đo tần số thấp FTV = GetTickCount 'đã ghi nhớ thời gian hệ thống tính bằng mili giây End Sub 'Trì hoãn thói quen. Định dạng cuộc gọi: Tạm dừng (số giây) Tạm dừng phụ công khai (Giá trị như đơn) Bắt đầu mờ, kết thúc Bắt đầu = Hẹn giờ Do While Timer <Bắt đầu + Giá trị làm sự kiện Vòng lặp Kết thúc = Hẹn giờ End Sub ******************************************* Đối với những người sử dụng dlportio.dll Tùy chọn rõ ràng 'khai báo thư viện để làm việc với địa chỉ cổng Chức năng khai báo riêng tư DlPortReadPortUchar Lib "dlportio.dll" (Cổng ByVal miễn là) As Byte Khai báo riêng phụ DlPortWritePortUchar Lib "dlportio.dll" (Cổng ByVal dài, Giá trị ByVal là Byte) 'khai báo thư viện để đếm mili giây Chức năng khai báo riêng GetTickCount Lib "kernel32" () Miễn là Dim FTV As Long 'giá trị ban đầu của thời gian hệ thống Làm mờ giá trị cuối STV As Long 'của thời gian hệ thống Dim FV As Integer 'FV là trạng thái ban đầu của cổng Dim SV As Integer 'Trạng thái cổng so sánh SV Dim cntr 'đếm xung Dim J As Integer 'J = 1 được phép đếm, J = 0 không được phép đếm Lệnh phụ riêng1_Click () DlPortWritePortUchar & H37A, 43 'đặt xe buýt D0-D7 vào chế độ đọc FTV = GetTickCount 'đã ghi nhớ thời gian hệ thống tính bằng mili giây J = 1 'đếm - cho phép FV = DlPortReadPortUchar (&H378) 'đọc trạng thái cổng SV = FV 'SV bằng trạng thái cổng cntr = 0 'truy cập bằng XNUMX Làm trong khi J <> 0 làm sự kiện STV = GetTickCount 'ghi nhớ thời gian hệ thống hiện tại Nếu STV > FTV + 1000 Thì hiển thị tần số 'nếu một giây trôi qua, hiển thị kết quả FV = DlPortReadPortUchar (&H378) 'liên tục thăm dò địa chỉ &H378 If FV <> SV Then 'nếu trạng thái cổng đã thay đổi SV = FV 'SV bằng trạng thái cổng cntr = cntr + 0.5 'bộ đếm + 0.5 Cuối Nếu If J = 0 then Exit Do 'nếu người dùng nhấn Stop Vòng lặp End Sub Lệnh phụ riêng2_Click () 'dừng vòng lặp 'nếu người dùng nhấn Dừng J=0 End Sub Lệnh phụ riêng3_Click () J = 0 'đếm - dừng lại DlPortWritePortUchar &H37A, 0 'khôi phục trạng thái bus D0-D7 Unload me 'thoát khỏi chương trình End Sub 'Quy trình hiển thị tần số Public SubFrequencyShow () Kết quả hiển thị Label6.Caption = Int(cntr) & " Hz" ' cntr = 0 'truy cập bằng XNUMX Tạm dừng (0.2) 'trễ. Cần thiết để đo tần số thấp FTV = GetTickCount 'đã ghi nhớ thời gian hệ thống tính bằng mili giây End Sub 'Trì hoãn thói quen. Định dạng cuộc gọi: Tạm dừng (số giây) Tạm dừng phụ công khai (Giá trị như đơn) Bắt đầu mờ, kết thúc Bắt đầu = Hẹn giờ Do While Timer <Bắt đầu + Giá trị làm sự kiện Vòng lặp Kết thúc = Hẹn giờ End Sub ******************************************* Và tất cả? Bạn hỏi. Vâng đó là tất cả. Đó là toàn bộ chương trình, vì lý do nào đó hoạt động. Ø Như bạn có thể thấy, mã gần như giống nhau đối với các thư viện khác nhau, do đó, trong các ví dụ sau, chúng tôi sẽ chỉ xem xét mã với thư viện dlportio.dll Nếu bạn phân tích kỹ mã chương trình bộ đếm tần số, bạn sẽ nhận thấy rằng 0.5 được thêm vào bộ đếm, cntr = cntr + 0.5, chứ không phải 1. Thực tế là mã chương trình này xem xét quá trình chuyển đổi trạng thái cổng từ 1 sang 0 và ngược lại từ 0 sang 1, do đó, để đếm tần số, bạn phải thêm 0.5 rồi xuất ra Label1.Caption = Int(cntr) & "hz" Hoặc thêm 1 cntr = cntr + 1, Và sau đó xuất ra Label1.Caption = Int(cntr/2) & "hz" Đây là phép toán. Nhân tiện, bạn đã thử đặt một loại cảm biến nào đó trên trục quay của động cơ nào đó chưa. Có lẽ, với sự trợ giúp của chương trình này, bạn sẽ có được một máy đo tốc độ tuyệt vời J Thôi, hãy tiếp tục. Chúng tôi sử dụng cùng một bộ tạo xung và thay vì điện trở R2 hoặc R1, chúng tôi hàn điện trở nhiệt (tác giả của bài báo đã đến một cửa hàng ô tô và mua một cảm biến nhiệt độ từ VAZ-30 với giá 2101 rúp). Cảm biến nhiệt độ này thay đổi điện trở tùy thuộc vào nhiệt độ (3200 ohms ở mức +140C và 143 Ohm ở nhiệt độ +1000C.) Vì chúng ta thay đổi điện trở nên tần số của máy phát điện cũng thay đổi, nghĩa là chúng ta có một bộ chuyển đổi nhiệt độ-tần số, I E. nhiệt kế kỹ thuật số. Tôi muốn thu hút sự chú ý của bạn đến thực tế là sự thay đổi điện trở phụ thuộc vào nhiệt độ không xảy ra một cách tuyến tính, như có thể thấy trong biểu đồ sau,
do đó, việc "giải thích" với máy tính rằng 100 xung là 20 độ và 110 xung là 21 độ sẽ không dễ dàng lắm, nhưng vẫn có thể thực hiện được. Câu hỏi chỉ nằm ở kích thước của mã và thuật toán. Nếu thay vì một điện trở, chúng ta đặt một cảm biến nhiên liệu từ bình xăng, thì chúng ta sẽ nhận được một chỉ báo mức chất lỏng. Sẽ thuận tiện hơn khi xây dựng một chỉ báo như sau: 1. Chúng tôi đo tần số xung với một bình rỗng 2. Chúng tôi thêm một số âm lượng (tùy thuộc vào cấp độ - độ chính xác bạn muốn nhận) và đo lại tần số 3. Và cứ như vậy cho đến phần trên cùng của thùng chứa của bạn. Và bạn có thể xây dựng một chỉ báo mức chất lỏng theo một nguyên tắc khác, nếu bạn lắp ráp cấu trúc trong hình bên dưới.
Nếu mức chất lỏng thay đổi, thì vị trí của phao với nam châm cũng thay đổi, do đó các công tắc sậy tương ứng sẽ đóng (mở). Tốt nhất là sử dụng ống nhựa có thành mỏng. Sơ đồ của thiết bị này như sau:
Bạn có thể xử lý thông tin từ một thiết bị như vậy theo thuật toán sau.
Ø Một số người có thể phản đối tôi rằng không cần thiết phải đặt các bus D0-D7 ở chế độ đọc và điều này sẽ hiệu quả. Về vấn đề này, tôi chỉ có thể trả lời như sau - ai muốn thì đừng dịch. Tôi sẽ không thảo luận về chủ đề này. Nếu cổng &H378 không ở chế độ nhận dữ liệu và chân được sử dụng (trong trường hợp của chúng tôi là 2 - D0 ) có logic "1", thì máy phát điện sẽ không hoạt động. Dòng ra của bus D0-D7 ở chế độ truyền dữ liệu lớn hơn dòng ra của chip CMOS (561LA7) nên sẽ không phát sinh. Tất nhiên, nếu bạn làm ngắn mạch tiếp điểm với đất bằng nhíp, thì sẽ không có dòng điện nào đủ. Nhưng đối với tôi, có vẻ như không khó để gõ thêm một dòng mã và làm theo lời khuyên của các nhà phát triển phần cứng máy tính. Bây giờ chúng ta hãy xem xét quá trình ngược lại, tức là quá trình truyền dữ liệu từ máy tính sang thiết bị của bạn. Hãy lấy ví dụ cùng một bộ tạo xung, chỉ cần thay đổi mạch của nó một chút.
Sau khi cấp nguồn cho máy phát điện, chúng tôi đột nhiên thấy rằng máy phát điện không hoạt động. Và nó sẽ chỉ hoạt động khi mức logic "2" xuất hiện ở đầu vào 1.1 của phần tử D1. DlCổngViếtCổngUchar &H378, 1 Và mọi thứ ngay lập tức hoạt động. Đây là một máy phát điện điều khiển bằng máy tính. Chà, tất cả các máy phát điện đều nhỏ, mặc dù chúng ta phải bày tỏ lòng kính trọng đối với thiết bị này - trong rất nhiều mạch điện tử, máy phát xung được lấy làm cơ sở. Tại sao chúng ta không kết nối thứ gì đó nghiêm túc hơn với máy tính. Đây là một kế hoạch như vậy
Chúng tôi kết nối đầu vào của thiết bị này với bất kỳ đầu ra nào chúng tôi thích, ví dụ: với D3, chúng tôi kết nối đầu vào GND với dây chung của đầu nối, nhưng + 12V sẽ phải được lấy từ một nguồn điện riêng. Rơle có thể được thực hiện ô tô. Nói chung, tất cả các tham số của các phần tử có thể hoàn toàn khác nhau (tôi đã lấy những gì có sẵn) DlPortWritePortUchar & H378, 8 hoặc DlPortWritePortUchar & H378, 9 hoặc DlCổngViếtCổngUchar &H378, 10 Điều chính là phải có nhật ký "3" trên xe buýt D1. Rơle sẽ hoạt động, nhưng những gì bạn chọn là việc của bạn. Nói chung, khi chuyển đổi các thiết bị điện áp cao, cần phải (chỉ trong trường hợp) để bảo vệ bản thân khỏi đoản mạch, khỏi sự cố đối với vỏ máy, nói chung, để làm như vậy. Vì vậy, trong trường hợp xảy ra tai nạn, cổng LPT tuyệt vời của bạn không bị cháy. Do đó, đối với các kết nối như vậy, sẽ thuận tiện khi sử dụng cách ly điện của cổng và thiết bị của bạn, chẳng hạn như thông qua bộ ghép quang.
Nếu mọi thứ trong thiết bị của bạn "cháy hết", thì qua đèn - than ôi, dòng điện sẽ không đi qua, họ vẫn chưa nghĩ ra thứ như vậy. Đây là nơi phần thứ hai kết thúc. Sẽ có phần thứ ba chứ - tôi nghĩ là sẽ có, nhưng đây là nội dung của nó ... Tác giả: Alexey Klyushnikov, Ivanovo; Xuất bản: cxem.net Xem các bài viết khác razdela Máy tính. Đọc và viết hữu ích bình luận về bài viết này. Tin tức khoa học công nghệ, điện tử mới nhất: Da nhân tạo để mô phỏng cảm ứng
15.04.2024 Cát vệ sinh cho mèo Petgugu Global
15.04.2024 Sự hấp dẫn của những người đàn ông biết quan tâm
14.04.2024
Tin tức thú vị khác: ▪ Điện tử sẽ đánh giá mức độ ngọt của thức ăn và đồ uống ▪ Bạn có thể giảm cân trên núi ▪ Bộ sạc cho mọi thiết bị di động Nguồn cấp tin tức khoa học và công nghệ, điện tử mới
Tài liệu thú vị của Thư viện kỹ thuật miễn phí: ▪ phần của trang web Nguồn điện. Lựa chọn các bài viết ▪ bài báo Lịch sử sẽ minh oan cho tôi! biểu hiện phổ biến ▪ bài viết Người Hy Lạp cổ đại coi ai là tổ tiên của loài người hiện đại? đáp án chi tiết ▪ bài báo Điện cơ LÊN. Hướng dẫn tiêu chuẩn về bảo hộ lao động ▪ bài viết Nối đất máy tính. Bách khoa toàn thư về điện tử vô tuyến và kỹ thuật điện ▪ bài viết Bong bóng, nút chai và khăn tay. tiêu điểm bí mật
Để lại bình luận của bạn về bài viết này: Tất cả các ngôn ngữ của trang này Trang chủ | Thư viện | bài viết | Sơ đồ trang web | Đánh giá trang web www.diagram.com.ua |