16X16点阵汉字显示.docx

上传人:b****6 文档编号:8758484 上传时间:2023-05-14 格式:DOCX 页数:20 大小:240.92KB
下载 相关 举报
16X16点阵汉字显示.docx_第1页
第1页 / 共20页
16X16点阵汉字显示.docx_第2页
第2页 / 共20页
16X16点阵汉字显示.docx_第3页
第3页 / 共20页
16X16点阵汉字显示.docx_第4页
第4页 / 共20页
16X16点阵汉字显示.docx_第5页
第5页 / 共20页
16X16点阵汉字显示.docx_第6页
第6页 / 共20页
16X16点阵汉字显示.docx_第7页
第7页 / 共20页
16X16点阵汉字显示.docx_第8页
第8页 / 共20页
16X16点阵汉字显示.docx_第9页
第9页 / 共20页
16X16点阵汉字显示.docx_第10页
第10页 / 共20页
16X16点阵汉字显示.docx_第11页
第11页 / 共20页
16X16点阵汉字显示.docx_第12页
第12页 / 共20页
16X16点阵汉字显示.docx_第13页
第13页 / 共20页
16X16点阵汉字显示.docx_第14页
第14页 / 共20页
16X16点阵汉字显示.docx_第15页
第15页 / 共20页
16X16点阵汉字显示.docx_第16页
第16页 / 共20页
16X16点阵汉字显示.docx_第17页
第17页 / 共20页
16X16点阵汉字显示.docx_第18页
第18页 / 共20页
16X16点阵汉字显示.docx_第19页
第19页 / 共20页
16X16点阵汉字显示.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

16X16点阵汉字显示.docx

《16X16点阵汉字显示.docx》由会员分享,可在线阅读,更多相关《16X16点阵汉字显示.docx(20页珍藏版)》请在冰点文库上搜索。

16X16点阵汉字显示.docx

16X16点阵汉字显示

 

赣南师院

物理与电子信息学院

课程设计报告书

 

姓名:

邹健

班级:

电子科学与技术06级

学号:

060803005

时间:

2008年12月26日

 

论文题目

16X16点阵汉字显示

课程论文

要求

 

16X16的点阵显示是传统的点阵显示的基本应用,它是很多

复杂的显示的基础。

这种点阵的显示可以使用多种方法来实

现,其中所用到的期间也不尽相同,但是很多基本的算法和

思想都是相同的,只是根据不同的硬件,具体的方法有所区

别。

目前这种简单的显示方法已经很成熟了,很多地方会用

到它。

例如在火车站、机场、银行、证券公司等公共场所的

信息显示都是用的点阵显示。

有些场所使用了一些更为复杂

的点阵。

随着硬件水平的提高,显示的效果会更加美观。

设计一个16X16点阵,使用逐行扫描的方式来不间断地显示

“口六电子”(06电子)四个汉字。

要求汉字可不断地循环

显示,并且使每个汉字之间有停顿。

 

课程论文设计过程

设计方案:

一、系统方案的选择及其方案的论证

1.系统的设计方案:

设计方案一:

利用硬件描述语言VHDL和AHDL进行设计

本实验所使用的16X16的点阵,EDA实验箱上有其接口

电路,列选信为SEL0,SEL1,SEL2,SEL3,经4线16

线译码器输出16列,最左边为第一列,列选信号是由一

个4位向量SEL[3..0]控制;行选信号为H0~H15,是由16

个行信号组成的,每一行由一个单独的位来控制,高电平

有效。

例如“0000”表示第零列,“0000000000000001”表

示第一行的点亮。

由于列是由一个向量决定,而每一时刻

列的值只能有一个固定的值,因而只能使某一列的若干个

点亮,因而就决定了只能用逐列扫描的方法。

原理如图所示

其中ENABLE是使能端;CLK是时钟信号输入端,整个

系统的扫描频率是由它提供的;SEL[3..0]是列选信号输出

端;H0[7..0],H8[7..0]是两个八位向量,它们合起来为16

