999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的16×16點陣模塊控制器設(shè)計

2018-10-29 08:03:20喬廣欣李亞峻堃斌于寶
天津科技 2018年10期

喬廣欣,李亞峻*,李 松,楊 堃斌,于寶

(天津科技大學電子信息與自動化學院 天津300222)

LED點陣顯示系統(tǒng)不僅能夠靜態(tài)顯示字符和圖像,而且能夠動態(tài)顯示文字、動畫、視頻等信息,具有亮度高、壽命長、價格低、視角大等優(yōu)點,得到廣泛應(yīng)用。

常用的 LED 點陣顯示系統(tǒng)由微控制器、LED點陣顯示屏及其行列驅(qū)動電路組成。所用微控制器的種類有基于AVR單片機的ATmega128[1]和基于51單片機的 AT89C51[2]、基于 ARM 的以 Cortex-M0+為內(nèi)核的 KW01-Zigbee[3]和以 Cortex-M3為內(nèi)核的STM32F103[4]、基于 FPGA 的 Xilinx Virtex4 系列XC4VSX25[5]等。單片機與 ARM 的開發(fā)語言有匯編語言或C/C++語言,F(xiàn)PGA的開發(fā)語言有VHDL語言或 Verilog語言。本文用 VHDL語言編程,采用DIGILENT公司的便攜式 Basys2開發(fā)板,其上嵌有Xilinx Spartan-3E系列FPGA器件XC3S100E[6]。

16×16點陣有32個引腳,不適合直接與微控制器相連,占用太多的引腳資源。實際上常將譯碼器、串并轉(zhuǎn)換芯片組成行列驅(qū)動電路用于控制LED點陣顯示,常見的有用3-8譯碼器74HC138或4-16譯碼器 74HC154輪詢掃描點陣行,用移位寄存器74HC595鎖存點陣列數(shù)據(jù)[1,4]。本文選用74HC138與74HC595驅(qū)動的點陣模塊。

1 16×16點陣模塊的硬件電路

16×16點陣的每一行接LED燈的正極,每一列接 LED燈的負極。點陣的 16行 H1—H16由兩片74HC138組合控制,Hi=1時第 i行被選通;點陣的16列L1—L16由兩片74HC595級聯(lián)進行控制,Hi=1、Lj=0時,第i行第j列的LED燈被點亮。

1.1 點陣行驅(qū)動74HC138

74HC138是一個 3-8譯碼器,當使能信號E3E2E1=100時,A2A1A0從 000到 111依次取值,使輸出端Y0—Y7依次輸出低電平[7]。如圖1所示,用2個74HC138組合能夠?qū)崿F(xiàn)4-16譯碼器,在輸出端外接三極管(圖 1中只示意性地畫了一個)可以驅(qū)動16×16點陣的點陣行 H1—H16(高電平有效)。始終使 G=0,當 D=0時,74HC138-1使能,CBA從 000到 111依次取值,H1至H8行依次被選通;當 D=1時,74HC138-2使能,CBA從000到111依次取值,H9至H16行依次被選通。

圖1 用74HC138控制點陣行Fig.1 Control of dot matrix row with 74HC138

1.2 點陣列驅(qū)動74HC595

74HC595是一個移位寄存器,可實現(xiàn)數(shù)據(jù)的串行輸入/8位并行輸出或者串行輸出[8]。如圖 2所示,將 74HC595-1的 SQH與 74HC595-2的 SI相連,也就是將兩片74HC595級聯(lián),可實現(xiàn)16位數(shù)據(jù)的并行輸出,用于控制16×16點陣的16列L1—L16。

圖2 用74HC595控制點陣列Fig.2 Control of dot matrix column with 74HC595

74HC595有三個重要的輸入引腳,SCK(數(shù)據(jù)輸入時鐘)、SI(數(shù)據(jù)輸入)、RCK(輸出鎖存時鐘),分別對應(yīng)于點陣模塊上的引腳名稱為 CLK、DATA、LATCH。它們的工作時序如圖 3所示,當RCK為低電平時,從SI串行輸入的數(shù)據(jù)D0—D15在每個SCK的上升沿依次被載入移位寄存器。從第 8個 SCK的下降沿開始,數(shù)據(jù)將出現(xiàn)在74HC595-2的輸入端SI。連續(xù)輸入 16位數(shù)據(jù)后,在 RCK的上升沿 D0—D15被鎖存到輸出存儲器中,立即更新點陣列 L16—L1上的信息。

