单片机课程设计6位数字显示计时.docx
- 文档编号:30619955
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:19
- 大小:579.45KB
单片机课程设计6位数字显示计时.docx
《单片机课程设计6位数字显示计时.docx》由会员分享,可在线阅读,更多相关《单片机课程设计6位数字显示计时.docx(19页珍藏版)》请在冰豆网上搜索。
单片机课程设计6位数字显示计时
单片机
课程设计报告书
课题:
6位数显频率计数器
院(系):
机电工程学院
专业:
机械设计制造及其自动化
姓名:
学号:
2014年1月14日
目录
一、前言----------------------------------------------------
1.1、课程设计任务------------------------------------------------
1.2、课程设计任务完成要求------------------------
1.3、设计目的-----------------------------------------------------
二、方案提出与论证-------------------------------------
2.1频率测量原理与方法-----------------------------------
三、系统硬件设计----------------------------------------
3.1电路原理图总图-------------------------------------------------
3.1.1电源供电电路--------------------------------------------------
3.1.2单片机时钟电路----------------------------------------------
3.1.3单片机复位电路-----------------------------------------------
3.1.4显示及驱动电路-----------------------------------------------
3.2AT89C51单片机芯片的功能及其参数------------------
四、系统软件设计----------------------------------------
4.1软件流程图-------------------------------------------------------
4.2程序调试及误差分析-------------------------------------------
五、制作PCB板及焊接元件调试--------------------
六、元器件明细表----------------------------------------
七、实验总结-------------------------------
八、参考文献----------------------------------------------
题目四:
6位数显频率计数器
一前言
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,会被经常使用到。
1.1、课程设计任务
任务要求:
1、要求能够对0-25KHZ的脉冲信号频率进行准确计数,计数误差不超过±2HZ。
2、计数的频率结果通过6位动态数码管显示出来。
分析:
本课程设计主要任务是设计一个频率计数器,其主要功能如下:
利用AT89C51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过6位动态数码管显示出来。
要求能够对0-25KHZ的信号频率进行准确计数,计数误差不超过±2HZ。
1.2、课程设计任务完成要求
1、根据题目要求设计控制系统。
2、完成硬件系统的制作。
3、完成软件的编写及调试(先用PROTEUS软件仿真)。
4、完成的控制系统能达到题目的要求。
5、完成2000字以上的课程设计报告
1.3、设计目的:
A、熟悉和掌握51单片机的原理、结构和应用;
B、用PROTEL进行电路的设计,进一步了解相关软件的功能以及设计的一些规则;
C、熟悉用C语言进行程序设计的一般方法、步骤和应用;
D、积极发扬团队精神和集体荣誉感,互相协作、互相帮助;
E、熟悉电路的调试的接线方法和调试方法及其原理
F、锻炼自己的实践和动手能力,为以后能更快的投入工作而做准备;
二、方案提出与论证
2.1频率测量原理与方法
方案一:
直接测频法。
把被测频率信号经过脉冲形成电路后加到闸门的一个输入端,只有在闸门开通时间1秒内,被计数的脉冲被送到计数器进行计数。
设计数器的值为N,由频率定义式计算得到被测信号频率为f=N/T=N。
方案二:
测量周期法。
将被测量信号经过过零检测后转换成方波信号,利用单片机查询两个下降沿,在此期间根据晶体振荡器产生的时钟经过12分频的脉冲送计数器进行计数,设计数值为N,送入计数器的时钟周期为T,则得被测量信号的周期值为NT,然后取其倒数即为被测量信号的频率(1/NT)。
理论上分析:
采用直接测频法在测量低频段信号时的相对测量误差较大,但在高频段测量信号的频率有较高的精度。
如果采用测频法测量低频段频率信号,要想提高精确度,势必会大幅度增加闸门开通时间T,时效性较差。
相反,采用测量信号周期然后取其倒数的方法在低频段测量时精度很高。
但是本题目要求误差为±2HZ,经过试验分析,加上必要的软件编程的措施,可以直接用高频的测法,在高频段,误差与示波器的显示频率基本一致,低频时,误差小于±0.5HZ,满足题目的要求!
52单片机中断的进入都是需要一定的时间的,如果我们没有把这个考虑进去,直接进行软件的设计,误差达到了±20HZ。
不满足题目的要求!
因而在编程的时候,把中断事件也考虑进去!
这样可以使得误差减小!
三、系统硬件设计
3.1电路原理图总图
3.1.1电源供电电路
3.1.2单片机时钟电路
如图所示是采用内部振荡方式使8052单片机产生时钟信号,在单片机芯片的X1和X2引脚两端跨接石英晶体振荡器和两个电容构成稳定的自激振荡电路,其中电容对振荡频率起微调作用。
晶振频率为12MHZ。
3.1.3单片机复位电路
复位是单片机的初始化操作。
其功能是使CPU从0000H单元开始执行程序。
除了使系统正常初始化外,当程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要按复位键重新启动。
如图为按键手动复位方式,通过复位端经电阻和电源+5V接通实现复位功能,兼备上电复位功能。
3.1.4显示及驱动电路
共阳四位LED数码管
三极管放大电路
10K上拉电阻驱动电路
该系统采用两个四位LED共阳极显示器动态显示6位数。
当某一字段发光二极管的阴极极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
要使数码管正常发光一般都要加驱动电路,不加驱动电路是很暗的(特别是共阴极数码管)。
经计算本次设计需采用上拉电阻+三极管放大器来驱动整个发光电路,在三极管基极加以分压限流电阻,以防止数码管因电流过大而烧坏。
确保了试验器件的安全。
3.2AT89C51单片机芯片的功能及其参数
AT89C51是一个有40个引脚的芯片,引脚配置如下图所示。
与8031相比,AT89C51自带4K的ROM和128B的RAM,因此编写中小型系统就无需任何硬件进行扩展。
AT89C51引脚配置
AT89C51芯片的40个引脚功能为:
VCC:
电源电压。
GND:
接地。
RST:
复位输入。
当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡放大器的输出。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
P0口:
8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
8位双向I/O口。
引脚P1.2~P1.7提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。
P1.0和P1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1口引脚写入“1”后,可用作输入。
在闪速编程与编程校验期间,P1口也可接收编码数据。
P2口:
带内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
引脚P3.0~P3.7为带内部上拉的双向I/0引脚。
P3口的输出缓冲器能接收20mA的灌电流;P3口写入“1”后,内部上拉,可用输入。
P3口也可用作特殊功能口,其功能见表1。
P3口同时也可为闪速存储器编程和编程校验接收控制信号。
表3-1P3口特殊功能
P3口引脚
特殊功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
/WR(外部数据存储器写选通)
P3.7
/RD(外部数据存储器读选通)
四、系统软件设计
4.1软件流程图
1设计思路及原理
单片机当工作方式寄存器TMOD的C/T位=1时为计数方式,多路开关与定时器0的外部引脚连通,外部计数脉冲由引脚输入。
当外部信号由1至0跳变时,计数器加1,此时T0成为外部事件的计数器。
由于确认一次由1至0的跳变要用24个振荡器周期,所以所设计计数器的最高计数频率为单片机时钟频率的1/24。
1)定时/计数器T0和T1的工作方式设置,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此:
T0的最大计数频率为250KHz。
所以对于设计要求即测量范围为0~~25KHZ是完全满足的。
对于频率的概念就是在一秒只数脉冲的个数,即为频率值。
所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理。
送到数码管显示出来
2)T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。
因此每次放入定时器1的初值为TH1=65536/256,TL1=65536%256.
3)工作方式的确定。
首先,两个定时器都采用软件启动定时器,都工作在16位计数器状态,即方式1,所以TMOD的高四位和低四位的GATE=0,M1M0=01;定时器1用于定时,所以D6位=0,定时器0用于技术,所以D3位=1。
所以TMOD=0x15.控制方式寄存器TCON的相应位在程序中确定。
编写并调试好的程序如下:
#include
unsignedcharcodedispbit[]={0x20,0x10,0x08,0x04,0x02,0x01};
unsignedcharcodedispcode[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
unsignedchardispbuf[8]={0,0,0,0,0,0,10,10};
unsignedchartemp[8];
unsignedchardispcount;
unsignedcharT0count=0;
unsignedchartimecount=0;
unsignedintdelay_count=0;
bitflag;
unsignedlongx;
voidmain(void)
{
unsignedchari;
TMOD=0x15;//定时器1为定时模式定时器0为技术模式
TH0=0;
TL0=0;
TH1=(65536-50000)/256;//50ms定时
TL1=(65536-50000)%256;
TR1=1;//定时器1开
TR0=1;//定时器0开
ET0=1;//定时器中断开
ET1=1;
EA=1;//中断开
while
(1)
{
//P2=dispcode[9];
if(flag==1)//如果1S定时到
{
flag=0;
x=T0count*65536+TH0*256+TL0;//1S脉冲计数总量
for(i=0;i<8;i++)
{
temp[i]=0;
}
i=0;
while(x/10)
{
temp[i]=x%10;//取个位
x=x/10;
i++;
}
temp[i]=x;
for(i=0;i<6;i++)
{
dispbuf[i]=temp[i];//取各个位码
}
timecount=0;
T0count=0;
TH0=0;
TL0=0;
TR0=1;
}
delay_count++;
if(delay_count>=100)//计时变量大于等于100时清零
{
delay_count=0;
P0=0xff;//
P2=dispcode[dispbuf[dispcount]];
P0=dispbit[dispcount];
dispcount++;
if(dispcount>=6)//如果位数大于6位
{
dispcount=0;
}
}
}
}
voidt0(void)interrupt1using0
{
T0count++;//脉冲计数溢出
}
voidt1(void)interrupt3using0
{
TH1=(65536-50000)/256;//重装计时器
TL1=(65536-50000)%256;
timecount++;
if(timecount>=20)
{
TR0=0;
timecount=0;
flag=1;//1S定时到,标志位置1
}
}
4.2程序调试及误差分析
写好程序后用protues仿真。
第一次仿真结果为:
在低频时测得的数据很准确,在5khz以上开始有误差,且随着频率的上升,误差增大。
当信号频率为25khz时,误差为+77hz。
分析了一下程序觉得T1重装次多太多造成计数时间偏大是误差的主要原因。
修改了程序,让T0从原来的每次定时5ms,定时1s重装200次变为每次定时50ms,定时1s重装20次后,第二次仿真。
误差大大减小,为+5hz。
此时,误差还是不能满足要求。
在程序中加以下几个语句if((x>12000)&&(x<18000))x=x-1;elseif((x>18000)&&(x<20000))x=x-2;
elseif((x>20000)&&(x<30000))x=x-3;来减小较高频时的误差。
虽然觉得这样不合理,不过这样处理后,误差真的减了好多。
满足了设计的初始要求。
五、制作PCB板及焊接元件调试
将原理图导入PCB,布好线后如下图:
将布好线的pcb拿去打印,并将打印纸用电熨斗印在板子上。
印好后放进三氯化铁溶液中腐蚀两个小时即可腐蚀完毕。
清洗腐蚀好的板子,刮去铜线上的石墨。
弄干净后准备安插焊接元件。
焊好板子后检查线路是否完全接好。
然后把调试好的程序烧录到单片机中去调试。
调试成功。
至此,整个设计圆满成功。
六、元器件明细表
名称
型号参数
数量
STC89C52带底座
1套
4X共阳极数码管
2个
晶振
12M
1个
电容
30pf、104pf
2个
电解电容
10uf
1个
小按键
2个
电阻
10k
1个
8X排阻
10k
2个
8050三极管
8个
七、实验总结
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,会被经常使用到。
单片机技术是计算机和电子等专业重要的基础专业课程之一,不但要求有较高的理论水平,而且还要求有实际的动手能力。
通过本次的课程设计很大程度上提高了我的实践能力,提高如何综合运用所学知识解决实际问题的能力,包括提高编程能力对接口等硬件的理解分析能力和设计接口电路的能力,以及获得有关项目管理和团队合作等等众多方面的具体经验,增强对相关课程具体内容的理解和掌握能力,培养对整体课程知识综合运用和融会贯通能力。
在本次的课程设计中,由于平时自己在单片机设计方面的动手较少,刚开始的时候就遇到了不少的困难,不知道从何处下手,跟着同学一起慢慢的摸索,经过这两个星期的不断努力,我从开始的门外汉逐步摸索到了一下东西,对单片机设计课程设计也有了一定的了解,在重新巩固自己的理论知识的同时,也加强了自己的动手操作能力,并且也增强了自己对单片机的实际运用的理解和实践。
感谢郭老师给我们这样的课设机会,让我们从课本上学到的东西能学以致用,通过实际编程和单片机及接口的硬件实践,真正掌握软硬件设计的方法,从中得到收益和提高。
通过这次的设计,我不仅对单片机的制作步骤和基本方法有了一定的掌握和熟悉,而且还在制作的过程中学会了怎样克服困难,怎样才能很同学很好的合作。
同时,这也教会了我们光有理论还是很不够的,我们绝对不能养成眼高手低的坏毛病,我们要将理论用到实践中去才能体现出其价值。
这就是所谓的理论联系实际的重要性。
本次课程设计为毕业设计打下了比较好的基础,让自己体会的毕业设计的大概经历过程,并且明白了自己的不足之处,提前查漏补缺,避免相同的错误在毕业设计中出现。
七、参考文献
1)张天凡等。
51单片机c语言开发完全手册。
北京:
电子工业出版社。
2008.6
2)江立,蔡骏等。
单片机原理与应用技术。
北京:
清华大学出版社。
2006.
3)潘新民,王燕芳。
微型计算机控制技术。
北京:
电子工业出版社。
2005.10
4)秦曾煌等。
电工学(电子技术)。
北京:
高等教育出版社。
2004.7
5)何书森何华斌.实用电子线路设计速成。
福州:
福建科学技术出版社2004.19-99.
6)周润景,王伟。
AltiumDesigner原理图与PCB设计。
北京:
电子工业出版社。
2009.6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 数字 显示 计时