个行信号输出。

设计方案二.

基于单片机EEPROM2864的点阵汉子显示:

设计方案框图如图所示:

输入接口:

代表扫描和地址产生的时钟信号管脚同可调时钟源相连,扫描时钟CKDSP不低于250HZ,读操作时钟CLK不低于扫描时钟的20倍;汉字选择时钟HZSEL在1HZ左右。

代表字形数据的信号管脚D7~D0同2864的数据口相连。

输出接口:

代表地址信号的管脚A0~A9同2864的地址相应端相连;

代表扫描驱动的HOUT0~7、LOUT0~7,以及SEL0~SEL3信号管脚同16×16LED点阵的段驱动和片选地址端相连;

 

2、系统设计方案的论证:

a、系统设计方案一

是利用VHDL语言进行编写程序,通过MAX-PLUSⅡ进行编译生成逻辑器件仿真。

因为VHDL语言使用比较灵活,可以利用VHDL生成有各种设定逻辑功能的逻辑器件。

并且可以通过MAX-PLUSⅡ进行编译,然后利用MAX-PLUSⅡ进行波形的仿真,可以比较直观的了解电路的设计情况是否符合设计的要求,如果仿真的结果与设计的有差别,可以很方便的对设计的各个模块进行模拟仿真进而找到电路的错误进行修改。

所以利用硬件描述语言进行程序的编写和仿真,可以及时的修改和纠正设计上的错误,还能够根据设计的需要及时的修改设计方案,是电路设计的通用性和兼容性有了很大的提高。

程序编写完成以后,在编译没有错误,并且仿真正确的情况下在将编译的程序下载到相应是PLD芯片当中,进而实现其逻辑功能。

因此能够避免以为设计上的缺陷造成损失。

另外作为课程设计,利用VHDL语言进行设计既可以拓充一下自己的知识储备,为自己以后就业打下一个坚实的基础,因为现在VHDL语言已经成为最流行和应用最为广泛的硬件描述语言,已经成为衡量一个电子工程师是否合格的一个重要的标准。

所以利用VHDL硬件描述语言,可以使自己在设计逻辑电路的同时学习VHDL语言的使用和设计方法,这样既可以提高个人素质又可以巩固课本上的数字电路基础知识。

另外,电路设计好以后,可以通过数字电路实验箱进行验证,方便快捷的检验设计结果是否正确是否符合要求。

 

b、系统设计方案二

基于单片机2864E2PROM存贮器的点阵汉字显示。

单片机是数字电路设计的一个重要的设计元器件,利用单片机,通过编程的控制可以灵活的实现各种功能,制作各种不同的电路,并且单片机的价格便宜,性能稳定,抗干扰的能力和强,功耗也比较小,所以也是制作该点阵汉字显示的理想的逻辑器件,但是由于软件和硬件的限制,还不能够利用单片机进行设计。

所以没有利用该设计方案。

综上所述,综合各种实际情况,该多路抢答器采用试验设计方案一进行设计,即,利用硬件描述语言VHDL配合软件,MAX-PLUSⅡ和数字电路EDA试验箱进行设计、仿真和性能的检测。

二、系统原理图以及对原理图的仿真

1、模块的设计

 

A、——YZ_OK模块用VHDL语言实现,根据其逻辑功能,利用VHDL语言进行编程,实现其逻辑功能。

其程序为:

 

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityyz_okis

port(enable,clk:

instd_logic;

sel:

outstd_logic_vector(3downto0);

h0,h8:

outstd_logic_vector(7downto0));

endyz_ok;

architecturecountofyz_okis

signallie:

std_logic_vector(3downto0);

signalnext1:

std_logic_vector(1downto0);

begin

a1:

process(clk,enable)

begin

ifclk'eventandclk='1'then

ifenable='1'then

iflie>"0000"then

lie<=lie-"0001";else

lie<="1111";

endif;

endif;endif;

sel<=lie;

endprocess;

a2:

process(enable,clk)

begin

