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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

天津大学智能装置课程设计电子时钟教材.docx

1、天津大学智能装置课程设计 电子时钟教材智能装置课程设计 一课程设计目的: 1.深入了解PIC16F877单片机的工作原理,熟练掌握汇编语言程序设计方法,熟练使用MPLAB-ICD仿真器及MPLAB-IDE仿真调试软件。 2.通过该课程设计使学生初步掌握以单片机为核心的智能装置设计的简单原则、步骤和方法。 3.熟悉智能装置设计中有关的硬件设计调试,如人机界面等。 4.熟悉智能装置设计中相关软件的设计、编程和调试。二课程设计内容1.以16F877单片机为核心,结合给出的其他原器件和智能装置实验系统原有的内容设计电子时钟硬件电路电路。 2. 利用实验板上的半导体温度传感器和四个独立按键,温度传感器按

2、其原理介绍采集,时钟利用液晶显示器进行显示。 3.时钟按照时分秒、温度以及年月日显示,并可以利用按键逐位进行修改设置。 4.利用PIC16F877自带EEPROM进行掉电保护(选做)。三课程设计要求: 1.根据实验指导书的设计内容及和智能装智实验系统所给出的元件,设计电子时钟的硬件原理图。 2.按照设计好的硬件原理图在实验系统上用导线搭建硬件电路。 3.用万用表检查硬件电路连接是否正确,检查无误后上电并编制简单的测试程 序分步调试各部分功能。 4.在各部分功能实现后,编制完整的电子时钟系统软件,并进行软硬件联调,直到达到设计要求。 5.按照设计内容要求测试仪表误差并做分析,给出仪表精度,完成后

3、由教师进行验收检查。四课程设计设备仪器:MPLAB-ICD模块与仿真头智能装置实验系统安装了MPLAB-IDE开发软件的计算机数字万用表导线若干五课程设计硬件原理图:七课程设计硬件设计思路: 电子时钟的硬件接线比较简单,复杂之处在于程序的设计,需要外部连接的硬件只有LCD液晶显示屏以及按键。 1.LCD屏写数据是串行输入,所以产生时序的问题。LCD显示输出采用手动时钟完成,这样便于控制时序,且传送字符时的传输效率比较高,当采用其他总线传送方式的时候,由于计算机在传送每个字节前也会加上相应的头部,这样与LCD所要求的时序不符,控制需要三条线,一条时钟线,一条数据线,一条片选线,三条线互相配合保证

4、将数据正确写入LCD的数据缓冲区。所以使用三条I/O端口线向LCD写数据,选用RD0RD2控制,其中RD0接CS端,RD1接CLK,RD2接SID。 2.四个按键分别与RC0.RC1.RC2.RC3相连,按键低电平有效,采用扫描方式判断哪一个按键按下。八调试步骤以及各步骤调试过程中出现的问题与解决方法: 1.LCD输出调试:由于所有实验现象都要在LCD屏显试才能看到,所以这是首先要调试好的一个程序。最初接线完成之后没有显示,先确定了一遍接线没有问题,进而检查程序。首先进行调试的是写命令子程序,方法就是将显示状态开/关的控制字设置成显示光标,如果这句控制字能够成功写入,屏幕上将有一个光标,则至少

5、时钟书写命令程序是正确的,经试验写命令程序时正确的,后来在检查写数据程序时发现时首地址设错了,上行是80H到87H,我们给的首地址是89H,改变地址后输出正常。后来又产生一个问题就是在输出多个字的时候容易产生乱码,我们的解决方式是每写完一条指令后需要加一段短延时,大致在20ms左右,这样保证屏幕完成指令接收,并保证下一条指令可以正确写入。 2.二进制转BCD模块调试:由于只有将LCD输出模块与二进制转BCD码程序调试成功,才能看到实验现象进而调试其他模块,所以首先要将二进制转BCD码程序调试成功。此子程序采用了简单的加三移位算法,方法是结果字节首先清零,然后待转换字节向左移动8次,每次移动后都

6、检查第四位LSD加3是否大于7,如果是则加3,否则不加,高四位MSD做同样处理。如果是要变换双字节的16位二进制,则要将待转换字节左移16次。在调试过程中整体比较顺利。 3.时分秒计时模块:在调试本模块的过程中,出现了时间已到60秒但是分钟数没有进位的情况,单步执行后发现是判断语句发生了问题。我们采用了XORLW这个语句,将秒数与60相异或,然后判断零标志位,当秒数到达六十时,异或操作使status寄存器零标志位为1,我们误以为这时候零标志位为零,所以判断语句用反,将BTFSS用成BTFSC,改正后,时分秒计时子程序正常工作。 4.年月日模块:这是程序中最为复杂的程序因为年月日计时子程序不仅仅

