单片机中断计数显示系统实习报告.docx
- 文档编号:20119288
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:16
- 大小:37.11KB
单片机中断计数显示系统实习报告.docx
《单片机中断计数显示系统实习报告.docx》由会员分享,可在线阅读,更多相关《单片机中断计数显示系统实习报告.docx(16页珍藏版)》请在冰豆网上搜索。
单片机中断计数显示系统实习报告
单片机技术实习
实习题目:
中断计数显示系统
程序设计与实现
班级:
姓名:
学号:
指导教师:
陈广大
电气信息工程学院
目录
实习题目3
一、实习目的及要求3
二、实习原理3
三、实习内容5
四、实习心得13
五、参考文献13
实习题目
题目:
1利用中断模拟工件计数器
2电子时钟
一、实习目的及要求
1利用中断模拟采集工件通过个数
2采用74HC595集连方式进行数码管显示
3利用单片机定时器定时,完成时分秒的定时设计
4用数码管显示时钟
二、实习原理
1.中断计数器程序的设计
中央处理单元(CPU)是PLC的控制中枢,它按照PLC系统程序赋予的功能接收并存储从编程器键入的用户程序和数据、检查电源、存储器I/O以及警戒定时器的状态;并能诊断用户程序中的语法错误。
当PLC投入运行时,首先它以扫描的方式接收现场各输入装置的状态和数据,并分别存入I/O映象区,然后从用户程序存储器中逐条读取用户程序,经过命令解释后,按指令的规定执行逻辑或算数运算的结果送入I/O映象区或数据寄存器内,等所有的用户程序执行完毕之后,最后将I/O映象区的各输出状态或输出寄存器内的数据传送到相应的输出装置,如此循环运行直到停止运行
74HC595应用(数码管显示)
74HC595是具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器是分别的时钟。
数据在SCK的上升沿输入,在RCK的上升沿进入的存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(SI),和一个串行输出(Q7’),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
74HC595的数据端:
QA--QH:
八位并行输出端,可以直接控制数码管的8个段。
QH':
级联输出端。
我将它接下一个595的SI端。
SI:
串行数据输入端。
74HC595的控制端说明:
/SCLR(10脚):
低点平时将移位寄存器的数据清零。
通常我将它接Vcc。
SCK(11脚):
上升沿时数据寄存器的数据移位。
QA-->QB-->QC-->...-->QH;下降沿移位寄存器数据不变。
(脉冲宽度:
5V时,大于几十纳秒就行了。
我通常都选微秒级)RCK(12脚):
上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。
通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。
我通常都选微秒级),更新显示数据。
/G(13脚):
高电平时禁止输出(高阻态)。
如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。
比通过数据端移位控制要省时省力。
74HC595主要在移位的过程中,输出端的数据可以保持不变。
这在串行速度慢的场合很有用处,数码管没有闪烁感。
2.电子时钟实现的基本原理
流程如图所示
三、实习内容
计数器程序:
ORG0000H;程序入口
;*************IO口的定义**************
DINBITP1.0
CLKBITP1.1
ENABITP0.0
ENBBITP0.1
ENCBITP0.2
;*************函数主体部分*********
AJMPMAIN;跳转到主函数
ORG0003H;外部中断0的入口
AJMPINT0
ORG000BH;定时器中断0的入口
AJMPTIM
ORG0013H;外部中断1的入口
AJMPINT1
ORG0030H;数函数入口
MAIN:
;***********************主函数
SETBEA;开总中断
MOVTMOD,#01H;定时器0的初始化
MOVTH0,#3CH;定时器的处置设定为50ms
MOVTL0,#0B0H
SETBET0
SETBIT0;外部中断0的初始化
SETBEX0
SETBIT1;外部中断1的初始化
SETBEX1
;*****************Rn的初始化************************
MOVR0,#1;************1s定时器,修改时间长短
MOVR1,#10H;***DELAY延时函数的处置设定*****
MOVR2,#08H;显示部分循环8次
MOVR3,#00H;外部中断次数的累计
;***************在这里可以修改时、分、秒赋初值************
MOVR4,#00H;秒初值的设定
MOVR5,#00H;分初值的设定
MOVR6,#00H;时初值的设定
CLRTR0;开始时关闭定时器
;**********************显示关键函数************************
XIANS:
CALLFENLI;调用分离数据的子函数
CALLTEMP;调用显示函数
SJMPXIANS;实现实时显示
;*************数据分离的子函数******************************
FENLI:
;**********秒的分离*************
MOVA,R4
MOVB,#0AH
DIVAB;A除以10(B)后,高位在A中,低位在B中
MOVDPTR,#TAB
MOVCA,@A+DPTR;高位数查表
MOV41H,A;存储高位
MOVA,B
MOVDPTR,#TAB
MOVCA,@A+DPTR;低位数查表
MOV40H,A;存储低位
;**********分的分离***************
MOVA,R5
MOVB,#0AH
DIVAB
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV43H,A
MOVA,B
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV42H,A
;*********时的分离****************
MOVA,R6
MOVB,#0AH
DIVAB
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV45H,A
MOVA,B
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV44H,A
;*********中断按键的分离****************
MOVA,R3
MOVB,#0AH
DIVAB
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV47H,A
MOVA,B
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV46H,A
RET;子函数返回
;***************显示函数的实现************************
;***********在这里可以改变时、分、秒的显示顺序
TEMP:
CALLENL;将74138的A端置为低
MOVA,46H
LCALLXIANSHI
MOVA,47H
LCALLXIANSHI
MOVA,44H;显示秒的低位
LCALLXIANSHI
MOVA,45H;显示秒的高位
LCALLXIANSHI
;MOVA,#0FFH;数码管灭
;LCALLXIANSHI
MOVA,42H
LCALLXIANSHI
MOVA,43H
LCALLXIANSHI
;MOVA,#0FFH
;LCALLXIANSHI
MOVA,40H
LCALLXIANSHI
MOVA,41H
LCALLXIANSHI
CALLENH;让74138的A端为高
RET;子函数的返回
;***************数字钟计数部分**************
TIM:
DJNZR0,TIMER0
MOVR0,#1;***************1S定时
INCR4
CJNER4,#60,TIMER0;****判断是否到60秒
MOVR4,#0
INCR5
CJNER5,#60,TIMER0;*****判断是否到60分
MOVR5,#0
INCR6
CJNER6,#24,TIMER0;***判断是否到24小时
MOVR6,#0
ENL:
CLRENA
SETBENB
SETBENC
RET
ENH:
SETBENA
SETBENB
SETBENC
RET
;*********定时器0*******
TIMER0:
MOVTH0,#3CH
MOVTL0,#0B0H
RETI
;*********外部中断0******
INT0:
CPLTR0;外部中断
RETI
;*********外部中断1******
INT1:
INCR3
CJNER3,#100,LL;*****最大计数99次
MOVR3,#00H
LL:
RETI
;**********************显示函数**************
XIANSHI:
RLCA
JCDINH
CLRDIN
SJMPL1
DINH:
SETBDIN
L1:
CALLDELAY
SETBCLK
CALLDELAY
CLRCLK
CALLDELAY
DJNZR2,XIANSHI
MOVR2,#08H
DELAY:
DJNZR1,$
MOVR1,#10H
RET
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
电子时钟程序:
ORG0000H
ENABITP0.0;位定义
ENBBITP0.1
ENCBITP0.2
CLKBITP0.3
DINBITP0.4
BEEPCOUNTBIT2EH
AJMPMAIN
ORG0003H;外部中断0入口地址
AJMPINT0
ORG000BH;定时器0的入口地址
AJMPIV0
ORG001BH;定时器1的入口地址
AJMPIV1
ORG0030H
MAIN:
LCALLINT;初始化函数
WAIT:
LCALLREAD;读取时间
LCALLDISPLAY;显示时间
SJMPWAIT
READ:
MOVA,R4
MOVB,#0AH
DIVAB
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV6FH,A
MOVA,B
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV6EH,A
MOVA,#0BFH
MOV70H,A
MOVA,R5
MOVB,#0AH
DIVAB
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV72H,A
MOVA,B
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV71H,A
MOVA,#0BFH
MOV73H,A
MOVA,R6
MOVB,#0AH
DIVAB
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV75H,A
MOVA,B
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOV74H,A
RET
DISPLAY:
CLRENA;选通595
SETBENB
SETBENC
MOVR1,6EH;循环读入时间
LOOP3:
MOVA,@R1
MOVR0,#08H
LOOP2:
LCALLLOOP
INCR1
CJNER1,#76H,LOOP3;读入64位
SETBENA
RET
IV0:
DJNZR3,LOOP1;设置时间改变条件
MOVR3,#14H;一秒
INCR4
CJNER4,#60,LOOP1
INCR5
MOVR4,#00
CJNER5,#60,LOOP1
INCR6
MOVA,R6
MOVBEEPCOUNT,A
MOVR5,#00
SETBTR1
CJNER6,#24,LOOP1
MOVR6,#00
LOOP1:
MOVTH0,#03CH
MOVTL0,#0B0H
SETBTR0
RETI
LOOP:
RLCA;时钟脉冲
MOVDIN,C
NOP
NOP
SETBCLK
NOP
NOP
CLRCLK
DJNZR0,LOOP
RET
INT0:
CPLTR0;打开或关闭定时
RETI
IV1:
DECBEEPCOUNT
MOVA,BEEPCOUNT
CJNEA,#0H,LOOP4
CLRTR1
RETI
LOOP4:
MOVTH1,#03CH
MOVTL1,#0B0H
RETI
INT:
MOVR3,#14H
MOVR4,#58;秒位
MOVR5,#58;分位
MOVR6,#23;时位
MOVTMOD,#11H
MOVTH0,#03CH
MOVTL0,#0B0H
MOVTH1,#0EBH
MOVTL1,#0FFH
SETBIT0
SETBEX0
SETBET0
SETBET1
SETBEA
SETBTR0
RET
TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
四、实习心得
通过一周的实习是我对单片机的理论掌握更全面,也使我对WAVE软件有了更深的了解,并且能使用该软件进行简单的编程。
我们这次主要编写的程序是计数器及电子时钟。
学到了很多东西,不管怎么样,先感谢学校给我的这么多机会。
真正的学到了东西。
此次课程设计软件与硬件相结合。
考察了我们连线与编程能力。
五、参考文献
1单片微型计算机与接口技术(第三版)李群芳张士军黄建著
2单片微机应用系统设计及实用技术高峰著
3单片微型计算机原理、应用及接口技术张迎新著
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 中断 计数 显示 系统 实习 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)