PIC16f877单片机定时器设计.doc_第1页
PIC16f877单片机定时器设计.doc_第2页
PIC16f877单片机定时器设计.doc_第3页
PIC16f877单片机定时器设计.doc_第4页
PIC16f877单片机定时器设计.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

摘要随着科技发展,人们对定时器进行很多的改进来达到准确控制时间的目的。人们甚至将定时器用在了军事方面,制成了定时炸弹,定时雷管。现在的不少家用电器都安装了定时器来控制开关或工作时间本设计是经典的单片机定时功能应用设计。采用PIC单片机为核心,阐述了系统工作原理,给出了软件流程。并利用PICC编译器进行程序设计。通过控制单片机内部中断和溢出,在溢出的状态下在IO口设置一个一个电瓶让灯闪烁,灯每闪烁一次数码管数字增加一,这样来达到该定时器对LED灯和数码管的控制,这种控制电路结构简单,可靠性高。关键词:PIC16f877单片机,中断,溢出,定时器,LED显示器AbstractWith the development of science and technology, people in the timer for many improvements to achieve the purpose of accurate control time. People can even use the timer on the military, made into a ticking time bomb, timing detonator. Now a number of household electrical appliances have installed the timer to control the switch or working hours This design is the classic microcontroller timer function application design. Using PIC microcontroller as the core, this paper expounds the working principle of the system, the software flow is given. The program design and use of PICC compiler. By controlling the single chip microcomputer internal interrupt and overflow, under the conditions of the overflow mouth in the IO set up a a battery to light flashing, lights will shine every digital tube digital increase at a time, so that to achieve the timer control of the LED lights and digital tube, the control circuit has simple structure, high reliability.Key Words: PIC16f877 single chip microcomputer, interrupt, overflow, timer, LED display目 录1 绪论 (1)1.1 定时器的发展 (1)1.2 PIC单片机简介 (2)1.2.1 16F877A单片机(2)1.3 设计过程(3)1.4 设计要求(4) 1.5主要技术参数(4)2 硬件系统设计 (5)2.1 单片机 (5)2.2 PIC1F877A单片机控制模块(6) 2.2.1定时器模块设计 (8) 2.2.2中断模块设计 (11)2.3 PIC1F877A单片机显示模块(12) 2.3.1 数码管模块设计 (12)3 软件系统设计(15)3.1 设计软件(15)3.2 MPLAB软件设计(15)3.3 PIC编译器软件设计(16)3.4 流程图(17)3.4.1 显示LED灯子程序流程(19)3.4.2 显示数码管子程序流程(21)4 总结(22)4.1 技术优点及缺点(22)4.2问题及解决方法(22)4.3 测试结果(22)参考文献 (23)致谢 (24)IV 第 页1 绪论1.1定时器的发展所谓定时功能就是通过来自单片机内部的时钟脉冲作计数脉冲,使计数器计数,即每个机器周期计数器加1,计数值达到予置值后,定时/计数模块产生溢出。人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的。1876年,英国外科医生索加取得一项定时装置的专利,用来控制煤气街灯的开关。它利用机械钟带动开关来控制煤气阀们。起初每周上一次发条,1918年使用电钟计时后,就不用上发条了。而定时器作为一项了不起的发明,使相当多需要人控制时间的工作变得简单了许多。人们甚至将定时器用在了军事方面,制成了定时炸弹,定时雷管。现在的不少家用电器都安装了定时器来控制开关或工作时间。定时器是一个多任务定时提醒软件,它全面支持WINDOWS 9X/ME/NT/2K/XP按时执行程序、播放声音、关机、待机、拨号、断开连接、关闭显示器等等操作。具有多种设定任务的方法。支持SKIN,可以随意更换界面。中国是世界上最早发明计时仪器的国家。远古时代的日晷和漏壶是我们祖先创造的最简单的计时器,利用太阳的影子和滴水或流沙的恒定交流量计算时刻。有史料记载,汉武帝太初年间(纪元前104-101年)由落下闳创造了我国最早的表示天体运行的仪器浑天仪。东汉时期(公元130年)张衡创造了水运浑天仪,为世界上最早的以水为动力的观测天象的机械计时器,是世界机械天文钟的先驱。盛唐时代,公元725年张遂(又称一行)和梁令瓒等人创制了水运浑天铜仪,它不但能演示天球和日、月的运动,而且立了两个木人,按时击鼓,按时打钟。第一个机械钟的灵魂一擒纵器用于计时器。宋朝(公元1092年)苏颂和韩公廉等创制了著名的水运仪象台,它把浑仪、浑象和机械性计时器都组合在一起,成为世界上第一座以水为动力,装有擒纵装置的自呜机械天文钟,但最有价值的还是苏颂为水运仪象台撰写了详细设计说明编成新仪象法要一书,记载了水运仪象台的全部结构,并绘制了60多辐150多种零部件的附图,这是世界上第一部图文并茂的天文计时器专著。明末清初,欧洲的钟表开始进入宫廷,并逐渐占据中国市场,带动了我国钟表制造业的发展。解放后,人民生活水平不断提高,国家根据需要,在制钟工业原有基础上,先后建立了很多钟表工业基地,使钟表生产迅速发展。在轻工业部的领导下,设 2计出了全国摆钟、闹钟、手表、电子钟、石英钟的“统一机芯”为满足市场需要,钟表产品不断创新,花色品种日新月异,使中国成为世界钟表生产大国,为国民经济发展做出了重大贡献。1.2单片机简介单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机10。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。单片机由于其体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,普遍运用在智能仪器仪表上,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大,例如精密的测量设备(功率计,示波器,各种分析仪);在工业控制中的应用上,用单片机可以构成形式多样的控制系统、数据采集系统,例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统。单片机是通过内部总线把计算机的各主要部件接为一体,其内部总线包括地址总线、数据总线和控制总线。其中,地址总线的作用是在进行数据交换时提供地址,CPU通过它们将地址输出到存储器或I/O接口;数据总线的作用是在CPU与存储器或I/O接口之间,或存储器与外设之间交换数据;控制总线包括CPU发出的控制信号线和外部送入CPU的应答信号线等1。1.2.1 16F877A单片机a.概述 现今的PIC单片机已经是世界上最有影响力的嵌入式微控制器之一。PIC单片机是一种用来可开发的控制外围设备的可编程集成电路。并且PIC单片机使用哈佛总线结构,彻底将芯片内部的数据总线和指令总线分开,大大提高了CPU的执行指令速度和工作效率。采用RISC结构的嵌式微控制器,其高速度、低电压、低功耗、大电流LCD驱动能力和低价位OTP技术等都体现出单片机产业的新趋势。采用精简指令RISC技术,优先选取使用频率最高的简单指令,避免复杂指令,采用控制逻辑为主的设计理念。采用更为简单的寻址方式,功耗低,驱动能力强,这也是PIC系列单片机的一大特点。PIC系列单片机是完全集成的混合信号系统级芯片,具有与8051兼容的微控制器内核,与MCS-51指令集完全兼容。其内部还集成了数据采集和控制系统中常用的模拟部件和其他数字外设及功能部件,并包括A/D和D/A模块,执行速度快,功能强大8。图1-2-1哈佛总线结构RISC:取指 执行 取指 执行 取指 执行 b.PIC单片机特点(1)PIC系列单片机只有4种寻址方式 寄存器间接寻址、立即数寻址、直接寻址和位寻址 。(2)8路、10位的AD转换。(3)I/O口具有20mA的驱动能力。(3)、I2C,SPI,USART,USB,CAN接口。(4)WDT(看门狗)。(5)CCP(脉宽/捕捉/比较)。(6)内置EEPROM。(7)3路定时器。(8)多种中断源。(9)流式的并行接口。(10)内置LCD控制器1.3 设计过程首先先熟悉PIC单片机以及设计所使用的软件,本次编程使用的是MPLAB IDE软件和PICC编译软件,使用C语言撰写程序。然后在进行编译在编程模拟成功后使用ICD2烧写到16F877A芯片中。1.4设计要求本次设计的课题是基于PIC单片机定时器控制设计,具体要实现的功能如下所示:1. LED根据要求进行闪烁2. 数码管根据LED等的闪烁来进行数字的增加1.5主要技术参数内核:PIC 8-bit RISC;工作频率:20MHz Max;工作电压:2-5.5V;封装:DIP40;I/O口:33;存储资源:14kB Flash,368B RAM,256B EEPROM;接口资源:1 x MSSP(SPI/I2C),1 x A/E/UART,2 x PWM, 8 x ADC;调试下载:可通过ICSP接口实现调试下载。2 硬件系统2.1单片机HL-K16单片机实验开发系统,是一个典型的模块式、开放型PIC单片机实 验教学系统。HL-K18单片机实验开发系统各模块的设置,主要是以PIC单片机内部功能特性为依据,并加入了一些很常用的外围接口器件,以便充分显示出 PIC单片机独特的功能优势和模块特色。 单片机实验开发系统,可以适应从 PIC单片机基本验证性实验到开发拓展 性、系统性实验,为大家开发应用和创新设计提供了一个多功能的实验平台。 选择HL-K16单片机实验开发系统可以根据自己设计的线路,采用简单的接插连接方式,无须再进行制版加工、线路焊接和排除故障。图2-1 HJ-5G开发板2.2 PIC1F877A单片机控制模块PIC16F87X系列单片机可以接收多达14个中断源。中断控制器寄存器INTCON标记着各个中断源的请求,对各个中断设置屏蔽位,对全部中断设置全局屏蔽位。PIC16F87X系列的中断包含:TMR0溢出中断(TOIF)、外部中断(INTF)、端口B变化中断(RBIF)、并行从动端口中断(PSPIF)、AD变换中断、USART异步接收中断(RCIF)和异步发送中断(TXIF)、同步串行端口中断(SSPIF)、CCP1中断(CCPIIF)、TMR2中断(TMR2IF)、TMR1中断、CCP1中断(CCP2)、E2PROM写中断(EEIF)、总线碰撞中断(BCLIF)。各个中断采用查询方式进行,即当CPU口向应中断时,事先要通过查询中断标志位去判断是哪个中断产生中断请求,然后执行相应的中断服务程序。RB0INT外中断仍遵守PIC16F87X单片机的中断原则,当有中断时产生中断标志位,由CPU查询识别中断。根据这一原则,可以扩展多个外中断源,CPU响应中断后查询中断标志位识别中断。RB0INT引脚上的外部中断由边沿触发,既可以是上升沿,也可以是下降沿,这由选择寄存器OPTION_REG的INTEDG位(D6)决定。当INTEDG1时,选择上升沿触发;当INTEDG0时,选择下降沿触发。一旦检测到引脚上出现有效边沿,就把INTF位(INTCON的D1)置1。这个中断由中断控制位INTE设置允许或禁止。为了防止错误的死循环执行同一个中断,在重新开放这个中断之前必须在中断服务程序中用软件对INTF位清0。如果INTE位在进入休眠状态之前已被置1,INT中断可以唤醒在休眠状态下的CPU。GIE位的状态决定处理器是否在被唤醒后转至中断矢量。当定时器TIMER0的计数器TMR0计满溢出(即由FFH变成00H)时,硬件将自动把TGIF位置1。其中断可以通过对TOIE位进行设置来控制该中断是否开放。当CPU响应RB7、RB4中断时,就有两种情况产生:第一种称为“短脉冲”,即在CPU响应中断期间引脚电平恢复到原始状态,对这种情况CPU不会产生虚假中断现象。第二种称为“宽脉冲”,即在CPU响应中断后引脚电平才恢复到原始状态,恢复到原始状态的过程也产生中断请求,这种情况就是虚假中断现象。在端口B的D7D4引脚上一旦有电平变化就把RBIF位置1,这个中断可以通过对RBIE位进行设置来控制该中断是否开放138。图2-2a PIC1F877A单片机引脚PIC的最小的单片机是6PIN,3个I/O口,一个输入口,两级堆栈,一个8位计时/计数器,引脚电平改变唤醒,无中断,内部4M 1%精度可微调RC振荡器,看门狗,在线串行编程,可擦写10万次FLASH程序存储器,12C系列和16C5X系列除IO口多一点外内部资源一样,不同的是12C系列内部RC为5%,16C5X没有内部RC2。图2-2b PIC最小系统2.2.1 PIC16F877A定时器模块设计在本次设计中应用的定时器模块为TMR0模块。首先PIC16F877单片机配置了3个定时器模块,分别为TMR0、TMR1和TMR2。共同点:它们的核心部分都是一个由时钟信号触发,按递增方式累加工作的循环计数器;从预先设定的某一初始值开始累计,在累计到计数器产生溢出,并同时建立一个相应的溢出中断标志。三者的不同点:TMR0为8位宽,有一个可选的预分频器,用于通用目的,可用于定时和计数;TMR1为16位宽,附带一个可编程的预分频器和一个可选的低频时基振荡器,适合与CCP(捕捉/比较脉宽调制)模块配合使用来实现输入捕捉或输出比较功能,也可用于定时和计数;TMR2为8位宽,附带一个配合使用来实现PWM脉冲宽度调制信号的产生,只能用于定时。a :定时器TMR0的特点(1)TMR0是一个8位宽的由时钟信号上升沿触发的循环累加计数寄存器。(2)有一个专用的外部触发信号输入端(T0CKI)。(3)TMR0也是一个在文件寄存器区域内统一编址的寄存器,地址为01H或101H,用户用软件方式可直接读/写计数器的内容。(4)具有一个软件可编程的8位预分频器。(5)当使用内部触发信号,即指令周期作为时钟信号源时,模块TMR0工作于定时方式,触发方式为固定上升沿触发有效。在计数器溢出时,相应的溢出中断标志T01F自动置位,并可产生溢出中断。(6)当外部时钟信号源时,模块TMR0工作于计数方式,触发方式可由程序设置位上升沿触发或下降触发有效。在计数器溢出时,也可产生溢出中断9。 寄存器的名称和符号寄存器地址寄存器内容Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0定时器TMR001H/101H8位累加计数寄存器选项寄存器OPTION_REG81H/181HRBPUINTEDGT0CST0SEPSAPS2PS1PS0中断控制寄存器INTCON0BH/8BH10B/H/18BHGIEPEIET0IEINTERBIET0IFINTFRBIF端口RA方向寄存器TRISA85HTRISA5TRISA4TRISA3TRISA2TRISA1TRISA0图2-2-1a 与TMR0模块相关的寄存器图2-2-1b 定时器/计数器TMR0模块的电路结构和工作原理图b:TMR0累加计数寄存器 TMR0有定时器和计数器两种工作模式。这两种模式之间的差异是触发信号的来源不同。TMR0的工作模式由T0CS位(选项寄存器OPTION_REG)决定。 TMR0的工作模式 T0CS TMR0工作模式触发信号的来源 0 定时器计数器的触发信号取自内部指令周期 1 计数器计数器的触发信号取自外部引脚T0CKI电平的上升沿/下降沿c:定时器TMRO工作方式 当T0CS(OPTION_REG)=0时,TMR0模块被设置为定时器模式,触发信号为片内的指令周期信号。当计数寄存器写入初 始值时,TMR0便开始或重新启动累加计数。若没有使用分频 器,TMR0会在每个指令周期信号(时钟周期的4倍)到来时自 动加1。若使用分频器,TMR0会在指令周期信号分频某个倍数 后产生的信号时自动加1,这时TMR0最长固有定时时间将达65535us。对8位定时器TMR0来说,不使用分频器时,定时时间的计算公式为:(计数初值)指令周期,使用分频器时,定时时间的计算公式为:分频比(计数初值)指令周期 分频比取值为2、4、8256。若晶振频率为4MHz,则机器周期为1s,定时器TMR0最小定时时间为:(1)1 = 1s定时器TMR0最大定时时间为:(0)1256= 65536s 如设定定时时间为t,指令周期为T,分频比为P,不使用分频 器时,计数寄存器写入的初始值X为:X= t /T 使用分频器时,那么计数寄存器写入的初始值X为:X=t/(TP)102.2.2中断模块设计CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A 被中断的地方继续处理事件A (中断返回),这一过程称为中断。而在本次设计中用到的主要方法就是中断,在PIC中中断函数不需要说明产生中断就直接进入中断函数,不需要调用,51都有终端号,中断号表示不同的中断入口,PIC直接写函数名就可以了。进入中断后先清零,把T0IF清零,然后装载一些初值,然后其变量一直加,一直加到溢出为止。对于主函数部分,首先要进行初始化,然后一个大循环,进入之后先判断溢出,溢出五次的时候跳出F,跳出后先清零,清零之后在LED灯显示出来,因为其初值是零,而零的时候灯不亮,然后取反LED亮。要改变LED灯闪烁的频率可以改变程序中的初值或者是溢出次数11。图2-2-2PIC单片机的中断系统结构2.3 PIC1F877A单片机显示模块显示模块分为两部分:LED灯和数码管,显示效果为LED灯一秒闪烁一次,数码管根据LED灯的闪烁来增加数值。2.3.1数码管模块设计HL-K16单片机实验开发系统,是一个典型的模块式、开放型PIC单片机实验教学系统。HL-K18单片机实验开发系统各模块的设置,主要是以PIC单片机内部功能特性为依据,并加入了一些很常用的外围接口器件,以便充分显示出 PIC单片机独特的功能优势和模块特色。 单片机实验开发系统,可以适应从 PIC单片机基本验证性实验到开发拓展 性、系统性实验,为大家开发应用和创新设计提供了一个多功能的实验平台。 选择HL-K16单片机实验开发系统可以根据自己设计的线路,采用简单的接插连接方式,无须再进行制版加工、线路焊接和排除故障。a:数码管动态显示驱动数码管动态显示接口是单片机中应用最为广泛的一种显示 方式之一,动态驱动是将所有数码管的8个显示笔划 a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 使用LED显示器时,要注意区分这两种不同的接法。为了显示数字或字符,必须对数字或字符进行编码。七段数码管加上一个小数点,共计8段。因此为LED显示器提供的编码正好是一个字节。HJ实验板用共阴LED显示器12。图2-3-1aLED显示接法图2-3-1b数码管显示效果由于发光二极管基本上属于电流敏感器件,其正向压降的分散性很大,并且还与温度有关,为了保证数码管具有良好的亮度均匀度,就需要使其具有恒定的工作电流,且不能受温度及其它因素的影响。另外,当温度变化时驱动芯片还要能够自动调节输出电流 的大小以实现色差平衡温度补偿。 表2-3-1共阴数码管表 0x3f 0x06 0x5b 0x4f 0x66 0x6d 0 1 2 3 4 5 0x7d 0x07 0x7f 0x6f 0x77 0x7c 6 7 8 9 A B 0x39 0x5e 0x79 0x71 0x00 C D E F 无显示b:数码管动态扫描原理 数码管动态扫描原理:数码管的7个段及小数点都是由LED块组成的,显示方式分为静态显示和动态显示两种。数码管在静态显示方式时,其共阳管的位选信号均为低电平,四个数码管的共用段选线a、b、c、d、e、f、d、p分别与CPLD的8根I/O口线相连,显示数字时只要给相应的段选线送低电平。数码管在动态显示方式时,在某一时刻只能有一个数码管被点亮显示数字,其余的处于非选通状态,位选码端口的信号改变时,段选码端口的信号也要做相应的改变,每位显示字符停留显示的时间一般为1-5ms,利用人眼睛的视觉惯性,在数码管上就能看到相当稳定的数字显示4。 图2-3-1c 数码管原理图3.软件系统设计3.1设计软件 本次设计用到的软禁主要有MPLAB和PICC。MPLAB软件主要作用是代码输入。PICC软件主要作用是16F877A单片机编译器,并且安装后不会看到画面,由MPLAB调用,下面主要介绍MPLAB和PICC编译器的安装和使用。3.2 MPLAB软件设计MPLAB 集成开发环境(IDE)是综合的编辑器、项目管理器和设计平台,适用于使用Microchip 的PICmicro系列单片机进行嵌入式设计的应用开发。MPLAB IDE 是适用于PICmicro系列单片机和dsPICTM数字信号控制器,基于Windows操作系统的集成开发环境3MPLAB IDE 提供以下功能: 使用内置编辑器创建和编辑源代码。 汇编、编译和链接源代码。 通过使用内置模拟器观察程序流程调试可执行逻辑;或者使用MPLAB ICE 2000和 MPLAB ICE 4000 仿真器或MPLAB ICD 2在线调试器实时调试可执行逻辑。 用模拟器或仿真器测量时间。 在观察窗口中查看变量。 使用 MPLAB ICD 2、PICSTART Plus 或 PRO MATE II 器件编程器烧写固件。 运行MPLAB IDE 所需的最低系统配置: PC兼容的奔腾(PENTIUM)级系统 操作系统:Microsoft Windows 98 SE, Windows 2000 SP2, Windows NT SP6,Windows ME 或Windows XP 64 MB 内存(推荐128MB) 45 MB 硬盘空间 Internet Explorer 5.0 或更高版本 图3-2 MPLAB IDE界面要创建目标 PICmicro MCU 可执行的代码,需要将源文件添加到项目中,然后可以使用选定的语言工具(汇编器、编译器和链接器等)将代码编译为可执行代码。在MPLAB IDE 中,由项目管理器控制这一过程。所有项目均具有以下基本步骤:1选择器件MPLAB IDE 的功能根据所选择的器件而有所不同。应该在开始项目之前完成器件选择。2创建项目将使用MPLAB项目向导来创建项目。3选择语言工具将在项目向导中选择语言工具。就本教程而言,将使用内置的汇编器和链接器。而在其他项目中,也许需要选择 Microchip 的某一编译器或其他第三方工具。4将文件添加到项目将在项目中添加两个文件,一个模板文件和一个链接描述文件。这两个文件都位于MPLAB IDE文件夹的子文件夹中。使用这两个文件,开始项目就容易多了。5创建代码将向模板文件添加一些代码,从 I/O 端口发出一个递增的值。6编译项目612。3.3 PICC编译器软件设计目前在市场上应用最广泛的应该属于8位单片机,Microchip Technoloogy公司推出的8位PIC系列单片机目前在国内市场上深受用户欢迎,已经逐渐成为单片机应用的新潮流,目前在国内用的比较多的是Hi-Tech的HI-TECH PICC编译器,而且目前市场上一些国内的PIC单片机仿真器也开始支持HI-TECH PICC编译格式。PICC编译器可以直接挂接在MPLAB-IDE集成开发平台下,实现一体化的编译连接和原代码调试。使用MPLAB-IDE内的调试工具ICE2000、ICD2和软件模拟器都可以实现原代码级的程序调试,非常方便。 基于PICC编译环境编写PIC单片机程序的基本方式和标准C程序类似,程序一般由以下几个主要部分组成: 在程序的最前面用#include预处理指令引用包含头文件,其中必须包含一个编译器;提供的“pic.h ”文件,实现单片机内特殊寄存器和其它特殊符号的声明; 用“_CONFIG ”预处理指令定义芯片的配置位; 声明本模块内被调用的所有函数的类型,PICC 将对所调用的函数进行严格的类型匹配检查; 定义全局变量或符号替换; 实现函数(子程序),特别注意main 函数必须是一个没有返回的死循环。 类型 长度 数学表达bit1布尔型位变量,0或1两种取值char8有符号或无符号字符变量,PICC缺省认定char型变量为无符号数,但可以通过编译选项改为有符号字节变量unsigned char8无符号字符变量 short16有符号整型数unsigned short16无符号整型数int16有符号整型数unsigned int16无符号整型数long32有符号长整型数unsigned long32无符号长整型数 float24浮点数double24或32浮点数,PICC缺省认定double型变量为24位长,但可以改变编译选项改成32位表3-3a PICC支持的基本变量类型图3-3b 常用寄存器存储器是单片机中一个非常重要的部件,专门用于存放指令、数据和运算结果。存储器从使用功能上来分,可分为随机存储器RAM和只读存储器ROM两类8。3.4 流程图 总设计思路:用定时器的方式陈生一个溢出,然后在溢出的状态下在IO口设置一个一个电瓶让灯闪烁。PI单片机的时钟经过内部分频,实际的工作频率为晶振频率的四分之一,同时指令的执行采用流水灯方式,大部分的指令的执行时间是一个周期,所以在用4MHz的晶振时,指令执行的最大速度为1MIPS,即指令周期为一微妙。 图3-4程序流程图3.4.1部分LDE灯程序流程及显示图void init(); /*一个初始化方法viod说明没返回值,init是方法名()里面是参数列表。这里没有参数*/uint intnum; /定义一个名为intnum的变量。为无符号整型void main()init(); /init为自定义的方法名while(1) /*和while(true)是一个意思。就是循环测试一直为真,一般用在应用中加入跳出测试条件*/if(intnum=5) /数字为定时时间,为五次后溢出 intnum=0; /清零RD0=!RD0; /初值为零,取反 /主函数void init()TRISD=0; /方向寄存器,设置IO口通道,0代表输出,1代表输入PORTD=0; /*端口电平,也是控制内部上拉使能,低口配制成输出,高电瓶点亮*/OPTION=0x07; /控制寄存器,寄存器初始化 吧T0中断打开INTCON=0xa0; /中断寄存器TMR0=61; /初值void interrupt time0() 定义一个暂停函数,暂定时间T0IF=0; /首先清零TMR0=61; intnum+;用定时器的方式陈生一个溢出,然后在溢出的状态下在I口设置一个一个电瓶让灯闪烁。PIC单片机的时钟经过内部分频,实际的工作频率为晶振频率的四分之一,同时指令的执行采用流水灯方式,大部分的指令的执行时间是一个周期,所以在用4MHz的晶振时,指令执行的最大速度为1MIPS,即指令周期为一微妙。对于寄存器,首先把低口配制成输出,开始先不点亮灯,设置一个初值,高电平点亮,所以配置成零,接下来要设置OPTION寄存器,就是说寄存器初始化,下来在进入初值,装载一些初值。在PIC中中断函数不需要说明产生中断就直接进入中断函数,不需要调用,51都有终端号,中断号表示不同的中断入口,PIC直接写函数名就可以了。进入中断后先清零,把T0IF清零,然后装载一些初值,然后其变量一直加,一直加到溢出为止。对于主函数部分,首先要进行初始化,然后一个大循环,进入之后先判断溢出,溢出五次的时候跳出F,跳出后先清零,清零之后在LED灯显示出来,因为其初值是零,而零的时候灯不亮,然后取反LED亮。要改变LED灯闪烁的频率可以改变程序中的初值或者是溢出次数。图3-4-1LED灯显示图3.4.2数码管显示图图3-4-2数码管显示图4 总结4.1 技术优点及缺点本次课题是基于PIC16F877单片机定时器设计。系统采用的是价格较便宜的单片机以及其它元器件,设计思路是基于LED流水灯和动态数码管的基础上进行简单的改装。所以该系统比较节约经济而且使用起来也比较方便。然而每个设计都会有它的缺点存在,该系统由于采用的是便宜的元器件和较为简单的电路设计所以精确度的问题不能很高的程度。4.2 问题及解决方法设计中从开始就不断有问题出现如方案选择上就有几个需要比较挑选,幸好有指导老师的指导。在确定方案后元器件的购买又需托同学在网上购买。当然更重要的问题是在后阶段的链接和调试过程如在软件部分

温馨提示

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

评论

0/150

提交评论