数字电路大型综合实验---点阵显示控制电路的实现_第1页
数字电路大型综合实验---点阵显示控制电路的实现_第2页
数字电路大型综合实验---点阵显示控制电路的实现_第3页
数字电路大型综合实验---点阵显示控制电路的实现_第4页
数字电路大型综合实验---点阵显示控制电路的实现_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电信工程学院 05110班 21号 张仁魁数字电路大型综合实验点阵显示控制电路的实现电信工程学院班级:05110姓名: 张仁魁学号:050312小班序号:21日期:2007.11.10数电实验点阵显示控制电路报告1. 设计课题的任务和要求1. 使用88点阵做一个基本矩阵,设计扫描控制电路,使光点从左上角像素点开始扫描,终止于右下角像素点,然后周而复始地重复下去,扫过一帧所需时间为16秒;2. 用88点阵显示字符,每次显示1个字符,至少显示4个字符,每秒切换一个字符;3. 用1个88点阵显示一幅活动图象或多个字符滚动显示;4. 以上三种功能可以手动或自动转换;二.设计思路以及结构框图执行点阵的循

2、环演示if btn=1则state加1后进入到state 00完成特定波形的变换显示if btn=1则state加1后进入到state 11完成字符滚动显示完成多个字符分别显示if btn=1则state加1后进入到state 10if btn=1则state加1后进入到state 01state值为01则进入功能2模块 判断state的值state值为10则进入功能3模块state值为11则进入增加的功能模块state值为00则进入功能1模块 如前面的任务要求所示,我们要实现的点阵的基本功能有三项,在编写vhdl语言的时候我们将语句进行了分块编写,在实验开始的时候我是按照一个一个功能实现的原

3、则来编写的,先写一个小的程序可以实现点阵的一个功能,对它进行仿真,确认波形正确后分配管脚下载带电路实验版上如果显示的效果好就暂且把它存起来,再对下一个任务编写,最后用一个总的程序将先前的几个子程序结合起来得到了最终的实验结果。在程序的最后我增加了一个输出变换的波形的特殊功能。其结构框图如下所示:3. 分块电路设计模块1:功能1的实现模块的设计思路高位低位=000000,高位表示八行中的哪一行在工作状态,而低位可以来表示列中哪一列出与工作状态,而且当高位处于一个状态的时候列可以将它的八个状态全部显示,比如高位=001时低位将从000增加到111,在此状态下行2中的八个点将依次显示,后高位=010

4、进入到下一行的显示中。模块二:功能2的实现设计思路在这个模块中我显示了四个字符,分别为zrk7首先定义八个行在低位为何值时为有效,在高位4个情况分别一次显示每一个字符模块三:滚动字条的设计思路现将要显示的字符用点阵的方法设计在草纸上,然后将高位=0000分成16个状态,将要显示的字符分成16个,最初一个,然后向左移动2个点的距离,此后依次,知道高位完成16个状态的循环,而此时字符的显示也在人的视觉中形成了看似循环的结构,其实质就是将点阵形状的字符首尾相连后开始循环表示模块四:变动的形状输出的设计思路主体上分成四个部分(1)显示4,5行和4,5列的点显示(2) 分两个小步来完成a显示外围圈1的行

