1 Chơng 1 Mn hình của máy tính $1. Bi Mở đầu I. Đối tợng nghiên cứu và ứng dụng của kỹ thuật đồ hoạ 1. Đối tợng nghiên cứu của kỹ thuật đồ hoạ Từ khi máy tính ra đời các ứng dụng phi số ngày càng rộng rãi, một trong các ứng dụng là xử lý thông tin bằng hình ảnh. Trong lĩnh vực xử lý thông tin hình ảnh lại đợc chia thành 2 lĩnh vực: - Kỹ thuật đồ hoạ - Xử lý ảnh Trong khi xử lý ảnh quan tâm đến cách thu nhận, khôi phục lu trữ các hình ảnh (các hình ảnh này có thể có từ bất kỳ nguồn nào nh video, camera ) thì kỹ thuật đồ hoạ tập trung vào vấn đề sử dụng máy tính để tạo ra hình ảnh. Rõ ràng kỹ thuật đồ hoạ và xử lý ảnh đều xử lý thông tin hình ảnh cho nên nó có quan hệ rất mật thiết với nhau nhng mục đích nghiên cứu của chúng rất khác nhau 2. ứng dụng của kỹ thuật đồ hoạ Kỹ thuật đồ hoạ có ứng dụng rất rộng rãi từ khi tốc độ máy tính tăng, khả năng hiển thị của màn hình tốt, khả năng lu trữ thông tin tăng. Kỹ thuật đồ hoạ đợc sử dụng trong 2 lĩnh vực chính: - Vẽ kỹ thuật - Mô phỏng II. Màn hình máy vi tính 1. Các chế độ làm việc Màn hình là nơi thể hiện các thông tin, nó phản ảnh các kết quả tính toán, xử lý. Thông tin hiển thị có thể ở dạng văn bản, có thể ở dạng hình ảnh, tơng ứng với các dạng thông tin cần hiển thị màn hình có 2 chế độ làm việc: Chế độ văn bản (Text mode) Chế độ đồ hoạ (Graphics mode) ở chế độ văn bản màn hình đợc chia thành 80 cột, 25 dòng, mỗi ô là giao của các dòng các cột tạo thành hộp ký tự (text box) ở chế độ đồ hoạ màn hình đợc chia thành số dòng, số cột lớn hơn tuỳ thuộc vào chất lợng của màn hình, số cột x số dòng y gọi là độ phân giải của màn hình, ngời ta dựa vào phân giải và số màu mà màn hình có thể hiển thị để phân chia màn hình thành các loại khác nhau nh - MDA (Monochrome Display Adapter) Kỹ thuật Đồ hoạ máy tính 2 - CGA (Color Graphics Adapter) - EGA (Enhance Graphics Adapter) - VGA (Video Graphics Array) - SVGA (Supper Video Graphics Array) Mỗi màn hình có thể hoạt động ở một chế độ nào đó tuỳ thuộc vào chất lợng của màn hình - hiện nay các màn hình của họ PC có các chế độ sau tính theo hệ cơ số 16. Riêng Mode từ 13 trở đi chỉ dùng cho VGA trở lên Dới đây là bảng các mode của màn hình Mode (Hexa) Chế độ Độ phân giải Số lợng màu 0 text 40x25 16 1 text 40x25 16 2 text 80x25 16 3 text 80x25 16 4 graph 320x200 4 5 graph 320x200 4 6 graph 320x200 2 7 text 80x25 16 D graph 320x200 16 E graph 640x200 16 F graph 640x350 16 10 graph 640x350 16 11 graph 640x480 2 12 graph 640x480 16 13 graph 320x200 256 100 graph 640x400 256 101 graph 640x480 256 102 graph 800x600 16 103 graph 800x600 256 104 graph 1024x768 16 105 graph 1024x768 256 Dới đây để phục vụ cho mục đích đồ hoạ chúng ta chỉ khảo sát các chế độ đồ hoạ 16 và 256 màu. Để thiết lập chế độ đồ hoạ ta dùng thủ tục sau đây Procedure set_mode(mode: integer); Var Kỹ thuật Đồ hoạ máy tính 3 R : registers; Begin R.ax:=$4f02; R.bx:=mode; intr($10,R); End; Còn để đọc Mode màn hình ta dùng hàm sau đây Function Get_mode: integer; Var R : registers; Begin R.ax:=$4f03; intr($10,R); Get_mode:=R.bx; End; Ví dụ : Đặt chế độ màn hình Program Set_Get_Mode; Uses crt,Graph,dos; Var R : registers; mode,gd,gm : Integer; Procedure set_mode(mode: integer); Begin R.ax:=$4f02; R.bx:=mode; intr($10,R); End; Function Get_mode: integer; Begin R.ax:=$4f03; intr($10,R); Get_mode:=R.bx; End; Begin mode:= Get_mode; gd:=0; Set_mode(mode); directvideo:=false; Writeln('mode la : ',Get_mode); InitGraph(gd,gm,' '); directvideo:=false; Writeln('mode la : ',Get_mode); Readkey; Set_mode(mode); End. Kỹ thuật Đồ hoạ máy tính 4 2. Hệ toạ độ hiển thị trên màn hình Khi thực hiện các chế độ đồ hoạ ngời ta quy ớc gắn trên màn hình hệ toạ độ Decac theo quy ớc sau: Trục X gọi là tọa độ cột, Y gọi là toạ độ hàng Ô có toạ độ X,Y là đơn vị đồ hoạ nhỏ nhất gọi là pixel - một pixel trên màn hình là hình ảnh của một điểm trong hệ toạ độ thực. Khó khăn cơ bản trong kỹ thuật đồ hoạ vi tính là ngời ta phải sử dụng các pixel có toạ độ nguyên để biểu diễn tất cả các điểm trong hệ toạ độ thực Số pixel có đợc trên màn hình phụ thuộc vào độ phân giải của màn hình Ví dụ: CGA: 320x200 EGA: 640x350 VGA: 640x480 Kỹ thuật Đồ hoạ máy tính 5 3. Nguyên tắc tạo màu của màn hình: Để thể hiện màu của mỗi pixel trên màn hình ngời ta sử dụng 3 màu cơ bản: Red, Green, Blue. Loại màn hình tạo màu theo 3 màu cơ bản trên gọi là loại màn hình RGB. Từ 3 màu cơ bản này ngời ta tạo ra các màu khác bằng cách thay đổi cờng độ sáng (Intensity) của các màu cơ bản trên Chẳng hạn để có 16 màu từ 3 màu cơ bản trên ngời ta sử dụng 4 bit, 3 bit ứng với 3 màu cơ bản, một bit dùng để thay đổi cờng độ sáng theo bảng sau: Color Itensity bit Red bit Green bit Blue bit IRGB Value Black 0 0 0 0 0000 Blue 0 0 0 1 0001 Green 0 0 1 0 0010 Cyan 0 0 1 1 0011 Red 0 1 0 0 0100 Magenta 0 1 0 1 0101 Brown 0 1 1 0 0110 White 0 1 1 1 0111 Gray 1 0 0 0 1000 Bright Blue 1 0 0 1 1001 Bright green 1 0 1 0 1010 Bright Cyan 1 0 1 1 1011 Bright Red 1 1 0 0 1100 Bright magenta 1 1 0 1 1101 Yellow 1 1 1 0 1110 Bright White 1 1 1 1 1111 Để tạo ra 256 màu trên màn hình VGA có 3 nhóm bit kích hoạt, mỗi nhóm gồm 6 bit để thay đổi cờng độ sáng của 3 màu cơ bản, các nhóm bit này đợc tạo thành 3 byte riêng biệt Ví dụ: Kỹ thuật Đồ hoạ máy tính 6 Blue Green Red Value Black 00 00 00 00 Bright While 3F 3F 3F $3F3F3F Rõ ràng với cách tổ hợp này với màn hình VGA có thể tạo đợc 64 x 64 x 64 =262.144 màu khác nhau, màn hình VGA cho phép hiển thị cùng một lúc 256 màu trong số 262.144 màu có thể Số màu có thể hiển thị của một pixel phụ thuộc vào số bit dùng để biểu diễn nó Bit/pixel Số mu 1 2 2 4 4 16 8 264 4. Bộ nhớ màn hình (Display memory) Bộ nhớ màn hình là vùng bộ nhớ dùng để chứa dữ liệu trực tiếp hiện ra màn hình, dữ liệu trong bộ nhớ màn hình thay đổi sẽ trực tiếp thay đổi trên màn hình ở chế độ văn bản (text mode) bộ nhớ chủ dành cho bộ nhớ màn hình đợc bắt đầu từ địa chỉ B800:0000 ở chế độ đồ hoạ (graphics mode) bộ nhớ chủ dành cho bộ nhớ màn hình đợc bắt đầu từ địa chỉ A000:0000 Với màn hình VGA kích thớc chuẩn của bộ nhớ màn hình là 256Kb Bộ nhớ màn hình có 2 cách tổ chức Tổ chức dạng gói (packed format) Tổ chức dạng mảng (bit plane) Kỹ thuật Đồ hoạ máy tính 7 Trong cách tổ chức dạng gói cả bộ nhớ màn hình là một mảng một chiều, mọi phần từ của mảng là 1 byte Trong cách tổ chức bit plane bộ nhớ của màn hình đợc tổ chức logic thành các mảng hai chiều. Trong các chế độ đồ hoạ 16 màu bộ nhớ màn hình đợc tổ chức thành 4 mảng gọi là 4 bit plane đánh số từ 0 đến 3 Tất cả các bit plane đều đợc truy nhập từ cùng một địa chỉ A000 Ngời lập trình có thể truy nhập vào các bit plane bằng các lệnh thông qua cổng hoặc bằng các ngắt của Rom Bios Chỉ có thể đọc/ghi một byte trên cùng một bit plane. Một byte trên một bit plane chứa thông tin của 8 pixel lân cận theo hàng ngang Muốn đọc thông tin của một pixel nào đó ta phải đọc 4 byte và tách 4 bit plane từ 4 byte này. Còn muốn ghi một pixel ta phải ghi 4 byte và do đó cũng có nghĩa là phải ghi 8 pixel. 5. Trang màn hình (Display page) Trang màn hình là vùng bộ nhớ màn hình ứng với lợng thông tin hiển thị trên một màn hình. Vì vùng bộ nhớ màn hình chuẩn đạt tới 256Kb trong khi lợng thông tin để hiển thị trên một màn hình lại nhỏ hơn, để tạo ra tốc độ hiển thị nhanh, bộ nhớ màn hình cho phép tổ chức thành từng trang màn hình, các trang đợc đánh số từ 0 trở đi. Trang đợc hiển thị trên màn hình gọi là trang đang làm việc (active page). Tuỳ thuộc vào chế độ làm việc của màn hình mà bộ nhớ màn hình có số trang khác nhau. Dới đây là số trang ở một số mode của EGA/VGA Mode độ phân giải số trang số mu kích thớc ký tự D 320*200 8 16 8*8 E 640*200 4 16 8*8 10 640*350 2 16 8*14 Kỹ thuật Đồ hoạ máy tính 8 12 640*480 1 16 8*16 - Chúng ta có thể tự hạn chế về số trang cho mỗi chế độ của màn hình. Ví dụ: - Mode E có tất cả 128000 pixel/page. Vì 8 pixel ứng với một byte trên một bit plane do đó cần 16000 byte/bit plane/ page - một trang cần 64000 byte xấp xỉ 64 kb. Do vậy tối đa chỉ có thể hiển thị đợc 4 trang. - Mode D: có 64000 pixel/ page. Vì pixel ứng với một byte trên một bit plane do đó cần 8000 byte/ bit plane/ page - một trang cần 32000 byte xấp xỉ 32kb/page do đó tối đa chỉ có thể có 8 trang. - Ngời ta cũng có thể biết đợc địa chỉ đầu của mỗi trang trong từng chế độ làm việc của màn hình. Mode D: A000 - A1F3F A200 - A3F3F A400 - A5F3F A600 - A7F3F A800 - A9F3F AA00 - ABF3F AC00 - ADF3F AE00 - AFF3F Mode E: A000 - A3E7F A400 - A7E7F A800 - ABE7E AC00 - AFE7E $2. Truy cập vo bộ nhớ mn hình Về nguyên tắc có 2 cách để truy cập bộ nhớ màn hình và các thanh ghi + Cách 1: Sử dụng các dịch vụ ngắt của ROM BIOS, ROM BIOS cung cấp tơng đối đầy đủ các chơng trình con ứng với các ngắt để phục vụ cho công việc này + Cách 2: Truy cập trực tiếp đa vào các địa chỉ của các cổng (port) thông qua các ngôn ngữ lập trình Cách 1 đơn giản tuy nhiên có nhợc điểm tốc độ truy nhập chậm I. Sử dụng các dịch vụ ngắt Int 10H của ROM BIOS Dới đây là một vài ngắt của ROM BIOS 1. Đa một pixel vo bộ nhớ mn hình input AH=0Ch AL=mu BH=trang CX=x (cột) . Bright green 1 0 1 0 10 10 Bright Cyan 1 0 1 1 10 11 Bright Red 1 1 0 0 11 00 Bright magenta 1 1 0 1 110 1 Yellow 1 1 1 0 11 10 Bright White 1 1 1 1 11 11 Để tạo ra 256 màu trên màn hình VGA có 3 nhóm. 0 1 00 01 Green 0 0 1 0 0 010 Cyan 0 0 1 1 0 011 Red 0 1 0 0 010 0 Magenta 0 1 0 1 010 1 Brown 0 1 1 0 011 0 White 0 1 1 1 011 1 Gray 1 0 0 0 10 00 Bright Blue 1 0 0 1 10 01 Bright green 1 0 1. 16 8*8 10 640*350 2 16 8 *14 Kỹ thuật Đồ hoạ máy tính 8 12 640*480 1 16 8 *16 - Chúng ta có thể tự hạn chế về số trang cho mỗi chế độ của màn hình. Ví dụ: - Mode E có tất cả 12 8000 pixel/page.