圖3 74HC595的時序圖Fig.3 Timing diagram of 74HC595

2 點陣顯示驅(qū)動模塊

圖4點陣顯示驅(qū)動模塊 disp_dot16×16實現(xiàn)的是點陣行控制信號的產(chǎn)生、16位點陣列數(shù)據(jù)的存取與串行輸出。

圖4 點陣顯示驅(qū)動模塊Fig.4 Dot matrix display driver module

2.1 點陣列數(shù)據(jù)的存儲與調(diào)用

點陣列數(shù)據(jù)從 74HC595串行輸入。由于74HC595只有一個輸出存儲器,只能存儲一行數(shù)據(jù)。所以需要通過編程輪詢掃描點陣的 H1—H16行,同時在 L1—L16列輸入待顯示的信息,利用人眼的視覺暫存現(xiàn)象實現(xiàn)16×16點陣圖形的顯示。

點陣圖像的數(shù)據(jù)較多,適于用ROM或RAM存儲起來,然后用查找表的方式輸出。本設(shè)計直接調(diào)用Xilinx ISE軟件開發(fā)環(huán)境提供的ROM IP核(romip模塊) ,在其上存儲了一幅16×16點陣的圖像信息。在時鐘clk_row的上升沿,根據(jù)ctrl_addr模塊地址addr從romip模塊中讀取數(shù)據(jù)dout,地址addr自加1。

2.2 點陣行列控制器的VHDL程序設(shè)計

ctrl_addr模塊的地址 addr不僅控制點陣列數(shù)據(jù)的存取,還控制ctrl_dot模塊的點陣行選通信號dcba和點陣列數(shù)據(jù)data的更新。為了使74HC595正常工作,需要按照圖 3所示的工作時序編寫它的 VHDL控制程序,將16位并行數(shù)據(jù)data_line(15∶0)轉(zhuǎn)換為串行數(shù)據(jù)輸出給 data,同時產(chǎn)生 74HC595芯片所需的數(shù)據(jù)輸入時鐘clk_hc595和輸出鎖存時鐘latch,它們分別與 16×16點陣模塊的 DATA、CLK、LATCH端相連,如圖2所示。點陣行列控制器的VHDL程序段用如下if語句編程實現(xiàn)。

g<='0'; --選通 74HC138

if rising_edge(clk)then

if latch_tmp='1' then -- ①

clk_hc595<='0';

if(addr_l=addr_tmp)then

data_tmp <= data_line;

addr_tmp:=addr_tmp+1;

latch_tmp<='0';

shift_f<='1';

else

dcba<=addr_l-1;

end if;

else

if shift_f='1' then -- ②

clk_hc595<='0';

data<=data_tmp(0) ;

data_tmp(14 downto 0)<=data_tmp

(15 downto 1);

shift_f<='0';

else -- ③

clk_hc595<='1';

if cnt=X"F" then

latch_tmp<='1';

cnt:=X"0";shift_f<='0';

else

cnt:=cnt+1;shift_f<='1';

end if;

end if;

end if;

latch<=latch_tmp;

end if;

① 裝載新數(shù)據(jù)/選通點陣行。當 latch_tmp為 1時,使 clk_hc595為 0。當 addr_l與預(yù)設(shè)的 addr_tmp不一致時,說明地址未更新,點陣顯示上一行的信息,繼續(xù)檢測。當檢測到addr_l與addr_tmp相同時,說明有新數(shù)據(jù)到來,將新數(shù)據(jù) data_line裝載到data_tmp;addr_tmp自加 1,準備下一個數(shù)據(jù)的地址;使latch_tmp為0,移位標志位shift_f置1。

② 16位數(shù)據(jù)串行輸出,先低位后高位。當latch_tmp為 0時,如果 shift_f為 1,則將 16位并行數(shù)據(jù)的最低位輸出給 data,其他數(shù)據(jù)右移一位,實現(xiàn)數(shù)據(jù)從低位到高位的串行輸出;使 clk_hc595為 0,shift_f為 0。

