电子频率计报告详解Word下载.docx
- 文档编号:21709511
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:20
- 大小:453.47KB
电子频率计报告详解Word下载.docx
《电子频率计报告详解Word下载.docx》由会员分享,可在线阅读,更多相关《电子频率计报告详解Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
P1.4丶P1.5丶P1.6用来接三个开关分别用来选模式和加减频率。
WR和RD用来接喇叭和电灯当输入频率符合设定值时可以出现声光提示。
P0端口用于连接1602显示屏。
2丶元件参数如下:
C1=C2=30UF,R4=1K欧,一个8路排阻,阻值为1K欧。
一个10K的滑动电阻,晶振为12M的晶振。
3丶各模块电路的实现及其功能:
(1)单片机系统模块
单片机,又称微控制器,是在一块硅片上集成了各种部件的微型计算机。
这些部件包括中央处理器CPU,数据存储器RAM,程序存储器ROM,定时器/计数器和多种I/O接口电路。
其结构特点:
A丶8位CPU;
B丶片内振荡器及时钟电路;
C丶32根I\O线;
D丶外部存储器ROM和RAM寻址范围各64KB;
E丶2个16位的定时器/计数器
F丶5个中断源,2个中断优先级;
G丶全双工串行口;
H丶布尔处理器;
STC89C52RC单片机的工作模式:
掉电模式:
典型功耗<
0.1uA,可由外部中断唤醒,中断返回后,继续执行原程序。
空闲模式:
典型功耗2MA。
正常工作模式:
典型功耗4mA~7mA。
④掉电模式可由外部中断唤醒,适用于水表丶气表等电池供电系统及便携系统
主电源引脚Vcc和VssVcc(40脚):
接+5V电压;
Vss(20脚):
接地。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位(地址8EH)可打开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对F1ash存储器程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
F1ash存储器编程时,该引脚加上+12V的编程电压vpp。
P0口:
P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,P1接收低8位地址。
其引脚功能表如表3.1所示。
端口引脚
第二功能
P1.5
MOSI(用于ISP)
P1.6
MISO(用于ISP编程)
P1.7
SCL(用于ISP编程)
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/0口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:
P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
其引脚功能表如表3.2所示。
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INT0(外部中断0)
P3.3
INT1(外部中断1)
P3.4
T0(定时/计数器0)
P3.5
T1(定时/计数器1)
P3.6
WR(外部数据存储器写)
P3.7
RD(外部数据存储器读选通)
表3.2
单片机的最小系统有:
处理器丶复位电路丶时钟电路丶调试接口丶存储器
1602字符显示频:
1602字符型LCD通常有14条引脚或16条引脚的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字丶英文字母的大小写丶常用的符号丶日文等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
图3.31602显示屏
引脚
符号
功能说明
1
VSS
接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整段,接正电源时对比最弱,接地电源时对比度最高(对比度过高时会产生鬼影,使用时可以通过一个10K的电位器调整对比度)
4
RS
RS为寄存器选择,高电平1时选择数据寄存器丶低电平0时选择指令寄存器.
5
RW
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,写操作时,下降沿使能。
读操作时,E高电平有效。
7
DB0
低4位三态丶双向数据总线0位(最低位)
8
DB1
低4位三态丶双向数据总线1位
9
DB2
低4位三态丶双向数据总线2位
10
DB3
低4位三态丶双向数据总线3位
表3.4LCD1602管脚
四、软件设计
本次程序设计采用的是C语言程序设计。
系统软件设计采用模块化设计方法。
整个系统由初始化模块,信号频率测量,自动量程转换丶按键模块和显示等模块组成。
4.1.1主程序流程图设计
根据本次设计要求,主程序主要包括单片机和LCD1602初始化,频率计测量,量程自动转换以及显示几个方面,用单片机驱动显示器LCD1602,使其显示两行文字第一行显示CurrentSqu,第二行显示输入频率。
要让液晶显示字符,首先要对其控制器进行初始化设置,还必须对有丶无光标丶光标的移动方向丶光标是否闪烁及字符移动的方向等进行设置,才能获得所需要的显示效果。
对LCD1602的初始化丶读丶写丶光标设置丶显示数据的指针设置等。
主程序流程图如下:
4.1.2子程序流程图设计
(1)显示程序
LCD显示程序设计流程图如下图所示:
(2)中断服务流程图:
频率测量程序框图
(3)中断服务流程图
这是按键部分的流程图,按键有三个,第一个按键可以通过设置键模式选择可以选择CurrentFrequ和SetFrequ显示方式。
第二个按键加SetFrequ的值最多按2000次。
第三个按键减SetFrequ的值最多按2000次。
当显示的值超过2000HZ时只显示2000HZ或低于10HZ时只显示10HZ,显示部分精确到小数点一位。
当SetFrequ的值与输入的值一致时喇叭和提示灯将显示和叫。
五、仿真过程与仿真结果
本设计是在Proteus环境下进行仿真的,仿真所用到的器件有:
单片机AT89C52,蜂鸣器,液晶显示器,一些电阻,电容等。
本设计在仿真的条件下可以正确的显示频率,并在输入频率和显示频率一致时,蜂鸣器将发出滴滴的警告声,显示灯亮。
且本设计频率计显示可以精确到0.1满足设计要求。
仿真时频率计显示如下图所示。
六、安装与调试
频率计的系统调试包括硬件调试丶软件调试以及系统软硬件联合调试。
硬件调试包括显示模块丶按键丶显示灯等模块,软件调试就是通过修改程序,使频率计功能完善,提高频率计的测量精度。
使用软件仿真,调试仿真结果,同时使用数字万用表和示波器测试输出电压值和输出波形,调试出正确的软硬件电路。
Proteus仿真成功后,接着就是制作硬件板,在试验电路安装完毕后,不要急于通电测试,而首先必须做好以下调试前的检查工作。
检查连线情况,经常遇到有接错丶少接或是多接等连线错误。
检查连线可以直接对照电路原理进行,但是如果电路中布线较多,则可以以元件为中心,依次检查其引脚的有关连线,这样不仅可以检查出错接或是少接,而且也较容易发现多余的线。
为了确保连线的可靠,在查线的同时,还可以用万用表电阻档对接线作连通检查,而且最好在器件外引线出测量,这样有可能查出某些“虚焊”的隐患。
在通电前,还需要用万用表检查电源输入端与地之间是否存在短路,若有则需要进一步检查其原理。
在完成了以上各项检查并确认无误后,才可以通电测试,但此时应注意电源的正丶负极不能接反。
(1)LCD显示调试
做好板子后,检查电路,没有短路或者短路,接着对显示部分进行测试。
给板子输入电源,调节电阻器改变LCD背光亮度,直到亮度适合而且显示正常。
把程序下载到单片机中,送数据到LCD显示,能正常显示程序中设定显示的数据,说明显示电路部分正常工作。
(2)键盘调试
在显示正常的情况下调试键盘,按下设置键,看是否正常进入中断,若能,进入中断后,按下频率/周期丶闸门时间设置键,看是否正常设置。
在调试过程中,按上述进行调试,没什么问题,键盘正常工作。
制版不太成功,没有显示。
在开发板上可有效实现
七丶结论与心得
为期一周的单片机课程设计已经结束了,从成果上看似乎是做出来了,其实不然:
刚开始的时候一脸茫然,找不到的方向,在老师的提醒与同学的帮助下才能入手。
体现出基础知识差劲的一方面;
再后来画原理图,制作PCB的时候又出现了一些问题,元器件的不齐,线路的断路导致制出的板不成功的,体现出动手能力不强的方面。
回顾自己的学习经历,感觉今天的生活与状态是由一系列的偶然与必然串联成结果。
这个过程中自己承受了比别人更多的挫折,但也学到了更多的感悟,获得了比别人更多的成就。
虽然很艰辛,但最后在同学的帮助下还是可以成功的在开发板上实现。
经过这次的实训令我提高了对单片机相关软件的应用,以及对PCB板的制作水平。
八丶参考文献
[1]、张毅刚.《单片机原理及应用》.北京:
高等教育出版社
[2]、阎石.《数字电子技术基础》.北京:
[3]、童诗白,华成英.《模拟电子技术基础》.北京:
#include<
REG52.H>
intrins.H>
/*液晶引脚定义*/
#defineLCD_DBP0
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_E=P2^2;
/*按键引脚定义*/
sbitKey_Mode=P1^5;
sbitKey_Up=P1^6;
sbitKey_Down=P1^7;
/*报警引脚定义*/
sbitBeep=P3^7;
sbitLedS=P3^6;
/*变量的定义*/
unsignedcharSelecMode=0;
unsignedintFlag_1S=0,CounterFlag=0,CounterShow=0,
SetCounterparame=300;
/*系统定时器定义*/
voidSystemInit(void)
{
TMOD=0x16;
//设置定时器1计时模式
TH1=(65536-20000)/256;
//加载计数器高位数据
TL1=(65536-20000)%256;
//加载计数器低位数据
ET1=1;
//允许定时器1中断触发
TR1=1;
//启动定时器1
IT0=1;
//下降沿触发
EX0=1;
//开启外部中断0(INT0)
EA=1;
//开总中断
}
/*500毫秒延时定义*/
voiddelay500ms(void)
unsignedchara=0,b=0,c=0;
for(c=205;
c>
0;
c--)
for(b=116;
b>
b--)
for(a=9;
a>
a--);
/*n*10微妙延时*/
voiddelay_n10us(unsignedintn)
{
unsignedinti=0;
for(i=n;
i>
i--)
{
_nop_();
}
}
/*写命令函数*/
voidLCD_write_command(unsignedchardat)
delay_n10us(10);
LCD_RS=0;
LCD_RW=0;
LCD_E=1;
LCD_DB=dat;
LCD_E=0;
/*写数据函数*/
voidLCD_write_data(unsignedchardat)
LCD_RS=1;
/*写字符函数X:
0~15Y:
1,2*/
voidLCD_disp_char(unsignedcharx,unsignedchary,unsignedchardat)
unsignedcharaddress=0;
if(y==1)
address=0x80+x;
else
address=0xc0+x;
LCD_write_command(address);
LCD_write_data(dat);
/*写一串字符X:
voidLCD_disp_str(unsignedcharx,unsignedchary,unsignedchar*str)
while(*str!
='
\0'
)
{
LCD_write_data(*str);
str++;
/*液晶初始化*/
voidLCD_init(void)
LCD_write_command(0x38);
LCD_write_command(0x0c);
LCD_write_command(0x06);
LCD_write_command(0x01);
delay_n10us(100);
/*硬件初始化*/
voidHandInit(void)
SystemInit();
LCD_init();
/*按键检测*/
voidKeyProcess(void)
if(!
Key_Mode)
Beep=0;
delay500ms();
Beep=1;
while(!
Key_Mode);
SelecMode++;
if(SelecMode>
1)
SelecMode=0;
Key_Up)
Key_Up);
if(SelecMode)
{
if(SetCounterparame<
20000)
{
SetCounterparame++;
}
}
Key_Down)
Key_Down);
if(SelecMode)
if(SetCounterparame>
200)
SetCounterparame--;
}
/*逻辑处理*/
voidLogicProcess(void)
if(CounterShow==SetCounterparame)
Beep=0;
LedS=0;
Beep=1;
LedS=1;
/*数据显示*/
voidShowProcess(void)
unsignedcharbuf[9]={0};
LCD_disp_str(0,1,"
SetFrequ:
"
);
buf[0]=SetCounterparame/10000+0x30;
buf[1]=SetCounterparame%10000/1000+0x30;
buf[2]=SetCounterparame%1000/100+0x30;
buf[3]=SetCounterparame%100/10+0x30;
buf[4]='
.'
;
buf[5]=SetCounterparame%10+0x30;
buf[6]='
'
buf[7]='
buf[8]='
CurrentFrequ:
buf[0]=CounterShow/10000+0x30;
buf[1]=CounterShow%10000/1000+0x30;
buf[2]=CounterShow%1000/100+0x30;
buf[3]=CounterShow%100/10+0x30;
buf[5]=CounterShow%10+0x30;
LCD_disp_str(6,2,buf);
/*主函数*/
voidmain(void)
HandInit();
while
(1)
KeyProcess();
ShowProcess();
LogicProcess();
/*外部中断检测*/
voidTrig_INT0(void)interrupt0
EX0=0;
CounterFlag++;
/*定时器中断检测*/
voidTime_T1(void)interrupt3//20ms
Flag_1S++;
if(F
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 频率计 报告 详解
![提示](https://static.bdocx.com/images/bang_tan.gif)