Làm cách nào tôi có thể điều khiển màn hình CGA bằng Arduino?


7

Tôi đang nhận được một trong những http://www.old-computers.com/museum/computer.asp?st=1&c=446

Tôi đang lên kế hoạch xây dựng một máy chủ bên trong nó. Và tôi đã nghĩ đến việc sử dụng màn hình CGA tích hợp làm trạng thái hiển thị (kiểu LCDInfo hoặc bất cứ thứ gì mà các chuyên viên máy tính mát mẻ sử dụng hiện nay). Màn hình có màu hổ phách đơn sắc nên có thể trông hơi giống màn hình EL của Planar mà một số người đã sử dụng trong các mod của họ. Và tôi muốn sử dụng một Arduino (hoặc một cái gì đó tương tự) như một giải pháp phần mềm trung gian ... PC -> Arduino -> Màn hình

Tôi đã kiểm tra một chút và CGA là tín hiệu RGBI sử dụng giao tiếp TTL. 4 dòng (RGB + Cường độ), kết hợp với HSYNC (15,75KHz) và VSYNC (60Hz). 4 "màu đầu vào" là bật hoặc tắt logic. Sự kết hợp của những thứ này tạo ra tới 16 màu. Tuy nhiên, vì đây là màn hình màu hổ phách, nên có thể dễ dàng nhất để bắt đầu với "all-high" hoặc "all-low" ... Trắng và Đen.

Vì vậy, vấn đề là như sau ... Tôi có thể cả dây và mã hóa arduino để bật và tắt các dòng TTL, nhưng tôi không chắc mình sẽ làm gì với các đầu vào HSYNC và VSYNC. Và làm thế nào để thời gian lật TTL để tương ứng với pixel trên màn hình. (Độ phân giải CGA tiêu chuẩn là 320x200).

Tôi không giỏi về điện tử, nhưng tôi rất giỏi làm theo hướng dẫn và đưa ra gợi ý

Có ai đã thử điều này trước đây?

EDIT : Tôi có thể sử dụng một phiên bản sửa đổi của điều này? http://www.eystems.ro/deogen/deogen_en.html

EDIT2 : Tôi không cần sử dụng Arduino. Nhưng tôi muốn giữ nó đơn giản nhất có thể.

EDIT3 : Có vẻ như màn hình đang nói đến thực sự là một màn hình tổng hợp, và không phải là màn hình đầu vào CGA "thực". Vì vậy, có lẽ làm cho mọi thứ dễ dàng hơn một chút. Nhưng tôi vẫn quan tâm đến cách tạo tín hiệu CGA thuần bằng vi điều khiển ...

Câu trả lời:


7

Các tín hiệu hsync và vsync chỉ là các xung âm, tương đối ngắn, đặt lại chùm electron của CRT ở bên trái và trên cùng của màn hình.

Vì CGA về cơ bản chỉ là NTSC (AKA RS-170) với các thành phần và đồng bộ riêng biệt, thời gian của các xung nên giống nhau. Hsync sẽ xảy ra sau mỗi 63,5 micro giây và vsync cứ sau 16,7 mili giây. Thời gian dọc phải nằm trong khả năng của arduino, nhưng chiều ngang có thể khó khăn hơn.

Trong quá trình quét ngang đang hoạt động, bạn cần cập nhật độ chói theo độ phân giải ngang bạn đang thiết kế. Để có 640 pixel, giả sử bạn sử dụng khoảng 53 us thời gian theo dõi ngang để cho phép thời lượng HS và lề để đảm bảo đầu ra của bạn không chạy ra khỏi các cạnh của CRT, bạn cần xuất một pixel mới cho mỗi 82 nano ,. Bây giờ, 82 ns là cách nhanh nhất để lấy trực tiếp từ arduino, nhưng nếu bạn sử dụng thanh ghi dịch chuyển 8 bit bên ngoài, bạn chỉ phải tải khoảng 660 ns, tức là, một nửa micrô giây. Tất nhiên, bạn có thể chọn 320 pixel và giảm thời gian hơn nữa.

Nếu đáp ứng loại thời gian đó nghe có vẻ hợp lý với bạn, những con số chính xác có thể dễ dàng có được thông qua một số googling nhẹ. Ví dụ, đây có vẻ là một ví dụ khá hay.


3

Bạn đã thiết lập trên một Arduino?

