pos機(jī)信號(hào)差顯示x,正點(diǎn)原子開拓者FPGA開發(fā)板資料連載第二十三章RGBTFT

 新聞資訊2  |   2023-05-25 11:56  |  投稿人:pos機(jī)之家

網(wǎng)上有很多關(guān)于pos機(jī)信號(hào)差顯示x,正點(diǎn)原子開拓者FPGA開發(fā)板資料連載第二十三章RGBTFT的知識(shí),也有很多人為大家解答關(guān)于pos機(jī)信號(hào)差顯示x的問題,今天pos機(jī)之家(www.shineka.com)為大家整理了關(guān)于這方面的知識(shí),讓我們一起來(lái)看下吧!

本文目錄一覽:

1、pos機(jī)信號(hào)差顯示x

pos機(jī)信號(hào)差顯示x

1)實(shí)驗(yàn)平臺(tái):正點(diǎn)原子開拓者FPGA 開發(fā)板

2)摘自《開拓者FPGA開發(fā)指南》關(guān)注官方微信號(hào)公眾號(hào),獲取更多資料:正點(diǎn)原子

3)全套實(shí)驗(yàn)源碼+手冊(cè)+視頻下載地址:http://www.openedv.com/thread-13912-1-1.html

第二十三章 RGB TFT-LCD字符顯示實(shí)驗(yàn)

我們?cè)赗GB TFT-LCD彩條顯示實(shí)驗(yàn)中通過對(duì)VGA彩條顯示程序稍作修改,成功的在ATK-

7’RGBLCD液晶屏模塊上顯示出了彩條。本章我們同樣參考VGA字符顯示實(shí)驗(yàn),在LCD上完成漢

字“正點(diǎn)原子”的顯示。

本章包括以下幾個(gè)部分:

23.1 RGB TFT-LCD簡(jiǎn)介

23.2 實(shí)驗(yàn)任務(wù)

23.3 硬件設(shè)計(jì)

23.4 程序設(shè)計(jì)

23.5 下載驗(yàn)證

RGB TFT-LCD簡(jiǎn)介

我們?cè)凇癛GB TFT-LCD彩條顯示實(shí)驗(yàn)”中對(duì)ATK-7’RGBLCD液晶屏模塊作了詳細(xì)的介紹,包

括數(shù)據(jù)輸入時(shí)序、同步方式、以及分辨率等。如果大家對(duì)這部分內(nèi)容不是很熟悉的話,請(qǐng)參考

“RGB TFT-LCD彩條顯示實(shí)驗(yàn)”中的簡(jiǎn)介部分。

實(shí)驗(yàn)任務(wù)

本章的實(shí)驗(yàn)任務(wù)是通過開拓者開發(fā)板上的RGB TFTLCD接口在ATK-7’RGBLCD液晶屏的中心

位置顯示四個(gè)漢字“正點(diǎn)原子”,每個(gè)漢字的大小為32*32。

硬件設(shè)計(jì)

RGB TFTLCD接口部分的硬件設(shè)計(jì)原理及本實(shí)驗(yàn)中各端口信號(hào)的管腳分配與“RGB TFT-LCD

彩條顯示實(shí)驗(yàn)”完全相同,請(qǐng)參考“RGB TFT-LCD彩條顯示實(shí)驗(yàn)”中的硬件設(shè)計(jì)部分。

程序設(shè)計(jì)

圖 23.4.1是根據(jù)本章實(shí)驗(yàn)任務(wù)畫出的系統(tǒng)框圖。其中,時(shí)鐘分頻模塊負(fù)責(zé)產(chǎn)生像素時(shí)鐘,

LCD驅(qū)動(dòng)模塊產(chǎn)生同步信號(hào),LCD顯示模塊輸出圖像數(shù)據(jù)。

圖 23.4.1 RGB TFT-LCD字符顯示實(shí)驗(yàn)系統(tǒng)框圖

字符顯示的原理及字模的提取方法請(qǐng)大家參考“VGA字符顯示實(shí)驗(yàn)”中的程序設(shè)計(jì)部分。

由于本章實(shí)驗(yàn)任務(wù)要求顯示漢字的大小為32*32,那么四個(gè)漢字的點(diǎn)陣每行為128個(gè)像素點(diǎn),需

要16個(gè)Byte的數(shù)據(jù)來(lái)表示。因此在導(dǎo)出字模數(shù)據(jù)前,需要在“字模選項(xiàng)”中將“每行顯示數(shù)據(jù)

—點(diǎn)陣”處設(shè)置為16,如下圖所示:

圖 23.4.2 字模格式配置界面

最終由四個(gè)漢字“正點(diǎn)原子”提取到的字模數(shù)據(jù)如圖 23.4.3所示。數(shù)據(jù)以十六進(jìn)制顯示,

每行有16個(gè)Byte,對(duì)應(yīng)每行四個(gè)漢字共128個(gè)像素點(diǎn);共有32行,對(duì)應(yīng)每個(gè)漢字的高度為32。

圖 23.4.3 “正點(diǎn)原子”32*32字模

提取字模完成后,我們需要在LCD顯示模塊中將獲取的點(diǎn)陣數(shù)據(jù)映射到液晶屏中心32*128

個(gè)的像素點(diǎn)的字符顯示區(qū)域,從而實(shí)現(xiàn)字符的顯示。