5、b显示外围圈1首尾列(3) 在外围圈2上重复步骤(2)(4) 在外围圈3上重复(2)4. 仿真波形5. 源程序关于功能1点阵循环显示的源程序代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;entity jysm isport(clk2,reset2:in std_logic;定义时钟和复位hang2:out std_logic_vector(7 downto 0);lie2:out std_logic_vector(7 downto 0);定义点阵的行和列end jysm;architecture

6、 m of jysm issignal chushi:std_logic_vector(23 downto 0):=000000000000000000000000;signal gaowei:std_logic_vector(2 downto 0);signal diwei:std_logic_vector(2 downto 0);signal hang1:std_logic_vector(7 downto 0);signal lie1:std_logic_vector(7 downto 0);beginprocess(clk2,reset2)beginif(reset2=1)thenchu

7、shi=000000000000000000000000;当按下复位信号时复位elsif(reset2=0)thenif(clk2event and clk2=1)thenchushi=chushi+1;end if;end if;end process;process(diwei,lie1,chushi)begindiwei(0)=chushi(18);diwei(1)=chushi(19);diwei(2)=chushi(20);将初始信号的18到20赋值到低位if diwei=000then lie1=01111111;elsif diwei=001then lie1=10111111;

8、elsif diwei=010then lie1=11011111;elsif diwei=011then lie1=11101111;elsif diwei=100then lie1=11110111;elsif diwei=101then lie1=11111011;elsif diwei=110then lie1=11111101;elsif diwei=111then lie1=11111110;地位的八个状态对应着列的八个点阵哪一个可以亮,点阵的列为低电平有效end if;lie2=lie1;end process;process(gaowei,hang1,chushi)beging

9、aowei(0)=chushi(21);gaowei(1)=chushi(22);gaowei(2)=chushi(23);将chushi的高三位赋值给高位信号if gaowei=000then hang1=10000000;elsif gaowei=001then hang1=01000000;elsif gaowei=010then hang1=00100000;elsif gaowei=011then hang1=00010000;elsif gaowei=100then hang1=00001000;elsif gaowei=101then hang1=00000100;elsif g

10、aowei=110then hang1=00000010;elsif gaowei=111then hang1=00000001;高位信号的八个状态对应八行,而且行为搞电平有效end if;hang2=hang1;end process;end m; 关于功能2固定显示几个字符功能的实现源程序代码library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_signed.all; entity jyxs is port(clk3,reset3:in std_logic;定义时钟和复位 hang3:out std_logic_vecto

11、r(7 downto 0); lie3:out std_logic_vector(7 downto 0);定义行和列end jyxs;architecture jg of jyxs issignal chushi:std_logic_vector(21 downto 0):=0000000000000000000000;signal gaowei:std_logic_vector(1 downto 0);signal diwei:std_logic_vector(2 downto 0);beginprocess(clk3,diwei,chushi,gaowei,reset3)beginif(r

12、eset3=1)thenchushi=0000000000000000000000;按下复位elsif(reset3=0)thenif(clk3event and clk3=1)thenchushi=chushi+1;end if;end if;gaowei(1 downto 0)=chushi(21 downto 20); diwei(2 downto 0)hang3hang3hang3hang3hang3hang3hang3hang3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie

13、3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3lie3=11110011;高位11时显示数字7end case;end if;end process;end ;关于滚动字符的设计源程序library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_signed.all; entity jygd is port(clk4,reset4:in std_logic; hang4:out std_logic_vector(7 downto 0); lie4:out std_logic_vector(7

14、 downto 0);end jygd;architecture a of jygd issignal chushi:std_logic_vector(21 downto 0):=0000000000000000000000;signal diwei:std_logic_vector(2 downto 0);signal gaowei:std_logic_vector(3 downto 0); signal lie:std_logic_vector(7 downto 0); signal hang:std_logic_vector(7 downto 0);beginprocess(clk4,r

15、eset4,chushi,diwei,gaowei,lie,hang) beginif (reset4=1)then chushi=0000000000000000000000;chushi复位 elsif (reset4=0)then if(clk4event and clk4=1)then chushi=chushi+1; end if;end if;gaowei(3 downto 0)=chushi(21 downto 18);diwei(2 downto 0)hang=10000000;liehang=01000000;liehang=00100000;liehang=00010000

16、;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00

17、000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;lieh

18、ang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=1000000

19、0;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=0

20、0100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;lie

21、hang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=000001

22、00;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=00000001;liehang=10000000;liehang=01000000;liehang=00100000;liehang=00010000;liehang=00001000;liehang=00000100;liehang=00000010;liehang=

23、00000001;lie=11111111;end case;高位1111的时候各个行中列显示向左偏出2个点 的距离end if; lie4=lie; hang4=hang;end process;end ;关于变换的图形的设计源程序代码如下library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;entity jydh isport(clk5,reset5: in std_logic; hang5:out std_logic_vector(7 downto 0); lie5:out std_logic_vec

24、tor(7 downto 0) ) ;end jydh;architecture a of jydh istype states is (s0,s1,s2,s3,s4,s5,s6);signal state: states;signal chushi:std_logic_vector(18 downto 0):=0000000000000000000;signal gaowei:std_logic_vector(1 downto 0);signal diwei:std_logic;signal lie:std_logic_vector(7 downto 0);signal hang:std_l

25、ogic_vector(7 downto 0);beginprocess(clk5,reset5)beginif(reset5=1)thenchushi=0000000000000000000;elsif(reset5=0)thenif(clk5event and clk5=1)thenchushi=chushi+1;end if;end if;end process;process(diwei,chushi,hang,state)begingaowei(0)=chushi(17);gaowei(1)=chushi(18);高位赋值diweihang=00011000;liehang=0010

26、0100;liehang=00111100;liehang=01000010;liehang=01111110;liehang=10000001;liehang=11111111;liestateif(diwei=0)then state=s1;elsif(diwei=1)then stateif(diwei=0)then state=s3;elsif(diwei=1)then stateif(diwei=0)then state=s5;elsif(diwei=1) then state=s6;外围圈3需要两个态来完成end if;end case;hang5=hang;lie5clk, reset2=k,hang2=h2,lie2=l2);xs:jyxs port map(clk3=clk,reset3=k, hang3=h3,lie3=l3);gd:jygd port map(clk

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论