Các Parallax Propeller có thể tạo ra tất cả các loại tín hiệu video natively. Có sẵn mã để tạo tín hiệu video VGA và composite, và tất cả các nguồn cũng có sẵn, vì vậy bạn có thể điều chỉnh chúng nếu muốn. Trong nội bộ, nó có một bộ logic tạo thời gian video chuyên dụng. Có thể định cấu hình hệ thống để điều khiển màn hình đó mà không gặp quá nhiều khó khăn, mặc dù có thể cần một chút SRAM bên ngoài nếu bạn muốn có thể hiển thị toàn bộ chuyển động (cũng như đầy đủ khi nó coi đó là hổ phách Màu hiển thị.

Ngoài ra, đó là cách mạnh mẽ hơn một Arduino.


Không, tôi không cài đặt Arduino :) Và tôi sẽ không hiển thị video fullmotion. Tôi muốn sử dụng màn hình giống như cách bạn sử dụng màn hình LCD cho thông tin hệ thống.
Christian Wattengård

2
Chà, cánh quạt có một bản đồ ký tự raster bên trong ROM để hiển thị văn bản trên màn hình, vì vậy nó nghe giống như những gì bạn muốn, sau đó.
Sói Connor

0

http://code.google.com.vn/p/arduino-tvout/ có lẽ là những gì bạn cần. Nếu bạn may mắn, màn hình nội bộ sẽ chấp nhận tín hiệu NTSC.


Chà, có lẽ ... Nhưng tôi thực sự muốn độ phân giải 320x200, và có lẽ nó không ...
Christian Wattengård

Mã đó tạo ra chính xác tần số bạn đã đề cập giống như tín hiệu NTSC. CGA ban đầu có đầu ra video tổng hợp và phích cắm màn hình. Có vẻ như màn hình nội bộ trên những thứ này sử dụng tín hiệu tổng hợp theo sự suy luận và kiểm tra chữ thảo của phần cứng cổ điển. Tại sao họ thậm chí bận tâm đến sự cố để gửi tín hiệu đầy đủ màu sắc đến màn hình màu hổ phách?
joeforker

Một phần mở rộng của nhận xét của joe sẽ là có thể dễ dàng nhất để có được một card đồ họa đã được tổng hợp và bỏ qua arduino :(
Kevin Vermeer

Tất cả các bạn đều thiếu điểm ... Tôi không muốn có một số màn hình ngẫu nhiên để hiển thị tín hiệu tổng hợp ... Tôi muốn tạo tín hiệu CGA "gốc" và sử dụng nó với màn hình CGA.
Christian Wattengård

3
Bạn nghĩ rằng màn hình nội bộ là CGA. Tôi nghĩ bạn rất có thể sai. Quay trở lại khi bạn nhận được thiết bị.
joeforker

0

Tôi chưa bao giờ sử dụng CGA nhưng bạn có thể điều chỉnh một trong (nhiều) dự án VGA VGA cho mục đích của mình.

Tôi đã xây dựng một trò chơi pong VGA xung quanh ATMega168 có thể là điểm khởi đầu tốt (liên kết 1 2 ). Tôi đã sử dụng thư viện AVGA , nơi thực hiện tất cả thời gian VGA bị gián đoạn để mã tiền cảnh của bạn chỉ cần quan tâm đến việc di chuyển các sprite xung quanh.

Một tùy chọn khác có thể là sửa đổi một YBox .


2
Trên thực tế nó không phải là VGA. VGA là thành phần tương tự RGB, trong khi CGA là kỹ thuật số RGB RGBI.
Christian Wattengård

0

Máy tính xách tay IBM hoạt động như thể màn hình bên trong được nối với đầu ra hỗn hợp của thẻ CGA chứng khoán. Một trong những tác dụng phụ của điều này là khi chế độ được đặt thành "tô màu" 80 cột, màu sắc sẽ xuất hiện dưới dạng các mẫu sọc màu xám thay vì màu xám. Điều này đến lượt nó sẽ làm cho nhiều kết hợp nền trước (ví dụ: màu xanh trên nền đen) gần như hoàn toàn không thể đọc được. Điều này khá khó chịu khi (1) màn hình bên trong là đơn sắc, và do đó thông tin sắc độ sẽ vô dụng với nó; (2) ngay cả khi sử dụng màn hình tổng hợp bên ngoài, tín hiệu colorburst bị nhầm ở chế độ 80 cột, vì vậy dù sao người ta cũng không thể có được màu.

Ngẫu nhiên, màn hình nội bộ của Compaq dường như là duy nhất; nó sử dụng tốc độ quét ngang NTSC, nhưng quét dọc có thể là 60Hz hoặc 30Hz. Tôi không chắc tại sao Compaq quyết định sử dụng 30Hz không xen kẽ, thay vì jinxing mạch dọc của màn hình để hoạt động độc đáo với đầu ra xen kẽ không hoàn toàn đúng của 6485, nhưng đó là máy duy nhất tôi từng thấy với Quét màn hình 30Hz.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.