7、要解决进位的问题,在每个月都要分清不同的天数,还有平闰年的问题,所以这部分子程序最为复杂。在日期数加一之前首先要确定本月月数。为了使程序具有更高的可读性,在编辑程序时舍弃了那些逻辑复杂的简便月份判断方法,如是不是1,3,5,7,8,10,12月,再使日期进时可以加到31天,本模块的设计思路是先判断月份是几月,确定好月份之后再转到相应的日期判断子程序中,这样的代价就是使程序的长度边长,有了12段的简单重复,但好处是使程序简单易读,便于调试。在调试过程中,出问题的是判断平闰年程序,当从二月变到三月的时候,不论是否是平年还是闰年最后2月都是只记28天。经过单步执行,发现是我们没有给程序设置一个公共出

8、口,在判断平闰年是,即使判断是闰年,但是由于判断闰年的程序的出口是确定本年是平年的程序,所以不管是不是闰年,程序的最终出口都是将年份数判断为平年,即二月的输出只有28天,解决方案是增加程序的公共出口,判断完平闰年后,程序返回,经调试,程序正常。 5.温度检测模块:温度检测的难点是如何将AD转换后的得到的10位二进制数转化为对应的温度数,PIC单片机中ad模块的输入电压是5伏,温度传感器的输出电压为1伏时对应温度为100度,5V对应的是ad转换后的3FFH,经换算,可得到如下对应关系,1度对应0.05V,3ffh换算成为十进制为1023,约等于1000,通过近似,可知0.005V对应一个二进制位

9、,在编程时,将ad转换后的二进制数减去1000,余数再进行转换才是以0度为基准的温度值,将余数除以2之后得到的二进制数即为当前温度,将温度的二进制形式作为入口参数调用二进制转BCD程序,之后就可以输出在LCD屏上了。在ad转换程序中设置的是右对齐,最高的两位直接舍弃不用,因为只有当大于100度时最高两位才有数,但是如果作为测量试问的程序来说室温基本不会到那么高,所以可以将最高两位不带入计算了。本程序的温度检测模块检测温度精度是0.5度。 6.按键模块:按键模块的设计思路是在一秒中多次将RC口中的状态读进来,在没有按键按下时输入为FFH,一旦有按键输入,相应位置零,输入改变,通过判断是哪一位的输

10、入置零,知道是哪个按键按下,之后再转到相应的案件处理子程序中。在调试过程中,出现了按键响应不灵敏的问题,同时电子钟一秒定时的时间增加了。在没有加入按键模块之前,一秒定时准确度比较高,加入按键模块之后一秒定时时间明显加大,我们怀疑是每秒中按键扫描次数过多导致,在减少扫描次数后情况好转,我们在定时程序中调用按键扫描程序,定时程序是120ms乘以5,每次定时器120ms到时调用一次按键扫描程序。 7.EEPROM读写模块:我们直接应用了书上的EEPROM读写模块例程,理论上程序执行不应该出错,但是当实际执行的时候发现数据无法写入也无法读出,经过询问老师,我们了解到在本仿真软件的环境下对EEPROM的

11、操作都要经过手动刷新,这样数据才能写入和读出。软件设计流程框图程序初始化 调用EEPROM读程序 调用一秒延时程序 调用温度检测程序 是否到24:59:59 否 是 调用年月日计时程序 调用输出程序 调用EEPROM写程序 程序结束软件程序清单: LIST P=16F877 #INCLUDE SPTEM EQU 20H BINTEM EQU 21H LED_TEM EQU 22H GENE1 EQU 23H GENE2 EQU 24H LEH EQU 25H LEM EQU 26H LEL EQU 27H COUNT1 EQU 28H COUNT2 EQU 29H COUNT3 EQU 30H

12、 COUNT EQU 31H GENE3 EQU 33H GENE4 EQU 34H GENE5 EQU 35H DECTEMLO EQU 36H DECTEMHI EQU 37H TEMP EQU 38H SEC EQU 39H MIN EQU 40H HOU EQU 41H YEAR EQU 42H MONTH EQU 43H DAY EQU 44H PINGRUN EQU 45H WENDU EQU 46H WENDU4 EQU 47H HOUTEMP EQU 48H TAG EQU 50H HM EQU 51H MODJISHU EQU 52H ORG 0050HSTART ;主程序

