![FPGA课程设计报告_第1页](http://file4.renrendoc.com/view/7cadb8cfbf92d344457069c94945479a/7cadb8cfbf92d344457069c94945479a1.gif)
![FPGA课程设计报告_第2页](http://file4.renrendoc.com/view/7cadb8cfbf92d344457069c94945479a/7cadb8cfbf92d344457069c94945479a2.gif)
![FPGA课程设计报告_第3页](http://file4.renrendoc.com/view/7cadb8cfbf92d344457069c94945479a/7cadb8cfbf92d344457069c94945479a3.gif)
![FPGA课程设计报告_第4页](http://file4.renrendoc.com/view/7cadb8cfbf92d344457069c94945479a/7cadb8cfbf92d344457069c94945479a4.gif)
![FPGA课程设计报告_第5页](http://file4.renrendoc.com/view/7cadb8cfbf92d344457069c94945479a/7cadb8cfbf92d344457069c94945479a5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
题目:基于CPLD的1602字符液晶显示系统设计院系:信息与电气工程学院班级:电子信息工程学号:学生姓名:指导教师:成绩:2011年7月基于CPLD的1602子付液晶显示系统设计一.设计题目:基于CPLD的1602字符液晶显示系统设计二.设计要求技术指标:要求用1602液晶显示字符;显示内容:学号+英文姓名;显示方式:流动显示,开关控制字符流动速度及方向;具有暂停和清屏的功能;三.设计平台:QUARTUSII软件MARS-1270CPLD1602液晶四.设计思路与设计步骤:液晶指令介绍:要想控制1602液晶显示字符,首先需要弄清楚1602有那些可控管脚,有哪些控制命令,如何控制其显示,如何控制其移动及如何控制其移动速度及方1)接口说明:A.读状态:输入DB7二状态字RS=LA.读状态:输入DB7二状态字RS=L,RW=H,E=H,输出:DBO--写指令:输入:DB0—DB7二指令码读数据:输入:DB7二数据写数据:输入:DBO--DB7二数据(3)指令集及其设置说明:A.清屏指令:RS=L,RW=L,E二下降沿脉冲,,输出:无RS=H,RW=H,E=H输出:,DB0--RS=H,RW=L,E=下降沿脉冲,,输出:无<2>光标归位,即将光标撤回液晶显示屏的左上方<3>将地址计数器(AC)的值设为0。B.进入设置模式指令:字符是否移动。参数设定的情况如下所示:位名设置I/D0=写入新数据后光标左移1=写入新数据后光标右移
S0=写入新数据后显示屏不移1=写入新数据后显示屏整体右移1字符C.显示开关控制指令:C.显示开关控制指令:况如下:位名设置D0=显示功能关1=显示功能开C0=C0=无光标B0=光标闪烁1=有光标1=光标不闪烁D.设定显示屏或光标移动方向指令:S/CR/LD.设定显示屏或光标移动方向指令:S/CR/L设定情况00光标左移1格,且AC值减101光标右移1格,且AC值加110显示器上字符全部左移一格,但光标不动11显示器上字符全部右移一格,但光标不动E.功能设定指令功能:设定数据总线位数、显示的行数及字型。参数设定的情况如下:位名设置DL0=数据总线为4位1=数据总线为8位N0=显示1行1=显示2行F0=5X7点阵/每字符1=5X10点阵/每字符F.设定CGRAM地址指令:地址。(000~111)(能定义八个字符)DB2DB1DB0为行号。(000~111)(八行)G■设定DDRAM地址指令;功能:设定下一个要存入数据的DDRAM的地址。H■数据写入DDRAM或CGRAM指令:<2>将使用者自己设计的图形存入CGRA。M
DB7DB6DB5可为任何数据,一般取“000”。DB4DB3DB2DB1DB0对应于每行5点的字模数据。2.设计流程:弄懂1602中各种管脚及其控制方法以及各种指令的指令码后,就可以
进行程序的编写了,首先整理一下编写流程:C初始化】:设'"状态转换:设'"状态转换设计源程序:libraryIEEE;useuseuseentitylcd_1602is--读或写指令|数据控制端--读|写控制端Port(clk:--读或写指令|数据控制端--读|写控制端data:outstd_logic_vector(7downto0);key1:instd_logic;拨码开关控制移动与不动key2:instd_logic);初始化endlcd_1602;ArchitectureBehavioraloflcd_1602isTypestateis(set_qingping,set_nobusy,set_cursor,set_switch,set_ddram,write_data,set_ddram1,write_data1,set_ddram2,write_data2,set_ddram3,write_data3,set_ddram4,write_data4,set_ddram5,write_data5,set_ddram6,write_data6,set_ddram7,write_data7,set_ddram8,write_data8,set_ddram9,write_data9,set_ddram10,write_data10,set_ddram11,write_data11,set_ddram12,write_data12,set_ddram13,write_data13,set_ddram14,write_data14,set_ddram15,write_data15,set_ddram17,write_data17,set_ddram16,write_data16,set_ddram18,write_data18,set_ddram19,write_data19,set_ddram20,write_data20,set_ddram21,write_data21,set_ddram22,write_data22,set_ddram23,write_data23,set_cgram,write_cgram,set_ddram24,write_data24,set_ddram25,write_data25,shift_cur,shift_display);--定义各种状态typeram2isarray(0to7)ofstd_logic_vector(7downto0);constantcgram:ram2:=(("00011111"),("00000100"),("00000100"),("00011111"),("00000100"),("00000100"),("00000100"),("00011111"));--把“王”字字模写入数组;signalcurrent_state:state;signalclkcnt:std_logic_vector(18downto0);Constantdivcnt:std_logic_vector(18downto0):="000000";signalclkdiv:std_logic;signaltc_clkcnt:std_logic;signalclk_int:std_logic;signalclkdiv2:std_logic;signalclkdiv3:std_logic;endprocess;endprocess;signalclkdiv6:std_logic;beginlcdrw<='0';--读写控制端设为写有效process(clk,reset)Beginif(reset='0')thenclkcnt<="0000000000000000000";elsif(clk'eventandclk='1')thenif(clkcnt=divcnt)thenclkcnt<="0000000000000000000";elseclkcnt<=clkcnt+1;--对系统时钟进行分频使其工作周期为endif;endif;endprocess;tc_clkcnt<='1'whenclkcnt=divcntelse'0';--tc_clkcnt为process(tc_clkcnt,reset)beginif(reset='0')thenclkdiv<='0';elsif(tc_clkcnt'eventandtc_clkcnt='1')thenclkdiv<=notclkdiv;--进一步分频使clkdiv=2*;endif;process(clkdiv,reset)beginif(reset='0')thenclk_int<='0';elsif(clkdiv'eventandclkdiv='1')thenclk_int<=notclk_int;--再进一步分频使clk_int=4*endif;endprocess;process(clk_int,reset)beginif(reset='0')thenclkdiv2<='0';—再进一步分频使clkdiv2=8*elsif(clk_int'eventandclk_int='1')thenclkdiv2<=notclkdiv2;endif;endprocess;process(clkdiv2,reset)beginif(reset='0')thenclkdiv3<='0';--再进一步分频使clkdiv3=16*elsif(clkdiv2'eventandclkdiv2='1')thenclkdiv3<=notclkdiv3;endif;process(clkdiv3,reset)beginif(reset='0')thenclkdiv6<='0';--还是进一步分频使clkdiv6=32*elsif(clkdiv3'eventandclkdiv3='1')thenclkdiv6<=notclkdiv6;endif;endprocess;process(clkdiv3,reset)beginif(reset='0')thenlcden<='0';elsif(clkdiv3'eventandclkdiv3='0')thenlcden<=notlcden;--设置使能信号频率endif;endprocess;附注:进行多次分频的目地是为了使字符显示速度及移动速度等合适,便于观察。control:process(clk,reset,current_state)variablecnt1:std_logic_vector(3downto0);--控制各种状态及其换beginifreset='0'thencurrent_state<=set_nobusy;cnt1:=(others=>'1');lcdrs<='0';elsifrising_edge(clkdiv6)then一使用clkdiv6是为了和Icden吻合,达到使能目地current_state<=current_state;lcdrs<='0';casecurrent_stateiswhenset_nobusy=>--测试空闲状态data<="00111000";--38Hcurrent_state<=set_cursor;whenset_cursor=>data<="00000110";--进入模式设置状态写入新数据后光标右移current_state<=set_switch;whenset_switch=>data<="00001100";--显示开关控制状态;显示功能开current_state<=set_qingping;whenset_qingping=>data<="00000001";--清屏指令current_state<=set_ddram;whenset_ddram=>data<="";--设置要显示数据的位置:第1行第1列80Hcurrent_state<=write_data;whenwrite_data=>lcdrs<='1';data<="00110001";--设置要显示的数据1current_state<=set_ddram1;whenset_ddram1=>lcdrs<='0';设置要显示数据的位置:第1行第2列81Hdata<="";current_state<=write_data1;whenwrite_data1=>lcdrs<='1';--设置要显示的数据2data<="00110010";current_state<=set_ddram2;whenset_ddram2=>lcdrs<='0';--设置要显示数据的位置:第1行第3列82Hdata<="";--82Hcurrent_state<=write_data2;whenwrite_data2=>lcdrs<='1';--设置要显示的数据8data<="00111000";current_state<=set_ddram3;whenset_ddram3=>lcdrs<='0';--设置要显示数据的位置:第2行第4列83Hdata<="";current_state<=write_data3;whenwrite_data3=>lcdrs<='1';--设置要显示的数据8data<="00111000";current_state<=set_ddram4;whenset_ddram4=>lcdrs<='0';--设置要显示数据的位置:第1行第5列84Hdata<="";--82Hcurrent_state<=write_data4;whenwrite_data4=>lcdrs<='1';--设置要显示的数据4data<="00110100";current_state<=set_ddram5;whenset_ddram5=>lcdrs<='0';data<="";--设置要显示数据的位置:第1行第6列85Hcurrent_state<=write_data5;whenwrite_data5=>lcdrs<='1';data<="00110000";--设置要显示的数据0current_state<=set_ddram6;whenset_ddram6=>lcdrs<='0';data<="";--设置要显示数据的位置:第1行第7列86Hcurrent_state<=write_data6;whenwrite_data6=>lcdrs<='1';--设置要显示的数据1data<="00110001";current_state<=set_ddram7;whenset_ddram7=>lcdrs<='0';87Hdata<="";--设置要显示数据的位置:第1行第8列87Hcurrent_state<=write_data7;whenwrite_data7=>lcdrs<='1';--设置要显示的数据5data<="00110101";current_state<=set_ddram8;whenset_ddram8=>lcdrs<='0';data<="";--设置要显示数据的位置:第1行第9列88Hcurrent_state<=write_data8;whenwrite_data8=>lcdrs<='1';data<="00101101";--设置要显示的数据-current_state<=set_ddram9;whenset_ddram9=>lcdrs<='0';data<="";--设置要显示数据的位置:第1行第10列89Hcurrent_state<=write_data9;whenwrite_data9=>lcdrs<='1';data<="01011010";--设置要显示的数据Zcurrent_state<=set_ddram10;whenset_ddram10=>lcdrs<='0';data<="";--设置要显示数据的位置:第1行第11列90Hcurrent_state<=write_data10;whenwritedata10=>lcdrs<='1';data<="01000111";-设置要显示的数据current_state<=set_ddram11;whensetddram11=>lcdrs<='0';data<="";--设置要显示数据的位置:1第行第12列91Hcurrent_state<=write_data11;whenwritedata11=>lcdrs<='1';data<="01001100";-设置要显示的数据current_state<=set_ddram12;whensetddram12=>lcdrs<='0';data<="";--设置要显示数据的位置:2第行第1列C0Hcurrent_state<=write_data12;whenwrite_data12=>lcdrs<='1';--设置要显示的数据1data<="00110001";current_state<=set_ddram13;whenset_ddram13=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第2列C1Hcurrent_state<=write_data13;whenwrite_data13=>lcdrs<='1';--设置要显示的数据2data<="00110010";current_state<=set_ddram14;whenset_ddram14=>whenlcdrs<='0';data<="";--设置要显示数据的位置:第2行第3列C2Hcurrent_state<=write_data14;whenwrite_data14=>lcdrs<='1';--设置要显示的数据8data<="00111000";current_state<=set_ddram15;whenset_ddram15=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第4列C3Hcurrent_state<=write_data15;whenwrite_data15=>lcdrs<='1';data<="00111000";--设置要显示的数据8current_state<=set_ddram16;whenset_ddram16=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第5列C4Hcurrent_state<=write_data16;whenwrite_data16=>lcdrs<='1';--设置要显示的数据4data<="00110100";current_state<=set_ddram17;whenset_ddram17=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第6列C5Hcurrent_state<=write_data17;whenwrite_data17=>lcdrs<='1';--设置要显示的数据0data<="00110000";current_state<=set_ddram18;whenset_ddram18=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第7列C6Hcurrent_state<=write_data18;whenwrite_data18=>lcdrs<='1';--设置要显示的数据2data<="00110010";current_state<=set_ddram19;whenset_ddram19=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第8列C7Hcurrent_state<=write_data19;whenwrite_data19=>lcdrs<='1';--设置要显示的数据8data<="00111000";current_state<=set_ddram20;whenset_ddram20=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第9列C8Hcurrent_state<=write_data20;whenwrite_data20=>lcdrs<='1';--设置要显示的数据-data<="00101101";current_state<=set_ddram21;whenset_ddram21=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第10列C9Hcurrent_state<=write_data21;whenwrite_data21=>lcdrs<='1';--设置要显示的数据Xdata<="01011000";current_state<=set_ddram22;whenset_ddram22=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第11列CAHcurrent_state<=write_data22;whenwrite_data22=>lcdrs<='1';--设置要显示的数据Hdata<="01001000";current_state<=set_ddram23;whenset_ddram23=>lcdrs<='0';data<="";--设置要显示数据的位置:第2行第12列CBHcurrent_state<=write_data23;whenwrite_data23=>lcdda<='1';--设置要显示的数据Ydata<="01011001";current_state<=set_cgram;whenset_cgram=>lcdda<='0';data<="01000000";--设定CGRAM地址指令;current_state<=write_cgram;whenwrite_cgram=>lcdda<='1';cnt1:=cnt1+1;--向CGRAM中写入“王”字;data<=cgram(conv_integer(cnt1));ifcnt1="1000"thencurrent_state<=set_ddram24;endif;whenset_ddram24=>lcdda<='0';--设定王字的显示位置第1行第13列92Hdata<="";current_state<=write_data24;whenwrite_data24=>lcdda<='1';--设置要显示的王字data<="00000000";current_state<=set_ddram25;whenset_ddram25=>lcdda<='0';--设定王字的显示位置第2行第13列CCHdata<="";current_state<=write_data25;whenwrite_data25=>lcdda<='1';--设置要显示的王字data<="00000000";ifkey1='1'thencurrent_state<=shift_cur;elsifkey2='1'thencurrent_state<=shift_display;endif;whenshift_cur=>lcdda<='0';data<="00010
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2022火电厂铁路专用线安全管理标准
- 第十六章 区域发展 第2讲 产业转型地区的结构优化高考地理第一轮复习课件
- (高清版)DB11∕T 2385-2024 外保温复合装饰线应用技术规程
- 《信号调制解调》课件
- 2025至2031年中国抽油机专用皮带转离合器行业投资前景及策略咨询研究报告
- 《频度副词讲解》课件
- 2025至2031年中国TPE密封条行业投资前景及策略咨询研究报告
- 《母亲节主题班会》课件
- 医院药学工作转型课件
- 辐射环境监测人员持证上岗考核习题集复习测试有答案
- 珠海市政工程竣工档案验收指南(试行上)
- 2024年广东省广州市中考英语试卷附答案
- 2024年春九年级化学下册 第九单元 溶液教案 (新版)新人教版
- 良性前列腺增生症患者围手术期的护理
- DL∕T 1610-2016 变电站机器人巡检系统通 用技术条件
- GB/T 44143-2024科技人才评价规范
- 《混合动力汽车用变速器效率台架试验方法》
- 对医院领导的批评意见怎么写更合适范文(6篇)
- 裕龙岛炼化一体化项目(一期)环境影响报告
- 2024年北京卷英语真题
- 《网络安全防护项目教程》课件项目4 网络病毒和恶意代码分析与防御
评论
0/150
提交评论