程序中各模塊端口及信號(hào)連接如圖 23.4.4所示:

圖 23.4.4 頂層模塊原理圖

圖 23.4.4中的頂層模塊(lcd_rgb_char)、時(shí)鐘分頻模塊(lcd_pll)以及LCD驅(qū)動(dòng)模塊

(lcd _driver)均與“RGB TFT-LCD彩條顯示實(shí)驗(yàn)”完全相同,只對(duì)LCD顯示模塊(lcd_display)

作了修改。因此,這里我們重點(diǎn)講解LCD顯示模塊,其他部分大家可以參考“RGB TFT-LCD彩條

顯示實(shí)驗(yàn)”。

LCD顯示模塊的代碼如下:

1 module lcd_display(

2 input lcd_clk, //lcd驅(qū)動(dòng)時(shí)鐘

3 input sys_rst_n, //復(fù)位信號(hào)

4

5 input [10:0] pixel_xpos, //像素點(diǎn)橫坐標(biāo)

6 input [10:0] pixel_ypos, //像素點(diǎn)縱坐標(biāo)

7 output reg [15:0] pixel_data //像素點(diǎn)數(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ū)域起始點(diǎn)橫坐標(biāo)

15 localparam POS_Y = 11'd224; //字符區(qū)域起始點(diǎn)縱坐標(biāo)

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; //像素點(diǎn)相對(duì)于字符區(qū)域起始點(diǎn)水平坐標(biāo)

33 assign y_cnt = pixel_ypos - POS_Y; //像素點(diǎn)相對(duì)于字符區(qū)域起始點(diǎn)豎直坐標(biāo)

34

35 //給字符數(shù)組賦值,顯示漢字“正點(diǎn)原子”,漢字大小為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; //繪制字符為藍(lán)色

80 else

81 pixel_data <= BLACK; //繪制字符區(qū)域背景為黑色

82 end

83 else

84 pixel_data <= RED; //繪制屏幕背景為紅色

85 end

86 end

87

88 endmodule

LCD顯示模塊直接在“VGA字符顯示實(shí)驗(yàn)”中VGA顯示模塊的基礎(chǔ)上稍作修改即可。由于在

代碼的10至20行聲明了一系列的變量,定義了屏幕分辨率、字符在屏幕上顯示的位置、以及字

符的大小、顏色等,因此我們可以非常方便地通過修改這些變量來(lái)滿足本章的實(shí)驗(yàn)要求。

因?yàn)樽址拇笮∠啾扔赩GA字符顯示實(shí)驗(yàn)發(fā)生了改變,因此在程序的第23行我們將字符數(shù)

組的位寬調(diào)整為128bit,并將前面提取的字模數(shù)據(jù)賦值給該字符數(shù)組,如程序中第35~69行所

示。另外程序第78行將字符顯示區(qū)域內(nèi)的像素點(diǎn)與字符數(shù)組char中的點(diǎn)陣數(shù)據(jù)一一映射,此處

需要將字符數(shù)組的索引調(diào)整為char[y_cnt][11'd127 - x_cnt]。有關(guān)該模塊更詳細(xì)的設(shè)計(jì)思路

請(qǐng)大家參考“VGA字符顯示實(shí)驗(yàn)”。

圖 23.4.5為L(zhǎng)CD顯示模塊顯示漢字“正點(diǎn)原子”第13行時(shí)SignalTap抓取的波形圖。對(duì)照

取模得到的點(diǎn)陣數(shù)據(jù)第13行(01E1E000018181800318004000018000)可以看出,當(dāng)點(diǎn)陣數(shù)據(jù)為

0時(shí),像素點(diǎn)被賦值為黑色(0000);當(dāng)點(diǎn)陣數(shù)據(jù)為1時(shí),像素點(diǎn)被賦值為藍(lán)色(001F);字符

顯示區(qū)域外的屏幕背景為紅色(F800)。各區(qū)域中的像素點(diǎn)能夠被賦以正確的顏色值。

圖 23.4.5 SignalTap波形圖

下載驗(yàn)證

RGB TFT-LCD字符顯示實(shí)驗(yàn)的工程位于lcd_rgb_char文件夾中,請(qǐng)大家參考RGB TFT-LCD彩

條 顯 示 實(shí) 驗(yàn) 中 的 下 載 驗(yàn) 證 方 法 , 將 lcd_rgb_char/par/output_files 目 錄 下 的

“l(fā)cd_rgb_char.sof”文件下載至開發(fā)板。下載完成后在ATK-7’RGBLCD液晶屏模塊上觀察顯

示的漢字如圖 23.5.1所示,說(shuō)明RGB TFT-LCD字符顯示程序下載驗(yàn)證成功。

圖 23.5.1 RGB TFT-LCD字符顯示

以上就是關(guān)于pos機(jī)信號(hào)差顯示x,正點(diǎn)原子開拓者FPGA開發(fā)板資料連載第二十三章RGBTFT的知識(shí),后面我們會(huì)繼續(xù)為大家整理關(guān)于pos機(jī)信號(hào)差顯示x的知識(shí),希望能夠幫助到大家!

轉(zhuǎn)發(fā)請(qǐng)帶上網(wǎng)址:http://www.shineka.com/newsone/55260.html

你可能會(huì)喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 babsan@163.com 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。