单片机计数器课程设计报告.docx
- 文档编号:7682893
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:30
- 大小:531.12KB
单片机计数器课程设计报告.docx
《单片机计数器课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机计数器课程设计报告.docx(30页珍藏版)》请在冰豆网上搜索。
单片机计数器课程设计报告
目录
1摘要……………………………………………………
2设计要求………………………………………………
3硬件电路设计…………………………………………
3.1芯片介绍
3.2设计方案
3.3工作原理
3.4系统结构框图
4电路原理图……………………………………………………
5总结…………………………………………………………
参考文献………………………………………………………
附件一:
程序清单…………………………………………
一、摘要
频率测量仪器使用在生产和科研的各个部门,也是某些大型系统的重要组成部分,实现频率测量有专用的频率测量仪器,但不易用于特殊场合。
本文介绍的用单片机实现的频率测量仪,利用分频和单片机的计数功能来实现频率的测量。
该频率测量仪器可独立使用;也可方便的嵌入电路系统中;并且将降低产品的成本,有利于新产品的设计与研制。
频率测量仪的设计思路主要是:
对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小。
用传统测频原理制作的频率计,其测量精度往往随被测信号频率的下降而降低,在实际应用过程中有很大的局限性。
关键字:
单片机;频率测量;分频器;计数器;定时器。
二、设计要求
1、设计任务
用单片机实现TTL或CMOS信号的频率测量。
2、设计要求
1、用LED数码管或LCD显示频率;
2、测量频率范围:
0.1Hz—100KHz;
3、频率测量精度:
优于10-4;
4、频率显示位数:
5位;
5、能根据输入频率自动换挡。
3、设计报告要求
1、说明设计作品的功能、特点、应用范围.
2、方案对比,确定方案。
3、电路设计、电路工作原理、技术指标测试.
4、编程方法、程序框图及关键程序清单。
5、课程设计总结。
三、硬件电路设计
3.1具体方案:
方案一:
1、先用555时基电路实现震荡电路的功能。
2、用TL081实现电路的整形。
3、用74LS163、74LS00、74LS74、CD4052实现数字频率计的分频。
4、用74LS08、74LS160、74LS175、74LS47实现计数、译码、锁存与显示部分。
方案二:
用VHDL语言编写程序,然后下载到CPLD芯片当中,以实现频率计的功能。
方案三:
采用汇编语言编写程序下载到单片机STC89C52中,利用单片机的数学运算和控制功能,来实现频率计的测量量程的自动切换以及满足频率的测量精度。
在这里我选用的方案是三。
方案一:
采用分立元件做出来的作品稳定性较差且很难调试。
其实方案二和方案三都是采用编程的方法来完成的且稳性能好但是采用方案二的成本较高加之本学期我们刚刚开设了单片机应用原理这一课程为了进一步巩固本学期所学知识,我决定采用方案三来完成我的设计任务。
3.2有关芯片介绍
3.21有关STC89C52单片机的介绍
STC89C52是美国ATMEL公司生产的,兼容51系列(硬件引脚兼容,软件也兼容),所以使用方面与51系列基本相同,支持在线下载。
STC89C52是用串口下载,只一条下载线就可以。
STC89C52它有如下特点:
加密性强、低功耗、超低价、高速、高可靠、强抗静电、强抗干扰等。
有关STC89C52的引脚说明如下:
STC89C52芯片共40引脚:
1-8脚:
通用I/O接口p1.0-p1.7
9脚:
rst复位键
10-11脚:
RXD串口输入TXD串口输出
12-19脚:
I/Op3接口(12,13脚:
INT0中断0,INT1中断1。
14,15脚:
计数脉冲T0T1。
16,17脚:
WR写控制RD读控制输出端)
18-19脚:
晶振谐振器20地线
21-28脚:
p2接口高8位地址总线
29脚:
psen片外rom选通端。
单片机对片外rom操作时29脚(psen)输出低电平
30脚:
ALE/PROG地址锁存器
31脚:
EArom取指令控制器高电平片内取低电平片外取
32-39脚:
p0.0-p0.7(注意此接口的顺序与其他I/O接口不同与引脚号的排列顺序相反)
40脚:
电源+5V
3.22有关MAX232的介绍如下:
MAX232一般说明:
该max220-max249家庭的线路驱动器/接收器是打算为所有eia/tia-232e和v.28/v.24通信筹措接口,特别是应用±12V的是无法使用。
这些零件是特别有用,在电池供电系统tems,因为他们的低功耗停机模式,减少功耗要小于5μ瓦特该max225,max233,max235,max245/max246/max247使用无需外部元件,并建议应用-阳离子如印刷电路板空间是至关重要的。
MAX232特征:
1、优于双极
2、经营从单一的5伏供电(5V和12v-max231/max239)
3、低功耗接收模式,在关机(max223/max242)
4、满足所有eia/tia-232e和v.28规格
5、多个驱动器和接收器
6、三态驱动器和接收器输出开放式在线检测(max243)
MAX引脚图以及电路图:
STC单片机下载器连接图:
3.23LCD液晶屏
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。
以下是1602的16进制ASCII码表:
读的时候,先读上面那列,再读左边那行,如:
感叹号!
的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
显示地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
00H
01H
02H
03H
04H
05H
06H
07H
08H
09H
0AH
0BH
0CH
0DH
0EH
0FH
40H
41H
42H
43H
44H
45H
46H
47H
48H
49H
4AH
4BH
4CH
4DH
4EH
4FH
指令集
1602通过D0-D7的8位数据端传输数据和指令。
显示模式设置:
(初始化)
00110000[0x38]设置16×2显示,5×7点阵,8位数据接口;
显示开关及光标设置:
(初始化)
00001DCBD显示(1有效)、C光标显示(1有效)、B光标闪烁(1有效)
000001NSN=1(读或写一个字符后地址指针加1&光标加1),
N=0(读或写一个字符后地址指针减1&光标减1),
S=1且N=1(当写一个字符后,整屏显示左移)
s=0当写一个字符后,整屏显示不移动
数据指针设置:
数据首地址为80H,所以数据地址为80H+地址码(0-27H,40-67H)
其他设置:
01H(显示清屏,数据指针=0,所有显示=0);02H(显示回车,数据指针=0)。
通常推荐的初始化过程:
延时15ms
写指令38H
延时5ms
写指令38H
延时5ms
写指令38H
延时5ms
(以上都不检测忙信号)
(以下都要检测忙信号)
写指令38H
写指令08H关闭显示
写指令01H显示清屏
写指令06H光标移动设置
写指令0cH显示开及光标设置
Proteus仿真
使用Proteus仿真1602--即LM016L--依照数据手册说明可能遇到困难,可以尝试采用以下方案解决:
1、数据手册中可能介绍1602内部D0~D7已有上拉,可以使用P0口直接驱动。
在Proteus里LM016L内部可能没有,应该人为
加上拉电阻。
建议不要使用排阻,使用普通电阻一个一个拉应该可以解决问题;
2、可能碰到不能检测忙信号的问题,尝试使用延时把忙信号拖过去。
有关液晶屏的引脚说明如下:
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线
VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
底4位三态、双向数据总线0位(最低位)
8
DB1
底4位三态、双向数据总线1位
9
DB2
底4位三态、双向数据总线2位
10
DB3
底4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)(也是busyflag)
15
BLA
背光电源正极
16
BLK
背光电源负极
寄存器选择控制表
RS
R/W
操作说明
0
0
写入指令寄存器(清除屏等)
0
1
读busyflag(DB7),以及读取位址计数器(DB0~DB6)值
1
0
写入数据寄存器(显示各字型等)
1
1
从数据寄存器读取数据
3.3工作原理
单片机当C/T=1时为计数方式,多路开关与定时器的外部引脚连通,外部计数脉冲由T0引脚输入。
当外部信号由1至0跳变时,计数器加1,此时T0成为外部事件的计数器。
由于确认一次由1至0的跳变要用24个振荡器周期,所以计数器的计数频率为单片机内部计数器频率的1/24。
当C/T=0时为定时方式,对单片机内部计数器进行m2分频后,计数器的实际计数频率fo为单片机内部频率fosc的1/m2。
即:
fx=m1fosc/m2N。
当GATE=0时,反相器输出为1,或门输出为1,打开与门,使定时器的启动仅受TRO端信号电平的控制。
在此种情况下,INT0引脚的电平变化对或门不起作用。
TRO=1时接通控制开关,计数脉冲加到计数器上,每来一个计数脉冲,计数器加1,只有当TRO=0时,控制开关断开,计数器停止计数。
当GATA=0时,若TRO=1,或门、与门全部打开,外部信号电平通过INTO引脚直接控制定时器的启动和关闭。
输入高电平时允许计数,否则停止计数。
根据定时器T0的结构原理,若我们将GATE位、TR0均设为‘1’,INT0端输入被测频率信号,当被测信号的高电平到来时,开始计数;当被测信号的低电平到来时,计数器停止计数,此时TL0、TH0的数据就是相应的N值。
3.4系统结构框图
四、电路原理图
五、总结
通过这一次的课程设计,加深了我对单片机的理论知识的理解,以及动手能力的提高。
使我深刻的意识到,做好一次课程设计是十分不容易的,我从实践当中锻练了自己。
虽然刚开始不太懂,但是通过上图书馆找资料,我慢慢的了解了频率计这方面的知识。
由于以前接触这方面不是很多,印制板制作好了后,调试花了很多时间才顺利通过。
所以也让我总结出来:
在调试过程中,最好先测试各单元电路,保证各部份电路能够正常工作,检查问题时采取逐步缩小故障范围,最后定位,再对相应的位置做检查,解决问题。
在这一次课程设计当中,不仅让我学到了许多课本知识,同时也让我意识到:
一个程序写完之后并不是马上就完工了,需要很多次的修改优化才能达到设计要求。
同时我也感受到了团队合作的重要性,我们组的成员之间相互配合的很好,充分发挥了自己的所长,这是我们组为什么能够在限定的时间内完成任务的一个原因。
当然能够完成任务,首先肯定还是离不开老师们的指导,在此我忠心的感谢林老师和杨老师,以及帮助我们完成课程设计的同学们。
但在本次设计当中,仍然存在很多的不足,比如说:
作品的精度不是很高,作品受到频率范围的限制等等。
以及自身也有很多的不足。
但是我会不断的勉励自己,让自己不断的进步!
参考文献
1、 梁文海单片机AT89C2051构成的智能型频率计[J]
现代电子技术2002年
2、 曹巧媛单片机原理及应用[M]
北京:
电子工业出版社1997年
3、程远楚单片机智能频率信号装置[J]
自动化与仪器仪表2001年
4、吴慎山压电超声直线马达驱动电路的研究[J]
河南师范大学学报(自然科学版)1994年
5、谢自美电子线路设计
华中科技大学出版社
元件列表
名称
规格
数量
LCD
1602
1
单片机
STC89C52
1
芯片
MAX232
1
24M晶振
1
10K排阻
1
电容、电阻
不同型号
若干
万能板
1
导线
若干
排针、排孔
若干
附件一:
程序清单
RSBITP2.0
RWBITP2.1
ENBITP2.2
COMEQU30H
DATEQU31H
FREQ1EQU32H
FREQ2EQU33H
FREQ3EQU34H
FREQ4EQU35H
FREQ5EQU36H
FREQ6EQU37H
JISHUEQU38H
JISHU1EQU39H
JISHU2EQU3AH
JISHU3EQU3BH
TIMEBEQU3CH
TIMEHEQU3DH
TIMEMEQU3EH
TIMELEQU3FH
PANDUANEQU40H
BEICHUBEQU41H
BEICHUHEQU42H
BEICHUMEQU43H
BEICHULEQU44H
ZANCUNBEQU45H
ZANCUNHEQU46H
ZANCUNMEQU47H
ZANCUNLEQU48H
RESULT1EQU49H
RESULT2EQU4AH
RESULT3EQU4BH
RESULT4EQU4CH
RESULT5EQU4DH
RESULT6EQU4EH
XIAOSHUEQU4FH
CUNCHUEQU50H
FLAG1BIT20H
FLAG2BIT21H
FLAG3BIT22H
ORG0000H
LJMPSTART
ORG0003H
LJMPOUTINT0
ORG000BH
LJMPTIMINT0
ORG001BH
LJMPTIMINT1
ORG0100H
START:
MOVSP,#60H
LCALLLCDINIT
LCALLDISPLAI
LCALLVARINIT
SETBFLAG3
KEYLOOP:
JNBFLAG3,KEYDOWN
LCALLFIJUDGE
KEYDOWN:
LCALLDISPLAY
JNBFLAG1,GOBACK
LCALLCALCULA
GOBACK:
SJMPKEYLOOP
LCDINIT:
MOVCOM,#38H
LCALLSENDCOM
LCALLDELAY5
LCALLSENDCOM
LCALLDELAY5
LCALLSENDCOM
LCALLDELAY5
LCALLSENDCOM
LCALLDELAY5
MOVCOM,#08H
LCALLSENDCOM
LCALLDELAY5
MOVCOM,#01H
LCALLSENDCOM
LCALLDELAY5
MOVCOM,#06H
LCALLSENDCOM
LCALLDELAY5
MOVCOM,#0CH
LCALLSENDCOM
LCALLDELAY5
RET
VARINIT:
MOVXIAOSHU,#1
MOVZANCUNB,#0
MOVZANCUNH,#10H
MOVZANCUNM,#84H
MOVZANCUNL,#80H
MOVRESULT1,#0
MOVRESULT2,#0
MOVRESULT3,#0
MOVRESULT4,#0
MOVRESULT5,#0
MOVRESULT6,#0
MOVR0,#30H
MOVR1,#15
CLEAR:
MOV@R0,#0
INCR0
DJNZR1,CLEAR
RET
FIJUDGE:
CLRFLAG1
CLRFLAG3
MOVZANCUNB,#0
MOVZANCUNH,#1EH
MOVZANCUNM,#84H
MOVZANCUNL,#80H
MOVR0,#30H
MOVR1,#16
CLEAR1:
MOV@R0,#0
INCR0
DJNZR1,CLEAR1
MOVTH0,#3CH
MOVTL0,#0B0H
MOVTH1,#0H
MOVTL1,#0H
MOVTMOD,#11H
MOVTCON,#11H
MOVIE,#83H
MOVIP,#02H
RET
DISPLAI:
MOVDPTR,#TABLE
MOVR0,#16
MOVR1,#0
MOVR2,#80H
BACKDIS:
MOVCOM,R2
LCALLSENDCOM
LCALLDELAY5
INCR2
MOVA,R1
MOVCA,@A+DPTR
MOVDAT,A
LCALLSENDDAT
INCR1
LCALLDELAY5
DJNZR0,BACKDIS
MOVDPTR,#TABLE1
MOVR0,#16
MOVR1,#0
MOVR2,#0C0H
BACKDI2:
MOVCOM,R2
LCALLSENDCOM
LCALLDELAY5
INCR2
MOVA,R1
MOVCA,@A+DPTR
MOVDAT,A
LCALLSENDDAT
INCR1
LCALLDELAY5
DJNZR0,BACKDI2
RET
DISPLAY:
MOVA,XIAOSHU
ADDA,#0C9H
MOVCOM,A
LCALLSENDCOM
LCALLDELAY5
MOVDAT,#2EH
LCALLSENDDAT
LCALLDELAY5
MOVR0,#49H
MOVR1,#6
SHUCHUD:
MOVA,#49H
ADDA,XIAOSHU
MOVB,A
MOVA,R0
SUBBA,B
JNCGODISPL
MOVA,#80H
ADDA,R0
SJMPGODISPP
GODISPL:
MOVA,#81H
ADDA,R0
GODISPP:
MOVCOM,A
LCALLSENDCOM
LCALLDELAY5
MOVA,#30H
ADDA,@R0
MOVDAT,A
LCALLSENDDAT
LCALLDELAY5
INCR0
DJNZR1,SHUCHUD
RET
CALCULA:
MOVRESULT1,#0
MOVRESULT2,#0
MOVRESULT3,#0
MOVRESULT4,#0
MOVRESULT5,#0
MOVRESULT6,#0
MOVA,JISHU3
CLRC
SUBBA,#1
JCGODOWN1
MOVA,JISHU3
MOVB,#10
DIVAB
MOVRESULT1,A
MOVRESULT2,B
MOVA,JISHU2
MOVB,#10
DIVAB
MOVRESULT3,A
MOVRESULT4,B
MOVA,JISHU1
MOVB,#10
DIVAB
MOVRESULT5,A
MOVRESULT6,B
LJMPGOUTCAL
GODOWN1:
MOVA,JISHU2
CLRC
SUBBA,#10
JCGODOWN2
MOVJISHU1,#0FDH
MOVJISHU2,#01H
MOVJISHU3,#0
MOVPANDUAN,#9
LJMPGODOWN5
GODOWN2:
MOVA,JISHU2
CLRC
SUBBA,#1
JCGODOWN3
MOVJISHU1,#0FEH
MOVJISHU2,#0
MOVJISHU3,#0
MOVPANDUAN,#8
LJMPGODOWN5
GODOWN3:
MOVA,JISHU1
CLRC
SUBBA,#10
JCGODOWN4
MOVJISHU1,#16
MOVJISHU2,#0
MOVJISHU3,#0
MOVPANDUAN,#4
LJMPGODOWN5
GODOWN4:
MOVJISHU1,#1
MOVJISHU2,#0
MOVJISHU3,#0
MOVPANDUAN,#0
GODOWN5:
MOVIP,#01H
CLRTR1
CLREX0
MOVTH1,#0
MOVTL1,#0
MOVTIMEH,#0
MOVTIMEB,#0
MOVIE,#89H
MOVCUNCHU,#0
JBFLAG1,$
LCALLDIVIDE
SJMPGOOUTCA
GOUTCAL:
MOVXIAOSHU,#6
SETBFLAG3
GOOUTCA:
RET
DIVIDE:
MOVR0,PANDUAN
CJNER0,#0,BACKDIV
SJMPNEXTTHI
BACKDIV:
CLRC
MOVA,TIMEB
RRCA
MOVTIMEB,A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 计数器 课程设计 报告