ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:227.90KB ,
资源ID:8895110      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8895110.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

课程设计.docx

1、课程设计一、设计名称: 秒表计时器 二、设计目的与要求:目的:通过对电子时钟的设计实践,了解PIC单片机系统控制过程、设计要求、应完成的工作内容和具体设计方法。通过设计也有助于复习、巩固以往所学的知识,达到灵活应用的目的。课程设计应强调能力培养为主,在独立完成设计任务的同时,还要注意其他方面的能力的培养与提高,如独立工作能力与创造力;综合运用专业及基础知识的能力,解决实际工程技术问题的能力等。要求:通过试验箱上的后四位LED显示器显示时钟范围:00.00秒-99.99秒,分辨度:0.01秒。在设计过程中用一个定时器作为基本计数单元,使用一个矩阵式四键键盘进行控制,当定时器定时时间到时,就让0.

2、01秒计数单元加1,当秒计数达到99.99时,就自动返回到0,重新开始秒计数。并且使其前四位显示字符,字符难易度不论。三、设计原理说明:PIC16F877原理简介 1.1 、PIC16F877特性:PIC16F877是由Microchip公司所生产开发的新产品,属于PICmicro系列单片微机,具有Flash program程序内存功能,可以重复烧录程序,适合教学、开发新产品等用途;而其内建ICD(In Circuit Debug)功能,可以让使用者直接在单片机电路或产品上,进行如暂停微处理器执行、观看缓存器内容等,让使用者能快速地进行程序除错与开发。 如图1为PIC16F877的40根接脚图

3、,PDIP是指一般最常见的DIP(Dual In Line Package)包装,而PIC单片机也有PLCC(Plastic Leaded Chip Carrier)与QFP(Quad Flat Package)两种形式的包装,依照不同的需求,寻找不同的包装形式。如图所示,每根接脚都有其特定功能,例如Pin11与Pin32(VDD)为正电源接脚,Pin12与Pin31(VSS)为地线接脚;而有些接脚有两种甚至三种以上功能,例如Pin2(RA0/AN0)代表PORTA的第一支接脚,在系统重置(Reset)后,可自动成为模拟输入接脚,接收模拟讯号,也可经由程序规划为数字输出输入接脚。设计原理:此次

4、课程设计题目是秒表计时器,由课程设计的要求和任务,以及单片机课程学习和实验,最终采用MAPLAB+ICD+实验箱作为软件编程硬件调试平台,由于设计为秒表,要求系统对时间敏感,采用了定时器和简单循环来定时,其中一个软件一个硬件,会在方案论证中分析在0.01秒时采用的是硬件定时,即用单片机内部的定时器TMR0。先将时钟初始化,赋入初值2ms定时,循环5次来进行0.01秒定时。然后由定义的变量S0来进行加一运算,然后将其值通过PIC的SPI硬件接口将数据发送至级联的74HC595,最终在数码管上进行静态显示。其中数码管的显示时,我在程序中首先定义了两个关于数码管显示的字形码定义,一个带小数点,一个不

5、带小数点,以便在显示时调用即可。四、硬件设计:系统设计总框图: 硬件使用实验室现有多功能实验箱作为基础平台部分电路如图所示:键盘:其中K2为开始键,K4为暂停/继续键,K1为清零键。.由于电路为矩阵键盘,所以程序中先查询是否有按键按下,再判断是哪个按键按下。显示电路:利用单片机现有硬件SPI接口,外接八个级联74HC595实现静态显示。由于设计只需要四位数码管,其余位作为动画显示。74HC595参数:QA-QH: 八位并行输出端。QH: 级联输出端。SI: 串行数据输入端。74595的控制端说明:/SCLR(10脚): 低点平时将移位寄存器的数据清零。SCK(11脚):上升沿时数据寄存器的数据