ifclk'eventandclk='1'then

ifenable='1'then

casenext1is

when"00"=>

caselieis

when"0011"=>h0<="00000000";h8<="00000000";

when"0100"=>h0<="11111100";h8<="00111111";

when"0101"=>h0<="00000100";h8<="00100000";

when"0110"=>h0<="00000100";h8<="00100000";

when"0111"=>h0<="00000100";h8<="00100000";

when"1000"=>h0<="00000100";h8<="00100000";

when"1001"=>h0<="00000100";h8<="00100000";

when"1010"=>h0<="00000100";h8<="00100000";

when"1011"=>h0<="00000100";h8<="00100000";

when"1100"=>h0<="11111100";h8<="00111111";

whenothers=>h0<="00000000";h8<="00000000";

endcase;

when"01"=>

caselieis

when"0011"=>h0<="00100000";h8<="00100000";

when"0100"=>h0<="00100000";h8<="00001000";

when"0101"=>h0<="00100000";h8<="00000010";

when"0110"=>h0<="10100100";h8<="00000001";

when"0111"=>h0<="00100100";h8<="00000000";

when"1000"=>h0<="10100100";h8<="00000001";

when"1001"=>h0<="00100000";h8<="00000010";

when"1010"=>h0<="00100000";h8<="00001000";

when"1011"=>h0<="00100000";h8<="00100000";

when"1100"=>h0<="00100000";h8<="00000000";

whenothers=>h0<="00000000";h8<="00000000";

endcase;

when"10"=>

caselieis

when"0011"=>h0<="00000000";h8<="00011000";

when"0100"=>h0<="00000000";h8<="00100000";

when"0101"=>h0<="00000000";h8<="00100000";

when"0110"=>h0<="11100000";h8<="00100011";

when"0111"=>h0<="10100000";h8<="00100010";

when"1000"=>h0<="10100000";h8<="00100010";

when"1001"=>h0<="11111100";h8<="00011111";

when"1010"=>h0<="10100000";h8<="00000010";

when"1011"=>h0<="10100000";h8<="00000010";

when"1100"=>h0<="11100000";h8<="00000011";

whenothers=>h0<="00000000";h8<="00000000";

endcase;

when"11"=>

caselieis

when"0011"=>h0<="00000000";h8<="00000000";

when"0100"=>h0<="00000000";h8<="00000001";

when"0101"=>h0<="00000100";h8<="00000001";

when"0110"=>h0<="00001100";h8<="00000001";

when"0111"=>h0<="00010100";h8<="00000001";

when"1000"=>h0<="11100100";h8<="00011111";

when"1001"=>h0<="00010100";h8<="00100001";

when"1010"=>h0<="00000100";h8<="00010001";

when"1011"=>h0<="00000100";h8<="00000001";

when"1100"=>h0<="00000000";h8<="00000001";

whenothers=>h0<="00000000";h8<="00000000";

endcase;

whenothers=>h0<="00000000";h8<="00000000";

endcase;

endif;

endif;

endprocess;

a3:

process(clk)

variableint:

integerrange0to10000;

begin

ifclk'eventandclk='1'then

ifint<10000then

int:

=int+1;

else

int:

=0;

ifnext1="11"then

next1<="00";

else

next1<=next1+'1';

endif;endif;endif;

endprocess;

endcount;

 

B、利用MAX-PLUSⅡ将编辑的程序源生成逻辑器件

C、利用MAX-PLUSⅡ进行仿真

 

三、系统的安装与调试

根据试验的总的原理图,利用MAX-PLUSⅡ软件在编译没有错误的情况下,把实验的原理图进行管脚的分配,然后下载到数字电路的试验箱上的EPLD芯片上,然后按照分配的管脚在试验箱上进行连线。

连线结束后,开通电源,按照设路的功计的要求,对电能进行检测。

1、电路的输入与输出端口:

Clk接时钟信号,对电路的整个工作状态进行控制。

为了使汉字显示迎合人的眼睛的分辨,扫描频率Clk取50Hz。

