




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
带液晶显示驱动的智能电梯控制器120072008学年度第二学期电子技术基础课程设计智能电梯控制器目录带液晶显示驱动的智能电梯控制器20序31原理与系统设计411思想来源412付诸实施42模块设计621模块示意图和输入输出描述622模块设计过程823波形仿真83智能电梯综合后的整体电路图144基于SD卡的数码音乐播放器程序设计与注释145带有LCD驱动的智能电梯控制器源码与注释1951分频模块1952智能电梯主控制器模块2053数码管译码模块2854数码管时间译码模块2955LCD仲裁器3056LCD驱动模块3057LCD控制模块3258LCD显示模块346智能电梯控制器管脚分配407心得体会与建议_410序本学期初我们有为期一个月的电子技术课程设计,由电信系的曾喻江老师辅导。到第二周带液晶显示驱动的智能电梯控制器3时,我选了基于SD卡的数码音乐播放器和智能电梯控制器两个课设题目,当时是满怀信心的,不过实际是,我没有更多的时间去同时做好两个任务。首先说一下基于SD卡的数码音乐播放器,我主要做了一个工作,就是了解并且熟悉的NIOS软核处理器的设计的基本流程,其实我在大二的时候一直想找一段时间去学习一下NIOS嵌入式系统的开发方面的知识,只不过由于其他的诸多原因一直没有着手。而这次曾老师提供DE的板子为我学习NIOS提供的基础平台。除了看了许多有关SOPC和NIOS软核处理器设计方面的书外,我也编写了一些SD卡数码音乐播放方面的C语言程序(见“基于SD卡的数码音乐播放器程序设计与注释”),可以完成播放一首英文歌曲并且可以在LCD上基本同步显示歌词。不过方法可能有些不好。然后我讲一下智能电梯的编写。智能电梯的编写的过程也不是一帆风顺的。而且我试过好多种方法去实现电梯的状态的转移。起初我想到的肯定是有限状态机。不过由于开始我想到只有六个请求(分别为16楼),后来在老师的启发下和东十二楼的电梯实际运行情况我发现,6个按钮肯定是不够的,所以我又加了5个向上的请求按钮和5个向下的请求按钮,这样总共就有16个按钮了,由于当时我没有想到用信号并置的方法,所以需要分析的情况实在是太多了,我也没有信心了。不过问题始终都是要得到解决的,后来我在我们寝室的一个同学的参考书上看到了一个用VHDL语言编写的智能电梯控制器的程序,不过很不完整,它给我的最大的启发就是“信号并置的算法”,我才发现这样一来的话,我的工作量就大大减少了。当时我不仅采用“信号并置的算法”外,还采纳了它的“以楼层为电梯的状态转移的依据”的思想,这确实是一个不错的方法,不过当时我一直没有任何进展,一是它是用VHDL语言编写的,而且我对这个语言不是很熟悉所以不是特别理解。后来竟然干起了把VHDL语言翻译成VERILOG语言的工作,这样没有任何含金量的工作让我浪费了不少时间。现在想起来,我才发现我竟然迷失了自己,我原先自己的算法已经被丢失了,留下了的仅仅是一些他人的程序。“以楼层为电梯的状态转移的依据”的编程方法让我没有得到任何进展,我放弃的这种处理多种状态的方法,继而转向了我原先的“有限状态机”的方法。使用三段式的有限状态机的方法也花了很多时间去修正和改善。实现了基本的功能,当时一遇到比较复杂的情况时(比喻同时有几个人在请求或者是同时有两个在不同楼层的请求时电梯该如何运行呢,这些特殊情况我在当时一直没有找到合适和有效的方法去解决。)。在这里我想感谢EIHUSTBRIPENGANDRE,这位编程高手给我们展示了应该怎样用有限状态机去处理比较复杂的输入和状态转移的情况。我的程序中难免会有一些他的原创,这一点请读者原谅,由他的启发,我才发现我们应该学会利用强大的逻辑处理技巧去分析问题和解决问题。不同的状态归根结底是不同的二进制数的变化。而且一系列的惯性思维让我们有时候是作茧自缚,比如一说到楼层的变化,我们首先会想到加1或减1这样的算术运算,但是有时一个简单的右移和左移也能轻松的达到目的。现在再想起来我觉得用“有限状态机(FINITESTATEMACHINE)”去实现多状态的电梯是一个不可超越的方法了。希望以后还有这样的机会去做一个硬件课程设计,锻炼编程能力。1原理与系统设计11思想来源平时我们上课或者是上自习都去过东十二楼或者去过科技楼、南一楼,免不了坐坐电梯,对它的基本工作原理我们有知道多少了,这次我们要制作一个智能带液晶显示驱动的智能电梯控制器4电梯控制器,必须对它的工作原理有十分清晰的了解。我们设计的智能电梯控制器应该可以实时接受各楼层的上下请求信号及电梯内部的停靠请求,然后根据这些请求实现对电梯正确的控制1、除了顶层和底层外,各楼层均设有上下请求开关,顶层和底层分别设有下降和上升请求开关,这一点应该不难理解电梯内设有乘客到达层次的请求开关。2、电梯每1S上升或下降一层3、电梯到达有停站请求的楼层后,经过1S后电梯门打开,开门指示灯亮,开门5S后电梯指示灯灭,电梯继续运行,直至运行完最后一个请求后停靠在当前层。以上是我们所应实现的基本功能。我在序言中也讲到了,“应用有限状态机”实现电梯的实时控制是最好不过的方法了,通过我的分析以及参考图书馆的有关书籍,也少不了参照一些网上的程序,最后总结出了电梯正常运行的七个状态上升、下降、上升的过程中途停止、下降的过程中途停止、开门、关门、等待状态。电梯在上述七个状态间的转移是通过三段式状态机来实现的,各状态间的转移大体与生活中的电梯运转一致,有如下的基本原则1、方向为第一优先准则,这就是曾老师给我们的技术指标。电梯在运转时先响应同方向上的请求,只有当同方向上的请求响应完后,才能转而响应不同方向上的请求。2、初始化状态为1楼等待门是关闭的。这个就不用多解释了。除了我对电梯的运行规律做出如上的分析外,我的另一个选择开发智能电梯控制器的原因是我想锻炼一下自己的逻辑思维和分析复杂问题的能力。12付诸实施题目既然选定了,我就要开始收集资料了。最开始我根据DE2板子所能提供的资源,把楼层数设为6层。从我查阅的书籍中我总结了两点是我可以借鉴的。首先,是怎样处理数量繁多的电梯输入信号,如果采用分情况讨论的话,程序一路写完,复杂度肯定是不堪设想,而且我还不敢保证是否分析到所有的情况了。ALWAYSCALL_UP_1ORCALL_UP_2ORCALL_UP_3ORCALL_UP_4ORCALL_UP_5UP_ALL1B0,CALL_UP_5,CALL_UP_4,CALL_UP_3,CALL_UP_2,CALL_UP_1/将各下降请求信号实时地合并1楼为底层,无下降请求,考虑到通用性,将第1位填零ALWAYSCALL_DOWN_2ORCALL_DOWN_3ORCALL_DOWN_4ORCALL_DOWN_5ORCALL_DOWN_6DOWN_ALLCALL_DOWN_6,CALL_DOWN_5,CALL_DOWN_4,CALL_DOWN_3,CALL_DOWN_2,1B0/将各停靠请求信号实时地合并ALWAYSREQUEST_1ORREQUEST_2ORREQUEST_3ORREQUEST_4ORREQUEST_5ORREQUEST_6REQUEST_ALLREQUEST_6,REQUEST_5,REQUEST_4,REQUEST_3,REQUEST_2,REQUEST_1以上这一段程序就是我采用的信号并置处理很多输入信号的一种行之有效的方法。其次,我从资料中学习到的方法就是如何把信号并置的方法和有限状态机联系起来。这一点从下面的参数定义中可以窥见一二。PARAMETERWAIT7B0000001,UP7B0000010,DOWN7B0000100,UPSTOP7B0001000,DOWNSTOP7B0010000,OPENDOOR7B0100000,CLOSEDOOR7B1000000带液晶显示驱动的智能电梯控制器5/定义楼层的符号常量PARAMETERFLOOR16B000001,FLOOR26B000010,FLOOR36B000100,FLOOR46B001000,FLOOR56B010000,FLOOR66B100000PARAMETERTRUE1B1,FALSE1B0/定义门打开和门关闭的符号常量PARAMETEROPEN1B1,CLOSED1B0/定义电梯上升,下降和静止的符号常量PARAMETERUPFLAG2B01,DNFLAG2B10,STATIC2B00这里采用了七个状态实现了有限状态机。WAITUPUPSTOPDOWNOPENDOORDOWNSTOPCLOSEDOOR以上是我分析的两种基本的电梯状态转换图黑线WAITTOUPTOUPSTOPTOOPENDOORTOCLOSEDOORTOWAIT粉红线WAITTODOWNTODOWNSTOPTOOPENDOORTOCLOSEDOORTOWAIT由于状态转换的输入条件实在太多,在此我不画出,读者可以自行在程序(附有详细注释)中领会。我的程序中采用的是标准的MEALY型状态状态机。而且是老师建议的三段式的结构来写的。不过我有一点不明白的就是为什么在我的QUARTUS71中运用RTLVIEW不能显示出这个三段式的有限状态机。不过我会继续努力一下的,目前我智能用图形框来表示这个状态的流程了。带液晶显示驱动的智能电梯控制器62模块设计21模块示意图和输入输出描述(1)电梯主控制器模块ELEVATOR_CONTROLLERPARAMETERVALUECP_50MCLKRESETFORBIDCALL_UP_1CALL_UP_2CALL_UP_3CALL_UP_4CALL_UP_5CALL_DOWN_2CALL_DOWN_3CALL_DOWN_4CALL_DOWN_5CALL_DOWN_6REQUEST_1REQUEST_2REQUEST_3REQUEST_4REQUEST_5REQUEST_6OUT60LIFTSTATE60OVER_ALARMCOUNT_OUT60COUNT20ELEVATOR_CONTROLLERINST3端口声明INPUTPORTCALL_UP_1,CALL_UP_2,CALL_UP_3,CALL_UP_4,CALL_UP_5分别为15楼的上行请求信号,CALL_DOWN_2,CALL_DOWN_3,CALL_DOWN_4,CALL_DOWN_5,CALL_DOWN_6则分别为26楼的下行请求信号REQUEST_1,REQUEST_2,REQUEST_3,REQUEST_4,REQUEST_5,REQUEST_6则分别为电梯内部的停靠16楼的请求上述各端口均为有请求时,输入为高电平,否则为低电平CLK分别为状态转移时钟,RESET为复位信号OUTPUTPORTPOSOUT输出当前电梯所在的楼层,DOORFLAG为开门标志,UPDNFLAG为电梯上下标志LIFTSTATE输出当前电梯的状态POSOUT取值可为6B000001,6B000010,6B000100,6001000,6B010000,6B100000分别代表电梯处在1,2,3,4,5,6楼。这样编码的话,有利于后面的比较判断。DOORFLAG取值可为1B0,1B1,分别代表当前门是关闭和当前门是打开的。UPDNFLAG取值可为2B00,2B01,2B10,分别代表当前电梯是上升的,下降的和静止的。LIFTSTATE7B0000001,7B0000010,7B0000100,7B0001000,7B0010000,7B0100000,7B1000000,分别电梯处于等待模式、上升模式、下降模式、上升停止,下降停止、开门和关门等7个状态。(2)分频模块FREQUENCE_DIV带液晶显示驱动的智能电梯控制器7CP_50MCP_1FREQUENCE_DIVINST2端口说明INPUTPORTSCP_50MOUTPUTPORTSCP_1(3)电梯状态仲裁器ARBITRATORELEVATOR_STATE60COUNT_IN20OPEN_ENABLESTOP_ENABLEUP_ENABLEDOWN_ENABLECLOSE_ENABLEARBITRATORINST5端口说明INPUTPORTSELEVATOR_STATECOUNT_INOUTPUTPORTSOUTPUTOPEN_ENABLE,STOP_ENABLE,UP_ENABLE,DOWN_ENABLE,CLOSE_ENABLE(4)LCD驱动模块DE2_DEFAULTOPEN_ENABLESTOP_ENABLEUP_ENABLEDOWN_ENABLECLOSE_ENABLECLOCK_50KEYLCD_ONLCD_BLONLCD_RWLCD_ENLCD_RSLCD_DATA70DE2_DEFAULTINST4端口说明INPUTPORTSINPUTOPEN_ENABLE,STOP_ENABLE,UP_ENABLE,DOWN_ENABLE,CLOSE_ENABLEINPUTCLOCK_50/50MHZINPUTKEYOUTPUTPORTSINOUT70LCD_DATA/LCDDATABUS8BITSOUTPUTLCD_ON/LCDPOWERON/OFFOUTPUTLCD_BLON/LCDBACKLIGHTON/OFFOUTPUTLCD_RW/LCDREAD/WRITESELECT,0WRITE,1READOUTPUTLCD_EN/LCDENABLEOUTPUTLCD_RS/LCDCOMMAND/DATASELECT,0COMMAND,1DATA带液晶显示驱动的智能电梯控制器822模块设计过程现在我简要的说明一下我的模块的设计过程(1)电梯主控制器模块ELEVATOR_CONTROLLER此段智能电梯控制器由三个重要部分组成的。(A)信号并置部分,完成对5路向上请求、5路向下请求、6路内部请求的信号并置,化繁为简。(B)三段式有限状态机部分。在有请求的情况下,电梯控制器还要根据电梯的当前状态和当前的楼层去判断电梯的下一步该如何运作。(C)计数器部分。完成电梯的开门、关门的时间管理。(2)分频模块FREQUENCE_DIV这段分频器完成对50MHZ的1分频操作。采用传统的“一半就翻转”的计数技巧。(3)电梯状态仲裁器ARBITRATOR完成电梯信号到LCD控制的信号转换。其中也采用了“电梯主控制器”中的信号并置的思想。这一点可以在我的程序中十分清楚的看到,在此我不再赘述。(4)LCD驱动模块DE2_DEFAULT这个模块我是采用“拿来主义”的。因为是DE2板子提供的源程序,所以编写起来还算比较轻松。就只加了一个“根据不同的输入产生不同的输出”的模块。中途还遇到了字符型液晶不能更新的问题,不过在同学的帮助下,最终还是解决了。(5)数码管译码模块(6)数码管时间译码模块以上两个模块一起讲比较合适,因为它们都是采用了同样的译码原则,只不过条件不一样而已。我们可以针对不同的输入根据自己的意愿把它译成同样的数码显示。以上的模块设计过程说的比较的简约。主要是大概的介绍了我的各个模块的基本设计原理,希望读者能从程序中仔细体会这种原理。23波形仿真(1)当电梯处于初始状态时,电梯在高层有向下的请求时带液晶显示驱动的智能电梯控制器9(2)LCD的显示由于数据太多,所以单独显示如下首先显示“ITISSTATIC”随后会显示带液晶显示驱动的智能电梯控制器10以上的字符发送到液晶显示模块之后,可以显示“DOORISRISING”随后会显示可以显示“ITISSTATIC”以上的字符发送到液晶显示模块之后,可以显示“DOORISOPENING”随后会显示带液晶显示驱动的智能电梯控制器11以上的字符发送到液晶显示模块之后,可以显示“ITISCLOSING”最后会显示下列字符,电梯重新回到初始等待状态以上可以显示“ITISSTATIC”说明由于LCD显示波形会占用比较多的空间,所以以上我仅以在高层有向下的请求为例来说明,电梯的状态完全可以通过LCD来正确地显示出来。鉴于此,我的下面的波形将不展示LCD显示部分的波形图。(3)当电梯停在6楼处于等待状态时,在1楼和2楼同时有向上的请求时带液晶显示驱动的智能电梯控制器12(4)当电梯停在1楼处于等待状态时,在6楼和5楼同时有向下的请求时带液晶显示驱动的智能电梯控制器13(5)当电梯停在6楼时,有在5楼的向下的请求时,电梯应该先到五楼,电梯内部请求到1楼,如果电梯在下降的过程中,有在2楼的向上的请求时,电梯应该先相应内部请求,然后相应外部请求(6)电梯的强制运行按钮FORBID带液晶显示驱动的智能电梯控制器14说明由于电梯在实际运行的过程中,会遇到的情况种类很多,所以我在此不会一一例举,在上面,我以几种的典型的情况展示了我设计的智能电梯控制器的运行状态的正确转换。如果读者想要试试其它的几种情况,可以自己运行一下我的程序(附下或已打包)。3智能电梯综合后的整体电路图VCCP_50MINPUTVCCLKINPUTVCRESETINPUTVCFORBIDINPUTVCCAL_UP_1INPUTVCCAL_UP_3INPUTVCCAL_UP_2INPUTVCCAL_UP_4INPUTVCCAL_UP_5INPUTVCCAL_DOWN_2INPUTVCCAL_DOWN_3INPUTVCCAL_DOWN_4INPUTVCCAL_DOWN_5INPUTVCCAL_DOWN_6INPUTVCREQUEST_1INPUTVCREQUEST_2INPUTVCREQUEST_3INPUTVCREQUEST_4INPUTVCREQUEST_5INPUTVCREQUEST_6INPUTVCKEYINPUTPIN_L4LCD_ONOUTPUTPIN_K2LCD_BLONOUTPUTPIN_K4LCD_RWOUTPUTPIN_K3LCD_ENOUTPUTPIN_K1LCD_RSOUTPUTPIN_B6I2C_SDATOUTPUTPIN_A6I2C_SCLKOUTPUTPIN_J1PIN_J2PIN_H1PIN_H2PIN_J4PIN_J3PIN_H4PIN_H3LCD_DATA70OUTPUTLUT_DATA80OUTPUTLUT_INDEX50OUTPUTMLCD_ST50OUTPUTMDLY170OUTPUTMLCD_STARTOUTPUTMLCD_DATA70OUTPUTMLCD_RSOUTPUTFLOR_DIGITAL30OUTPUTPIN_AE23OVER_ALARMOUTPUTOPEN_ENABLESTOP_ENABLEUP_ENABLEDOWN_ENABLECLOSE_ENABLECLOCK_50KEYLCD_ONLCD_BLONLCD_RWLCD_ENLCD_RSLCD_DATA70LUT_DATA80LUT_INDEX50MLCD_ST50MDLY170MLCD_STARTMLCD_DATA70MLCD_RSI2C_SCLKI2C_SDATDE2_DEFAULTINST4PARAMETERVALUCP_50MCLKRESETFORBIDCAL_UP_1CAL_UP_2CAL_UP_3CAL_UP_4CAL_UP_5CAL_DOWN_2CAL_DOWN_3CAL_DOWN_4CAL_DOWN_5CAL_DOWN_6REQUEST_1REQUEST_2REQUEST_3REQUEST_4REQUEST_5REQUEST_6FLOR_DIGITAL30LIFTSTATE60OVER_ALARMCOUNT20ELEVATOR_CONTROLERINSTELEVATOR_STATE60COUNT_IN20OPEN_ENABLESTOP_ENABLEUP_ENABLEDOWN_ENABLECLOSE_ENABLEARBITRATORINST1PIN_N25PIN_N26PIN_P25PIN_AE14PIN_AF14PIN_N2PIN_AD13PIN_AC13PIN_C13PIN_B13PIN_A13PIN_N1PIN_P1PIN_P2PIN_T7PIN_U3PIN_U4PIN_V2PIN_G26PIN_V14基于SD卡的数码音乐播放器程序设计与注释INCLUDE“BASIC_IOH“INCLUDE“LCDH“INCLUDE“SD_CARDH“INCLUDE“STDIOH“INTMAINVOIDUINT16I0,TMP10,TMP20,K0,COUNTFLOATSTAMP3810,15,20,26,32,37,44,48,49,55,60,67,71,72,78,84,89,95,102,106,107,112,118,125,148,153,158,164,171,175,176,181,187,194,199,204,210,217/这个数组我是根据“千千静听”软件中带液晶显示驱动的智能电梯控制器15所/提供的歌词时间戳来记录的,就是指不同/的时间点对应于不同的歌词。其中的标准/参照时间我是根据首次放歌经验校准的。UINT32J720BYTEBUFFER5120/设置缓存WHILESD_CARD_INIT/SD初始化USLEEP500000/延时LCD_TEST/LCD显示FORCOUNT0COUNT0/有停靠请求否BEGINIFREQUEST_ALL/有当前楼层请求,则下一状态转开门ELSEIFREQUEST_ALLPOS/有当前楼层之上的停靠请求否(优先向上的请求)NEXTSTATEUP/有则,下一状态转上升ELSENEXTSTATEDOWN/只有当前楼层之下的停靠请求,下一状态转下降ENDELSEIFUP_ALLENDELSEIFUP_ALLPOS|DOWN_ALLPOS/上下请求中有当前楼层之上的请带液晶显示驱动的智能电梯控制器23求否NEXTSTATEUPELSEIFUP_ALL|DOWN_ALL/上下请求中有当前楼层之下的请求否NEXTSTATEDOWNELSENEXTSTATEWAIT/无任何请求,继续处于WAIT模式ENDUPBEGINIFREQUEST_ALL/有,下一状态转为UPSTOP停靠后要1S才开门,UPSTOP即为这1S的过渡期ELSEIFREQUEST_ALLPOS|UP_ALLPOS/停靠或上升请求中有当前楼层之上的请求否NEXTSTATEUPELSEIFDOWN_ALL0/有下降请求否BEGINIFDOWN_ALLPOSELSEIFDOWN_ALLELSEIFUP_ALLELSENEXTSTATEUPENDELSEIFREQUEST_ALL|DOWN_ALLNEXTSTATEUPELSENEXTSTATEWAITENDUPSTOPBEGINNEXTSTATEOPENDOOR/停靠1时钟周期后开门ENDDOWNSTOPBEGINNEXTSTATEOPENDOOR/停靠1时钟周期后开门ENDOPENDOORBEGINIFCOUNTPOS|UP_ALLPOS/上升或停靠请求中有当前楼层之上的请求否NEXTSTATEUPELSEIFDOWN_ALL0/有下降请求否BEGINIFDOWN_ALLPOS/有当前楼层之上的下降请求,则下一状态转移上升ELSEIFDOWN_ALLELSE/只有低于当前层的下降请求NEXTSTATEDOWNENDELSEIFREQUEST_ALL|UP_ALL/上升和停靠请求中有当前层的请求且只有当前层下的请求NEXTSTATEDOWNELSENEXTSTATEWAIT/无任何请求,转为WAIT模式END/请参考UPDNFLAGUPFLAG的注释ELSEIFUPDNFLAGDNFLAGBEGINIFREQUEST_ALLELSEIFREQUEST_ALLELSENEXTSTATEUP/ENDELSEIFREQUEST_ALL|DOWN_ALLNEXTSTATEUPELSENEXTSTATEWAIT/END/请参考WAIT模式的注释ELSEBEGINIFREQUEST_ALL0BEGINIFREQUEST_ALLELSEIFREQUEST_ALLPOSNEXTSTATEUPELSENEXTSTATEDOWNENDELSEIFUP_ALLENDELSEIFUP_ALLPOS|DOWN_ALLPOSNEXTSTATEUPELSEIFUP_ALL|DOWN_ALLNEXTSTATEDOWNELSE带液晶显示驱动的智能电梯控制器27BEGINNEXTSTATEWAITENDENDENDDEFAULTNEXTSTATEWAITENDCASE/3RDSTATESHIFTALWAYSBLOCK,THESEQUENTIALFSMOUTPUT,有限状态机第三段ALWAYSPOSEDGEREAL_CLKORPOSEDGERESET/OUTPUTIFRESET/复位后初始化当前楼层为第一层,门是关闭的,电梯是静止的BEGINPOS1DOORFLAGCLOSEDUPDNFLAGDNFLAG带液晶显示驱动的智能电梯控制器28ENDUPSTOPBEGINPOSPOSDOORFLAGCLOSEDUPDNFLAGUPFLAGENDDOWNSTOPBEGINPOSPOSDOORFLAGCLOSEDUPDNFLAGDNFLAGENDOPENDOORBEGINPOSPOSDOORFLAGOPENUPDNFLAGUPDNFLAGENDCLOSEDOORBEGINPOSPOSDOORFLAGCLOSEDUPDNFLAGUPDNFLAGENDDEFAULT/默认情况BEGINPOSFLOOR1DOORFLAGCLOSEDUPDNFLAGSTATICENDENDCASEENDENDMODULE53数码管译码模块MODULEDISPLAY_DECODECP_50M,IN,OUT,OVER_ALARMINPUT50ININPUTCP_50MOUTPUT60OUT带液晶显示驱动的智能电梯控制器29OUTPUTOVER_ALARMREG60OUTREGOVER_ALARMALWAYSPOSEDGECP_50MBEGINCASEIN6B000000OUT7B100_0000/06B000001OUT7B111_1001/16B000010OUT7B010_0100/26B000100OUT7B011_0000/36B001000OUT7B001_1001/46B010000OUT7B001_0010/56B100000OUT7B000_0010/6DEFAULTOVER_ALARM1ENDCASEENDENDMODULE54数码管时间译码模块MODULEDISPLAY_DECODE_COUNTCP_50M,IN,COUNT_OUTINPUT20ININPUTCP_50MOUTPUT60COUNT_OUTREG60COUNT_OUTALWAYSPOSEDGECP_50MBEGINCASEIN3B000COUNT_OUT7B100_0000/03B001COUNT_OUT7B111_1001/13B010COUNT_OUT7B010_0100/23B011COUNT_OUT7B011_0000/33B100COUNT_OUT7B001_1001/43B101COUNT_OUT7B001_0010/53B110COUNT_OUT7B000_0010/6DEFAULTENDCASEENDENDMODULE带液晶显示驱动的智能电梯控制器30NOTE由于以上两个模块都比较的简单,故不作详细的注释,而且我在前面也提到了设计思想,应该不是很难理解。55LCD仲裁器MODULEARBITRATORELEVATOR_STATE,COUNT_IN,OPEN_ENABLE,STOP_ENABLE,UP_ENABLE,DOWN_ENABLE,CLOSE_ENABLEINPUT60ELEVATOR_STATE/电梯状态INPUT20COUNT_IN/计数器输出OUTPUTOPEN_ENABLE,STOP_ENABLE,UP_ENABLE,DOWN_ENABLE,CLOSE_ENABLE/输出LCD驱动命令信号ASSIGNOPEN_ENABLECOUNT_IN0/当这在计数时,电梯应该是开门的ASSIGNCLOSE_ENABLEELEVATOR_STATE7B1000000/电梯关门ASSIGNSTOP_ENABLEELEVATOR_STATE7B0000001|ELEVATOR_STATE7B0001000|ELEVATOR_STATE7B0010000/只要满足一种情况电梯都应是处于停止等待状态ASSIGNUP_ENABLEELEVATOR_STATE7B0000010/上升ASSIGNDOWN_ENABLEELEVATOR_STATE7B0000100/下降ENDMODULE56LCD驱动模块MODULEDE2_DEFAULT/CLOCKINPUT/OPEN_ENABLE,STOP_ENABLE,UP_ENABLE,DOWN_ENABLE,CLOSE_ENABLE,CLOCK_50,/50MHZKEY,/LCDMODULE16X2/LCD_ON,/LCDPOWERON/OFFLCD_BLON,/LCDBACKLIGHTON/OFFLCD_RW,/LCDREAD/WRITESELECT,0WRITE,1READLCD_EN,/LCDENABLE带液晶显示驱动的智能电梯控制器31LCD_RS,/LCDCOMMAND/DATASELECT,0COMMAND,1DATALCD_DATA/LCDDATABUS8BITS/CLOCKINPUT/INPUTOPEN_ENABLE,STOP_ENABLE,UP_ENABLE,DOWN_ENABLE,CLOSE_ENABLEINPUTCLOCK_50/50MHZINPUTKEY/LCDMODULE16X2/INOUT70LCD_DATA/LCDDATABUS8BITSOUTPUTLCD_ON/LCDPOWERON/OFFOUTPUTLCD_BLON/LCDBACKLIGHTON/OFFOUTPUTLCD_RW/LCDREAD/WRITESELECT,0WRITE,1READOUTPUTLCD_EN/LCDENABLEOUTPUTLCD_RS/LCDCOMMAND/DATASELECT,0COMMAND,1DATA/LCDONASSIGNLCD_ON1B1ASSIGNLCD_BLON1B1REG310CONTWIREDLY_RSTALWAYSPOSEDGECLOCK_50ORNEGEDGEKEYBEGINIFKEYCONT0ELSECONTCONT1ENDRESET_DELAYR0ICLKCLOCK_50,ORESETDLY_RSTLCD_TESTU5/HOSTSIDEICLKCLOCK_50,IRST_NDLY_RST,IUP_ENABLEUP_ENABLE,IDOWN_ENABLEDOWN_ENABLE,ICLOSE_ENABLECLOSE_ENABLE,IOPEN_ENABLEOPEN_ENABLE,ISTOP_ENABLESTOP_ENABLE,/LCDSIDELCD_DATALCD_DATA,带液晶显示驱动的智能电梯控制器32LCD_RWLCD_RW,LCD_ENLCD_EN,LCD_RSLCD_RSENDMODULE57LCD控制模块MODULELCD_CONTROLLER/HOSTSIDEIDATA,IRS,ISTART,ODONE,ICLK,IRST_N,/LCDINTERFACELCD_DATA,LCD_RW,LCD_EN,LCD_RS/CLKPARAMETERCLK_DIVIDE16/HOSTSIDEINPUT70IDATAINPUTIRS,ISTARTINPUTICLK,IRST_NOUTPUTREGODONE/LCDINTERFACEOUTPUT70LCD_DATAOUTPUTREGLCD_ENOUTPUTLCD_RWOUTPUTLCD_RS/INTERNALREGISTERREG40CONTREG10STREGPRESTART,MSTART/ONLYWRITETOLCD,BYPASSIRSTOLCD_RSASSIGNLCD_DATAIDATAASSIGNLCD_RW1B0ASSIGNLCD_RSIRS/ALWAYSPOSEDGEICLKORNEGEDGEIRST_NBEGIN带液晶显示驱动的智能电梯控制器33IFIRST_NBEGINODONE1B0LCD_EN1B0PRESTART1B0MSTART1B0CONT0ST0ENDELSEBEGIN/INPUTSTARTDETECT/PRESTARTISTARTIFPRESTART,ISTART2B01BEGINMSTART1B1ODONE1B0END/IFMSTARTBEGINCASEST0ST1/WAITSETUP1BEGINLCD_EN1B1ST2END2BEGINIFCONTCLK_DIVIDECONTCONT1ELSEST3END3BEGINLCD_EN1B0MSTART1B0ODONE1B1CONT0ST0ENDENDCASEENDENDEND带液晶显示驱动的智能电梯控制器34ENDMODULE58LCD显示模块MODULELCD_TEST/HOSTSIDEICLK,IRST_N,IOPEN_ENABLE,IUP_ENABLE,IDOWN_ENABLE,ICLOSE_ENABLE,ISTOP_ENABLE,/LCDSIDELCD_DATA,LCD_RW,LCD_EN,LCD_RS/HOSTSIDEINPUTICLK,IRST_NINPUTIDOWN_ENABLE,ICLOSE_ENABLE,ISTOP_ENABLE,IOPEN_ENABLE,IUP_ENABLE/LCDSIDEOUTPUT70LCD_DATAOUTPUTLCD_RW,LCD_EN,LCD_RS/INTERNALWIRES/REGISTERSREG50LUT_INDEXREG80LUT_DATAREG50MLCD_STREG170MDLYREGMLCD_STARTREG70MLCD_DATAREGMLCD_RSREGOKWIREMLCD_DONEPARAMETERLCD_INTIAL0PARAMETERLCD_LINE15PARAMETERLCD_CH_LINELCD_LINE116PARAMETERLCD_LINE2LCD_LINE1161PARAMETERLUT_SIZELCD_LINE1321ALWAYSPOSEDGEICLKORNEGEDGEIRST_NBEGINIFIRST_NBEGINLUT_INDEX0MLCD_ST0MDLY0MLCD_START0MLCD_DATA0MLCD_RS0带液晶显示驱动的智能电梯控制器35ENDELSEBEGINIFLUT_INDEXLUT_SIZEBEGINCASEMLCD_ST0BEGINMLCD_DATALUT_DATA70MLCD_RSLUT_DATA8MLCD_START1MLCD_ST1END1BEGINIFMLCD_DONEBEGINMLCD_START0MLCD_ST2ENDEND2BEGINIFMDLY18H00008MDLYMDLY1ELSEBEGINMDLY0MLCD_ST3ENDEND3BEGINLUT_INDEXLUT_INDEX1MLCD_ST0ENDENDCASEENDELSE/如果已发完第一遍数据,就刷新BEGINLUT_INDEX0ENDENDEND带液晶显示驱动的智能电梯控制器36ALWAYSBEGINIFIOPEN_ENABLE/如果LCD仲裁器的“开门使能”有效就执行CASELUT_INDEX/INITIALLCD_INTIAL0LUT_DATA9H038LCD_INTIAL1LUT_DATA9H00CLCD_INTIAL2LUT_DATA9H001LCD_INTIAL3LUT_DATA9H006LCD_INTIAL4LUT_DATA9H080/LINE1LCD_LINE10LUT_DATA9H120/LCD_LINE11LUT_DATA9B1_0110_0100/D/DOORISOPENLCD_LINE12LUT_DATA9B1_0110_1111/OLCD_LINE13LUT_DATA9B1_0110_1111/OLCD_LINE14LUT_DATA9B1_0111_0010/RLCD_LINE15LUT_DATA9H120/LCD_LINE16LUT_DATA9B1_0110_1001/ILCD_LINE17LUT_DATA9B1_0111_0011/SLCD_LINE18LUT_DATA9H120/LCD_LINE19LUT_DATA9B1_0110_1111/OLCD_LINE110LUT_DATA9B1_0111_0000/PLCD_LINE111LUT_DATA9B1_0110_0101/ELCD_LINE112LUT_DATA9B1_0110_1110/NLCD_LINE113LUT_DATA9B1_0010_1110/LCD_LINE114LUT_DATA9B1_0010_1110/LCD_LINE115LUT_DATA9H120/DEFAULTLUT_DATA9H000ENDCASEELSEIFIDOWN_ENABLE/如果LCD仲裁器的“下降使能”有效就执行CASELUT_INDEX/INITIALLCD_INTIAL0LUT_DATA9H038LCD_INTIAL1LUT_DATA9H00CLCD_INTIAL2LUT_DATA9H001LCD_INTIAL3LUT_DATA9H006LCD_INTIAL4LUT_DATA9H080/LINE1LCD_LINE10LUT_DATA9H120/LCD_LINE11LUT_DATA9B1_0110_1001/I/ITISFALLING带液晶显示驱动的智能电梯控制器37LCD_LINE12LUT_DATA9B1_0111_0100/TLCD_LINE13LUT_DATA9H120/LCD_LINE14LUT_DATA9B1_0110_1001/ILCD_LINE15LUT_DATA9B1_0111_0011/SLCD_LINE16LUT_DATA9H120/LCD_LINE17LUT_DATA9B1_0110_0110/FLCD_LINE18LUT_DATA9B1_0110_0001/ALCD_LINE19LUT_DATA9B1_0110_1100/LLCD_LINE110LUT_DATA9B1_0110_1100/LLCD_LINE111LUT_DATA9B1_0110_1001/ILCD_LINE112LUT_DATA9B1_0110_1110/NLCD_LINE113LUT_DATA9B1_0110_0111/GLCD_LINE114LUT_DATA9B1_0010_1110/LCD_LINE115LUT_DATA9B1_0010_1110/DEFAULTLUT_DATA9H000ENDCASEELSEIFIUP_ENABLE/如果LCD仲裁器的“上升使能”有效就执行CASELUT_INDEX/INITIALLCD_INTIAL0LUT_DATA9H038LCD_INTIAL1LUT_DATA9H00CLCD_INTIAL2LUT_DATA9H001LCD_INTIAL3LUT_DATA9H006LCD_INTIAL4LUT_DATA9H080/LINE1LCD_LINE10LUT_DATA9H120/LCD_LINE11LUT_DATA9B1_0110_1001/I/ITISRISINGLCD_LINE12LUT_DATA9B1_0111_0100/TLCD_LINE13LUT_DATA9H120/LCD_LINE14LUT_DATA9B1_0110_1001/ILCD_LINE15LUT_DATA9B1_0111_0011/SLCD_LINE16LUT_DATA9H120/LCD_LINE17LUT_DATA9B1_0111_0010/RLCD_LINE18LUT_DATA9B1_0110_1001/ILCD_LINE19LUT_DATA9B1_0111_0011/SLCD_LINE110LUT_DATA9B1_0110_1001/ILCD_LINE111LUT_DATA9B1_0110_1110/NLCD_LINE112LUT_DATA9B1_0110_0111/GLCD_LINE113LUT_DATA9B1_0010_1110/LCD_LINE114LUT_DATA9B1_0010_1110/带液晶显示驱动的智能电梯控制器38LCD_LINE115LUT_DATA9H120/DEFAULTLUT_DATA9H000ENDCASEELSEIFISTOP_ENABLE/如果LCD仲裁器的“停止等待使能”有效就执行CASELUT_INDEX/INITIALLCD_INTIAL0LUT_DATA9H038LCD_INTIAL1LUT_DATA9H00CLCD_INTIAL2LUT_DATA9H001LCD_INTIAL3LUT_DATA9H006LCD_INTIAL4LUT_DATA9H080/LINE1LCD_LINE10LUT_DATA9H120/LCD_LINE11LUT_DATA9B1_0110_1001/I/ITISSTATICLCD_LINE12LUT_DATA9B1_0111_0100/TLCD_LINE13LUT_DATA9H120/LCD_LINE14LUT_DATA9B1_0110_1001/ILCD_LI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025浙江宁波市北仑区教育局招聘事业编制教师12人笔试参考题库附答案解析
- 2025内蒙古聚英人力资源服务有限责任公司定向招聘劳务派遣人员23人考试模拟试题及答案解析
- 2025年烟台幼儿师范高等专科学校第二批公开招聘工作人员(5人)考试参考题库附答案解析
- 2025汉中市勉县妇幼保健院招聘(41人)笔试参考题库附答案解析
- 2025云南临沧市沧源佤族自治县审计局面向社会招聘编外人员1人考试模拟试题及答案解析
- 2025四川成都市成华区猛追湾社区卫生服务中心招聘3人考试模拟试题及答案解析
- 2025福建武夷旅游集团有限公司应届生招聘8人笔试参考题库附答案解析
- 新材料研发智能生产线建设与管理方案
- 2025山东日照市土地发展集团有限公司招聘工作人员7人考试备考题库及答案解析
- 银行计算机专业毕业论文
- 混凝土垫层厚度强度检测要求
- EXCEL实操应用培训
- DB32/T 4322-2022家政职业经理人培训规范
- 脊髓电刺激护理
- 国家职业技术技能标准 6-21-07-01 工艺品雕刻工 劳社厅发20031号
- 培训班合伙人合同协议
- 外包合同补充协议
- 全景回顾2024年系统规划与管理师考试试题及答案
- 2025年碳排放管理员职业技能鉴定考试题库及答案
- 必修二英语单词表人教版
- Mission-Planner地面站操作手册
评论
0/150
提交评论