6、移位。QA-QB-QC-.-QH;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了)RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。(5V时,大于几十纳秒就行了),更新显示数据。/G(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。五、软件设计:程序主流程图中断服务程序流程图整体电路:程序清单:LIST P=16F877INCLUDE P16F877.INC;-现计时秒表-;时钟显示范围:00.00秒-99.99秒,分辨度:0.01秒;所用的

7、寄存器如下 S0 EQU 0X20 ;0.01 秒计时器 S1 EQU S0+1 ;0.1 秒计时器 S2 EQU S0+2 ;1 秒计时器 S3 EQU S0+3 ;10 秒计时器 SREG EQU S0+4 ;中断次数计数器 LEDF EQU S0+5 ;显示的LED的位置指示寄存器 XW_TEMP EQU S0+6 ;用于中断中保护W的值 XHOSTS EQU S0+7 ;用于中断中保护STATUS的值 DEYH EQU S0+8 DEYL EQU S0+9 ;以上两个寄存器用于软件延时 HOSTF EQU S0+0X0A ;用于中断中保护FSR0L的值 JIANR EQU S0+0X0

8、B ;保存键值 TEMP EQU S0+0X0C ZDY EQU S0+0x0D ORG 0X00 NOP GOTO MAIN ORG 0X04 GOTO CLKINT ;转向中断服务程序 ORG 0X10;- CONVERT ;不带小数点的共阳极码表 ADDWF PCL,1 RETLW 0XC0 ;0 RETLW 0XF9 ;1 RETLW 0XA4 ;2 RETLW 0XB0 ;3 RETLW 0X99 ;4 RETLW 0X92 ;5 RETLW 0X82 ;6 RETLW 0XD8 ;7 RETLW 0X80 ;8 RETLW 0X90 ;9 RETLW 0XBF ;- RETLW 0

9、XFF ;灭灯retlw 0x89retlw 0x86retlw 0xc7retlw 0x8c RETURN CONVERT2;带小数点的共阳极码表 ADDWF PCL,1 RETLW 0X40 ;0. RETLW 0X79 ;1. RETLW 0X24 ;2. RETLW 0X30 ;3. RETLW 0X19 ;4. RETLW 0X12 ;5. RETLW 0X02 ;6. RETLW 0X78 ;7. RETLW 0X00 ;8. RETLW 0X10 ;9. RETLW 0xA0 RETURN ;-SPI发送显示子模块- TRANSMIT CLRF PORTA ;LACK送低电平,为

10、锁存做准备 MOVWF SSPBUF ;启动发送 WAIT BANKSEL PIR1 BTFSS PIR1,SSPIF GOTO WAIT ;等待发送结束 BCF PIR1,SSPIF ;清除中断标志 RETURN ;-显示子程序模块-DISPLAY MOVLW 0X01 MOVWF LEDFXIAND BTFSC S2,0 GOTO ZXC MOVLW 0X0B GOTO VBNZXC MOVLW 0X0AVBN CALL CONVERT INCF LEDF MOVF LEDF,W SUBLW 0X05 BTFSS STATUS,Z GOTO XIAND ;显示动画 MOVLW 0X01 M

11、OVWF LEDF MOVLW 0XA0 MOVWF FSRAGAINXIAN MOVF LEDF,W SUBLW 0X02 BTFSS STATUS,Z GOTO XIANB MOVF INDF,W CALL CONVERT2 ;若是第二位,则查带小数点的码表 GOTO TRANXIANB movf LEDF,w sublw 0x08 BTFSC STATUS,Z goto xian8 movf LEDF,w sublw 0x07 BTFSC STATUS,Z goto xian7 movf LEDF,w sublw 0x06 BTFSC STATUS,Z goto xian6 movf L

12、EDF,w sublw 0x05 BTFSC STATUS,Z goto xian5 xian5 MOVF LEDF,W SUBLW 0X05 BTFSS STATUS,Z goto aaa MOVLW 0x0f CALL CONVERT GOTO TRANxian6 MOVF LEDF,W SUBLW 0X06 BTFSS STATUS,Z goto aaa MOVLW 0x0e CALL CONVERT GOTO TRANxian7 MOVF LEDF,W SUBLW 0X07 BTFSS STATUS,Z goto aaa MOVLW 0x0d CALL CONVERT GOTO TRA

13、Nxian8 MOVF LEDF,W SUBLW 0X08 BTFSS STATUS,Z goto aaa MOVLW 0x0c CALL CONVERT GOTO TRANaaa MOVF INDF,W CALL CONVERTTRAN CALL TRANSMIT ;发送一个显示数据 INCF FSR INCF LEDF MOVF LEDF,W SUBLW 0X09 BTFSS STATUS,Z GOTO AGAINXIAN BSF PORTA,5 ;最后给一个锁存信号,代表一次显示任务完成 RETURN;-S0计数溢出处理子程序-CS0 CLRF S0 INCF S1 RETURN;-S1

14、计数溢出处理子程序-CS1 CLRF S1 INCF S2 RETURN;-S2计数溢出处理子程序-CS2 CLRF S2 INCF S3 RETURN;-S3计数溢出处理子程序-CS3 CLRF S3 RETURN;-时钟中断服务程序-CLKINT MOVWF XW_TEMP ;保存W的值 SWAPF STATUS,W MOVWF XHOSTS ;暂存STATUS的值 MOVF FSR,W MOVWF HOSTF ;保存FSR的值。以上程序为中断现场保护-6 MOVLW 0X07 MOVWF TMR0 ;对TMR0写入初值 BCF INTCON,T0IF ;清除中断标志 INCF SREG

15、MOVF SREG,W SUBLW 0X05 ;TMR0 每2ms中断一次 BTFSS STATUS,Z ;其中断5次后才执行对S0,S1,S2,S3 的操作 GOTO TIFAN CLRF SREG INCF S0 MOVF S0,W SUBLW 0X0A BTFSC STATUS,Z CALL CS0 MOVF S1,W SUBLW 0X0A BTFSC STATUS,Z CALL CS1 MOVF S2,W SUBLW 0X0A BTFSC STATUS,Z CALL CS2 MOVF S3,W SUBLW 0X0A BTFSC STATUS,Z CALL CS3TIFAN MOVF H

16、OSTF,W ;以下为中断现场恢复 MOVWF FSR ;恢复间接寻址指针FSR的值 SWAPF XHOSTS,W MOVWF STATUS ;恢复STATUS的值 SWAPF XW_TEMP,1 SWAPF XW_TEMP,W ;恢复W的值 RETFIE ;-TMR0初始化子程序-CLKINSUB BANKSEL OPTION_REG BCF OPTION_REG,T0CS ;TMR0工作于定时器方式 BCF OPTION_REG,PSA ;TMR0用分频 BCF OPTION_REG,PS2 BSF OPTION_REG,PS1 BCF OPTION_REG,PS0 ;TMR08分频比 B

17、ANKSEL INTCON BCF INTCON,T0IF ;清除TMR0的中断标志 BCF INTCON,GIE ;总中断禁止 BSF INTCON,T0IE ;TMR0中断允许-10 RETURN;- -系统初始化子程序-MAINSUB BANKSEL TRISA BCF TRISA,5 ;置RA5为输出方式,以输出锁存信号 BCF TRISB,1 BCF TRISB,2 BSF TRISB,4 BSF TRISB,5 ;设置与键盘有关的各口的输入输出方式 BCF TRISC,5 BCF TRISC,3 ;设置SCK与SDO为输出方式 BCF INTCON,GIE ;关闭所有中断 MOVL

18、W 0XC0 MOVWF SSPSTAT ;设置SSPSTAT寄存器 BANKSEL SSPCON MOVLW 0X30 MOVWF SSPCON ;设置SPI的控制方式,允许SSP方式, ;并且时钟下降沿发送,与“74HC595,当 ;其SCLK从低到高电平跳变时,串行输入数据 ;(DI)移入寄存器”的特点相对应-15 BCF STATUS,IRP ;间接寻址选中BANK0、BANK1 MOVLW 0X01 MOVF TEMP MOVLW 0X00 MOVF JIANR RETURN ;返回 ;-键扫描子程序- KEYSCAN CLRF PORTB ;B1和B2两条线上送0 NOP NOP

19、;经过一段时间的延时,避开引脚电平的过渡过程 MOVF PORTB,W ANDLW 0X30 ;只检查B4和B5两位,屏蔽其它各位 SUBLW 0X30 RETURN ;- KEYDELAY ;键盘去抖子程序(约8ms的软件延时) MOVLW 0X80 MOVWF DEYHAGAIN2 MOVLW 0XFF MOVWF DEYLAGAIN1 DECFSZ DEYL,1 GOTO AGAIN1 DECFSZ DEYH,1 GOTO AGAIN2 RETURN ;- KEYSERVE MOVLW 0X00 MOVWF JIANR MOVLW 0XFD ;键盘服务子程序 MOVWF PORTB BT

20、FSS PORTB,4 GOTO S10 BTFSS PORTB,5 GOTO S9 MOVLW 0XFB MOVWF PORTB BTFSS PORTB,4 GOTO S12 BTFSS PORTB,5 GOTO S11 GOTO TUICHUS10 MOVLW 0X02 MOVWF JIANR GOTO TUICHUS9 MOVLW 0X01 MOVWF JIANR GOTO TUICHU S12 MOVLW 0X04 MOVWF JIANR GOTO TUICHUS11 MOVLW 0X03 MOVWF JIANR ;把键值送给JIANRTUICHU RETURN;-显示缓冲区处理子程序

21、-XIANHUAN MOVLW 0XA0 MOVWF FSR MOVF S3,W MOVWF INDF INCF FSR MOVF S2,W MOVWF INDF INCF FSR MOVF S1,W MOVWF INDF INCF FSR MOVF S0,W MOVWF INDF RETURN;-MAIN NOP CALL MAINSUB ;系统初始化 CALL CLKINSUB ;调用时钟初始化子程序 ;-DENJIAN BANKSEL S0 CLRF S0 CLRF S1 CLRF S2 CLRF S3 CLRF SREG ;复位显示数据即: CLRF LEDF ;使S0=S1=S2=S

22、3=0 CALL XIANHUAN ;把S3、S2、S1、S0的值装入显示缓冲区 CALL DISPLAY ;显示DENAN BCF INTCON,GIE ;关中断 CALL KEYSCAN ;进行键扫描 BTFSS STATUS,Z GOTO XIAODOU1 ;如起始键按下,则消抖动 GOTO DENAN ;如起始键没按下,则继续等待XIAODOU1 CALL KEYDELAY ;延时消抖动 CALL KEYSCAN ;再次进行键扫描 BTFSC STATUS,Z GOTO DENAN ;若为干扰,则再次等待键按下 CALL KEYSERVE ;不为干扰则查键值 MOVF JIANR,W

23、SUBLW 0X01 ;键S9按下 BTFSS STATUS,Z GOTO DENAN BANKSEL S0 CLRF S0 CLRF S1 CLRF S2 CLRF S3 CLRF SREG ;设置新一次计时的初始条件 WAITS CALL KEYSCAN BTFSS STATUS,Z GOTO WAITS ;等键松开后再进行下面的操作ABC MOVLW 0X06 MOVWF TMR0 BSF INTCON,GIE ;开总中断HERE CALL XIANHUAN ;显示缓冲区处理 CALL DISPLAY ;即时更新显示内容 CALL KEYSCAN BTFSS STATUS,Z GOTO

24、XIAODOU ;若停止计时键按下,则消抖 GOTO HERE ;若停止计时键没按下,则继续等待中断计时XIAODOU CALL DISPLAY ;利用消抖动时间调用显示程序 CALL DISPLAY CALL DISPLAY CALL DISPLAY CALL DISPLAY CALL DISPLAY CALL DISPLAY CALL DISPLAY CALL DISPLAY CALL KEYSCAN BTFSC STATUS,Z GOTO HERE ;若为干扰,则继续等待停止键按下 CALL KEYSERVE ;不为干扰则查键值 MOVF JIANR,W SUBLW 0X03 ;键S11

25、按下 BTFSS STATUS,Z GOTO HERE BCF INTCON,GIE ;若S11键按下,则禁止中断 CALL DISPLAY ;若不为干扰,则禁止中断,更新显示内容 WAITR CALL KEYSCAN BTFSS STATUS,Z GOTO WAITR ;等键松开后再进行下面的操作 DENDAI CALL KEYSCAN BTFSC STATUS,Z GOTO DENDAI ;循环进行键扫描,等待继续键按下 CALL KEYDELAY CALL KEYSCAN BTFSC STATUS,Z GOTO DENDAI ;延时消抖 CALL KEYSERVE ;不为干扰则查键值 MOVF JIANR,W SUBLW 0X03 ;键S11按下继续 BTFS

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1