单片机.docx
《单片机.docx》由会员分享,可在线阅读,更多相关《单片机.docx(24页珍藏版)》请在冰豆网上搜索。
![单片机.docx](https://file1.bdocx.com/fileroot1/2023-5/17/ddd3915a-1ec2-486b-a879-abf18157cdc9/ddd3915a-1ec2-486b-a879-abf18157cdc91.gif)
单片机
目录
第一章任务书1
第二章系统总体方案设计3
第三章频率计的硬件设计5
3.1单片机主电路设计5
3.1.189C51芯片介绍5
3.1.2单片机最小系统7
3.2放大整形电路9
3.2.1放大整形电路的必要性9
3.2.2放大整形电路的原理9
3.2.3放大整形电路的设计9
3.3人机界面12
3.3.1驱动芯片74LS24512
3.3.2显示模块12
3.3.3开关按钮15
3.3.4完整硬件图15
第四章频率计软件设计16
4.1流程图16
4.1.1主程序16
4.1.2定时器/计数器子程序17
4.2程序代码18
第五章频率计的系统调试22
5.1系统调试22
5.2结论22
第六章总结23
参考文献23
第一章任务书
《微机原理与接口技术》课程设计任务书(八)
题目:
数字频率计的设计
一、课程设计任务
频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。
本课题要求应用以51单片机为核心设计一频率计,对输入的信号进行频率计数,计数的频率结果通过数码管显示出来。
二、课程设计目的
通过本次课程设计使学生掌握:
1)掌握以单片机为核心的系统的分析和设计的基本方法;2)程序的设计及实现方法;3)提高学生对单片机实时系统的设计和调试能力。
三、课程设计要求
要求
(1)当按下开始键时,能够对0~250kHz的信号频率进行准确计数,计数误差不超过
Hz;
(2)要求所设计的频率计能够测量各种波形,如正弦波、方波、三角波等(在设计时需对被测信号进行放大和整形处理)。
四、课程设计内容
1、人机对话“界面”的设计;
2、内存端口及外设的设置;
3、硬件电路原理图、软件清单。
五、课程设计报告要求
报告中提供如下内容:
1、目录
2、正文
(1)课程设计任务书;
(2)总体设计方案
(3)针对人机对话“界面”要有操作使用说明,以便用户能够正确使用本产品;
(4)硬件原理图,以便厂家生成产(可手画也可用protel软件);
(5)程序流程图及清单(子程序不提供清单,但应列表反映每一个子程序的名称及其功能);
(6)调试、运行及其结果;
3、收获、体会
4、参考文献
六、课程设计进度安排
周次
工作日
工作内容
第
一
周
1
布置课程设计任务,查找相关资料
2
熟悉单片机硬件资源的使用
3
完成总体设计方案
4
画出硬件原理图及程序流程图
5
完成硬件接线,编写程序并调试
第
二
周
1
编写程序并调试
2
编写程序并调试
3
编写程序并调试及准备课程设计报告
4
完成课程设计报告并于下午两点之前上交
5
答辩
本课题共需两周时间
七、课程设计考核办法
本课程设计满分为100分,从课程设计平时表现、课程设计报告及课程设计答辩三个方面进行评分,其所占比例分别为20%、40%、40%。
第二章系统总体方案设计
频率计是我们经常会用到的实验仪器之一,频率的测量实际上就是在单位时间内对信号进行计数,计数值就是信号频率。
本文介绍了一种基于单片机AT89C51制作的频率计的设计方法,测量频率值时采用单片机对脉冲信号直接计数。
该频率计实现1HZ~250kHZ的频率测量,八位共阳极动态显示测量结果,可以测量正弦波、三角波及方波等各种波形的频率值。
根据上述分析,频率计系统设计共包括五大模块:
单片机控制模块、电源模块、放大整形模块及显示模块。
各模块作用如下:
1、单片机控制模块:
以AT89C51单片机为控制核心,来完成它待测信号的计数,译码,和显示。
利用其内部的定时/计数器完成待测信号周期/频率的测量。
单片机AT89C51内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。
2、电源模块:
为整个系统提供合适又稳定的电源,主要为单片机、信号调理电路提供电源,电压要求稳定、噪声小及性价高的电源。
3、放大整形模块:
放大电路是对待测信号的放大,降低对待测信号幅度的要求。
整形电路是对一些不是方波的待测信号转化成方波信号,便于测量。
5、显示模块:
显示电路采用八位共阳极数码管动态显示,为了加大数码管的亮度,使用74LS245芯片进行驱动,便于观测。
综合以上频率计系统设计有单片机控制模块、电源模块、放大整形模块及显示模块等组成,频率计的总体设计框图如图2.1所示。
图2.1频率计的总体设计框图
第三章频率计的硬件设计
3.1单片机主电路设计
3.1.189C51芯片介绍
许多由关硬件设计中都使用到单片机89C51,其功能比以往的单片机强大的多。
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
89C51引脚图如图3.1所示。
图3.1AT89C51芯片
管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(计时器0外部输入)
P3.5T1(计时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
3.1.2单片机最小系统
图3.2是单片机的最小系统,主要由晶振和复位组成,用于单片机的复位。
图3.2单片机的最小系统
一.单片机晶振
图3.389C51晶振接法图
单片机最小系统的晶振接法图如图3.3所示,其中:
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
选用6MHz频率的晶体,允许输入的脉冲频率为250kHz。
电容的大小范围为20pF~40pF,本设计选用20pF电容。
系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。
AT89单片机内部有一个用于构成振荡器的高增益反相放大器。
二.单片机复位状态
复位分为上电复位和手动复位电路,本次采用上电复位。
89C51的复位电路如图3.4所示。
单片机的复位都是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟震荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。
为了保证应用系统可靠地复位,在设计复位电路时,通常使RST引脚保持10ms以上的高电平。
只要保持高电平,则MCS-51单片机就循环复位;当RST从高电平变为低电平以后,MCS-51单片机从0000H地址开始执行程序。
在复位有效期间,ALE引脚输出高电平。
图3.489C51复位电路图
复位后,P0口~P3口输出高电平,且使这些准双向口皆处于输入状态,并且将07H写入栈指针SP(即设定堆栈底为07H),同时,将程序计数器PC和其余的特殊功能寄存器清为0(不定的位除外)。
但复位不影响单片机内部的RAM状态
3.2放大整形电路
3.2.1放大整形电路的必要性
因为在单片机计数中只能对脉冲波进行计数,而实际中需要测量频率的信号是多种多样的,有脉冲波、还有可能有正弦波、三角波等,所以需要一个电路。
把待测信号转化为可以进行计数的脉冲波。
3.2.2放大整形电路的原理
矩形脉冲波的整形电路有两种:
施密特触发器、单稳态触发器。
而这两种电路都可以有门电路或是555定时器构成。
由于本次设计的基于单片机的数字频率计的放大整形电路部分需求比较简单,所以我们选择由555定时器构成的施密特触发器来作为信号波形整形电路。
一、特点
1、电平触发:
触发信号
可以是变化缓慢的模拟信号,
达某一电平值时,输出电压
突变。
为脉冲信号。
2、电压滞后传输:
输入信号
从低电平上升过程中,电路状态转换时对应的输入电平,
与从高电平下降过程中电路状态转换时对应的输入电平不同。
利用上述两个特点,施密特触发器不仅能将边沿缓慢变化的信号波形整形为边沿陡峭的矩形波,还可以将叠加在矩形脉冲高、低电平上的噪声有效地清除
3.2.3放大整形电路的设计
本设计中使用555定时器构成施密特触发器
555定时器介绍:
555定时器是一种模拟和数字功能相结合的中规模集成器件。
一般用双极性工艺制作的称为555,用CMOS工艺制作的称为7555,除单定时器外,还有对应的双定时器556/7556。
555定时器的电源电压范围宽,可在4.5V~16V工作,7555可在3~18V工作,输出驱动电流约为200mA,因而其输出可与TTL、CMOS或者模拟电路电平兼容。
555定时器成本低,性能可靠,只需要外接几个电阻、电容,就可以实现多谐振荡器、单稳态触发器及施密特触发器等脉冲产生与变换电路。
它也常作为定时器广泛应用于仪器仪表、家用电器、电子测量及自动控制等方面。
555定时器的外引脚排列图如图3.5所示。
它内部包括两个电压比较器,三个等值串联电阻,一个RS触发器,一个放电管T及功率输出级。
它提供两个基准电压VCC/3和2VCC/3
图3.5555定时器的外部引脚图
555定时器的功能主要由两个比较器决定。
两个比较器的输出电压控制RS触发器和放电管的状态。
在电源与地之间加上电压,当5脚悬空时,则电压比较器C1的同相输入端的电压为2VCC/3,C2的反相输入端的电压为VCC/3。
若触发输入端TR的电压小于VCC/3,则比较器C2的输出为0,可使RS触发器置1,使输出端OUT=1。
如果阈值输入端TH的电压大于2VCC/3,同时TR端的电压大于VCC/3,则C1的输出为0,C2的输出为1,可将RS触发器置0,使输出为0电平。
它的各个引脚功能如下:
1脚:
外接电源负端VSS或接地,一般情况下接地。
8脚:
外接电源VCC,双极型时基电路VCC的范围是4.5~16V,CMOS型时基电路VCC的范围为3~18V。
一般用5V。
3脚:
输出端Vo
2脚:
低触发端
6脚:
TH高触发端
4脚:
是直接清零端。
当此端接低电平,则时基电路不工作,此时不论TR、TH处于何电平,时基电路输出为“0”,该端不用时应接高电平。
5脚:
VC为控制电压端。
若此端外接电压,则可改变内部两个比较器的基准电压,当该端不用时,应将该端串入一只0.01μF电容接地,以防引入干扰。
7脚:
放电端。
该端与放电管集电极相连,用做定时器时电容的放电。
在1脚接地,5脚未外接电压,两个比较器A1、A2基准电压分别为的情况下,555时基电路的功能表如表3.6所示。
用555定时器构成的施密特触发器:
当Vi=0时,由于V11=V12=Vi=0,电压比较器C1输出高电平,C2输出低电平;基本RS触发器被置“1”态;则Vi=1,当Vi继续上升,但在未达到2/3Vcc以前,VO=1不会变。
当Vi升高到2/3Vcc时,电压比较器C1输出低电平,C2输出高电平;基本RS触发器被置“0”态;则VO=0,此后,Vi继续上升到Vcc,然后再降低,但在降低未达到1/3Vcc以前,VO=0的状态同样也不会改变。
当Vi下降到1/3Vcc时,电压比较器C1输出高电平,C2输出低电平;基本RS触发器被置“1”态;则VO=1,此后,vi继续下降到0,然后再上升,但在未达到2/3Vcc以前,VO=1的状态不会改变。
图3.6由555定时器构成的施密特触发器
3.3人机界面
3.3.1驱动芯片74LS245
74LS245是我们常用的芯片,用来驱动led或者其他的设备,他是8路同相三态双向总线收发器,可双向传输数据。
74LS245还具有双向三态功能,既可以输出,也可以输入数据。
当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。
74LS245的引脚如图3.9所示,当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;(接收)*DIR=“1”,信号由A向B传输;(发送)当/CE为高电平时,A、B均为高阻态。
图3.974LS245引脚图
3.3.2显示模块
显示模块由频率值显示电路组成。
频率值显示电路采用八位共阳极数码管动态显示频率计被测数值,使用74LS245进行驱动,使数码管亮度变亮,便于观察测量。
一.数码管介绍
常见的数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。
根据管脚资料,可以判断使用的是何种接口类型[14].两种数码管内部原理如图3.7所示。
图3.7两种数码管内部原理图
LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。
在一定范围内,其正向电流与发光亮度成正比。
由于常规的数码管起辉电流只有1~2mA,最大极限电流也只有10~30mA,所以它的输入端在5V电源或高于TTL高电平(3.5V)的电路信号相接时,一定要串加限流电阻,以免损坏器件。
二.数码管显示原理
LED显示块中的发光二极管共有两种连接方法:
(1)共阳极接法
发光二极管的阳极连在一起构成公共阳极。
使用时公共阳极接+5V,这样,阴极端输入低电平的段的发光二极管被点亮,相应的段被显示;而输入高电平的段则不点亮。
(2)共阴极接法
发光二极管的阴极连在一起构成公共阴极。
使用时公共阴极接地,这样,阳极端输入高电平的段的发光二极管被点亮,相应的段被显示;而输入低电平的段则不点亮。
图3.8数码管引脚图
数码管引脚如图3.8,共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。
当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。
8个笔划段dP、g、f、e、d、c、b、a对应于一个字节(8位)的D7、D6、D5、D4、D3、D2、D1、D0,于是用8位二进制码就可以表示欲显示字符的字形代码。
例如,对于共阴LED显示器,当公共阴极接地(为零电平),而阳极dP、g、f、e、d、c、b、a各段为0111011时,显示器显示"P"字符,即对于共阴极LED显示器,“P”字符的字形码是73H。
如果是共阳LED显示器,公共阳极接高电平,显示“P”字符的字形代码应为10001100(8CH)。
表3-20LED十六进制的数字代码表
字形
共阳极代码
字形
共阳极代码
0
03H
5
49H
1
9fH
6
41H
2
25H
7
1FH
3
ODH
8
01H
4
99H
9
09H
3.3.3开关按钮
图3.10开关按钮
如图3.10所示,当Sw1导通时P1.2为低电平;sw1关断时为高电平。
3.3.4完整硬件图
由上述单片机模块,放大整形电路和显示模块组成的硬件图如图3.11所示。
图3.11数字频率计的硬件图
第四章频率计软件设计
4.1流程图
4.1.1主程序
开始时,进行系统初始化,计数器和定时器开始工作。
如果没达到1s,则定时器继续计时;当定时器达到1s时,关断计数器和定时器。
这时统计计数器所计的数就是所要测的波形的频率。
具体流程图如图4.1所示。
图4.1总体流程图
4.1.2定时器/计数器子程序
定时器可以通过单片机的震荡周期进行定时,在此程序中,将定时器T0定为50ms,这样每50ms定时中断1次k就加一,中断20次就是1s。
定时器也可以当做计数器用,T1中断一次n就可以加一次。
测频时,计数器T1工作在模式2,每当外部有中断信号时计数器T1自动加一,当加满256时会自动计一周期,1秒计的脉冲信号就是频率。
定时器的流程图如图4.2所示,计数器的流程图如图4.3所示。
由TMOD来确定是定时器还是计数器,同时确定它的工作方式。
图4.2定时器的流程图
图4.3计数器的流程图
4.2程序代码
#include
sbitP12=P1^2;
unsignedcharcodedisp_tab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//段码控制0~9
unsignedcharcodedisp_bit[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位选控制查表的方法控制
unsignedcharge,shi,bai,qian,wan,shiwan;//数码管各位定义
unsignedlongintm=0,n=0,k=0;//定义变量
voiddelay(intms)//延时子程序
{
inti;
for(;ms>0;ms--)
{
for(i=50;i>0;i--){}
}
}
voidmain()
{while(P12==0)
{
TMOD|=0x61;//选择定时器0方式一,计数器1方式二
TL0=-50000%256;//定时器初值50ms
TH0=-50000/256;
TR0=TR1=1;//开定时器,计数器
ET0=ET1=1;//定时器中断允许
TH1=TL1=0;
EA=1;
while
(1)
{shiwan=m/100000;
wan=m%100000/10000;
qian=m%10000/1000;
bai=m%1000/100;
shi=m%100/10;
ge=m%10;
P2=disp_bit[7];
P0=0x25;
delay(3);
P2=disp_bit[6];
P0=0x91;
delay(3);
P2=disp_bit[5];
P0=disp_tab[ge];
delay(3);
P2=disp_bit[4];
P0=disp_tab[shi];
delay(3);
P2=disp_bit[3];
P0=disp_tab[bai];
delay(3);
P2=disp_bit[2];
P0=disp_tab[qian];
delay(3);
P2=disp_bit[1];
P0=disp_tab[wan];
delay(3);
P2=disp_bit[0];
P0=disp_tab[shiwan];
delay(3);
}
}
}
voidtime0(void)interrupt1//定时器中断子程序
{TL0=-50000%256;//定时器初值50ms
TH0=-50000/256;
k++;
if(k==20)//定时1s后赋值
{k=0;EA=0;
m=n*256+TH1*256+TL1;
n=0;
TH1=TL1=0;EA=1;
}
}
voidtime1(void)interrupt3//中断子程序
{n++;TH1=TL1=0;
}
第五章频率计的系统调试
5.1系统调试
经过一次次的调试修改,最终完成了数字频率计的设计。
由单片机内部定时器/计数器构成基本测量电路,可以测出1HZ-250kHZ量程范围的波。
但由于单片机只能检测脉冲信号,所以在外部电路中又加了放大整形电路来对非脉冲信号进行转变,加完放大整形电路后可以检测正弦波和三角波等波形的频率值。
但在频率较大时数码管显示会闪烁,不过数值是稳定的。
5.2结论
通过对数字频率计软硬件设计基本上实现预定的对在一定频率范围内的正弦波、锯齿波、三角波等波形的频率值测量并将测量值送到LED显示器显示。
硬件方面,实现了对正弦波和三角波等波形的放大整形转变为脉冲波。
软件方面,通过单片机编程实现对待测信号的频率测量、测量结果显示等。
但在实际设计工程中,由于自己知识有限,经验不足等原因,还是有很多需要改进的地方。
如设计时往往仅用自己熟悉的芯片实现各功能块,使电路的设计受到限制,思路简单,并且实现时误差较大。
要将设计用于实际系统,还需要进行进一步的设计。
第六章总结
通过这次设计,我受益匪浅。
单片机设计是一次综合性的实践,它将各种知识结合到一起综合运用到实践上来扩展、弥补、串联所学的知识。
通过本次设计我得到了很多收获。
首先,了解了单片机的基本知识和在控制领域的作用和地位。
其次掌握了C语言的编写程序,学会了使用PROTUTES和KEIL的仿真来实现,同时掌握了如何收集、查阅、应用文献资料,如何根据实际需要有选择的阅读书籍和正确确定系统所要使用的元器件的类型。
再次,在精神方面锻炼了思想、磨练了意志。
面对存在的困难首先分析问题根据目的要求确定可实现的部分,定出那不准的方面找同学和老师讨论研究,再完善、再修改、再发现问题、再解决培养了自己的耐心、恒心及遇事不乱的精神。
总之,我明白了理论和实践之间存在的距离只有靠不断的思考不断的动手才能将所学的知识真正