《单片机原理及应用》课程设计基于proteus.docx
《《单片机原理及应用》课程设计基于proteus.docx》由会员分享,可在线阅读,更多相关《《单片机原理及应用》课程设计基于proteus.docx(13页珍藏版)》请在冰豆网上搜索。
![《单片机原理及应用》课程设计基于proteus.docx](https://file1.bdocx.com/fileroot1/2022-11/27/2d87360f-4ea7-41f1-846a-a785ce186e92/2d87360f-4ea7-41f1-846a-a785ce186e921.gif)
《单片机原理及应用》课程设计基于proteus
目录
1.摘要--------------------------------------------------
(2)
2.引言--------------------------------------------------
(2)
3.设计原理及方案----------------------------------------
(2)
4.硬件设计----------------------------------------------(3)
5.软件设计----------------------------------------------(6)
6.总结--------------------------------------------------(8)
7.参考文献----------------------------------------------(9)
8.附录--------------------------------------------------(9)
题目:
基于AT89C51的数字频率计的设计
一、摘要
摘要:
在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。
电子计数器测频有两种方式:
一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。
直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。
本文阐述了基于通用集成电路设计了一个简单的数字频率计的过程。
关键词:
数字频率计,信号,周期
二、引言
本应用系统设计的目的是在“单片机原理及应用”课堂上学习的知识基础上,通过查阅资料与所学的知识相结合的方法,把学到的知识应用到日常生活当中。
在设计的过程中,不断的学习,思考和同学间的相互交流,让我们共同进步,同时对单片机的程序开发也有了一些了解,拓宽了我们的知识面,为我们以后更好的学习打下了一个良好的基础
三、设计方案及原理
1)设计方案
在单片机89C51中,当定时器/计数器用作“定时器”时,在每个机器周期寄存器加1,因此,也可以把它看作是在累计机器周期。
由于一个机器周期包括12个振荡周期,所以,它的计数速率是振荡频率的1/12。
而用作“计数器”时,寄存器在其对应的外输入端T0或T1有一个“1→0”的跳变时加1。
此操作中,在每个机器周期的S5P2期间采样外部输入信号,当一个周期的采样值为高电平,而下一个周期采样值变为低电平时,计数器加1。
新的计数值在紧接着检测到一个跳变后的下一个周期的S3P1期间在寄存器中出现。
由于识别一个从“1→0”的跳变要用两个机器周期(24个振荡周期),所以最快的计数速率是振荡频率的1/24。
外部输入信号的速率是不受限制的,但必须保证给出的电平在变化前至少被采样一次,即它应该至少保持一个完整的机器周期。
当开关与振荡器相接则为定时,与TX端相接则为计数。
后一个开关受控制信号的控制,它实际上决定了脉冲源是否加到计数器的输入端,即决定了加1计数器的开启与运行。
在实际线路中起另个开关作用的是特殊功能寄存器TMOD与TCON的相应位。
TMOD和TCON是专门用于定时器/计数器的控制寄存器,用户可用指令对其各位进行写入或更改操作,从而选择不同的工作状态(计数或定时)或启动时间,并可设置相应的控制条件,换言之,定时器/计数器是可编程的。
2)参考硬件原理图
被测信号从输入端输入经三极管放大电路放大,再经由555电路组成的施密特触发器整形,将三角波、正弦波、锯齿波等信号变换成方波信号,便于计数。
三极管采用高频小功率管。
数字频率计的总电路图如附图所示,输入被测信号经放大整形电路整形送入定时/计数器输入端口P3.5,单片机在1s时间内统计输入脉冲个数,将计数值的每一位分离出来并显示在LCD液晶显示屏上。
当输入信号改变时需要复位CPU,否则测出的频率是错误的。
四、硬件设计
本频率计的数据采集系统主要元器件是单片机80C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有555电路板、LCD显示器等器件。
可分为以下几个模块:
放大整形模块、数字信号处理(单片机系统)、LCD显示模块。
各模块关系图如图所示:
1.硬件电路图
Proteus绘制该图所用元器件
附图硬件电路
2.施密特触发器
施密特触发器:
将555定时器的两个输入端连在一起,并作为外加触发器V1的输入端构成。
参考电压VR1=(2/3)VCC、VR2=(1/3)VCC。
V>VR1时,输出为低电平;V3.89C51单片机及其引脚说明
89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:
4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器,一个5中断源两个优先级的中断结构,一个双工的串行口,和时钟产生电路
引脚说明:
·VCC:
电源电压
·GND:
地
·P0口:
P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。
当对0端口写入1时,可以作为高阻抗输入端使用。
·P1口:
P1口是一带有内部上拉电阻的8位双向I/O口。
P1口的输出缓冲能接受或输出4个TTL逻辑门电路。
当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。
当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。
·P2口:
P2是一带有内部上拉电阻的8位双向的I/O端口。
P2口的输出缓冲能驱动4个TTL逻辑门电路。
当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。
·P3口:
P3是一带有内部上拉电阻的8位双向的I/O端口。
P3口的输出缓冲能驱动4个TTL逻辑门电路。
当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。
P3口同时具有80C51的多种特殊功能,具体如下表1所示:
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0)
P3.5
T1(定时器1)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器都选通)
表1P3口的第二功能
·RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。
·ALE/
:
当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。
一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。
·
:
程序存储允许时外部程序存储器的读选通信号。
当80C52执行外部程序存储器的指令时,每个机器周期
两次有效,除了当访问外部数据存储器时,
将跳过两个信号。
·
/VPP:
外部程序存储器地址允许输入端。
当
=1时,从内部存储器开始执行。
=0时,从外部程序存储器开始执行。
·XTAL1:
振荡器反相放大器以及内部时钟电路的输入端。
·XTAL2:
振荡器反相放大器的输出端。
4.显示模块
1)、主要功能
A、40通道点阵LCD驱动;
B、可选择当作行驱动或列驱动;
C、输入/输出信号:
输出,能产生20×2个LCD驱动波形;输入,接受控制器送出的串行数据和控制信号,偏压(V1∽V6);
D、通过单片机控制将所测的频率信号读数显示出来。
2)、引脚和指令功能
模块引脚功能表
引线号
符号
名称
功能
1
Vss
接地
0V
2
VDD
电路电源
5V±10%
3
VEE
液晶驱动电压
保证VDD-VEE=4.5∽5V电压差
4
RS
寄存器选择信号
H:
数据寄存器L:
指令寄存器
5
R/W
读/写信号
H:
读L:
写
6
E
片选信号
下降沿触发,锁存数据
7
|
14
DB0
|
DB7
数据线
数据传输
寄存器选择功能表
RS
R/W
操作
0
0
指令寄存器(IR)写入
0
1
忙标志和地址计数器读出
1
0
数据寄存器(DR)写入
1
1
数据寄存器读出
五、软件设计
1)定时
本次设计选用定时器T0完成定时功能,选用方式1时最多也只能定时,显然不能满足定时1的要求,可以用下面这种方法解决:
采用T0定时10mS,连续循环定时100次即可完成1定时,用一个计数单元20H存放循环的次数,每一次循环20H单元自减1,当20H单元为零时则1定时到时。
其程序流程图如下图所示:
(2)T1计数程序
设计中T1采用计数功能,需要注意的一个问题是,输入的待测时钟信号的频率最高可以达到460800Hz,但计数器最多只能计数65536次,显然需要对计数单元进行扩展,扩展的思路是除了计数器T1的TH1和TL1用于计数外,再选用一个计数单元23H,每当计数器T1溢出回零时产生中断,中断程序执行23H单元自增1,这样,当一秒到时时采集的计数数据,23H单元存放的是数据的最高位,TH1存放的是数据的次高位,TL1存放的是数据的最低位。
当然,这里所说的“最高位”“次高位”以及“最低位”都是针对十六进制而言的。
T1计数程序的流程图如下图所示:
六、总结
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少测量仪器。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,会被经常使用到。
这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能学到真正的技术知识,从而提高自己的实际能力。
在设计的过程中遇到问题,是很正常的,只要不怕困难,认真思考和研究,就能达到最终的目的。
此次课程设计带给我的不仅仅是知识、技能上的提高,更提高了我对计算机汇编语言的认识,使我对以后的学习更加有信心。
在设计过程中,得到了我们的指导老师的悉心指导与帮助,在此表示衷心的感谢。
七、参考文献
[1]李光飞,楼苗然主编.51系列单片机.北京:
北京航空航天大学出版社,2003
[2]黄正瑾编著.CPLD系统设计技术入门与应用.北京:
电子工业出版社,2002
[3]吴蓉编著.数字电子技术.兰州大学出版社,2005
[4]陈永甫编著.电子电路智能化设计.实例与应用.北京:
电子工业出版,2002.8
[5]康华光主编.电子技术基础(第四版).北京:
高等教育出版社,1999
附录1
ORG0000H
AJMPSTART
ORG000BH ;T0中断入口
AJMPT0INT
ORG001BH ;T1中断入口
AJMPT1INT
ORG0030H
START:
MOVIE,#8AH ;开放T0、T1中断
MOVTMOD,#51H;T0定时,T1计数
MOVTH0,#0DCH
MOVTL0,#00H ;定时10ms
MOV20H,#100 ;100*10ms=1s
MOVTH1,#00H
MOVTL1,#00H
MOV21H,#0
MOV22H,#0
MOV23H,#0;存放采集到的频率
SETBTR1
SETBTR0
WAIT:
AJMPWAIT;等待中断
T1INT:
INC23H;计数器溢出则23H单元自增1
RETI
T0INT:
DJNZ20H,NEXT1;定时10ms产生中断
CLRTR1
CLRTR0
MOV22H,TH1;1s时间到则采集数据
MOV21H,TL1
AJMPACOUNT
NEXT1:
MOVTH0,#0DCH;继续定时
MOVTL0,#00H
RETI
ACOUNT:
MOVA,23H
MOVB,#0FFH
MULAB
MOV24H,A
MOV25H,B
MOVA,23H
MOVB,#0FFH
MULAB
MOVB,26H
ADDA,25H
MOV25H,A
CLRA
ADDCA,26H
MOV26H,A
//addT1
MOVA,24H
ADDA,TL1
MOV24H,A
MOVA,25H
ADDCA,TH1
MOV25H,A
CRLA
ADDCA,26H
MOV26H,A
;文件名:
LCD1301.ASM;程序功能:
显示程序
RSbitP3.4
RWbitP3.6
EbitP3.7
LCDEQUP1;显示主程序
SHOW:
MOVA,26H
DAA
MOV26H,A
MOVA,25H
DAA
MOV25H,A
MOVA,24H
DAA
MOV24H,A
toString:
MOVR6,#3
MOVR1,#30H//HEADADDRESS
MOVR0,#26H
NEXT:
MOVA,@R0
ANLA,#0F0H
SWAPA
ADDA,#30H
MOV@R1,A
INCR1
MOVA,@R0
ANLA,#0FH
ADDA,#30H
MOV@R1,A
INCR1
DECR0
DJNZR6,NEXT
MOVLCD,#00000001B;清屏并光标复位
ACALLWR_COMM;调用写入命令子程序
ACALLINIT_LCD;调用初始化子程序
MOVLCD,#00H;写入显示起始地址
ACALLWR_COMM;调用写入命令子程序
MOVR7,#6
MOVR1,#30H
TO:
MOVA,@R1
MOVLCD,A
ACALLWR_DATA;调用写入数据子程序
INCR1
DJNZR7,TO
JMP$;维持当前输出状态
;LCD初始化设定
INIT_LCD:
MOVLCD,#00110000B;设置8位、2行、5x7点阵
ACALLWR_COMM;调用写入命令子程序
MOVLCD,#00001111B;显示器开,光标允许闪烁,
ACALLWR_COMM;调用写入命令子程序
MOVLCD,#00010100B;文字不动,光标自动右移
ACALLWR_COMM;调用写入命令子程序
RET
;----------------------------
WR_COMM:
;写入命令子程序
CLRRS;RS=0,选择指令寄存器
CLRRW;RW=0,选择写模式
CLRE;E=0,禁止读/写LCM
ACALLCHECK_BF;调用判LCM忙碌子程序
SETBE;E=1,允许读/写LCM
RET
CHECK_BF:
;判断是否忙碌子程序
MOVLCD,#0FFH;此时不接受外来指令
CLRRS;RS=0,选择指令寄存器
SETBRW;RW=1,选择读模式
CLRE;E=0,禁止读/写LCM
NOP;延时1微秒
SETBE;E=1,允许读/写LCM
JBLCD.7,CHECK_BF
WR_DATA:
;写入数据子程序
SETBRS;RS=1,选择数据寄存器
CLRRW;RW=0,选择写模式
CLRE;E=0,禁止读/写LCM
ACALLCHECK_BF;调用判断忙碌子程序
SETBE;E=1,允许读/写LCM
RET
END