網(wǎng)上有很多關于pos機信號差顯示x,正點原子開拓者FPGA開發(fā)板資料連載第二十三章RGBTFT的知識,也有很多人為大家解答關于pos機信號差顯示x的問題,今天pos機之家(m.afbey.com)為大家整理了關于這方面的知識,讓我們一起來看下吧!
本文目錄一覽:
pos機信號差顯示x
1)實驗平臺:正點原子開拓者FPGA 開發(fā)板
2)摘自《開拓者FPGA開發(fā)指南》關注官方微信號公眾號,獲取更多資料:正點原子
3)全套實驗源碼+手冊+視頻下載地址:http://www.openedv.com/thread-13912-1-1.html
第二十三章 RGB TFT-LCD字符顯示實驗
我們在RGB TFT-LCD彩條顯示實驗中通過對VGA彩條顯示程序稍作修改,成功的在ATK-
7’RGBLCD液晶屏模塊上顯示出了彩條。本章我們同樣參考VGA字符顯示實驗,在LCD上完成漢
字“正點原子”的顯示。
本章包括以下幾個部分:
23.1 RGB TFT-LCD簡介
23.2 實驗任務
23.3 硬件設計
23.4 程序設計
23.5 下載驗證
RGB TFT-LCD簡介
我們在“RGB TFT-LCD彩條顯示實驗”中對ATK-7’RGBLCD液晶屏模塊作了詳細的介紹,包
括數(shù)據(jù)輸入時序、同步方式、以及分辨率等。如果大家對這部分內(nèi)容不是很熟悉的話,請參考
“RGB TFT-LCD彩條顯示實驗”中的簡介部分。
實驗任務
本章的實驗任務是通過開拓者開發(fā)板上的RGB TFTLCD接口在ATK-7’RGBLCD液晶屏的中心
位置顯示四個漢字“正點原子”,每個漢字的大小為32*32。
硬件設計
RGB TFTLCD接口部分的硬件設計原理及本實驗中各端口信號的管腳分配與“RGB TFT-LCD
彩條顯示實驗”完全相同,請參考“RGB TFT-LCD彩條顯示實驗”中的硬件設計部分。
程序設計
圖 23.4.1是根據(jù)本章實驗任務畫出的系統(tǒng)框圖。其中,時鐘分頻模塊負責產(chǎn)生像素時鐘,
LCD驅(qū)動模塊產(chǎn)生同步信號,LCD顯示模塊輸出圖像數(shù)據(jù)。
圖 23.4.1 RGB TFT-LCD字符顯示實驗系統(tǒng)框圖
字符顯示的原理及字模的提取方法請大家參考“VGA字符顯示實驗”中的程序設計部分。
由于本章實驗任務要求顯示漢字的大小為32*32,那么四個漢字的點陣每行為128個像素點,需
要16個Byte的數(shù)據(jù)來表示。因此在導出字模數(shù)據(jù)前,需要在“字模選項”中將“每行顯示數(shù)據(jù)
—點陣”處設置為16,如下圖所示:
圖 23.4.2 字模格式配置界面
最終由四個漢字“正點原子”提取到的字模數(shù)據(jù)如圖 23.4.3所示。數(shù)據(jù)以十六進制顯示,
每行有16個Byte,對應每行四個漢字共128個像素點;共有32行,對應每個漢字的高度為32。
圖 23.4.3 “正點原子”32*32字模
提取字模完成后,我們需要在LCD顯示模塊中將獲取的點陣數(shù)據(jù)映射到液晶屏中心32*128
個的像素點的字符顯示區(qū)域,從而實現(xiàn)字符的顯示。
程序中各模塊端口及信號連接如圖 23.4.4所示:
圖 23.4.4 頂層模塊原理圖
圖 23.4.4中的頂層模塊(lcd_rgb_char)、時鐘分頻模塊(lcd_pll)以及LCD驅(qū)動模塊
(lcd _driver)均與“RGB TFT-LCD彩條顯示實驗”完全相同,只對LCD顯示模塊(lcd_display)
作了修改。因此,這里我們重點講解LCD顯示模塊,其他部分大家可以參考“RGB TFT-LCD彩條
顯示實驗”。
LCD顯示模塊的代碼如下:
1 module lcd_display(
2 input lcd_clk, //lcd驅(qū)動時鐘
3 input sys_rst_n, //復位信號
4
5 input [10:0] pixel_xpos, //像素點橫坐標
6 input [10:0] pixel_ypos, //像素點縱坐標
7 output reg [15:0] pixel_data //像素點數(shù)據(jù),
8 );
9
10 //parameter define
11 parameter H_DISP = 11'd800; //分辨率——行
12 parameter V_DISP = 11'd480; //分辨率——列
13
14 localparam POS_X = 11'd336; //字符區(qū)域起始點橫坐標
15 localparam POS_Y = 11'd224; //字符區(qū)域起始點縱坐標
16 localparam width="360px",height="auto" />
= 11'd128; //字符區(qū)域?qū)挾?/p>17 localparam HEIGHT = 11'd32; //字符區(qū)域高度
18 localparam RED = 16'b11111_000000_00000; //屏幕背景色
19 localparam BLUE = 16'b00000_000000_11111; //字符顏色
20 localparam BLACK = 16'b00000_000000_00000; //字符區(qū)域背景色
21
22 //reg define
23 reg [127:0] char[31:0]; //字符數(shù)組
24
25 //wire define
26 wire [10:0] x_cnt;
27 wire [10:0] y_cnt;
28
29 //*****************************************************
30 //** main code
31 //*****************************************************
32 assign x_cnt = pixel_xpos - POS_X; //像素點相對于字符區(qū)域起始點水平坐標
33 assign y_cnt = pixel_ypos - POS_Y; //像素點相對于字符區(qū)域起始點豎直坐標
34
35 //給字符數(shù)組賦值,顯示漢字“正點原子”,漢字大小為32*32
36 always @(posedge lcd_clk) begin
37 char[0 ] <= 128'h00000000000000000000000000000000;
38 char[1 ] <= 128'h00000000000000000000000000000000;
39 char[2 ] <= 128'h00000000000100000000002000000000;
40 char[3 ] <= 128'h000000380001800002000070000000C0;
41 char[4 ] <= 128'h0000007C0001800003FFFFF803FFFFE0;
42 char[5 ] <= 128'h0FFFFFFE0001800003006000000001E0;
43 char[6 ] <= 128'h0001E000000180600300600000000300;
44 char[7 ] <= 128'h0001E0000001FFF00300C00000000600;
45 char[8 ] <= 128'h0001E000000180000310804000001800;
46 char[9 ] <= 128'h0001E00000018000031FFFE000003000;
47 char[10] <= 128'h0001E00000018000031800400001C000;
48 char[11] <= 128'h0181E00000018000031800400001C000;
49 char[12] <= 128'h01E1E000018181800318004000018000;
50 char[13] <= 128'h01F1E00001FFFFC0031FFFC000018010;
51 char[14] <= 128'h01E1E0E0018001800318004000018038;
52 char[15] <= 128'h01E1FFF001800180031800403FFFFFFC;
53 char[16] <= 128'h01E1E018018001800318004000018000;
54 char[17] <= 128'h01E1E000018001800218004000018000;
55 char[18] <= 128'h01E1E00001800180021FFFC000018000;
56 char[19] <= 128'h01E1E000018001800210304000018000;
57 char[20] <= 128'h01E1E00001FFFF800200300000018000;
58 char[21] <= 128'h01E1E000018001800606300000018000;
59 char[22] <= 128'h01E1E000018001000607370000018000;
60 char[23] <= 128'h01E1E00000000000060E31C000018000;
61 char[24] <= 128'h01E1E000001000400418307000018000;
62 char[25] <= 128'h01E1E000020830600430303800018000;
63 char[26] <= 128'h01E1E038020C18300860301800018000;
64 char[27] <= 128'h01E1E07C060E18180883700800018000;
65 char[28] <= 128'h7FFFFFFE0C0618181100F008003F8000;
66 char[29] <= 128'h000000001C0408182000600000070000;
67 char[30] <= 128'h00000000000000000000000000020000;
68 char[31] <= 128'h00000000000000000000000000000000;
69 end
70
71 //給不同的區(qū)域繪制不同的顏色
72 always @(posedge lcd_clk or negedge sys_rst_n) begin
73 if (!sys_rst_n)
74 pixel_data <= BLACK;
75 else begin
76 if((pixel_xpos >= POS_X) && (pixel_xpos < POS_X + width="360px",height="auto" />
)77 && (pixel_ypos >= POS_Y) && (pixel_ypos < POS_Y + HEIGHT)) begin
78 if(char[y_cnt][11'd127 - x_cnt])
79 pixel_data <= BLUE; //繪制字符為藍色
80 else
81 pixel_data <= BLACK; //繪制字符區(qū)域背景為黑色
82 end
83 else
84 pixel_data <= RED; //繪制屏幕背景為紅色
85 end
86 end
87
88 endmodule
LCD顯示模塊直接在“VGA字符顯示實驗”中VGA顯示模塊的基礎上稍作修改即可。由于在
代碼的10至20行聲明了一系列的變量,定義了屏幕分辨率、字符在屏幕上顯示的位置、以及字
符的大小、顏色等,因此我們可以非常方便地通過修改這些變量來滿足本章的實驗要求。
因為字符的大小相比于VGA字符顯示實驗發(fā)生了改變,因此在程序的第23行我們將字符數(shù)
組的位寬調(diào)整為128bit,并將前面提取的字模數(shù)據(jù)賦值給該字符數(shù)組,如程序中第35~69行所
示。另外程序第78行將字符顯示區(qū)域內(nèi)的像素點與字符數(shù)組char中的點陣數(shù)據(jù)一一映射,此處
需要將字符數(shù)組的索引調(diào)整為char[y_cnt][11'd127 - x_cnt]。有關該模塊更詳細的設計思路
請大家參考“VGA字符顯示實驗”。
圖 23.4.5為LCD顯示模塊顯示漢字“正點原子”第13行時SignalTap抓取的波形圖。對照
取模得到的點陣數(shù)據(jù)第13行(01E1E000018181800318004000018000)可以看出,當點陣數(shù)據(jù)為
0時,像素點被賦值為黑色(0000);當點陣數(shù)據(jù)為1時,像素點被賦值為藍色(001F);字符
顯示區(qū)域外的屏幕背景為紅色(F800)。各區(qū)域中的像素點能夠被賦以正確的顏色值。
圖 23.4.5 SignalTap波形圖
下載驗證
RGB TFT-LCD字符顯示實驗的工程位于lcd_rgb_char文件夾中,請大家參考RGB TFT-LCD彩
條 顯 示 實 驗 中 的 下 載 驗 證 方 法 , 將 lcd_rgb_char/par/output_files 目 錄 下 的
“l(fā)cd_rgb_char.sof”文件下載至開發(fā)板。下載完成后在ATK-7’RGBLCD液晶屏模塊上觀察顯
示的漢字如圖 23.5.1所示,說明RGB TFT-LCD字符顯示程序下載驗證成功。
圖 23.5.1 RGB TFT-LCD字符顯示
以上就是關于pos機信號差顯示x,正點原子開拓者FPGA開發(fā)板資料連載第二十三章RGBTFT的知識,后面我們會繼續(xù)為大家整理關于pos機信號差顯示x的知識,希望能夠幫助到大家!