13、BSF STATUS,RP0 BCF STATUS,RP1 MOVLW 01H ;RA0输入,其他不用。 MOVWF TRISA MOVLW 0FFH ;RC1234INPUT。 MOVWF TRISC MOVLW 00H MOVWF TRISD ;RD0、RD1、RD2输出。 MOVLW 20H MOVWF OPTION_REG MOVLW 00H MOVWF INTCON ;Timer0作计数器,初始化 BCF STATUS,RP0 MOVLW 31H MOVWF T1CON ;Timer1作定时器,定时1s,初始化 MOVLW 01H MOVWF MODJISHU CLRF HM CLR

14、F SEC CLRF MIN CLRF HOU CLRF PORTB MOVLW 17H MOVWF HOU MOVLW 3BH MOVWF MIN MOVLW 30H MOVWF SEC MOVLW 10H MOVWF YEAR MOVLW 02H MOVWF MONTH MOVLW 1CH MOVWF DAYLEDOUT ;LCD屏显示部分 MOVLW 00H MOVWF PORTD ;准备传输 MOVLW 01H MOVWF LED_TEM ;清除显示 CALL LEDORD MOVLW 20H ;功能设定 MOVWF LED_TEM CALL LEDORD MOVLW 02H ;地址归

15、位 MOVWF LED_TEM CALL LEDORD MOVLW 06H ;进入点设定 MOVWF LED_TEM CALL LEDORD MOVLW 0CH ;显示状态开,无光标 MOVWF LED_TEM CALL LEDORD MOVLW 01H ;清除显示 MOVWF LED_TEM CALL LEDORD MOVLW 80H ;DDRAM地址复位至80H MOVWF LED_TEM CALL LEDORD CALL EEPROMRD ;CALL EEPROMWR ;CALL TEMPERATUREAE CALL EEPROMWR CALL INTRB CALL TEMPERATUR

16、E CALL INTRB CALL OUTPUT CALL INTRB CALL DISPLAYSFM CALL DELAY2 ;CALL EEPROMRD INCF SEC,1 MOVLW 3CH SUBWF SEC,0 BTFSS STATUS,Z GOTO AE CLRF SEC INCF MIN,1 MOVLW 3CH SUBWF MIN,02 BTFSS STATUS,Z GOTO AE CLRF MIN ;CALL EEPROMWR INCF HOU,1 MOVLW 18H SUBWF HOU,0 BTFSS STATUS,Z GOTO AE CLRF HOU CALL NIAN

17、GOTO AE NIAN ;年月日子程序 INCF DAY,1 IS1 MOVF MONTH,0 XORLW 01H BTFSS STATUS,Z GOTO IS2 GOTO BE1IS2 MOVF MONTH,0 XORLW 02H BTFSS STATUS,Z GOTO IS3 GOTO BE2IS3 MOVF MONTH,0 XORLW 03H BTFSS STATUS,Z GOTO IS4 GOTO BE3IS4 MOVF MONTH,0 XORLW 04H BTFSS STATUS,Z GOTO IS5 GOTO BE4IS5 MOVF MONTH,0 XORLW 05H BTFSS

18、 STATUS,Z GOTO IS6 GOTO BE5IS6 MOVF MONTH,0 XORLW 06H BTFSS STATUS,Z GOTO IS7 GOTO BE6IS7 MOVF MONTH,0 XORLW 07H BTFSS STATUS,Z GOTO IS8 GOTO BE7IS8 MOVF MONTH,0 XORLW 08H BTFSS STATUS,Z GOTO IS9 GOTO BE8IS9 MOVF MONTH,0 XORLW 09H BTFSS STATUS,Z GOTO IS10 GOTO BE9IS10 MOVF MONTH,0 XORLW 0AH BTFSS ST

19、ATUS,Z GOTO IS11 GOTO BE10IS11 MOVF MONTH,0 XORLW 0BH BTFSS STATUS,Z GOTO IS12 GOTO BE11IS12 GOTO BE12BE1 MOVF DAY,0 XORLW 20H BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BEBE2 CALL JUDGE BTFSC PINGRUN,0 GOTO RUN MOVF DAY,0 XORLW 1DH BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF M

20、ONTH,1 GOTO BERUN MOVF DAY,0 XORLW 1EH BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BEBE3 MOVF DAY,0 XORLW 20H BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BEBE4 MOVF DAY,0 XORLW 1FH BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BE BE5 MOVF DAY,0 XORLW

21、20H BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BEBE6 MOVF DAY,0 XORLW 1FH BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BEBE7 MOVF DAY,0 XORLW 20H BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BEBE8 MOVF DAY,0 XORLW 20H BTFSS STATUS,Z GOTO BE MOVLW 01H

22、 MOVWF DAY INCF MONTH,1 GOTO BEBE9 MOVF DAY,0 XORLW 1FH BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BEBE10 MOVF DAY,0 XORLW 20H BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BEBE11 MOVF DAY,0 XORLW 1FH BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY INCF MONTH,1 GOTO BEBE1

