霓虹灯控制系统(软件设计)(论文初稿)doc.doc_第1页
霓虹灯控制系统(软件设计)(论文初稿)doc.doc_第2页
霓虹灯控制系统(软件设计)(论文初稿)doc.doc_第3页
霓虹灯控制系统(软件设计)(论文初稿)doc.doc_第4页
霓虹灯控制系统(软件设计)(论文初稿)doc.doc_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

北京邮电大学世纪学院毕业设计(论文)题 目 霓虹灯控制系统软件设计 学 号 08040118 学生姓名 聂琦 专业名称 电子科学与技术专业 所在系(院) 电子与自动化系 指导教师 田行君 2012年 2月 19日北京邮电大学世纪学院毕业设计(论文)诚信声明本人声明所呈交的毕业设计(论文),题目 霓虹灯控制系统软件设计 是本人在指导教师的指导下,独立进行研究工作所取得的成果,除了文中特别加以标注和致谢中所罗列的内容以外,毕业设计(论文)中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他教育机构的学位或证书而使用过的材料。申请学位论文与资料若有不实之处,本人承担一切相关责任。本人签名: 日期: 毕业设计(论文)使用权的说明本人完全了解北京邮电大学世纪学院有关保管、使用论文的规定,其中包括:学校有权保管、并向有关部门送交学位论文的原件与复印件;学校可以采用影印、缩印或其它复制手段复制并保存论文;学校可允许论文被查阅或借阅;学校可以学术交流为目的,复制赠送和交换学位论文;学校可以公布学位论文的全部或部分内容。本人签名: 日期: 指导教师签名: 日期: 题目 霓虹灯控制系统软件设计 摘要 LED霓虹灯控制系统是LED照明技术的核心部分。应用于各种场合的霓虹灯显示样式,均由控制系统管理,而软件系统是其组成部分。本文提供的软件设计方案适用于对小范围建筑的简单亮化装饰,隶属于驱动型控制系统。控制程序按照功能可以分为:采集、中断、通信三个模块。采集模块接受用户通过键盘输入的显示样式选择数据;中断模块完成对相应通信方式的初始化、数据发送延时、不同通信方式下用户数据的发送流程的控制;通信模块负责将数据发送到主控单片机的显示端口和从动单片机。支持开合幕、左右流、全亮、间隔闪烁的功能。本次软件设计基于PIC16F877A单片机,硬件电路涉及电子、电气科学技术的初级应用。关键词 霓虹灯 控制系统 PIC16F877A ProteusTitle Neon Control System-Software Design AbstractLED Neon Control System is the core of LED lighting technology.It can make a desion of the display styles for an exact building,the software acts as its mind.The solution that the document provided is adapt to small buildings and belong to the Driver mode Control System.There are modules included in the program:Checking,Interrtup and Communication.Checking module plays the role of collecting user data inputed from the KeyPad;Interrupt module has multiple functions,such as initializing the methods of communication,delaying time of transmission and chosing the correspond program block depends on the working mode of USART. USART transmit data to its own output port and to the slave microcontroller just receive the signal and analysis information and lighting LEDs.With all of them,the following styles are supported:Open,Close,Lighting totally and Flashing one by one.PIC16F877A is the selected microcontroller.The hardwares simulated in the Proteus ISIS involves the application of electrical and electronic knowledge.Keywords Neon ControlSystem PIC16F877A Proteus目录1前言11.1 LED柔性霓虹灯11.1.1 LED柔性霓虹灯的特点11.1.2 LED控制系统 分类 组成22.代码编译及仿真调试的工具选择32.1 设计任务32.1.1 任务要求32.1.2 任务分析32.2 工具介绍32.2.1 MpLab32.2.2 Hi Tech C42.2.3 Proteus52.3 开发方式52.3.1 配制位52.3.2 工具软件职能分配62.3.3 工具软件版本选择方法 软件的选取原则63.硬件设计73.1 原理总图73.2.1 控制模块83.2.2 显示样式选择模块103.2.3 启动复位模块113.2.4 通信方式切换模块113.2.5 显示模块123.2.6 电源模块124.软件设计124.1 主控单片机U1程序流程图124.2 从动单片机U2程序流程图144.3 主控单片机源代码设计分析164.3.1 中断控制164.3.2 通信初始化和发送程序204.3.3 键盘检测扫描程序224.3.4 显示程序234.3.5 其他程序244.4 从动单片机源代码设计分析244.5 代码调试方法255.仿真调试255.1 Proteus ISIS 7常用技巧265.2 运行环境、载入设计文件295.3 功能展示305.5 设计过程严重障碍记录345.5.1 程序模仿阶段345.5.2 自主设计阶段366.结论37致谢38参考文献39附录40A.主动单片机U1程序40B.从动单片机U2程序46IV北京邮电大学世纪学院毕业设计(论文)1前言1.1 LED柔性霓虹灯自1902年开始,玻璃霓虹灯已经广泛应用于室内外线形装饰照明。玻璃霓虹灯存在安装复杂、易破碎、潜在的震动危险、高压电驱动不安全、使用寿命短、维护费用高和耗电量高等缺点。LED柔性霓虹灯是伴随LED产品的丰富应用而出现的,并将全面取代玻璃霓虹灯。1.1.1 LED柔性霓虹灯的特点传统霓虹灯投资大,制造工艺复杂,使用玻璃管、高压电及惰性气体时有诸多不便。LED柔性霓虹灯采用全新的结构和LED技术,由特制的PVC外壳包上明亮的LED灯泡,运用特有的光学技术与专门的外壳设计,不仅增加了光线的强度和均匀度,而且简化了工艺流程,提高了生产效率。传统霓虹灯只能在常温下工作,使用过程中必须升高电压,用电量也较大,造价高,使用寿命短,不便维修。而LED柔性霓虹灯没一个点的LED是冷光灯,只散发低热量,相同亮度LED相当于传统灯泡1/7的耗电量,而且LED比传统灯泡的寿命长,同时LED柔性霓虹灯还具有防震、耐热功能。传统霓虹灯利用变压器,需要两套玻璃管,字体太大时笔画中间不亮,太小、太复杂则加工不出来。而柔性霓虹灯工作电压仅需24V,散发热量低,安装时也可剪成任何长度,弯曲成不同的形状(可弯曲成4cm的圆),很方便的用特制轨道与不同的材料表面安装在一起,如木材、塑料、钢材或墙壁,同时可以根据设计师的需要设计装饰成不同的图案。1.1.2 LED控制系统 分类按工作性质可分为:网络控制系统、总线控制系统和驱动型控制系统三类。按功能分为:渐变LED控制器、7色(跳变LED控制器)、音频声控LED控制器、电脑联机LED控制器、通用LED控制器、单管LED控制器、CF卡LED控制器、渐变霓虹灯控制器、实时同步视频LED控制器。 组成 LED控制系统包括控制器和驱动系统。(1)控制系统:控制器部分是控制系统的核心部分,它最基本的功能是将每个控制单元的颜色数据发送给相应的控制单元,使所有单元相互配合,产生预想的效果;控制系统也决定了控制器的应用范围。软件系统是控制系统和光效设计师的交互窗口,具有十分重要的作用。软件系统的作用是让光效设计师通过简便的、人性化的操作编辑出预想的效果,并转化为控制系统可接收的数据格式和控制指令。这些效果包含常规的颜色跳变、渐变、彩虹滚动等,也可能包含文字、图片的显示,视屏、动画的播放等。软件系统根据特定的效果,计算每个控制单元的颜色数据,最终生成用于控制器的光效文件。根据系统的联机或脱机特性,软件的使用略有不同。控制系统具有一套完善的配套软件,可极大简化光效的编辑,甚至完成一些人工无法完成的效果。(2)驱动系统。驱动兄台你过的功能是接受颜色数据并驱动LED按该数据所表示的亮度值显示。驱动方式通常分为恒压、恒流、先恒压再恒流三种。2.代码编译及仿真调试的工具选择2.1 设计任务2.1.1 任务要求设计和制作一个霓虹灯,霓虹灯由16条光柱构成,8条是红色二极管构成的,8条是蓝色二极管构成的,如图1所示。通过利用单片机控制霓虹灯实现如下功能:红色右流水、蓝色右流水、开幕、合幕、全亮等各种功能。主要完成霓虹灯控制系统的软件设计,具体如下:1、 掌握霓虹灯控制系统的电路原理图2、 利用单片机PIC16F8773、 编写程序流程图,实现霓虹灯的各种显示方式。2.1.2 任务分析本设计任务侧重于软件方面,且单片机的外围电路简单,适合于电气方面为弱项的学生完成。结合本设计的应用现场分析:多数建筑都较为庞大,虽然仅仅只有16条二极管,但如果8条霓虹灯在建筑左侧,另外八条在右侧,两种间隔较远,就需要使用多个单片机相互通信,共同控制各自的显示电路。单片机通信为本设计的重点。MicroChip公司的官方Forum上,George Lewis说最远距离可以达到900米,但是取决于BR。但是没有MAX232,传输距离只能有5meter。2.2 工具介绍2.2.1 MpLab MicroChip公司的集成开发环境,现在分为IDE和X两个系列,后者为前者升级版,可以同时打开两个设计项目,本次设计演示过程采用MpLab X的原因就是为了主从单片机代码的仿真调试方便,不用同时打开两个IDE并得到一个无法知晓的警告。下图展示双工程同时编译:图1-1 工程管理窗口下图展示C语言编辑器的功能,毫不逊色于UltraEdit,其豪华的界面,可称之为UltraEdit的升级版。图1-2 代码编辑窗口2.2.2 Hi Tech CMicroChip公司的代码编译工具,可以在命令提示符下使用PICC的Command Line,也可以被MpLab和Proteus ISIS调用。由于我对PICC的了解有限和设计时间紧迫,无法自习PICC的更多功能,大体可以窥测到:Hi Tech C面向用户的主要工具是Library中的Macro和由MapLab自动执行的Command Line。2.2.3 ProteusLabCenter公司的仿真工具,支持PIC单片机仿真。ProteusISIS可以使用Hi Tech C编译代码,能够脱离MpLab。设置方法由PIC16系列单片机C程序设计与Proteus仿真提供:摘自P95:如果所选的单片机是PIC16F877A,就一定要在“Command Line”中填入“-CHIP=16F877A %1 -GFILE”,这是因为,在此环境下编译C程序,要指定单片机的型号,其中的GFILE选项是制定要输出源程序的编译信息,只有这样设定,才能在后面的测试中显示源程序,进行C程序的逐行调试。信息验证由MicroChip官方技术文档Hi Tech C UserManual提供:摘自P7:The command line driver is called PICC and is the application that can be invoked to perform all aspects of compilation,including C code generation,assembly and link steps.Even if you use an IDE assist with compilation,the IDE will ultiamtely call PICC证明PICC的功能。摘自P25:-G:Generate Source-Level Symbol File证明-G选项的作用摘自P30:-CHIP:Define ProcessorThis option must be used to specify the target processor,or device,for the compilation.This is the only compiler option that is mandatory when compiling code.证明-CHIP选项的作用。2.3 开发方式2.3.1 配制位初学者往往依赖MpLab IDE的Configuration Bits工具,其实在源文件中即可设置Configuration bits.本次设计的配制位为0X3F39;因为设计者知识匮乏,所以直接采用了PIC16系列单片机C程序设计与Proteus仿真实例中所惯用的配制位。依据为MicroChip公司PIC16F87XA Data Sheet0X3F39=11 1111 0011 1001 从左至右各位含义如下:1、 Flash Program Code Protection off2、 Unimplemented3、 In-Circuit Debugger disable,RB6 and RB7 are general purpose I/O pins.(设计中,为了调试特地留出两个引脚)4、 Flash Program Memory Write Enable bits5、 Data EEPROM Memory Code Protection Bit6、 RB3 is digital I/O,HV ON MCLR(Low) must be used for programming.(仿真证明MCLR是电平复位)7、 Brown-Out Reset disable8、 Power-up Timer Enable 9、 WatchDog Timer Disable10、 Oscillator XT,无法理解RC、LP为什么放弃, XT mode可以提供4MHz的经典频率;摘自P161One Instruction Cycle consists of four oscialltor periods;for a oscillator frequency of 4MHz,this gives an normal instruction execution time of 1us.2.3.2 工具软件职能分配MpLab IDE完成软件源代码的书写,调用Hi Tech C完成编译,生成的HEX文件直接载入Proteus ISIS仿真环境的单片机。不需要COF文件,不需要MpLab中调用Proteus VSM。2.3.3 工具软件版本选择方法 软件的选取原则1、新选择的软件能否完成旧软件做过的工作;2、新选择的软件为今后的工作带来的利润能够远大于软件。 设计采用的工具1、MpLab X对PIC16系列单片机C程序设计与Proteus仿真中USART同步通信的原书光盘附带的代码进行编译,生成的HEX文件无法成功仿真;且MpLab X虽然官网声称是V1.00,但是下载后,文件名有个a,是初级的测试版,没有必要选择它设计代码。本设计由于主从机的接收发送没有功能翻转,但是通过Proteus调用Hi Tech C仿真的HEX可用用作调试。由于时间紧迫,暂时不考虑X系列。 2、MpLab IDE V8.83,生成的HEX文件仿真成功原始示例,所以为本次设计所选的工具。 3、Proteus V7.8 V7.7,只能用来演示,不能用来仿真U1、U2发送接收的翻转。本设计所选择的仿真工具是V7.5 SP3。 4、Hi Tech C V9.3的Lite Mode,可以满足示例学习和设计工作的需求。3.硬件设计3.1 原理总图图3-1 原理图控制模块:主控单片机U1、从动单片机U2。显示模块:2个LED模拟1个霓虹灯管,左边八组为红色,右边八组为蓝色。启动复位模块:由SW1、SW2、SW3、SW4、SW5、SW6构成。样式选择模块:键盘。通信切换模块:模拟多路复用器4061和继电器构成。电源模块:LDE驱动电源、控制板电源、键盘电源由仿真环境提供。3.2 模块介绍3.2.1 控制模块主控单片机U1:采用PIC16F877A,图3-2 单片机U1 RB1、RB2、RB3为键盘模块的按键动作检测输入引脚。 RA0、RA1、RA2、RA3为键盘模块的按键动作判定输出引脚。 RC2为通信切换模块的控制信号输出引脚。 TX/CK、RX/DT为USART通信输出引脚。 RD0、RD1、RD7为显示模块的控制输出引脚。 INT为异步通信方式初始化输入引脚。 T0CKI为同步通信凡是初始化输入引脚。 MCLR为复位信号输入引脚。从动单片机U2、采用PIC16F877A,图3-2 单片机U2、TX/CK、RX/DT为USART通信的输入引脚。、RD0、RD1、RD7为显示模块的控制输出引脚。、INT为异步通信方式的初始化输入引脚。、T0CKI为同步通信方式的初始化输入引脚。、MCLR为复位信号输入引脚。3.2.2 显示样式选择模块图3-3 键盘、1为开幕显示按键、2为闭幕显示按键、3为全亮显示按键、4为红色左流水、蓝色右流水按键、5为红色右流水、蓝色左流水按键、其他按键为亮灭间隔显示按键3.2.3 启动复位模块 图3-4 启动启动 图3-5 复位开关、SW1、SW2分别为单片机U1、U2的UART通信方式的启动按钮。、SW3、SW4分别为单片机U1、U2的USRT通信方式的启动按钮。、SW5、SW6风别为单片机U1、U2的复位按钮。3.2.4 通信方式切换模块图3-6 模拟多路复用器图3-7 继电器、U3为模拟多路复用器,模型同步电压为15V,EN为低电平使能位,DCBA组成的二进制数为选择的模拟通道。默认选择X0,A为高电平时,选择X1。4067模拟多路复用器是在Proteus ISIS仿真中唯一不出现警告的设备。、X1为直流激励源输入,电压为15V。、RL1为继电器,动作电流为12V,默认为异步通信方式的连接,动后,切换为同步通信方式的连接。3.2.5 显示模块图3-8 左侧为红色LED霓虹灯,右侧为蓝色LED霓虹灯3.2.6 电源模块为其他电子器件、机电元件提供电气支持。4.软件设计4.1 主控单片机U1程序流程图端口初始化中断初始化模块初始化IOInterruptUSART端口方向控制寄存器、端口寄存器附初值相关寄存器设置复用端口的功能GIE PEIEINTTMR1 TMR0设置中断使能位、复位中断标志位TMR0 TMR1H TMR1L SPBRG附初值T1CON INTCON设定相应模块的功能显示方式控制按键服务程序显示按键按下等待复位按下INT中断TMR0中断ISR:UART通信方式初始化启动TMR1中断ISR:关闭TMR1USRT通信方式初始化启动TMR1中断等待中断选择ISR:数据处理后,发送至本机端口、从机接收端ISR:数据处理后,发送至本机端口、从机接收端4.2 从动单片机U2程序流程图端口初始化中断初始化模块初始化IOInterruptUSART端口方向控制寄存器、端口寄存器附初值相关寄存器设置复用端口的功能GIE PEIEINTRCIE TMR0设置中断使能位、复位中断标志位TMR0 SPBRG附初值INTCON设定相应模块的功能等待复位按下INT中断TMR0中断ISR:UART通信异步方式初始化;N=0启动TMR1中断ISR:USRT通信同步方式初始化;N=1中断选择RC中断通信方式判决根据接收数据,选择内部显示数组,发送至端口发送接收的数据至端口N=0N=14.3 主控单片机源代码设计分析4.3.1 中断控制、源代码:见附录。、代码参考来源:摘自EEV Blog Electronic Community Forum,Topic: Multiple Interrupt ISR帖子由DanielKS发出,他(她)虽然询问的是其他的问题,但是其附加的代码为本设计提供了复合中断的解决方案。、中断服务程序代码解析:摘自MicroChip官方PIC16F87XA Data Sheet,P155页图4-1 中断逻辑顺序本次设计使用的中断是INT Interrupt、TMR0 Interrupt和TMR1 Interrupt(外设中断)。INT Interrupt、TMR0Interrupt相关的寄存器为:INTCON 和OPTION_REG。INTCON的POR、BOR值为0000 000x,即中断全部禁止,所以在源代码中进行了重新设置。OPTION_REG的POR、BOR值为0XFF,存储着RORTB、INT、TMR0中断的配置位。TMR0 用作计数器模块,外部技术脉冲端口设置复杂:首先,设置ADCON1模块,为数字端口,然后设置TRISA=0b00010000;图4-2 RA4/T0CK1引脚模块从RA4的电路图观察,似乎TRISA可以忽略不管,可是实际上必须要设置RA4为输入才可。TMR1 用作定时器模块:相关的寄存器为:TMR1H:TMR1L:存储定时初值,T1CON存储TMR的工作模式选择、预分频设置、启动停止控制位。TMR1模块结构为:图4-3 TMR1模块图4-4 三态门 图4-4包含于图4-3中,为三态门,摘自WikiPedia:LogicGate一文的Three-State logic gates节。“Tri-Stateis a trademark”“A Tristate buffer can be thought of as a switch”. 这里的Buffer并不是缓存的意思,而是放大器Buffer Amplifier的意思。在Lessons In Electric Circuits,Volume IV Digital中:图4-4 双重反相器图4-5 放大门While this may seem like a pointless thing to do,it does have practical application.Remember that gate circuits are signal amplifier,regardless of what logic function they may perform.A weak signal source(one that is not capable of sourcing or sinking very much current to a load)may be boosted by means of two inverters like the pair shown in the previous illustration.The logic level is unchanged,but the full current sourcing of sinking capabilities of the final inverter are available to drive a load resistance if needed.TMR1模块中的梯形代表Multiplexer,多路复用器,TMR1的参考程序取自PIC16系列单片机C程序设计与Proteus仿真P123从中可以发现,通过利用TMR1定时中断的循环,可以同时代替循环语句和延时语句。4MHz的晶振下,其定时最大时长为:1us*(0XFFFF+1)*8=524.288ms 式(4-1)而定时器TMR0的最大时长为:1us*(0xFF+1)*256=65.636ms 式(4-2)可见:TMR1可以满足LED显示的对延的要求。在Interrupt Service Routine中,INT Interrupt和TMR0 Interrupt由用户通过按键启动,随后两者均可实现对TMR1 Interrupt的调用。设计中断服务设计时,根据PIC16系列单片机C程序设计与Proteus仿真P110:“硬件强制全局中断使能位GIE=0,即退出中断前不允许在进入中断”;在Data Sheet P115:”When an interupt is responded to,the GIE bit is cleared to disable any further interrupt”也得到验证。Data Sheet中也提到了中断服务程序的设计方法:Once in the Interrupt Service Routine,the source(s) of the interrupt can be determined by polling the interrupt flag bits.The Interrupt flab bits must be cleared in software before re-enabling interrupts to avoide recursive interrupt.由此可以知道,在EEV论坛中Daniel发布的复合中断中,都是if判段开头的原因。Data Sheet中解释道:Individual interrupt flag bits can be set regardless of the status of their corresponding mask bit or the GIE bit.故执行复合中断的条件都是使能位&标志位的格式。由于在主程序的设计中避免了使用TXEN发送中断,且其他中断都符合一般规定,就放弃了检测使能位。4.3.2 通信初始化和发送程序 、源代码:上述INT、TMR0、TMR1的中断服务程序即为USART的初始化程序,和发送程序。 、 参考来源:PIC16系列单片机C程序设计与Proteus仿真例4.15 4.16 4.17 、代码解析:A、端口设置:摘自Data Sheet P113:Bit SPEN(RCSTA)and bit TRISChave to be set in order to configure pins RC6/TX/CK and RC7/RX/DT as the Universial ynchronous Asynchronous Receiver Transmitter.从Date Sheet关于PORTC的描述看到:TRISC的加电复位和断电复位的值为0XFF,所以可以不用理会TRISC。考虑到设计中,采用RC2为继电器控制信号的输出管脚,所以,对TRISC在main中一次性赋值完毕。SPEN为USART通信端口使能位,在main中赋值。B、USART初始化:通过阅读Data Sheet,可以发现:同步和异步通信发送模块的区别在于寄存器TXSTA寄存器的SYNC和CSRC、BRGH的设置和SPBRG的设置。异步通信时:SYNC、CSRC为0,BRGH可选,SPBRG可设置。同步通信是:SYNC、CSRC为1,即主控,BRGH为0,SPBRG可设置。之所以这样简单设置,是基于以下事实:图4-6 USART寄存器RCSTA的断电复位值除RX9D均为0,RX9D在本设计不被使用。 TXREG,TXSTA的复位值也基本为0,利用复位值,可以缩短C程序。程序设计中,异步通信发送方式可以不经复位切换为同步发送,反之则不可。SPBRG,波特率发生器的赋值,DataSheet特供了计算公式,但是所选择的的波特率并不是任意的,所以SPBRG的也就是固定的几个数值,可以通过查表得到。PIC16系列单片机C程序设计与Proteus仿真通过控制中断,实现双机同步收发,但是仔细阅读DateSheet P123:This is Advantageous when slow baud rates are selected since the is kept in Reset when bits TXEN, CREN and SREN are clear.Setting enable it TXEN will start the BRG, Creating a shift clock immediately.BRG是可以处于复位状态不产生时钟脉冲的,经过仿真试验,TXEN和CREN可以启动BRG,SREN无法启动BRG.。但是CREN启动后,在中断服务中切换为SREN,最后通过SREN的复位可以关闭BRG。DataSheet P117:(Asynchronous)The actual transmission will not occur until the TXREG register is has been loaded with data and Baud Rate Generator(BRG) has produced ashift clock.DataSheet P123:(Synchronous)The actual transmission will not occure until the TXREG register has been loaded with data.The first data bit will shifted out on the nextavaliable rising edge of the clock on the CK line.Data out is stable around the falling edge of the synchronous clock.然表达方式不一样,但可从中发现:无论是同步方式还是异步方式,数据的传输需要时钟,只要能够控制时钟,通过在SlowBaudRate时,控制好TXEN CREN SREN的置位和复位即可控制传输。同步通信的第二阶段从单片机想主单片机发送数据,主单片机要把我时钟,在双方都准备完成的情况下,开启时钟,传输数据。本设计中,从单片机没有向主单片机发送数据。C、USART发送函数:无论是同步还是异步,USART的发送程序都是一样的:写入TXREG等待TRMT的置位。4.3.3 键盘检测扫描程序、源代码:见附录。参考来源:北京邮电大学世纪学院,电子与自动化系,电子科学与技术专业,副教授,赵积春,课堂实验程序。代码解析: A、按键动作检测:为了保留B端口的高位RB7RB6,作为Debugger,不得不舍弃这一个天生检测4行或(和)4列键盘输入的中断。改用死循环检测,因为保留中断便于程序的进一步升级。采用PORTA端口的RA0RA4为检测输入端口,DataSheet P43:Other PORTA pins are multiplexed with analog inputs and the analog input for both the A/D converters and the Comparators.The operation of each pin is selected by clearing/setting the appropriate control bits in the ADCON1 and/or CMCON reigsters.Note:On a Power-up Reset,these pins are configured as analog inputs and read as 0;The comparators are in the off(digital)state.所以启动后,只要设置ADCON1和TRISA图4-7 PORTA TRISA寄存器复位值由于PORTA Value on POR符合设计要求,故不作初始化。B、按键位置扫描:扫描按键位置的端口为输出,默认为低电平完成动作的检测。按键的特点是:按键按下后,扫描端口输出高电平,检测端口就检测不到按下,扫描端口输出低电平,检测端口才能检测到键盘按下。所以,在上一步已经证明动作的前提下:依次置零各个扫描端口,检测端口再次扫描到键盘按下时,那么扫描端口所在的行(或列),检测端口所在的列(或行)就定位了按键。生成用户输入数据。C、操作规程:一次只能按一个键,且持续1S钟即可。4.3.4 显示程序、源代码:见附录、代码来源:自行设计、代码解析:代码由两部分构成:A、显示数组:定义了左开幕和左流水两个数组。B、处理函数:根据用户输入的显示模式和通信方式,将显示数组略加处理后发送到显示控制端和从机的通信端。C、由于处理函数采用if else if语句,所以控制好复合语句括号是很必要的。MpLab X支持最外层函数大括号管理,内层复合语句不如UltraEdit管理细致,但是能够识别出括号不搭配的情况,并给出即时警告。4.3.5 其他程序延时函数源代码:见附录代码来源:PIC16系列单片机C程序设计与Proteus仿真由于无法阅读编译后的汇编语言形式的文件,所以无法验证其准确性。4.4 从动单片机源代码设计分析1、源代码:见附录。2、中断控制程序:类似于主控单片机,不同点在于:主控单片机采用定时器TMR1自动发送数据,从动单片机采用接受中断来接受并处理数据。接受中断在TMR0或INT中断中不被启动,只是做相应USART模块接收方式的初始化。3、显示程序:在异步通信时,使用自己内部附带的数组和处理函数,控制输出信号在同步通信时,直接将接受到的数据发送到显示端口。4、接受函数:、代码来源:PIC16系列单片机C程序设计与Proteus仿真、程序解析:无论异步通信、还是同步通信,接受方式都可以采用Single Receive或Continuous Receive。只要确保,接受单片机在发送单片机发送数据之前做好接受准备就可以了。一般,可以通过主控方延时启动BRG来解决这个问题。DataSheet P127:USART Synchronous Slave Reception:Bit SREN is a “dont care” in slave mode.通过Proteus仿真,证明同步从模式下,SREN可以使用。4.5 代码调试方法 1、原始实例模仿的技巧: 本设计的完成,源自对7个Proteus仿真实例的学习。模仿原始实例,不能仿真成功是很让人灰心的。因为错误就在200行代码中的某个位置的某个符号。 方法是,建立程序模块化的思想,将作者书写的程序,逐个模块代换自己书写的程序,然后编译、仿真,能够很快锁定出现错误的模块,再逐步细化到语句即可快速查出问题。 2、判断代码执行状况的方法: 能够优化程序发现其中的不足,但是调试自己的程序,却没有一摸一样的模块去代换。逐行的仿真调试有时很不好用。 方法是: A、采用while(1);锁定程序的执行位置并采用LED显示,仿真判断程序是否执行到无限循环位置 B、不要彻底删除原始程序,用/, /* */把不用的代码暂时隐藏,以供之后参考。 3、深度分析延时程序以及编写自己程序的策略: 本设计先编辑、验证中断控制程序的执行情况,然后编辑、验证通信模块的工作情况,最后是键盘服务程序和完整的显示程序。从搭建总体框架,到细化程序功能。5.仿真调试图5-1 Proteus ISIS启动画面5.1 Proteus ISIS 7常用技巧 1、元器件搜索标记工具:Search And Tag: 启动方式:快捷键T图5-2 搜索标记对话框 Proteus ISIS电子元器件添加完成以后,对于某一类元器件的搜索和标记操作可以通过这个工具完成。 2、属性分配工具:Property Assignment Tool图5-3 属性分配对话框这个工具不仅仅极大的方便了设计中对LED灯群的赋值和电阻名称的统一修改,而且工具的对话框右侧对象名称及其属性的介绍比较清晰。LabCenter Proteus官方文档ISIS Help,其中Object Specifics目录下包含:Component、Junction Dot、Wire Labels、Script、Buses、Sub-circuit、Terminal、pins、2D Graphics、Makers的属性设置介绍。Component属性作为最常用的修改项,摘取如下内容:REF:Component Reference designator label.(G翻译为:组件参考指示符标签)VAL:Component Value Label.VALUE:Component Value Label or the VALUE user porperty if the assigned text is too long for the label.DEVICE:Library part.If assigned,this will invoke the automatic replacement logic which will attempt to maintain connectivity.网络标签在Proteus中称之为Wire Label,依据ISIS Help,Wire Label拥有唯一的Property被成为Net,描述为The wire label text.3、编辑环境和系统参数的设置Proteus对编辑环境的设置是通过对Template菜单各个项目的修改来完成的。本设计中,为了美观,仅仅修改了Text显示。图5-4 编辑设计默认属性对话框修改HiddenObjects项目中的Show hidden text,即可实现影藏。在ISIS Help有对Template的专项介绍,主要讲解Template的建立,其他部分省略。Proteus教程电子电路设计、制版与仿真(第二版)虽然详细,但也只是讲英文翻译成中文罢了。Proteus ISIS对系统参数的设置通过System菜单下的命令来完成。在ISIS Help中,无法通过目录直接找到执行命令所弹出的对话框中列举的选项的解释,但是能够通过搜索功能,直接

温馨提示

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

评论

0/150

提交评论