③ 產(chǎn)生時鐘clk_hc595和輸出鎖存信號latch的上升沿。當latch_tmp為0時,如果shift_f為0,則使clk_hc595由 0變?yōu)?1,每移一位數(shù)產(chǎn)生一個clk_hc595時鐘;當 cnt<15時,說明 16位數(shù)據(jù)未傳完,使cnt自加1,shift_f為1,在下一個clk時鐘的上升沿轉(zhuǎn)到②繼續(xù)串行輸出。當計數(shù)器 cnt=15時,表明16位數(shù)據(jù)全部串行輸出完畢,使latch_tmp由0變?yōu)?1,產(chǎn)生輸出鎖存信號 latch的上升沿,鎖存數(shù)據(jù)。使cnt清零,shift_f為0,在下一個clk時鐘上升沿轉(zhuǎn)到①,等待下一次數(shù)據(jù)更新。

3 16×16點陣顯示的硬件實現(xiàn)效果

對工程進行綜合、實現(xiàn)、產(chǎn)生可編程文件,下載到Basys2開發(fā)板上,實現(xiàn)了如圖5所示的顯示效果。

圖5 16×16點陣顯示效果(津門)Fig.5 16×16 dot matrix display effect(Jinmen)

在存儲器中存入更多幅圖像信息,然后對地址模塊 ctrl_addr進行更復(fù)雜的編程控制,即可實現(xiàn)圖像的動態(tài)顯示,使一幅幅圖像切換顯示,使點陣顯示信息向左或向右移,等等。

4 結(jié) 論

本文著重介紹了點陣行列控制器的 VHDL程序設(shè)計,用 if嵌套語句編程實現(xiàn)了數(shù)據(jù)的存儲調(diào)用與串行輸出、控制 74HC138驅(qū)動點陣行選通、控制74HC595驅(qū)動點陣列,從而在點陣屏上顯示出預(yù)設(shè)的圖像信息。

主站蜘蛛池模板: 国产大片喷水在线在线视频| 99热亚洲精品6码| 国产精欧美一区二区三区| 国产精品天干天干在线观看| 97亚洲色综久久精品| 国产色偷丝袜婷婷无码麻豆制服| 国产浮力第一页永久地址| 欧美中出一区二区| 在线观看免费人成视频色快速| 波多野结衣无码AV在线| WWW丫丫国产成人精品| 在线无码av一区二区三区| 青青国产在线| 伊人国产无码高清视频| 国产激情在线视频| 亚洲国产一区在线观看| 国产91无码福利在线| 亚洲天堂网视频| 无码日韩视频| 亚洲性视频网站| 网久久综合| 精品伊人久久久久7777人| 美女无遮挡免费视频网站| 亚洲精品爱草草视频在线| 国产青榴视频| 国产日韩精品欧美一区喷| 欧美另类精品一区二区三区| 欧美亚洲欧美区| 国产精品网址在线观看你懂的| 国产网友愉拍精品| 亚洲无码高清一区| 凹凸精品免费精品视频| 在线观看免费黄色网址| 99精品免费在线| 亚洲日韩久久综合中文字幕| 婷婷久久综合九色综合88| 午夜福利亚洲精品| 性视频一区| 亚洲国产成人综合精品2020| 亚洲永久视频| 国产综合亚洲欧洲区精品无码| 免费无码一区二区| 欧美h在线观看| 国产精品自拍露脸视频| 欧美人与性动交a欧美精品| 91视频日本| 国产成人AV综合久久| 日韩第九页| 美美女高清毛片视频免费观看| 四虎影视无码永久免费观看| 欧美国产日韩另类| 国内精品伊人久久久久7777人| 欧美无专区| 亚洲AV无码一区二区三区牲色| 欧美五月婷婷| 91午夜福利在线观看| 国产亚洲精久久久久久无码AV| 色综合久久无码网| 亚洲男人的天堂久久香蕉| 国产黄视频网站| 丁香婷婷综合激情| 免费观看成人久久网免费观看| 很黄的网站在线观看| 亚洲伊人电影| 久久久久亚洲精品成人网| 最新国产精品鲁鲁免费视频| 国产亚洲精久久久久久久91| 欧美亚洲日韩中文| 亚洲色图欧美激情| 亚洲欧美一级一级a| 激情六月丁香婷婷四房播| 玖玖精品视频在线观看| A级毛片高清免费视频就| 91丝袜乱伦| 成人中文在线| 巨熟乳波霸若妻中文观看免费| 欧美精品亚洲精品日韩专区va| 成人午夜福利视频| 欧美三级日韩三级| 久久久久亚洲AV成人网站软件| 国产精品福利社| 熟妇人妻无乱码中文字幕真矢织江|