23、2 MOVF DAY,0 XORLW 20H BTFSS STATUS,Z GOTO BE MOVLW 01H MOVWF DAY MOVLW 01H MOVWF MONTH INCF YEAR,1BE RETURN JUDGE BTFSC YEAR,0 GOTO SHIPING BTFSC YEAR,1 GOTO SHIPING BSF PINGRUN,0 GOTO FANHUISHIPING BCF PINGRUN,0 FANHUI RETURNTEMPERATURE ;温度检测子程序 BCF STATUS,RP0 MOVLW 41H MOVWF ADCON0 ;选择A/D转换在RA0,并

24、打开A/D转换 BSF STATUS,RP0 MOVLW 0x8e MOVWF ADCON1 ;转换结果左移,且把RA0口设置成模拟量输入 MOVLW 0x01 MOVWF TRISA BCF STATUS,RP0 BSF ADCON0,2 ;GO/DONE位置1,开始A/D转换 NOP NOPHERE BTFSC ADCON0,2 ;检查是否转换完成 GOTO HERE NOP BSF STATUS,RP0 ;读取转换结果高8位信息 MOVLW 69H SUBWF ADRESL,0 BCF STATUS,RP0 MOVWF WENDU BCF STATUS,C RRF WENDU,1 BTF

25、SC STATUS,C GOTO AA MOVLW 30H MOVWF WENDU4 GOTO BBAA MOVLW 35H MOVWF WENDU4 BB MOVF WENDU,0 MOVWF BINTEM CALL BINTOBCD MOVLW 95H ;DDRAM地址复位至93H MOVWF LED_TEM CALL LEDORD MOVLW 20H MOVWF LED_TEM ;NULL位 CALL LEDDAT MOVF LEM,0 ;十位 MOVWF LED_TEM CALL LEDDAT ; MOVF LEL,0 ;个位 MOVWF LED_TEM CALL LEDDAT MOV

26、LW 2EH MOVWF LED_TEM CALL LEDDAT MOVF WENDU4,0 MOVWF LED_TEM CALL LEDDAT BCF STATUS,RP0 RETURN OUTPUT MOVLW 80H ;DDRAM地址至80H MOVWF LED_TEM CALL LEDORD MOVLW 32H MOVWF LED_TEM CALL LEDDAT MOVF YEAR,0 MOVWF BINTEM CALL BINTOBCD MOVF LEH,W MOVWF LED_TEM CALL LEDDAT MOVF LEM,W MOVWF LED_TEM CALL LEDDAT

27、MOVF LEL,0 MOVWF LED_TEM CALL LEDDAT MOVLW 2FH ;/ MOVWF LED_TEM CALL LEDDAT MOVF MONTH,0 MOVWF BINTEM CALL BINTOBCD MOVF LEM,W MOVWF LED_TEM CALL LEDDAT MOVF LEL,0 MOVWF LED_TEM CALL LEDDAT MOVLW 2FH ;/ MOVWF LED_TEM CALL LEDDAT MOVF DAY,0 MOVWF BINTEM CALL BINTOBCD MOVF LEM,W MOVWF LED_TEM CALL LED

28、DAT MOVF LEL,0 MOVWF LED_TEM CALL LEDDAT RETURN DISPLAYSFM ;时分秒显示子程序 CALL INTRB MOVLW 90H ;DDRAM地址至90H MOVWF LED_TEM CALL LEDORD MOVF HOU,0 SUBLW 0BH BTFSC STATUS,C GOTO LESSTHAN12 GOTO MORETHAN12MORETHAN12 MOVLW 50H MOVWF LED_TEM CALL LEDDAT MOVLW 4DH MOVWF LED_TEM CALL LEDDAT BTFSS HM,0 GOTO SHUCH

29、U12 GOTO SHUCHU24SHUCHU12 MOVF HOU,0 MOVWF HOUTEMP MOVLW 0CH SUBWF HOUTEMP,0 MOVWF BINTEM GOTO SHUCSHUCHU24 MOVF HOU,0 MOVWF BINTEM GOTO SHUCLESSTHAN12 MOVLW 41H MOVWF LED_TEM CALL LEDDAT MOVLW 4DH MOVWF LED_TEM CALL LEDDAT MOVF HOU,0 MOVWF BINTEM GOTO SHUCSHUC CALL BINTOBCD MOVF LEM,W MOVWF LED_TEM CALL LEDDAT MOVF LEL,0 MOVWF LED_TEM CALL LEDDAT MOVLW 3AH ;: MOVWF LED_TEM

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

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