用单片机+CPLD实现液晶显示
字符液晶显示的CPLD实现

字符液晶显示的CPLD实现目录1 前言 (1)2 总体方案设计 (2)2.1设计方案一 (2)2.2设计方案二 (2)2.3设计方案三 (3)2.4方案比较 (4)2.5方案选择 (4)3 单元模块设计 (5)3.1电源电路 (5)3.2时钟电路 (6)3.3复位电路 (6)3.4液晶显示电路 (7)3.5JTAG下载电路 (9)3.6电源滤波电路 (10)3.7I/O口引出电路 (10)4 特殊器件介绍 (11)4.1 CPLD器件介绍 (11)4.2HS162液晶器件介绍 (12)4.3EPM570T144C5器件介绍 (13)5 最小系统原理 (14)6软件实现 (15)7 系统仿真及调试 (21)7.1 仿真 (21)7.2 调试 (23)8 总结与体会 (24)9 致谢 (25)10 参考文献 (26)附录1:系统原理图附录2:系统PCB图1 前言EDA是电子设计自动化(Electronic Design Automation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言HDL( Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。目前的EDA产业正处在一场大变革的前夕,对更低成本、更低功耗的无止境追求和越来越短的产品上市压力正迫使IC供应商提供采用0.13μm或以下的千万门级的系统芯片,而这些系统芯片的高复杂性设计更加依赖于EDA供应商提供全新的设计工具和方法以实现模拟前后端、混合信号和数字电路的完全整合。然而,这些新的需求为当代EDA工具和设计方法带来了不少新的挑战与机会。例如,如何在工艺上防止模拟电路与数字电路之间的干扰;现有的大部份EDA工具最多只能处理百万门级设计规模,随着IC设计向千万门级以上规模发展,现有EDA工具和方法必须进行升级。如何融合各EDA供应商的工具,以便向IC设计界提供更高效能和更方便的RTL-to-GDSII或Conc-ept-to-GDSII整合设计环境;为保证深亚微米(0.13μm或以下)和更低内核工作电压(1.8V或以下)时代的信号完整性和设计时序收敛,必须采用新的设计方法。本设计利用CPLD控制字符液晶实现字符的显示。字符液晶由液晶显示器和专用的行,列驱动器,控制器及必要的连接件装配而成,可显示数字和英文字符。由CPLD作为控制芯片,通过VreilogHDL硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。然后通过quartusⅡ软件进行仿真验证。2 总体方案设计2.1 设计方案一由单片机AT89S52来实现字符液晶显示。图2-1 利用单片机实现液晶显示硬件原理图方案一的原理简述:该方案是用单片机AT89S52来实现字符液晶显示。通过编程实现对单片机的控制,显示出想要显示出来的字符。 2.2设计方案二采用FPGA 器件实现液晶显示。图2-2 FPGA 液晶显示的框架结构图晶振RS485电源FPGA电平转换列驱动器电平转换行驱动器LCDPC方案二的原理简述:FPGA主要是指采用四输入查找表(LUT4)的基于SRAM的器件,因为SRAM是挥发的,掉电丢失数据,所以FPGA需要外部配置ROM,上电的时候,从外部的ROM把FPGA的配置数据导入到FPGA芯片内部后工作。具有SRAM的FPGA采用标准的CMOS制造工艺,可以随着最新的工艺而更新还代,给用户带来了实惠;衡量FPGA 容量的一个基本指标是逻辑单元(Logic cell或者Logic element),由一个可编程得LUT4和一个可编程的DFF组成,LUT4完成组合逻辑功能,而DFF用来实现时序功能。FPGA的容量从几千的逻辑单元到几十万的逻辑单元不等。如Altera的Cyclone/II/III和Stratix/II/II 系列芯片,Xilinx Spartan3/3E/3A/3AN和Virtex4/5系列芯片都是FPGA器件。在编程上FPGA比CPLD具有更大的灵活性。CPLD通过修改具有固定内连电路的逻辑功能来编程,FPGA主要通过改变内部连线的布线来编程;FPGA可在逻辑门下编程,而CPLD是在逻辑块下编程。2.3 设计方案三基于复杂可编程逻辑器件CPLD,通过EDA技术,采用VerilogHDL硬件描述语言实现液晶显示。图2-3 CPLD与字符液晶HS162的接口典型电方案三的原理简述:液晶显示器件(LCD)是一种平板薄型显示器件,它的驱动电压很低、工作电流极小。它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它由32个5*8点阵字符位组成,每一个点阵字符位都可以显示一个字符,但是它不能显示图形。模块内部自带有160个5*8点阵字型的字符发生器CHROM和8个可由用户自定义的5*8的字符发生器CGRAM。本次设计原理图如图2-3所示:D0-D7为传给液晶的数据(可能为显示数字或控制液晶指令),RS用于控制将D0-D7的数据写入指令寄存器还是数据寄存器,RW为读写控制信号,E为使能信号。电位器调节液晶的对比度,以到最佳显示效果。2.4 方案比较通过方案一二三的比较,可以看出方案一的设计使用分立元件电路较为多,因此会增加电路调试难度,且电路的不稳定性也会随之增加,而采用CPLD芯片实现的电路,由于在整体性上较好,在信号的处理和整个系统的控制中,CPLD的方案能大大缩减电路的体积,提高电路的稳定性。此外其先进的开发工具使整个系统的设计调试周期大大缩短,一般来讲,同样的逻辑,基于FPGA要比基于单片机要快很多,因为它们工作的原理是完全不同的。单片机是基于指令工作的,同样的激励到达单片机后,单片机首先要判断,然后读取相应的指令,最后作出相应,这每一步都是需要在单片机的时钟驱动下一步步的进行。而基于FPGA则是把相应的逻辑“暂时”固化为硬件电路了,它对激励作出的响应速度就是电信号从FPGA的一个管脚传播另一个管脚的传播速度,当然这指的是异步逻辑,同时电信号也要在芯片内进行一些栅电容的充放电动作,但这些动作都是非常非常快的。本次设计不是很复杂,也不需要大量LE,但CPLD比FPGA更加适合编程调试,FPGA的价格也是CPLD倍数。2.5 方案选择在现代SOC技术的引领下,人们对低故障、高实时、高可靠、高稳定的性能更加青睐,结合本设计的要求及综合以上比较的情况,我们选择了基于CPLD的液晶显示方案三。3 单元模块设计本设计由CPLD 作为控制芯片,通过VreilogHDL 硬件描述语言设计,运用自顶而下的设计思想,按功能逐层分割实现层次化的设计。下面介绍主要模块的功能及作用。 3.1 电源电路电源采用集成稳压电路 ,器件用LM 7805 ,三端式集成稳压器的输出电压是固定的,在使用中不能进行调整,固定正电压输出。滤波器电容一般采用几百~几千微法。当稳压器距离整流滤波电路比较远时,再输入端必须接入电容器,以抵消电路的电感效应,防止产生自激震荡,输出电容用以滤除输出端的高频信号,改善电路的瞬态响应。P1输入8到12V 的直流电压,输入的直流电压通过一个保护二极管后,通过一个三端集成稳压器LM7805得到一个5V 的直流电源,将此时的输出电压再经过一次电容滤波,得到一个稳定的+5V 直流电源输出。图3-1为电源电路图。图3-1 5V 电源电路采用LM1117-3.3稳压芯片进行3.3V电压设计,设计电路简单,纹波比较小。其典型应用如下所示:VC V图3-2 3.3V 电源电路由图3-1中输出的5V直流电压作为输入电压,经过稳压器件LM1117-3.3变换后,经过滤波电容滤波后得到3.3V稳定的直流电源。D401做为电源指示灯的作用,灯亮表示输出电压正常。3.2 时钟电路一般常用的CPLD中常用的振荡器有石英晶体振荡器和有源晶振。本次设计才用MAXII的EPM570T144C5进行设计,由于设计芯片中没有PLL,所以要想实现高速设计,必须采用高频时钟源,因此只有采用有源晶振才能得到可靠的时钟源。本次设计中采用了,两个时钟源,一个作为平常使用,另外一个作为备用时钟源。时钟电路如下图所示:(a) (b)图3-3 晶振电路图3-3中的电容均为滤波作用,使晶振的电源更加稳定。电阻的作用都是为了使电路阻抗匹配。3.3复位电路为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。微机电路在工作中受到干扰后,容易出现CPU程序“跑飞”而盲目运行甚至出现死机现象。此时复位信号有效,使微机系统重新恢复正常运行。这种监视CPU运行的电路称为WATCHDOG电路。VC C 3.3VC2110u图3-4 复位电路3.4 液晶显示电路液晶显示器件(LCD)是一种平板薄型显示器件,它的驱动电压很低、工作电流极小。它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它由32个5*8点阵字符位组成,每一个点阵字符位都可以显示一个字符,但是它不能显示图形。模块内部自带有160个5*8点阵字型的字符发生器CHROM和8个可由用户自定义的5*8的字符发生器CGRAM。D0-D7为传给液晶的数据(可能为显示数字或控制液晶指令),RS用于控制将D0-D7的数据写入指令寄存器还是数据寄存器,RW为读写控制信号,E为使能信号。电位器调节液晶的对比度,以到最佳显示效果。图3-5 液晶显示电路CPLD芯片与液晶显示器件(LCD)的管脚锁定如表3-1所示:表3-1 CPLD与HS162-4的管脚对应关系3.5 JTAG 下载电路JTAG 是英文“Joint Test Action Group (联合测试行为组织)”的词头字母的简写,该组织成立于1985年,是由几家主要的电子制造商发起制订的PCB 和IC 测试标准。JTAG 建议于1990年被IEEE 批准为IEEE1149.1-1990 测试访问端口和边界扫描结构标准。该标准规定了进行边界扫描所需要的硬件和软件。自从1990 年批准后,IEEE 分别于1993 年和1995 年对该标准作了补充,形成了现在使用的IEEE1149.1a-1993 和IEEE1149.1b-1994。JTAG 主要应用于:电路的边界扫描测试和可编程芯片的在线系统编程。标准的 JTAG 接口是 4 线: TMS 、 TCK 、 TDI 、 TDO ,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。JTAG 测试允许多个器件通过 JTAG 接口串联在一起,形成一个 JTAG 链,能实现对各个器件分别测试。 JTAG 接口还常用于实现 ISP ( In-System Programmable 在系统编程)功能,如对 FLASH 器件进行编程等。通过 JTAG 接口,可对芯片内部的所有部件进行访问,因而是开发调试嵌入式系统的一种简洁高效的手段。目前 JTAG 接口的连接有两种标准,即 14 针接口和 20 针接口。其典型连接如图所示:(其中JTAG_TCK,JTAGTDO, JTAG_TMS JTAG_TDI 分别对应接CPLD 相应的管脚)。JTAG 91K R81K R101KVC C 3.3VJTAG_TCK JTAG_TDO JTAG_TMS JTAG_TDIU201A图 3-6 JTAG 下载电路3.6 电源滤波电路由于CPLD可以工作在几百兆的时钟频率下,对电源的要求比较高,为了改善电源的品质,在CPLD的每个电源管脚处都加上一个滤波电容。C 3.3V图 3-7 JTAG电源滤波电路3.7 I/O口引出电路图3-8 I/O口引出电路为了方便电路板的后续扩展运用,特意将部分I/O口通过插针引出,可以很方便的运用排线与扩展器件连接。4 特殊器件介绍4.1 CPLD器件介绍CPLD是Complex Programmable Logic Device的缩写,它是有最早的PLD器件发展形成的高密度可编程逻辑器件,它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、对设计者的硬件经验要求低、标准产品无需测试、保密性强、价格大众化等特点。CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆(“在系统”编程)将代码传送到目标芯片中,实现设计的数字系统。许多公司都开发出了CPLD可编程逻辑器件。比较典型的就是Altera、Lattice、Xilinx 世界三大权威公司的产品。如Altera公司的MAXII器件,就是其极具代表性的一类CPLD器件,是有史以来功耗最低、成本最低的CPLD。MAX II CPLD基于突破性的体系结构,在所有CPLD系列中,其单位I/O引脚的功耗和成本都是最低的。Altera公司的MAX7000A系列器件是高密度、高性能的EPLD,它是基于第二代MAX 结构,采用CMOS EPROM工艺制造的。该系列的器件具有一定得典型性,其他结构都与此结构非常的类似。它包括逻辑阵列块、宏单元、扩展乘积项、可编程连线阵列和IO控制部分。由于大多数CPLD是基于乘积项的“与或”结构,故适合设计组合逻辑电路。下图4-1(a)、(b)就是CPLD的器件结构和结构原理图。图4-1(a)CPLD器件的结构图4-1(b)CPLD结构原理4.2 HS162液晶器件介绍表4-1 CGROM 中的字符代码与图形对应关系4.3 EPM570T144C5器件介绍EPM570T144C5器件是Altera 公司在2000推出的2.5V 低价格SRAM 工艺FPGA 结构与10KE 类似,带嵌入式存储块(EAB),部分型号带PLL,主要有1K10、1K30、1K50、1K100等型号。EP1K30TC144器件中,EP1K 表示器件类型,30表示器件内有30K 个逻辑门,T 代表封装类型,C 表示用途为商用,144表示管脚数为144。其引脚图如图4-2所示。U201AU201C图4-2 EPM570T144C5的引脚图5 最小系统原理本设计的电路实现是基于CPLD最小系统原理图,再配以所需的外设。最小系统设计包含了时钟产生电路模块、程序下载配置电路模块、电源电路模块,通过连线将各个模块进行连接成最小系统。由于本设计电路比较简单,外设比较少,使用到的五个独立键盘,模拟实现信号输入。我们对外设也作了扩展准备,将CPLD芯片的IO引脚进行了插针引出,以方便后续电路的扩展。将外设与最小系统进行合理正确连接,即可实现本设计的电路原理要求。(系统原理图和系统PCB图见附录)。6软件实现显示模块采用有限状态机来进行设计。设置了8个状态,其中Idle为空闲状态,主要包括有写命令和写数据来进行显示。应该注意的是,液晶是慢速的设备,每次操作之前都应该通过其状态寄存器来判断其是否处于忙的状态,在本次设计我们才操作一次等待较长的时间所以没有进行忙的检测。HS162-4液晶模块的读写操作、屏幕和光标的操作都是通过指令变成来实现的,为了方便控制,可以采用状态机进行设计,在设计中采用8个状态:图6-1 字符液晶控制器状态图其中,“IDLE”表示空闲状态,“SETCGRAM”是CGRAM状态,“SETFUNCTION”是工作方式设置状态,“SWITCHMODE”表示输入方式设置状态,“RETURNCURSOR”表示光标归位状态,“SHIFT”表示字符移位状态,“WRITERAM”是写RAM状态。HS162液晶控制指令由图6-2给出:图6-2 HS162液晶控制指令程序设计部分:module lcd_HS162(clk,rst,lcd_e,lcd_rw,lcd_rs,data);input clk,rst;output lcd_e,lcd_rw,lcd_rs; reg lcd_rw,lcd_rs;output[7:0] data;reg[7:0] data; reg[10:0] state; reg[6:0] count;reg[255:0] data_in_buf;reg flag,clk2KHz;reg[23:0] cnt; reg[5:0] disp_count;parameter IDLE =8'b00000000;parameter CLEAR =8'b00000001; //清屏parameter SETCGRAM =8'b00000010; //设置CGRAMparameter SETFUNCTION=8'b00000100;//工作方式设置1:8/1:4位数据接口;两行/一行显示;5×10/5×7点阵parameter SWITCHMODE =8'b00001000;//显示状态设置,显示开/关;光标开/关;闪烁开/关parameter SETMODE =8'b00010000;//输入方式设置,读写数据后ram地址增/减1;画面动/不动parameter RETURNCURSOR =8'b00100000; //归home位parameter SHIFT =8'b01000000;parameter WRITERAM =8'b10000000; //写RAMparameter cur_inc =1;parameter cur_dec =0;parameter cur_shift =1;parameter cur_noshift =0;parameter open_display =1;parameter open_cur =0;parameter blank_cur =0;parameter shift_display =1;parameter shift_cur =0;parameter right_shift =1;parameter left_shift =0;parameter datawidth8 =1;parameter datawidth4 =0;parameter twoline =1;parameter oneline =0;parameter font5x10 =1;parameter font5x7 =0;parameter data_in=" One World One Dream ";/* 定义液晶上显示的字符内容,注意空格也算为字符,总共两行32个字符;只需更改双引号内的字符即可实现显示字符的改变*/always@(posedge clk) //由50MHz时钟分频得到2KHZ时钟begin if(cnt==23'h6A18)begin cnt<=0;clk2KHz<=~clk2KHz; endelse cnt<=cnt+1;endassign lcd_e=clk2KHz;always @ (posedge clk2KHz or negedge rst)if(!rst) beginstate<=CLEAR;flag<=0;data_in_buf<=data_in;disp_count<=6'b0;endelse begincase(state)IDLE: begin state<=IDLE; endCLEAR: begin lcd_rs<=0;lcd_rw<=0;data<=8'b0000_0001;state<=SETCGRAM; end SETCGRAM: beginlcd_rs<=0;lcd_rw<=0;data<=8'b10000000;state<=SETFUNCTION;endSETFUNCTION : begin //工作方式设置lcd_rs<=0;lcd_rw<=0;data[7:5]<=3'b001;data[4]<=datawidth8;data[3]<=twoline;data[2]<=font5x10;data[1:0]<=2'b00;state<=SWITCHMODE;endSWITCHMODE: begin //显示状态设置lcd_rs<=0;lcd_rw<=0;data[7:3]<=5'b00001;data[2]<=open_display;data[1]<=open_cur;data[0]<=blank_cur;state<=SETMODE;endSETMODE: begin //输入方式设置lcd_rs<=0;lcd_rw<=0;data[7:2]<=6'b000001;data[1]<=cur_inc;data[0]<=cur_noshift;state<=WRITERAM;endRETURNCURSOR: beginlcd_rs<=0;lcd_rw<=0;data<=8'b00000010;state<=WRITERAM;endSHIFT: beginlcd_rs<=1;lcd_rw<=0;data<=data_in_buf[255:248];data_in_buf <= (data_in_buf << 8);disp_count <= disp_count + 1'b1;state<=WRITERAM;endWRITERAM: beginlcd_rs<=1;lcd_rw<=0;if(disp_count == 32) begindisp_count <= 4'b0;data_in_buf<=data_in;state <=CLEAR;endelse if(disp_count==16)beginlcd_rs<=0;lcd_rw<=0;data<=8'b11000000;state<=SHIFT; endelse begindata<=data_in_buf[255:248];data_in_buf <= (data_in_buf << 8);disp_count <= disp_count + 1'b1;state <= WRITERAM;endendendcaseendendmodule7 系统仿真及调试7.1 仿真通过QuartusII软件,我们进行了仿真,其仿真波形如下图:图7-1 波形仿真图根据上面所编写的程序就可以进行仿真,可以看到仿真的结果如图7-1所示,界面上正确的显示出了“ONE WORLD ONE DRENM” 字样。本设计输入信号只有clk时钟信号和rst复位信号,字符的显示主要是通过信号cld_e来控制,而cld_e是由clk分频而来。改变上面程序中的parameter data_in=" ONE WORLD ONE DREAM ";为:parameter data_in=" yang hua qiong Design "; 则仿真结果如图7-2 所示:图7-2波形仿真图由仿真结果可以看到,界面上正确显示出了“yang hua qiong Design”字样。由上面的仿真结果可知,本设计的程序设计是正确的,可以达到预期的效果,能够用CPLD实现字符液晶显示。在QuartusII软件中利用硬件描述语言描述电路后,用RTL Viewers生成的对应的电路图如图7-3所示:图7-3 用RTL Viewers生成的对应的电路图7.2 调试在QuartusII软件中,通过对所设计的硬件描述语言代码进行波形仿真后,达到了预期效果,于是,我们在该软件上进行下载配置设置。在Assignments菜单下选中Devices,在Family栏选择ACEX1K,选中EP1K30TC144-2器件。再在Assignments菜单下选中Pins 按照相应要求对管脚进行锁定。最后在Tools菜单下,选中Programmer,对配置方式进行设置,这里选择Passive Seril(PS)被动串行模式。选择好要下载的硬件设备后点击Start即可开始编程下载了。调试过程为在线调试。在通过调试中,我们发现了很多问题,现归纳如下:(1)在软件上能实现仿真的程序不一定在硬件电路上就能运行,原因有很多,这里是由于电路中的时钟频率太快,若不增加一个分频电路,灯闪烁时间太快,肉眼无法观察,故设计了一个50MHZ到2KHZ的分频电路。(2)调试中的实际问题需要考虑,人同时按多个键的同步性,不能达到时钟的精度,比如模拟键盘的输入状态是高电平有效,我们设计的结构是按键按下为低,这是若要实现该电路的控制就需要同时按下2个键,为了使输入状态实现只需按下一个键的按键控制,需要对按键逻辑取反。(3)由于分频的运算很大,故增加分频电路后,在QuartusII软件中则不能进行正确的仿真,可以直接将程序下载到电路板上去调试。8 总结与体会两周的课程设计使我们将课堂上的理论知识有了进步的了解,并增强了对EDA技术这门课程的兴趣。在本次设计中,我们完成本系统设计的要求及功能。在设计开始前我们对各个模块进行了详细的分析和设计准备工作,设计过程中,我们相互协调,积极参与完成各个技术实现的难点。通过本次设计,我们在对EDA这门技术上有了更深刻的认识,也从实践的例子中去感受到了EDA设计给我们设计带来的改变与进步。我们不仅掌握QuartusII软件和protel软件的使用,与此同时,我们还对电子设计的思路有了更多的认识。通过对EDA设计中的TOP-DOWN设计方式的运用,体会到了对于一个大型系统的设计方案选取应从顶向下的设计思路,这与传统的至底向上的设计方式有很大改进,且设计效率得到大大提高。由于时间仓促和我们自身水平有限,本设计在功能上也只是完成了一些基本功能,对于电路的可靠性,稳定性等参数还未做过详细的测试。总体来说,这次实习我受益匪浅。在摸索该如何设计电路使之实现所需功能的过程中,特别有趣,培养了我的设计思维,增加了实际操作能力。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐。9 致谢在黄老师的辛勤指导下,我们小组同学积极讨论和思考,完成本此课程设计,此次设计,使我们受益匪浅。在此我要感谢电气信息学院提供这次课程设计的机会,让我们可以锻炼自己的动手能力,从实际操作中更深刻的理解熟悉在课堂上所学习的理论知识,为我们熟悉我们的专业相关技术知识提供了平台。在这里我要特别感谢黄老师,在我们的设计过程中,至始至终都得到了黄老师的悉心指导和耐心的讲解,我们的设计才得以顺利完成。这次课程设计能取得成功,还有我们组的几个同学通力合作,大家在设计中献言献策,积极发挥着个人的聪明与才智。10 参考文献[1] 谢自美. 电子线路设计(第二版)[M]. 华中科技大学出版社. 2000[2] 卢毅编著.VHDL与数字电路设计[M].北京.科技大学出版.2001[3] 侯佰亨,顾新编著.VHDL硬件描述语言与实际应用[M].西安.西安电子科社.2000[4] 康华光陈大钦. 电子技术基础模拟部分(第四版)[M]. 高等教育出版社.1987[5](美)J.Bhasker . Verilog HDL 硬件描述语言[M] . 机械工业出版社.2000[6] 周明德. 微型计算机系统原理及应用(第四版) [M]. 清华大学出版社. 2002[7] 张洪润等. 电子线路及应用. 北京.科学出版社. 2002[8] 杨宝清. 实用电路手册. 北京. 机械工业出版社. 2002[9] 潘松,黄继业.EDA技术实用教程[ M ].北京:科学出版社, 2002.[10] 杨君,王景存.基于VerilogHDL的流水线的设计方法及应用[J].武汉科技大学学报(自然科学版) ,2002, 25 (4) : 394—396.[11] 郝国法,黄睿,郝琳等.FPGA在自动售邮票机设计中的应用[J].武汉科技大学学报(自然科学版),2001,24(2):178—180.[12] 王景存,李炳生,郝国法等.用FPGA实现数字逻辑分析仪设计[J].武汉科技大学学报(自然科学版),2001,24(1):298—300.[13] 胡华春,石玉.数字锁相环原理与应用[M].上海科学技术出版社,1990.。
基于CPLD点阵电子显示屏的设计

应用技术研究陈 霞 女 工学硕士 电气工程系讲师基于CPLD 点阵电子显示屏的设计陈霞 肖颖[文章摘要] 本文介绍了以AT-89S52单片机为控制核心,基于CPLD 独立扫描的实用、高效的智能型LED 大屏幕显示屏系统设计方法。
[关 键 词] MCU 、点阵LED 、CPLD社会的信息化,促进了显示技术的发展,LED 大屏幕点阵显示系统作为一项高科技产品已经渐渐融入了人们的生活。
与传统的显示媒体相比,由于其亮度高、动态影像显示效果好、耗能少、使用寿命长、显示内容多样、显示方式灵活、性价比高等优势,已经开始广泛应用于各行各业。
采用单片机控制的LED 点阵显示屏显示形式美观大方,显示内容灵活可变,具有低功耗,结构简单,操作方便等优点,已广泛应用于银行,证券,影视,体育和公路交通等各个方面,显示了其良好的市场前景。
1 系统总体框图整个显示系统可以分为①CPU 主控电路部分②串行数据的传送和时序控制部分 ③CPLD 行列译码扫描部分④实时时钟控制电路部分⑤与PC 机串口通讯部分⑥按键控制电路部分⑦三极管驱动电路部分⑧点阵显示部分。
图1 系统总体框图 2 各单元电路设计 2.1 扫描控制逻辑设计对大型LED 点阵显示屏而言,由于其数据量大,必须有很快的刷新频率,如刷新速度跟不上,会造成点阵屏画面晃动和闪烁。
解决这个问题有很多方法,例如,采用PC 机的DMA 控制器来提高数据传输速率,采用并行数据传输方式,分单元多CPU 控制方式等等。
我们采用CPU 控制,采用超大规模可编程逻辑阵列器CPLD 构成行扫描和列控制模块,利用VHDL 语言设计控制逻辑,串行列数据分时传输,行扫描的方式,可充分发挥CPLD 和数字电路EDA 设计的优势,硬件电路设计简单可靠,具有极高的稳定性。
从而使整个显示屏可以顺序工作,并利用CPU 控制扫描频率,实现了屏幕无闪烁显示。
本设计采用具有160个I/O 端口的EPM7128SQC160-10芯片,只用一片CPLD 芯片,通过简单的编程模拟8片74LS595(8位输出锁存移位寄存器)和一片74LS154(4-16译码器),内部逻辑如图2所示。
基于单片机和CPLD的LED点阵书写显示屏设计

《工业控制计算机》2011年第24卷第10期基于单片机和CPLD的LED点阵书写显示屏设计Design of LED Dot-Matrix Handwritten Display1系统整体方案本系统主要有五部分组成:单片机控制电路、光笔电路、LCD显示电路、LED驱动电路和按键输入部分。
总体方案如图1所以。
单片机发出扫描信号,光笔检测该扫描信号然后反馈给单片机,单片机根据反馈信号实现不同的功能,LCD同步显示各种状态信息。
图1系统设计框图2硬件电路设计2.1光笔探头和电路设计光笔探头采用光敏二极管,为了减小环境光线的影响,在光敏二极管探测头套一层黑色橡胶管,让探头陷入橡胶管一定的距离,但这个距离不能太大,否则将检测不到信号。
通过这样处理后可以在一定程度上屏蔽环境光的影响。
具体结构示意图如图2所示。
图2光敏二极管探头处理结构示意图光笔电路是一个门限可调的比较器,具体电路图如图3所示。
运放AR4组成一同向放大电器,将采集的电压放大2倍,之所以要将信号放大2倍,主要是在设计光敏二极管探头时,已经在探头上套上一层黑色的橡胶管,放大倍数和探头陷入橡胶管的深度有关,在测试中发现放大2倍时效果是最好的。
运放AR2组成一个比较器电路,而且这个比较器的门限电压可以通过调节R5改变,以适应环境光线的改变。
在放大器和比较器的输出端都设计了一个跟随器,进一步减小下级电路对前级电路的影响。
图3光笔电路图2.2CPLD内部电路设计及地址编写这部分在Quartus II环境下完成的,可用原理图输入和Ver-ilog硬件描语言,这里采用直观的原理图输入。
CPLD内部的电路中主要由两个部分组成:总线地址译码部分和总线数据锁存部分。
地址锁存和译码部分电路如图4所示。
在Quartus II中,直接调用集成器件库74373,在ALE下降沿完成P0口地址锁存,并在ALE低电平阶段保持作为低8位地址Addr[7..0]。
地址锁存器输出的地址再通过3-8线译码器输出,就可以控制更多外设,在Quartus II中,直接调用集成器件库74138。
基于CPLD的LED显示屏控制系统的设计

科技资讯 SCIENCE & TECHNOLOGY INFORMATION
19
科技资讯 2009 NO.32 SCIENCE & TECHNOLOGY INFORMATION
信 息 技 术
图 6 CPLD 的模块化设计框图
图 5 主单片机控制程序图
上 位 机 进 行 通 信 的 问 题 ( 见 图 5 、6) 。 2.3 CPLD的程序设计框图
2 屏幕扫描逻辑的设计
2.1 屏幕扫描逻辑的设计思路 LED显示屏驱动电路主要采用动态扫描
显示,动态扫描显示是在一个比较短的时间周 期内将LED显示屏上需要发光的像素逐行分 别点亮。动态扫描显示方式采用多行(16行即 1/16扫描方式)的同名列共用一套列驱动器。 行扫描电路由译码器构成,逐行扫描信号。从 第一行开始,按顺序依次对各行进行扫描。一 旦该行选通,这一行上的相应像素就可以由列 驱动信号点亮。当一行的扫描持续时间结束 后,下一行以同样的方法进行显示。在1/16扫 描方式中,就是把16行都扫过一遍之后,又从 第一行开始下一个周期的扫描。
屏幕刷新频率关系到屏幕显示效果的好 坏 ,从 数 据 更 新 的 角 度 来 讲 ,扫 描 时 钟 频 率 越 高 ,留 给 数 据 更 新 的 时 间 就 越 少 ,不 利 于 系 统 刷 新 ;扫 描 时 钟 频 率 越 低 ,扫 描 时 间 越 长 ,将 引 起 屏 幕 闪 烁 。一 般 来 讲 , 这 个 刷 新 频 率不能低于50HZ(帧频),否则,会产生屏幕闪 烁现象。 2.2 主控电路的程序流程
单片机LCD液晶显示的接法

51单片机综合学习之1602字符型液晶显示篇在日常生活中,我们对液晶显示器并不陌生。
液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。
在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED 数码管、液晶显示器。
发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。
在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器画质高且不会闪烁。
数字式接口液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。
体积小、重量轻液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。
10.8.1 液晶显示简介①液晶显示原理液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。
液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。
②液晶显示器的分类液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。
除了黑白显示外,液晶显示器还有多灰度有彩色显示等。
如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。
③液晶显示器各种图形的显示原理:线段的显示点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。
单片机实现液晶显示

单片机实现液晶显示一背景对于现在流行的嵌入式电子产品,如便携式仪表,智能电器,消费类电子产品等,显示输出模块是必不可少的,在诸多的显示方式中,液晶显示已经成为首选。
本次主要介绍如何在51单片机系统中实现液晶显示;即在51单片机系统上运行C51程序,通过单片机与液晶模块之间的接口电路,控制液晶模块,显示需要的内容,并控制显示的格式。
二设计思路分析1液晶显示模块单片机的主要输出方式有放光二极管,数码管,和液晶显示。
而液晶显示是通过液晶显示模块实现的。
液晶显示模块是一种将液晶显示器件,链接件,集成电路,PCB线路板,背光源,结构件装配在一起的组件单片机系统使用液晶显示模块作为输出的优点:a 显示质量高。
b 数字式接口。
c 体积小,重量轻。
d 功耗低。
根据显示方式和内容的不同,液晶显示模块可以分为数显液晶模块,点阵字符液晶模块,点阵图形液晶模块。
数显液晶模块是一种由段型液晶显示器件与专用的集成电路组装成一体的功能部件,只能显示数字和一些标识符;点阵字符液晶模块是由点阵字符液晶显示器件和专用的行列驱动器,控制器及必要的链接件,结构件装配而成的,可以显示数字和西文字,但不能显示图形;点整图形液晶模块的点阵像素连续排列,行和列在排布中均没有空格,不仅可以显示字符,而且也可以显示连续,完整的图形。
点阵图形液晶根据液晶模块的驱动方式可以分为行列驱动型,行列驱动控制型,行列控制型。
2液晶显示原理以显示功能最完整的点阵图形液晶而言,液晶显示可分为线段显示,字符显示以及汉字显示。
1)线段显示液晶的显示屏有64行,每行有128列,每8列对应1个字节的8个位,即每行由16字节,共16 * 8 = 128个点组成,屏上64 * 16个显示单元和显示RAM区1024个字节相对应,每个字节的内容和屏上的相应位置的亮暗对应。
2)字符显示一个字符由6 * 8或8 * 8这样的点阵组成,要正确显示,必须要找到和屏上某几个位置对应的显示RAM区得8个字节,并且要使每个字节的不同的位为1,其他位为0,为1的点亮,为0的点暗,通过明暗的变化显示某个字符。
基于CPLD的LED点阵显示控制器
基于CPLD的LED点阵显示控制器摘要:中小规模的LED点阵显示使用非常广泛,采用单片机控制时,需要扩展大量的外围资源,并且不便于进行扩展、修改和维护。
在系统可编程逻辑器件具有丰富得I/O口及内部资源,器件的编程和修改也极为方便。
本文中,采用在系统可编程逻辑器件EPM7128作为核心来实现对LED点阵显示的控制,不但简化了外围电路、而且易于修改、扩展和维护。
关键词:可编程逻辑器件、在系统可编程、LED点阵在系统可编程技术(ISP—In System Programming)及其在系统可编程系列器件,是9 0年代迅速发展起来的一种新技术和新器件。
现场可编程器件(FPGA和CPLD)等ISP器件无须编程器,利用器件厂商提供的编程套件,采用自顶而下的模块化设计方法,使用原理图或硬件描述语言(VHDL)等方法来描述电路逻辑关系,可直接对安装在目标板上的器件编程。
它易学、易用、简化了系统设计,减小了系统规模,缩短设计周期,降低了生产设计成本,从而给电子产品的设计和生产带来了革命性的变化。
1、系统结构及工作原理LED点阵显示控制的传统方式是采用单片机或系统机作为CPU来实现,当系统显示的信息比较多时,由于单片机的输入/输出端口(I/O)有限,采用此方式的成本将大大增加,系统和程序的设计难度也急剧增加;而且,当系统完成后修改、改变显示方式或扩展时,所需改动的地方比较大,甚至有可能需要重新设计;另外,在以显示为主的系统中,单片机的运算和控制等主要功能的利用率很低,单片机的优势得不到发挥,相当于很大得资源浪费。
如果采用现场可编程逻辑器件作为CPU来设计控制器,选择合适的器件,利用器件丰富的I/O口、内部逻辑和连线资源,采用自顶而下的模块化设计方法,可以方便地设计整个显示系统。
由于PLD器件的外围器件很少,且可以利用PLD的编程端口(可复用)进行在系统编程,使得系统的修改、显示方式的改变和扩展都变的非常简单、方便。
单片机实现LCD液晶显示器控制原理
摘要LCD液晶显示已经是人机界面的关键技术。
本文对基于单片机的LCD液晶显示器控制系统进行了研究。
首先在绪论中介绍了本课题的课题背景、研究意义及完成的功能。
本系统是以单片机的基本语言C语言来进行软件设计,51的编程语言常用的有二种,一种是汇编语言,一种是 C 语言。
汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而 C 语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且 C 语言还可以嵌入汇编来解决高时效性的代码编写问题。
对于开发周期来说,中大型的软件编写用 C 语言的开发周期通常要小于汇编语言很多。
综合以上C 语言的优点,我在学习时选择了C 语言指令的执行速度快,节省存储空间。
为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。
使硬件在软件的控制下协调运作。
正文中首先简单描述系统硬件工作原理,且附以系统硬件设计框图,并介绍了单片机微处理器的发展史,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程, 并具体描述了AT89C51 AMPIRE128×64接电路接口的软、硬件调试。
其次阐述了程序的流程和实现过程。
本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。
最后对我所开发的用单片机实现LCD液晶显示器控制原理的设计思想和软、硬件调试作了详细的论述。
关键词:单片机,微处理器,LCD,89C51,AMPIRE128×64ABSTRACTThe LCD manifestation has been the key technique of the an-machine interface. This text to basic proceeded the research in Micro Controller Unit liquid crystal display control system. Introduced the lesson a background of this lesson and study meaning and finished functions in introduction first. This system edits collected materials the language to proceed with single the basic language of a machine the software designs, the instruction carries out the speed quick, save memory. For the sake of easy to expand with the design adoption mold a logic for turning construction, making procedure designing relation that change, software more shorter and more easier to understand. Make hardware control in software descended to moderate the operation.The text inside describes the system hardware work principle in brief first, and attach with the system hardware design frame diagram, combine development history that introduced the single a machine microprocessor, discuss this graduate design a function for applied each hardware connecting a people the technique connects with each one a mold piece and work processes, combine to describe in a specific way 89C51, and the AMPIRE128×64 circumscribes the electric circuit connects oscular and soft, the hardware adjusts to try. Expatiated the process of the procedure the next in order with realizes process. Develop to me finally of use the single a machine realizes the design thought that the liquid crystal display of LCD control principle with soft, the hardware adjusted to try to make the detailed treatise.Keywords:single chip microcomputer,microprocessor,LCD,89C51,AMPIRE128×64目录摘要 (I)ABSTRACT .......................................................................................................................... I I1 前言 (1)2 系统总体设计 (2)2.1原理图 (2)2.2软件设计方案 (3)2.3仿真结果 (4)3 ATMEL 89C51系列单片机 (7)3.1AT89C51单片机内部的组成结构图 (7)3.2单片机CPU结构 (7)3.3AT89C51用户系统 (8)3.4引脚介绍 (8)3.589C51内部特殊寄存器介绍 (13)3.5.1 IE;中断允许寄存器 (14)3.5.2 定时器/计数器控制寄存器TCON (14)3.5.3 中断优先寄存器--IP (15)3.5 .4 中断的响应过程 (16)3.5 .5 电源控制寄存器PCON (16)3.5.6 定时器/计数器工作方式 (17)4 LCD芯片 (20)4.1LCD接口 (20)4.2指令描述 (21)4.3接口时序说明 (24)5 系统软件设计 (26)5.1系统流程图 (26)5.2汉字和图形字模提取 (26)5.3汉字图形显示函数 (28)5.4单片机播放音乐并同步显示歌词 (30)6 系统仿真PROTEUS和编译KEILC软件 (34)6.1P ROTEUS ISIS仿真系统基本知识 (34)6.1.1 系统概述 (34)6.1.2 进入Proteus ISIS (34)6.1.3 Proteus工作界面及窗口说明 (35)6.1.4 Proteus绘图流程举例 (37)6.2KEIL C X51软件的使用 (38)6.2.2 为项目新建文件 (40)6.2.3生成.HEX文件 (41)致谢 (43)参考文献 (44)1 前言当今是一个信息化的时代,信息的重要性是不言而喻的,获取手段显得尤其重要。
基于51单片机实时控制的LCD液晶显示屏循环显示系统
本文研制一种基于51单片机实时控制的LCD液晶显示屏循环显示系统。硬件系统由单片机最小系统和液晶显示系统组成。此次课程设计采用AT89C51型单片机和12864点阵型LCD液晶显示器来实现。LCD上要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。要想实现循环移动,只需不断改变图片的字模数据在液晶面板上的显示位置(RAM地址)即可。程序采用C语言编写,使用Keil编译器进行编译。
#define FIRSTROW 0xc0 //显示起始行设置,参考指令表,在0到63行选择
#define SETY 0xb8 //Y方向,8页64行,参考指令表,[2..0]在0到8页选择
#define SETX 0x40 //X方向,半屏64列,参考指令表,在0到63列选择
/*与硬件相关的编址设计*/
}
while((temp|0x7f)==0xff);//检测D7是否为1,1表示LCD忙,如果忙,继续检测,直到空闲止
}
3.1.5 命令/数据写入函数
函数lcd_cmd_wr将命令写入LCM模块;
void lcd_cmd_wr(unsigned char cmdcode, unsigned char right)
例如点亮128*64的屏中(20,30)位置上的液晶点,因列地址30小于64,该点在左半屏第29列,所以CS1有效;行地址20除以8取整得2,取余得4,该点在RAM中页地址为2,在字节中的序号为4;所以将二进制数据00010000写入Xpage=2,Yaddress=29的存储单元中即点亮(20,30)上的液晶点。
{
unsigned char i,j;
for(i=0;i<8;i++)
{
//页地址设定
基于单片机控制的LCD液晶显示
3.4原理图
15
3.5硬件电路的装配
15
第 4章 软件设计
17
4.1软件设相关文字库指令介绍
17
图 4.2总体程序流程图
22
4.3小结
29
第 5章 产品调试
32
5.1 调试的设备
32
5.2 调试步骤
32
5.3 故障分析
33
第 6章 产品使用说明
34
6.1 功能描述
34
6.2 使用说明
34
第 7章 心得体会
2.2 方案论证与选择
经过小组共同讨论并对设计任务的分析,目前有两套方案可以完成设计要 求;
2.2.1 方案一
本方案采用带中文字库 ST7920串\并口的 LCD12864液晶屏作为显示模
块,AT89S52单片机作为核心控制系统。
表 2.2.1 带字库的 12864液晶引脚功能
引脚
标识
说明
1
GND
电源地(OV)
现实意义: 此次设计选择的是单片机液晶显示系统的开发,是基于 ST7920液晶显示控 制器,在 AT89S52单片机实验系统上实现。ST7920是液晶显示控制器,AT89S52 单片机是美国 Atmale公司推出的一种低功耗、高性能 CMOS8位微控制器。 将 来如果有机会从事这方面的工作,要运用的液晶显示控制器不一定是 ST7920, 但这次毕业设计中学到的东西为此打下了良好的基础,相信自己能做好这方面的 工作。
2
张家界航空工业职业技术学院毕业设计说明书
本设计以 AT89S52单片机作为 LCD液晶显示系统控制器为主线,基于单片 机 AT89S52,采用的液晶显示控件器的芯片是 ST7920,主要实现中文显示的功 能。同时也对部分芯片和外围电路进行了介绍和设计,并详细阐述了程序的各个 模块。本系统是以单片机的 C 语言来进行软件设计,指令的执行速度快,可读 性强。为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关 系更加简洁明了。使硬件在软件的控制下协调运作。其次阐述了部分程序的流程 图和实现过程。本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行 各功能模块的编写。