单片机课程设计.docx
《单片机课程设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
![单片机课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/14/4ea6dbef-4d08-4462-bf9a-50904af5fd70/4ea6dbef-4d08-4462-bf9a-50904af5fd701.gif)
单片机课程设计
目录
引言-1-
1.设计方案及原理-2-
2.单片机选型及硬件配置-2-
2.1单片机及扩展模块选择-2-
2.2I/O地址分配-3-
2.3系统硬件原理图-3-
3.软件实现-6-
3.1控制流程图-6-
3.2程序调试-6-
3.3设计结果-6-
3.4结果分析-7-
心得体会-8-
参考文献-9-
附录-10-
引言
随着电子信息产业的发展,信号作为其最基础的元素,其频率的测量在科技研究和实际应用中的作用日益重要,而且需要测频的范围也越来越宽。
随着单片机技术的发展和成熟,用单片机来作为一个电路系统的控制电路逐渐显示出其无与伦比的优越性。
因此本论文采用单片机来作为电路的控制系统,设计一个能测量高频率的数字频率计。
用单片机来做控制电路的数字频率计测量频率精度高,测量频率的范围得到很大的提高。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
本数字频率计将采用定时、计数的方法测量频率,采用一个1602ALCD显示器动态显示6位数。
测量范围从1Hz—10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。
用单片机实现自动测量功能。
1.设计方案及原理
基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。
它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。
数字频率计的主要功能是测量周期信号的频率。
频率是单位时间(1S)内信号发生周期变化的次数。
如果我们能在给定的1S时间内对信号波形计数,并将计数结果显示出来,就能读取被测信号的频率。
数字频率计首先必须获得相对稳定与准确的时间,通过单片机的定时与计数功能可以实现,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。
这就是数字频率计的基本原理。
频率测量仪的设计思路主要是:
对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小。
若被测量信号的周期为,分频数m1,分频后信号的周期为T,则:
T=m1Tx。
由图可知:
T=NTo(注:
To为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信号的频率f。
)。
由于单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;而系统的量化误差小于1,所以由式T=NTo可知,频率测量的误差主要取决于N值的大小,N值越大,误差越小,测量的精度越高。
2.单片机选型及硬件配置
2.1单片机及扩展模块选择
本频率计的数据采集系统主要元器件是单片机80C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有分频器、显示器等器件。
可分为以下几个模块:
放大整形模块、秒脉冲产生模块、换档模拟转换模块、单片机系统、LCD显示模块。
各模块关系图如图2.1所示:
图2.1数字频率计功能模块
1.信号调理及放大整形模块
放大整形系统包括衰减器、跟随器、放大器、施密特触发器。
它将正弦输入信号Vx整形成同频率方波Vo,幅值过大的被测信号经过分压器分压送入后级放大器,以避免波形失真。
由运算放大器构成的射级跟随器起阻抗变换作用,使输入阻抗提高。
同相输入的运算放大器的放大倍数为(R1+R2)/R1,改变R1的大小可以改变放大倍数。
系统的整形电路由施密特触发器组成,整形后的方波送到闸门以便计数。
由于输入的信号幅度是不确定、可能很大也有可能很小,这样对于输入信号的测量就不方便了,过大可能会把器件烧毁,过小可能器件检测不到,所以在设计中采用了信号调理电路对输入的波形进行阻抗变换、放大限幅和整形。
2.时基信号产生电路
CD4013------双上升沿D触发器,CD4013由两个相同的、相互独立的数据型触发器构成。
每个触发器有独立的数据置位复位时钟输入和Q及Q非输出。
此器件可用作移位寄存器,且通过将Q非输出连接到数据输入,可用作计数器和触发器。
在时钟上升沿触发时,加在D输入端
的逻辑电平传送到Q输出端。
置位和复位或复位线上的高电平完成。
3.显示模块
1602基本技术的主要功能:
(1)40通道点阵LCD驱动;
(2)可选择当作行驱动或列驱动;
(3)输入/输出信号:
输出,能产生20×2个LCD驱动波形;输入,接受控制器送出的串行数据和控制信号,偏压(V1∽V6);
(4)通过单片机控制将所测的频率信号读数显示出来。
2.2I/O地址分配
程序开始0000H
T0中断入口000BH
T1中断入口001BH
程序入口0030H
2.3系统硬件原理图
如图2.2所示为数字频率计的硬件电路图。
由该图可知,8051构成了单片机最小系统,LCD数码管用来显示频率值。
3.软件实现
3.1控制流程图
如图3.1为系统的控制流程图。
图3.1控制流程图
3.2程序调试
程序的调试分为两步进行,首先使用单片机SIM仿真软件调试程序。
然后,将程序下载到单片机中,若有实验设备,则将单片机的外部设备接好,进行程序的调试;若无实验设备,则进行模拟调试。
本设计采用的是proteus仿真调适。
3.3设计结果
如图3.2为系统的软件仿真图。
图3.2软件仿真图
3.4结果分析
1.测量结果
给电路加+5V电压,输入信号,按动开关,即可得到频率值。
将所测频率值与示波器测量结果比较。
2.误差来源分析
(1)单片机计数速率的限制引起误差。
从测量数据可以看出被测信号频率越高,测量误差越大,且所测信号频率不能超过480kHz。
这是因为采用的是12MHz的晶振,单片机最大计数速度为500kHz,所以当被测信号越接近500kHz时,测量结果与实际频率的误差就越大。
而当被测信号大于500kHz时,频率计将测不出信号频率。
(2)原理上存在±1误差。
由于该设计是在计数门限时间一秒内的频率信号脉冲数,所以定时开始时的第一个脉冲和定时时间到时的最后一个脉冲信号是否被记录,存在随机性。
这种误差对测量频率低的信号影响较大。
(3)晶振的准确度会影响一秒定时的准确度,从而引起测量结果误差。
心得体会
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。
随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说得是无处不在。
因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,会被经常使用到。
通过一周的课程设计,加深了我对单片机系统的学习和应用,加强了我的动手操作能力以及与同学之间的协作能力,使我深刻理解掌握了8051的基本功能和按键的相关操作,使我了解了单片机系统广泛的应用。
在课程设计过程中,我遇到了一些问题,这些问题困惑了我好久,但通过查资料、和同学讨论,是我最终解决了这些问题,我认为这也是对我学习的一种提升。
设计只是我们对所学知识的一种提升应用,我认为本次设计确实让我学到了这些东西。
设计结束了,但我对单片机系统认识的意愿更强烈了,在以后的工作学习中,我一定会继续关注并继续学习有关单片机的知识
参考文献
[1]李华,王思明,张金敏编著,单片机原理及应用[M],兰州:
兰州大学出版社,2001.
[2]封志宏主编,模拟电子技术[M],兰州:
兰州大学出版社,2003.
[3]吴蓉主编,数字电子技术[M],兰州:
兰州大学出版社,2005.
[4]林伸茂编著,8051单片机彻底研究[M],北京:
中国电力出版社,2007.
[5]邹久明编著,80C51单片机实用技术[M],北京:
北京航空航天大学出版社,2008.
附录
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
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
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