您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 13PIC单片机课程设计
PIC单片机课程设计设计报告题目:数字秒表学校:河北联合大学信息工程学院学号:XXXXXXX姓名:XXX目录一:课程设计题目二:课程设计目的三:课程设计任务与要求四:总体设计4.1设计原理及方案论证4.2硬件部分4.2.1系统设计总框图4.2.2电路组成及工作原理4.2.3单片机PIC16F877简介4.3软件部分4.3.1程序流程图4.3.2程序清单五、总结参考文献一:课程设计题目秒表计时器二:课程设计目的课程设计的主要目的是通过对电子时钟的设计实践,了解PIC单片机系统控制过程、设计要求、应完成的工作内容和具体设计方法。通过设计也有助于复习、巩固以往所学的知识,达到灵活应用的目的。课程设计应强调能力培养为主,在独立完成设计任务的同时,还要注意其他方面的能力的培养与提高,如独立工作能力与创造力;综合运用专业及基础知识的能力,解决实际工程技术问题的能力等。三:课程设计任务与要求:任务:利用PIC16F877单片机设计秒表计时器。要求:通过试验箱上任意四位LED显示器显示时钟范围:00.00秒-99.99秒,分辨度:0.01秒。在设计过程中用一个定时器作为基本计数单元,使用一个矩阵式四键键盘进行控制,当定时器定时时间到时,就让0.01秒计数单元加1,当秒计数达到99.99时,就自动返回到0,重新开始秒计数。四:总体设计设计原理:此次课程设计题目是秒表计时器,由课程设计的要求和任务,以及单片机课程学习和实验,最终采用MAPLAB+ICD+实验箱作为软件编程硬件调试平台,由于设计为秒表,要求系统对时间敏感,采用了定时器和简单循环来定时,其中一个软件一个硬件,会在方案论证中分析在0.01秒时采用的是硬件定时,即用单片机内部的定时器TMR0。先将时钟初始化,赋入初值2ms定时,循环5次来进行0.01秒定时。然后由定义的变量S0来进行加一运算,然后将其值通过PIC的SPI硬件接口将数据发送至级联的74HC595,最终在数码管上进行静态显示。其中数码管的显示时,我在程序中首先定义了两个关于数码管显示的字形码定义,一个带小数点,一个不带小数点,以便在显示时调用即可。方案论证:方案1:我们所选用的是PIC内部RC震荡作为系统时钟源,并以软件定时,即用简单循环来定时0.01秒进行显示的变化。方案2:采用的是外部晶振作为系统时钟源并以硬件定时,即用单片机内部的定时器TMR0。先将时钟初始化,由于一次定时时间过长导致误差增大,二时间过短频繁处理中断消耗时也会引起误差,最终决定给TMR0八分频,赋入初值实现2ms定时,循环5次来进行0.01秒定时。方案比较:我们从两方面进行两种方案的比较,第一,由于此次课程设计要求是秒表,则在定时时要求比较精确,所以采用硬件的定时器定时时比较准确的。第二,由于秒表的定时程序是很小的,在利用软件定时占用的CPU并不是很多,因此在键盘去抖延时时采用软件延时。综合上述两种比较,我们选用了第一方案作为键盘消抖延时与第二方案作为秒表时钟相结合的方案。硬件部分:系统设计总框图:硬件使用实验室现有多功能实验箱作为基础平台部分电路如图所示:键盘:其中S9为开始键,S11为暂停/继续键,S10为清零键。.由于电路为矩阵键盘,所以程序中先查询是否有按键按下,再判断是哪个按键按下。2X2矩阵键盘PIC16F877单片机74hc595级联驱动八位数码管显示电路:利用单片机现有硬件SPI接口,外接八个级联74HC595实现静态显示。由于设计只需要四位数码管,其余位作为动画显示。74HC595参数:QA--QH:八位并行输出端。QH':级联输出端。SI:串行数据输入端。74595的控制端说明:/SCLR(10脚):低点平时将移位寄存器的数据清零。SCK(11脚):上升沿时数据寄存器的数据移位。QA--QB--QC--...--QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了)RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。(5V时,大于几十纳秒就行了),更新显示数据。/G(13脚):高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。PIC16F877原理简介1.1PIC16F877特性:PIC16F877是由Microchip公司所生产开发的新产品,属于PICmicro系列单片微机,具有Flashprogram程序内存功能,可以重复烧录程序,适合教学、开发新产品等用途;而其内建ICD(InCircuitDebug)功能,可以让使用者直接在单片机电路或产品上,进行如暂停微处理器执行、观看缓存器内容等,让使用者能快速地进行程序除错与开发。如图1为PIC16F877的40根接脚图,PDIP是指一般最常见的DIP(DualInLinePackage)包装,而PIC单片机也有PLCC(PlasticLeadedChipCarrier)与QFP(QuadFlatPackage)两种形式的包装,依照不同的需求,寻找不同的包装形式。如图所示,每根接脚都有其特定功能,例如Pin11与Pin32(VDD)为正电源接脚,Pin12与Pin31(VSS)为地线接脚;而有些接脚有两种甚至三种以上功能,例如Pin2(RA0/AN0)代表PORTA的第一支接脚,在系统重置(Reset)后,可自动成为模拟输入接脚,接收模拟讯号,也可经由程序规划为数字输出输入接脚。软件部分程序主流程图开中断并启动定时器对定时器/IO口初始化程序开始S9是否按下键盘扫描否是S11是否按下更新显示内容否关中断否S11是否按下是否S10是否按下是中断服务程序流程图程序清单:LISTP=16F877INCLUDEP16F877.INC;---------------------现计时秒表-------------------------------;时钟显示范围:00.00秒-99.99秒,分辨度:0.01秒;所用的寄存器如下S0EQU0X20;0.01秒计时器S1EQUS0+1;0.1秒计时器S2EQUS0+2;1秒计时器S3EQUS0+3;10秒计时器SREGEQUS0+4;中断次数计数器LEDFEQUS0+5;显示的LED的位置指示寄存器XW_TEMPEQUS0+6;用于中断中保护W的值XHOSTSEQUS0+7;用于中断中保护STATUS的值DEYHEQUS0+8DEYLEQUS0+9;以上两个寄存器用于软件延时HOSTFEQUS0+0X0A;用于中断中保护FSR0L的值JIANREQUS0+0X0B;保存键值TEMPEQUS0+0X0CORG0X00NOPGOTOMAIN对定时器重新赋值定时器溢出中断是否到10ms是S0+1更新显示缓存是是否超过9S0=0,S1+1更新显示缓存回到主程序否ORG0X04GOTOCLKINT;转向中断服务程序ORG0X10;--------------------------------------------------------------------------CONVERT;不带小数点的共阳极码表ADDWFPCL,1RETLW0XC0;0RETLW0XF9;1RETLW0XA4;2RETLW0XB0;3RETLW0X99;4RETLW0X92;5RETLW0X82;6RETLW0XD8;7RETLW0X80;8RETLW0X90;9RETLW0XBF;-RETLW0XFF;灭灯RETURNCONVERT2;带小数点的共阳极码表ADDWFPCL,1RETLW0X40;0.RETLW0X79;1.RETLW0X24;2.RETLW0X30;3.RETLW0X19;4.RETLW0X12;5.RETLW0X02;6.RETLW0X78;7.RETLW0X00;8.RETLW0X10;9.RETURN;-----------------------SPI发送显示子模块--------------------------------TRANSMITCLRFPORTA;LACK送低电平,为锁存做准备MOVWFSSPBUF;启动发送WAITBANKSELPIR1BTFSSPIR1,SSPIFGOTOWAIT;等待发送结束BCFPIR1,SSPIF;清除中断标志RETURN;--------------------------显示子程序模块---------------------------------DISPLAYMOVLW0X01MOVWFLEDFXIANDBTFSCS2,0GOTOZXCMOVLW0X0BGOTOVBNZXCMOVLW0X0AVBNCALLCONVERTINCFLEDFMOVFLEDF,WSUBLW0X05BTFSSSTATUS,ZGOTOXIAND;显示动画MOVLW0X01MOVWFLEDFMOVLW0XA0MOVWFFSRAGAINXIANMOVFLEDF,WSUBLW0X02BTFSSSTATUS,ZGOTOXIANBMOVFINDF,WCALLCONVERT2;若是第二位,则查带小数点的码表GOTOTRANXIANBMOVFINDF,WCALLCONVERTTRANCALLTRANSMIT;发送一个显示数据INCFFSRINCFLEDFMOVFLEDF,WSUBLW0X05BTFSSSTATUS,ZGOTOAGAINXIANBSFPORTA,5;最后给一个锁存信号,代表一次显示任务完成RETURN;-----------S0计数溢出处理子程序------------CS0CLRFS0INCFS1RETURN;-----------S1计数溢出处理子程序---------------CS1CLRFS1INCFS2RETURN;-----------S2计数溢出处理子程序---------------CS2CLRFS2INCFS3RETURN;-----------S3计数溢出处理子程序---------------CS3CLRFS3RETURN;-----------时钟中断服务程序-------------------CLKINTMOVWFXW_TEMP;保存W的值SWAPFSTATUS,WMOVWFXHOSTS;暂存STATUS的值MOVFFSR,WMOVWFHOSTF;保存FSR的值。以上程序为中断现场保护----6MOVLW0X07MOVWFTMR0;对TMR0写入初值BCFINTCON,T0IF;清除中断标志INCFSREGMOVFSREG,WSUBLW0X05;TMR0每2ms中断一次BTFSSSTATUS,Z;其中断5次后才执行对S0,S1,S2,S3的操作GOTOTIFANCLRFSREGINCFS0MOVFS0,WSUBLW0X0ABTFSCSTATUS,ZCALLCS0MOVFS1,WSUBLW0X0ABTFSCSTATUS,ZCALLCS1MOVFS2,WSUBLW0X0ABTFSCSTATUS,ZCALLCS2MOVFS3,WSUBLW0X0ABTFSCSTATUS,ZCALLCS3TIFANMOVFHOSTF,W;以下为中断现场恢复MOVWFFSR;恢复间接寻址指针FSR的值SWAPFXHOSTS,WMOVWFSTATUS;恢复STATUS的值SWAPFXW_TEMP,1SWAPFXW_TEMP,W;恢复W的值RETFIE;----------------------------TMR0初始化子程序----------------------------------------CLKINSUBBANKSELOPTION_REGBCFOPTION_REG,T0CS;TMR0工作于定时器方式BCFOPTION_REG,PSA;TMR0用分频BCFOPTION_REG,PS2BSFOPTION_REG,PS1BCFOPTION_REG,PS0;TMR08分频比BANKSELINTCONBCFINTCON,T0IF;清除TMR0的中断标志BCFINT
本文标题:13PIC单片机课程设计
链接地址:https://www.777doc.com/doc-3763930 .html