vga編程
① 顯卡寄存器編程原理
目前在個人計算機上廣泛使用的是採用陰極射線管(CRT)的光柵掃瞄顯示器,我們在屏幕上所看到的顏色是由電子槍發出的電子束打在CRT屏幕背面的螢光層上的點形成的,通過控制點的亮度可以產生不同的顏色。電子束不斷地從左到右、從上到下掃瞄整個屏幕,使屏幕顯示出圖案,電子束以大約每秒70次的速率在屏幕上重畫這一圖案,這個過程稱為顯示刷新或屏幕刷新,具體的掃瞄頻率依賴於所用的顯示適配器(又稱為顯示卡)。電子束從屏幕的左上角開始向右掃瞄,到達屏幕的右邊緣後,電子束被關閉(水平斷開),接著它又迅速地返回到屏幕的左邊緣(水平回掃)開始進行下一行水平方向的掃瞄,在完成全部的水平方向的掃瞄後,電子束在屏幕的右下角結束,此時電子束被關閉(垂直斷開),接著又迅速地返回到屏幕的左上角(垂直回掃),開始下一屏掃瞄。電子束就是這樣周而復始地掃瞄整個屏幕。顯示器在兩種方式下工作:文本方式和圖形方式,電腦游戲一般在圖形方式下進行。
二.顯示器的坐標系統
計算機屏幕上的坐標與我們通常使用的直角坐標系不同,坐標原點(0,0)在屏幕的左上角,向右是水平方向的坐標,向下是垂直方向的坐標,且坐標沒有負值。
三.顯示卡的結構
顯示器上的顯示卡負責將圖形顯示在屏幕上。顯示存儲器中存放著在屏幕上顯示的圖像數據,顯示卡硬體不停地將顯存中的內容顯示在屏幕上。顯示存儲器實際上是安裝在顯示卡上的一塊或幾塊大規模集成電路,其容量有1M、2M、4M、8M等,在DOS下我們可以訪問的內存只有1MB空間(這就是DOS的局限性所在),地址從00000H到FFFFFH,這段內存根據用途又分為不同的塊,系統分配給圖形緩沖區(顯示存儲器)的地址在A0000H到BFFFFH之間,大小為128KB,其中,VGA佔用了A0000H到AFFFFH段,共64KB,這段地址是內存映射地址,供我們訪問顯示存儲器用。在VGA 13H圖形模式下,顯示內存使用A0000H到AF9FFH的一段線性內存空間,每個位元組表示一個點,對應屏幕上的一個像點,320*200的屏幕解析度共需要64000個位元組,剛好64KB,因為一個位元組可以表示的最大整數值為256,所以每個像點就可以表示256種顏色。
② C語言中vga和VGAHI是是什麼意思
vga是video graphics array(視頻圖形陣列適配器)的縮寫,是C語言所支持的一種顯示器適配器.
VGAHI是vga的一種顯示模式,為640*480的高解析度顯示方式.
另外,vga還有640*350的中解析度顯示方式(VGAMED),640*200的低解析度顯示方式(VGALO).
③ 現在電視無VGA介面RT809F怎麼寫程序
手動設置VGA線序,選擇晶元型號,然後讀取,最後保存。
編程器的VGA ISP介面通過VGA線和板子正確連接並接好供電,打開軟體到主界面,設置VGA線序。
在讀取完成以後,點擊「保存」按鈕,保存文件。填寫文件名稱時,文件名盡可能詳細,包含廠商、板號、屏型號、主晶元型號、存儲器型號。
④ 求大神幫我翻譯一下這一段FPGA的編程語言~ 關於VGA顯示的
entity vga is
Port ( clk : in STD_LOGIC;
clr : in STD_LOGIC;
hsync : out STD_LOGIC;
vsync : out STD_LOGIC;
RGB : out STD_LOGIC_VECTOR (2 downto 0));
end vga;
architecture Be
havioral of vga is
signal h_cnt,v_cnt : integer:=0; //中間變數申明;
signal q : std_logic_vector(2 downto 0) :="000";
signal h,v : std_logic :='0';
begin
process(clk,clr,h_cnt,v_cnt)
begin // 這個進程是對行和場的計數
if clr='1' then
h_cnt<=0; v_cnt<=0;
elsif clk'event and clk='1' then //時鍾信號上升沿有效
h_cnt<=h_cnt+1; //行計數
if h_cnt=1039 then
if v_cnt<665 then
h_cnt<=0; v_cnt<=v_cnt+1; //場計數
elsif v_cnt=665 then //一幀結束
h_cnt<=0; v_cnt<=0;
end if;
end if;
end if;
end process;
process(clk,h_cnt) 此進程對行同步信號進行賦值
begin
if clk'event and clk='1' then
if h_cnt<120 then
h<='1';
else h<='0';
end if;
end if;
end process;
process(clk,v_cnt) 此進程對場同步信號進行賦值
begin
if clk'event and clk='1' then
if v_cnt<6 then
v<='1';
else v<='0';
end if;
end if;
end process;
process(clk,clr,h_cnt,v_cnt)
begin
if clr='1' then
q<="000";
elsif (h_cnt>=184 and h_cnt<984 and v_cnt>=29 and v_cnt<629) then //工作區域
if (h_cnt>=184 and h_cnt<284) then //進行區域顏色賦值
q <= "000";
elsif (h_cnt>=284 and h_cnt<384) then
q <= "001";
elsif (h_cnt>=384 and h_cnt<484) then
q <= "010";
elsif (h_cnt>=484 and h_cnt<584) then
q <= "011";
elsif (h_cnt>=584 and h_cnt<684) then
q <= "100";
elsif (h_cnt>=684 and h_cnt<784) then
q <= "101";
elsif (h_cnt>=784 and h_cnt<884) then
q <= "110";
elsif (h_cnt>=884 and h_cnt<984) then
q <= "111";
else q<="000";
end if;
else q<="000";
end if;
end process;
RGB<=q; hsync<=h; vsync<=v;
end Behavioral;
⑤ 跪求專業大神作答:VGA顯示學號控制電路問題(硬體編程問題,具體要求如下)
問題4:
如果它不能正常顯示模式=線取掉
改變:驅動程序=檢測
initgraph(「&驅動器,及模式,」.. \ \ BGI) ;
注意:\ \ BGI是您的計算機c + +編程軟體BGI一般默認路徑為.. \ \ BGI
主題:學習putpixel畫點。
1。程序分析:。
2源代碼。
的#include「stdio.h中」
的#include「graphics.h的」
的main()
{
INT I,J,司機= VGA介面,模式= VGAHI ;
initgraph(&驅動器,及模式,「」);
setbkcolor(黃色);
就(i = 50; I <= 230,我+ = 20)
為(J = 50;<= 230; J + +)
putpixel(I,J,1);
為(J = 50;<= 230,J + = 20)就(i = 50; I <= 230; i + +)
putpixel(I,J,1);
}
主題:畫橢圓橢圓
1方案分析:。
2源代碼。
的#include「stdio.h中」
#包括「圖形。H」
的#include「conio.h的」
的main()
{
整型X = 360,Y = 160,驅動器= VGA介面,模式= VGAHI;
整型數= 20,I;
整數頂部,底部;
initgraph(&驅動器,與模式「,」 );
頂級= Y-30;
底= Y -30;
就(i = 0;我<民,我+ +)
{
橢圓(250,250,0,360,頂部,底部);
頂= 5;
底+ = 5;
}
的getch();
}
主題:使用橢圓和矩形繪圖。 。
1程序分析:
2源代碼。
的#include「stdio.h中」
的#include「graphics.h的」
的#include「conio.h的」
的main()
{
整型驅動程序= VGA介面,模式= VGAHI;
INT I,編號= 15,頂部= 50;
整數左邊= 20,右邊= 50;
initgraph(&驅動器,及模式,「 「);
就(i = 0;我<民,我+ +)
{
橢圓(250,250,0,360,右,左);
橢圓(250,250,0,360 ,20,頂部);
矩形(20-2 * I ,20-2 * I 10 *(I 2),10 *(I 2));
右+ = 5;
左+ = 5;
上衣+ = 10;
}
的getch();
}
主題:其中一個最美麗的設計。 。
1程序分析:
2源代碼。
的#include「graphics.h的」
的#include「math.h中」
#包括「DOS.H」
的#include「conio.h的」
#包括「stdlib.h中」
的#include「stdio.h中」
#包括「stdarg頭文件。H」
#定義MAXPTS 15
#定義PI 3.1415926
結構分{
整數的x,y;
};
雙AspectRatio = 0.85;
無效LineToDemo(無效)
{
結構viewporttype副總裁; 結構PTS點[MAXPTS];
INT I,J,H,W,X中心值,ycenter;
整數半徑,角度,步驟;
雙拉德;
printf(「請MOVETO / lineTo的示範「);
getviewsettings(&VP);
H = VP。底部 - vp.top;
W = vp.right - vp.left;
X中心值= W / 2; / *判斷圓* /
ycenter = H / 2的中心; 半徑=(H - 30)/(AspectRatio * 2);
步= 360 / MAXPTS; / *判斷#增量* /
角= 0; / *開始在零攝氏度* /
就(i = 0; I <MAXPTS; + I){/ *判斷圓攔截* /
拉德=(雙)角* PI / 180.0; / *轉換角度為弧度* /
點[I] X = X中心值+(int)的(COS(拉德)*半徑);
點[I] Y = ycenter - (int)的(罪(拉德)*半徑* AspectRatio .. );
角度+ =步驟; / *移動到下一個增量* /
圓(X中心值,ycenter,半徑); / *繪制邊界圓* /
為( I = 0我「MAXPTS; + I){/ *繪制線到圓* /
為(J =;<MAXPTS; + + J){/ *對於每個剩餘的相交* /
MOVETO(點由[i]×,點[I] Y ..); / *移動到的線* /
lineTo的開始(..點[J]×,點[J] Y) ; / *繪制的線* /
}}}
的main()
{詮釋驅動程序,模式;
驅動程序= CGA;模式= CGAC0;
initgraph(與司機,及模式,「」);
的setColor(3);
setbkcolor(綠色);
LineToDemo();}
主題:?繪畫,畫派與圓輪。 。
1程序分析:
2源代碼。
/ *循環* /
的#include「graphics.h的」
的main()
{詮釋驅動程序,模式,I;
持股量J = 1,K = 1;
驅動程序= VGA;模式= VGAHI;
initgraph(&驅動器,及模式,「」);
setbkcolor(黃色);
就(i = 0;我<= 25; i + +)
{
的setColor(8);
圓(310,250,K);
K = K + J;
當J = J +0.3;
}
}
主題:繪畫,學慣用線畫一條直線。
1程序分析:
2源代碼:..
的#include「graphics.h的」
的main()
{詮釋驅動程序,模式,I;
持股量X0,Y0,Y1,X1;
持股量J = 12,K;
驅動程序= VGA;模式= VGAHI;
initgraph(&驅動器,及模式,「」);
setbkcolor(綠色);
X0 = 263; Y0 = 263; Y1 = 275; X1 = 275;
就(i = 0; I <= 18; i + +)
{
的setColor(5);
線( X0,Y0,X0,Y1);
X0 = X0-5;
Y0 = Y0-5;
X 1 = X 5;
Y1 = Y1 5; 當J = J +10;
}
X0 = 263; Y1 = 275; Y0 = 263;
就(i = 0; I {
的setColor(5);
線(X0,Y0,X0,Y1);
X0 = X0 +5;
Y0 = Y0 +5; Y1 = Y1-5;
}
}
主題:素描,繪畫學校,一個長方形廣場。
1方案解析:100-999用於閉環控制數和各比特數分解,十,百。
2的源代碼:
的#include「graphics.h的」
的main()
{詮釋X0,Y0,Y1,X1,驅動程序,模式,I; 驅動程序= VGA;模式= VGAHI;
initgraph(&驅動器,及模式,「」);
setbkcolor(黃色);
X0 = 263; Y0 = 263; Y1 = 275; X1 = 275;
就(i = 0; I <= 18; i + +)
{
的setColor(1);
矩形(X0,Y0,X1 ,Y1);
X0 = X0-5;
Y0 = Y0-5;
X1 = X1 +5;
Y1 = Y1 +5;
} settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
outtextxy(150,40,「好美啊!」);
線(130,60,480,60);
的setColor( 2);
圓(269269137);
}
主題:素描,全面的例子。 。
1程序分析:
2源代碼。
#定義PAI 3.1415926
#定義了B 0.809
的#include「graphics.h的」
的#include「math.h中」
的main()
{
INT I,J,K,X0,Y0,X,Y,驅動程序,方式;
浮起;
驅動程序= CGA;模式= CGAC0;
initgraph(&驅動器,&模式,「」);
的setColor(3);
setbkcolor(綠色);
X0 = 150; Y0 = 100;
圈(X0,Y0,10) ;
圈(X0,Y0,20);
圈(X0,Y0,50);
就(i = 0; I <16; i + +)
{
一=(2 * PAI/16)* I;
X = CEIL(X0 +48 * COS(a)條);
為y = CEIL(Y0 +48 *罪(一) * B);
的setColor(2);線(X0,Y0,X,Y);}
的setColor(3);圈(X0,Y0,60);
/ *使0時間正常大小字母* /
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
outtextxy(10,170,「按一鍵」);
的getch();
setfillstyle(HATCH_FILL ,黃色);
FLOODFILL(202,100,白色);
的getch();
為(K = 0,K <= 500,K +)
{的setColor(3);
就(i = 0; I <= 16; i + +)
{
一=(2 * PAI/16)* I +(2 * PAI / 180)* K;
X = CEIL(X0 +48 * COS(a)條);
為y = CEIL(Y0 +48 + SIN(A)* B);
的setColor( 2);線(X0,Y0,X,Y);
}
為(J = 1;<= 50; J + +)
{
為a =( 2 * PAI/16)* I +(2 * PAI/180)* k-1個;
X = CEIL(X0 48 * COS(一));
為y = CEIL(Y0 48 * SIN(A)* B);
線(X0,Y0,X,Y);
}
}
restorecrtmode();
} 主題:素描,全面的例子。 。
1程序分析:
2源代碼。
的#include「graphics.h的」
#定義左0
#定義TOP 0
#定義右639
#定義BOTTOM 479
#define語句400
#定義MAXCOLOR 15
的main()
{
整數驅動程序,模式,錯誤;
整數X1,Y1;
整數X2,Y2;
整數DX1,DY1,DX2,DY2,I = 1;
詮釋計數= 0;
整型色= 0;
驅動程序= VGA;
模式= VGAHI ;
initgraph(&驅動器,及模式,「」);
X 1 = X = Y1 = Y2 = 10;
DX1 = DY1 = 2;
DX2 = DY2 = 3 ;
而
{
線(X1,Y1,X2,Y2)(的kbhit()!);
X1 + = DX1; Y1 + = DY1;
X2 + = DX2; Y2 + DY2;
如果(X1 = RIGHT)
DX1 = - DX1;
如果(Y1 =底部)
DY1 =-DY1;
如果(X2 = RIGHT)
DX2 =-DX2;
如果(Y2 = BOTTOM)
DY2 =-DY2;
如果(+ +計數>線)
{
的setColor(彩色);
顏色=(顏色> = MAXCOLOR )0:? + +的顏色;
}
}
closegraph();
}
⑥ 怎麼用根VGA的線刷顯示屏
需要VGA編程器
將編程器連到要刷機的顯示器VGA口,加電開機,然後操作編程器刷寫程序即可。
⑦ VGA彩條信號顯示控制器的實驗原理是什麼
VGA時序信號是圖象顯示的關鍵,行場掃描時序的產生,是利用邏輯編程的方法實現的,即用VHDL編寫分頻器,計時器模塊,來獲得T1、T2、T3、T4 時序。當輸出數字、彩條信號和棋盤格圖象時,由外部12M有源晶振提供時鍾輸入,其中行頻HS:12MHZ ÷13÷29=31830Hz、場頻VS:31830Hz÷480×0.93=61.67Hz、T1=1/31830Hz×4/29=25.96us、 T2=1/31830Hz×5/29=6.04us、T3為兩個行周期(T1+T2),T4為480個行周期。
圖象信號包括數字、彩條、棋盤格,和ROM中定製的圖形等。數字信號和彩條信號的產生是按行場方向將屏幕各進行8等分,相當於一個8×8的點陣,在對應位置顯示相應顏色即可獲得所需圖像信號;棋盤格信號是將橫彩條和豎彩條相異或獲得。ROM中定製的較為復雜的彩色圖像,需採用像素點輸出,即將圖像各像素點的信息存儲於ROM中,再以一定的頻率輸出。FPGA器件ROM的定製有兩種方法:第一種方法是利用FPGA器件的嵌入式存儲器定製LPM_ROM, 用.MIF文件或.HEX文件對其進行初始化,這種方法獲得的ROM最大定址空間為2 12,可以存儲一幅解析度為64×64的圖像信息;第二種方法是在FPGA邏輯資源的限度內用VHDL語言定製一個ROM,採用CASE語句對其進行初始化,這種方法獲得的ROM在存儲深度較大時,編譯時對時間的開銷較大。ROM初始化完成後,在25MHz的時鍾頻率下輸出存儲的圖像信息。其圖象顏色種類的多少取決於存儲空間的大小。
ROM定製的圖象信息是利用FPGA嵌入的存儲器定製LPM_ROM,可以用於存儲一幅64×64解析度的圖像信息,數據線寬為3位,地址線12根,採用組合定址方式,即行地址HSADDRESS占低6位,場地址VSADDRESS占高6位;若要顯示更為復雜的圖象信息,只需擴展存儲器及定址的數據線寬度,為了保證行地址信號輸出與行掃描信號輸出同步,場地址信號輸出與場掃描信號輸出同步,在VHDL編程時,可用25MHz時鍾作為進程的啟動信號。輸出信號的時序波形如圖6所示。各種圖象信號的輸出是由數據選擇器通過VHDL編程實現的。