频率计算方法:

Fclk1=20MHZ×F-sel1×clk1

Fclk2=20MHZ×F-sel1×F-sel2×clk2

Fclk3=20MHZ×F-sel1×F-sel2×F-sel3×clk3

Fclk4=20MHZ×F-sel1×F-sel2×F-sel3×F-sel4×clk4

Fclk5=20MHZ×F-sel1×F-sel2×F-sel3×F-sel4×F-sel5×clk5

所以选择CLK3,即

ENABLE是清零信号的输入,接reset按键。

SEL[3..0]分别接SEL0~SEL3。

H0[7..0]接点阵显示输入端L0~L7,H8[7..0]接L8~L15。

 

2、电路的整体性能的测试与分析

A、电路的性能的分析:

本实验所使用的16X16的点阵,EDA实验箱上有其接口

电路,列选信为SEL0,SEL1,SEL2,SEL3,经4线16

线译码器输出16列,最左边为第一列,列选信号是由一

个4位向量SEL[3..0]控制;行选信号为H0~H15,是由16

个行信号组成的,每一行由一个单独的位来控制,高电平

有效。

例如“0000”表示第零列,“0000000000000001”表

示第一行的点亮。

由于列是由一个向量决定,而每一时刻

列的值只能有一个固定的值,因而只能使某一列的若干个

点亮,因而就决定了只能用逐列扫描的方法。

B、电路性能的测试:

按照原理图的设计下载到硬件实验电路板上后,进行接线,按照电路输入输出端口接线的要求进行接线, 接线完成以后,进行测试。

所得的汉字显示如下图所示:

 

 

 

四、实验的的结论

实验结论:

该试验基本上完成了课程设计的要求,通过自己设置L0~L15的高低电平,使点阵上的小LED块呈一定规律的显示,即出现“0六电子”字样。

所以该实验完成了汉字点阵显示的设计任务和设计要求,设计成功。

五、实验心得体会

本课程设计首先根据电路的设计要求进行实验原理图的设计,然后根据上一步设计中电路的原理,电路功能的实现,利用硬件描述语言VHDL进行程序的编写,利用硬件描述语言将每一个器件的功能实现;然后利用软件MAX-PLUSⅡ对编写的程序进行编译检测,检测没有错误的时候再生成逻辑器件;以上的步骤完成以后,再将所有生成的逻辑器件按照设计要求连接起来,生成总的实验原理图,然后对总的实验原理图进行编译下载,利用MAX-PLUSⅡ的仿真功能进行对设计电路图的模拟仿真,检查涉及功能是否有错误,若出现问题在分析出现的原因,然后针对出错的模块进行修改;最后将设计好的编译下载到芯片上进行实现其功能了。

利用硬件描述语言VHDL进行逻辑电路的设计。

开始的时候由于初次接触到VHDL语言,对VHDL的语言的了解也比较的少,所以开始的时候很没有信息,渐渐的了解到VHDL是一种高级描述语言,适用于行为级和RTL级的描述,最适于描述电路的行为。

VHDL语言强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。

另外也了解到,VHDL语言具有丰富的仿真语句和库函数,使得人和大系统的设计早期,就能够查验涉及功能的可行性,随时对系统进行仿真模拟,是设计者对系统的功能和设计方案作出可行性判断。

VHDL语言的行为描述能力和程序结构,决定了他具有支持大规模设计的分解和一有设计的在利用功能。

他符合市场需求的大规模系统的高效、高速的完成必须有许多人甚至有许多设计开发组共同工作才能实现的一些系统设计的要求。

更重要的是VHDL语言对设计的描述具有相对的独立性,设计者可以不懂硬件的逻辑功能核结构,也不用管设计的最终器件是什么,而进行独立的设计。

慢慢地了解了VHDL语言的特点以后,增强了使用它的信心,通过一些参考书,我了解到VHDL语言的一些基本的编写方法,编写的格式,语言的基本语法。

并开始利用VHDL进行逻辑器件的设计,但是当第一个逻辑器件利用VHDL语言描述完成后,利用MAX—PLUSⅡ进行仿真的时候发现,一百零四行的程序竟然出现了二十多个错误!

主要错误是变量忘记声明,输入输出管教的声明格式错误,程序中漏掉endprocess语句,程序中遗漏分号或者不该用分号的地方用了分号,或者输出的总线数目与设计输出的数目不相符合,调用库文件调用错误等等很多的错误,或者endif语句没有合并到同一行当时很受打击,开始的时候对VHDL语言并不是很熟练,所以有的错误不知道从哪里下手进行修改,很着急。

由于课程设计时间的限制,没有系统认真地学习VHDL语言,于是请教同学,加上MAX软件自身的错误提示,慢慢摸索着把错误一个个地消灭。

当编译完全通过,产生模块的那会,真的很高兴,很有成就感!

产生了模块以后,准备把电路图完善时又产生了新的问题。

模块的输出端H0[7..0]看起来是八个输出,但只有一个输出端口。

由于是第一次,所以这让我很纳闷,到底是接八个output还是一个?

接一个的话又该怎么接?

带着问题问了同学,最后在同学的提示下,接1个output,只要output端的名字和模块一样设置为H0[7..0]即可。

最后在汉字的显示上又碰上了麻烦。

原以为在16X16的字码上的所有的“1”连起来状似什么字,实验箱上就会显示什么字,结果发现满不是那么回事。

然后经过测试了几个字,终于发现了规律:

先把字顺时针翻90度,再镜像翻转,最后再切割成两半,分别输入在H0和H8上。

把字“拼”出来的那一刻,有种拨云见日的感觉,因为我看见了胜利曙光。

总之,通过这一次的课程设计,使我接触到了除了组合逻辑电路和时序逻辑电路以外的另外的一种电路的设计方法——使用VHDL语言制作模块设计电路,并且学会使用这种现在在电子设计当中应用非常广泛的硬件描述语言,也从对MAX—PLUSⅡ软件的了解到能够熟练的使用该软件进行设计、编译、下载、模拟、仿真设计的电子系统。

所以通过这次课程设计我学到了很多以前没有接触到的知识,为以后找工作,更好的适应社会打下了一个坚实的基础。

 

六、参考资料:

1.《单片微型机原理、应用与实验》(第五版)复旦大学出版社张友德等主编;

2.《综合电子设计与实践》清华大学出版社王振红等编著

3.《数字电子技术基础》(第四版)高等教育出版社阎石主编;

4.《电子技术实验与课程设计》清花大学出版社赵淑范、王宪伟编著;

5.《VHDL电路设计实用教程》清华大学出版社齐洪喜、陆颖编著;

6.电子电路图;

7.《电子设计》高等教育出版社蔡明生主编;

8.EC66中国电子技术信息网;

9.电子制作;

设计过程

附:

赣南师范学院2008—2009学年第_一_学期课程论文

行政班级电子科学与技术06级学号_060803005_姓名____邹健__

课程论文题目:

16X16点阵汉字显示

设计要求:

16X16的点阵显示是传统的点阵显示的基本应用,它是很多复杂

的显示的基础。

这种点阵的显示可以使用多种方法来实现,其中

所用到的期间也不尽相同,但是很多基本的算法和思想都是相同

的,只是根据不同的硬件,具体的方法有所区别。

目前这种简单

的显示方法已经很成熟了,很多地方会用到它。

例如在火车站、

机场、银行、证券公司等公共场所的信息显示都是用的点阵显示。

有些场所使用了一些更为复杂的点阵。

随着硬件水平的提高,显

示的效果会更加美观。

现设计一个16X16点阵,使用逐行扫描的方式来不间断地显示“

口六电子”(06电子)四个汉字。

要求汉字可不断地循环显示,

并且使每个汉字之间有停顿。

教师评语:

 

教师签字:

年月日

选课班级电子科学与技术06级任课教师杨汉祥成绩_________

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2