基于51单片机数字频率计

基于51单片机数字频率计
基于51单片机数字频率计

题目:基于51单片机的数字频率计

目录

第1节摘要 (2)

1.1数字频率计概述 (2)

1.2频率测量仪的设计思路与频率的计算 (2)

1.3基本设计原理 (3)

第2节数字频率计<低频)的硬件结构设计 (4)

2.1系统硬件的构成 (4)

2.2系统工作原理图 (4)

2.3AT89C51单片机及其引脚说明 (5)

2.4信号调理及放大整形模块 (7)

2.5时基信号产生电路 (7)

2.6显示模块 (8)

第3节软件设计 (12)

3.1 定时计数 (12)

3.2 量程转换 (12)

3.3 BCD转换 (12)

3.4 LCD显示 (12)

第4节结束语 (13)

参考文献 (14)

附录 C语源程序代码 (15)

基于51单片机的数字频率计

河南工业职业技术学院计控0904班学生:

指导老师:

引言

本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。并且引导一种创新的思维,把学到的知识应用到日常生活当

中。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教案与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。

ABSTRACT

This text introduces the control system of a kind of elevator PLC.The elevator is perpendicular directional of the conveyance equipments be indispensable in the high building of transportation equipments.It depends electric power, dragging along to move a car that can carry person or thing and lead a track in the building of the well way up do perpendicularity to ascend and descend sport, there is prominent function in the people's life.And the control elevator circulate of the PLC system also has more and more high request, request to attain the movement purpose of "steady, quasi-, quick" of elevator movement.That system mainly from PLC, logic control the electric circuit constitute.Include an exchanges difference to tread electric motor among them, after the electric appliances, get in touch with a machine, route of travel switch and press button, give out light the indicator constitute and transducer for the control system of integral whole.The this machine control unit adoption carries on whole process a control to the machine by the programmable controller PLC of Mitsubishi company.

1.1数字频率计概述

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,因为其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。

本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示6位数。测量范围从1Hz—10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。用单片机实现自动测量功能。

基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。

1.2频率测量仪的设计思路与频率的计算

频率测量仪的设计思路主要是:对信号分频,测量一个或

几个被测量信号周期中已知标准频率信号的周期个数,进而测

量出该信号频率的大小,其原理如右图1所示。

若被测量信号的周期为,分频数m1,分频后信号的周期为T,则:T=m1T x 。由图可知:T=NT o

<注:T o为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信号的频率f。)

因为单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;而系统的量化误差小于1,所以由式T=NT o可知,频率测量的误差主要取决于N值的大小,N值越大,误差越小,测量的精度越高。

1.3 基本设计原理

基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。

所谓“频率”,就是周期性信号在单位时间<1s)内变化的次数。若在一定时间间隔T 内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率f x。时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,则门控电路的输出信号持续时间亦准确地等于1s。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。因为计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。

第2节数字频率计<低频)的硬件结构设计

2.1 系统硬件的构成

本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有分频器、显示器等器件。可分为以下几个模块:放大整形模块、秒脉冲产生模块、换档模拟转换模块、单片机系统、LCD显示模块。各模块关系图如图2所示:

图2 数字频率计功能模块

2.2 系统工作原理图

该系统工作的总原理图如图3所示:

图3 数字频率计系统工作原理图

2.3 AT89C51单片机及其引脚说明

89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器, 一个5中断源两个优先级的中断结构,一个双工的串行口, 片上震荡器和时钟电路。

引脚说明:

·V CC:电源电压

·GND:地

·P0口:P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。当对0端口写入1时,可以作为高阻抗输入端使用。

当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。在这种模式下,P0口具有内部上拉电阻。

在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。程序校验时需要外接上拉电阻。

·P1口:P1口是一带有内部上拉电阻的8位双向I/O口。P1口的输出缓冲能接受或输出4个TTL逻辑门电路。当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被

拉低时会输出一个低电流

·P2口:P2是一带有内部上拉电阻的8位双向的I/O端口。P2口的输出缓冲能驱动4个TTL逻辑门电路。当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流

P2口在访问外部程序存储器或16位地址的外部数据存储器<例如MOVX @ DPTR)时,P2口送出高8位地址数据。在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。当利用8位地址线访问外部数据存储器时<例MOVX @R1),P2口输出特殊功能寄存器的内容。

当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。

·P3口:P3是一带有内部上拉电阻的8位双向的I/O端口。P3口的输出缓冲能驱动4个TTL逻辑门电路。当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流

P3口同时具有AT89C51的多种特殊功能,具体如下表1所示:

(外部中断0>

<外部中断1)

<外部数据存储器写选通)

<外部数据存储器都选通)

表1 P3口的第二功能

·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。

·ALE/:当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。当在Flash编程时还可以作为编程脉冲输出<)。

一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。

·:程序存储允许时外部程序存储器的读选通信号。当AT89C52执行外部程序存储器的指令时,每个机器周期两次有效,除了当访问外部数据存储器时,

将跳过两个信号。

·/V PP:外部访问允许。为了使单片机能够有效的传送外部数据存储器从0000H到FFFH 单元的指令,必须同GND相连接。需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。

当执行内部编程指令时,应该接到V CC端。

·XTAL1:振荡器反相放大器以及内部时钟电路的输入端。

·XTAL2:振荡器反相放大器的输出端。

在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结合D触发器CD4013,分频器CD4060,模拟转换开关CD4051,计数器74LS90等数字处理芯片,主要控制两大硬件模块,量程切换以及显示模块。下面还将详细说明。

2.4 信号调理及放大整形模块放大整形系统包括衰减器、跟随器、放大器、施密特触发器。它将正弦输入信号Vx整形成同频率方波Vo,幅值过大的被测信号经过分压器分压送入后级放大器,以避免波形失真。由运算放大器构成的射级跟随器起阻抗变换作用,使输入阻抗提高。同相输入的运算放大器的放大倍数为

因为输入的信号幅度是不确定、可能很大也有可能很小,这样对于输入信号的测量就不方便了,过大可能会把器件烧毁,过小可能器件检测不到,所以在设计中采用了这个信号调理电路对输入的波形进行阻抗变换、放大限幅和整形,信号调理部分电路具体实现电路原理图和参数如下图4所示:Array图4

2.5 时基信号产生电路:

CD4013------双上升沿D触发器,引脚及功能见如下图5:

CD4013 由两个相同的、相互独立的数据型触发器构成。每个触发器有独立的数据置位复位时钟输入和 Q 及Q 非输出。此器件可用作移位寄存器,且通过将Q 非输出连接到数据输入,可用作计数器和触发器。在时钟上升沿触发时,加在 D 输入端的逻辑电平传送到Q 输出端。置位和复位或复位线上的高电平完成。 图5 CD4013芯片引脚用功能图

CD4060------14位二进制串行计数器,引脚及功能见如下图6:

CD4060 由一震荡器和14极二进制串行计数器位组成,震荡器的结构可以是RC 或晶振电路。CR 为高电平时,计数器清零且振荡器使用无效,所有的计数器位均为主从触发器 CP1非<和 CP0)的下降沿计数器以二进制进行计数,在时钟脉冲线上使用施密特触发器对时钟上升和下降时间无限制。

图6 CD4060芯片引脚用功能图 时基信号的产生原理:

本电路采用32768HZ 晶体震荡器,利用CD4060芯片经过14级分频得到2HZ 的信号<32768/214

),在经过CD4013双D 触发器经过二分频得到0.5HZ 的方波,即输出秒脉冲信号使单片机进行计数。

图七秒脉冲产生电路原理图

2.6显示模块

1602基本技术:

1)、主要功能

A、 40通道点阵LCD 驱动。

B、可选择当作行驱动或列驱动。

C、输入/输出信号:输出,能产生20×2个LCD驱动波形。输入,接受控制器送出的串

行数据和控制信号,偏压(V1∽V6>。

D、通过单片机控制将所测的频率信号读数显示出来。

2)、技术参数

3)、时序特性表

4)、引脚和指令功能

<注:忙标志为"1"时,表明正在进行内部操作,此时不能输入指令或数据,要等内部操作结束,即忙标志为"0"时。)

4.3)指令功能

格式:RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

共11种指令:清除,返回,输入方式设置,显示开关,控制,移位,功能设置,CGRAM地址设

置,DDRAM地址设置,读忙标志,写数据到CG/DDRAM,读数据由CG/DDRAM。

6)、初始化方法

用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,下面介绍两种初始化方法。

6.1利用内部复位电路进行初始化

下面指令是在初始化过程中执行的。

(1)清屏(DISPLAY CLEAR>。

(2)功能设置(FUNCTION SET>。

DL = 1: 8Bit 接口数据。

N = 0: 1行显示。 F = 0:5×7dot字形。

(3)显示开/关控制(DISPLAY ON/OFF CONTROL>

D = 0: 显示关。 C = 0: 光标关。 B = 0: 消隐关

(4)输入方式设置(ENTRY MODE SET >

I/D = 1:(增量>: S = 0: 无移位:

6.2)软件复位

如果电路电源不能满足复位电路的要求的话,那么初始化就要用软件来实现,过程如下:

八位接口初始化流程图

↓↓等待>4.1ms

↓等待>100us ↓检查忙标志或延时40us ↓检查忙标志或延时40us ↓检查忙标志或延时40 us ↓检查忙标志或延时1.64↓检查忙标志或延时40

第3节 软件设计

主要能过编写软件来控制硬件完成以下各模块的功能:

3.1定时读数 3.2量程转换 3.3 BCD 转换 3.4LCD 显示的功能

单片机当C/T=1时为计数方式,多路开关与定时器的外部引脚连通,外部计数脉冲由引脚输入。当外部信号由1至0跳变时,计数器加1,此时T0成为外部事件的计数器。因为确认一次由1至0的跳变要用24个振荡器周期,所以计数器的计数频率为单片机内部计数器频率的1/24。当C /T=0时为定时方式,对单片机内部计数器进行m2分频后,计数器的实际计数频率

电 源 开

VDD 上升到4.5V 后等待>15

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 × × × ×

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 1 1 × × × ×

0 0 0 0 1 1 × × × ×

RS RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 1 0 × ×

RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 0 0 1 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 0 0 0 0 1 I/D S 初 始 化 结 束

为单片机内部频率凡的1/m2,

当GATE=0时,反相器输出为1,或门输出为1,打开与门,使定时器的启动仅受TRO端信号电平的控制。

在此种情况下,INT0引脚的电平变化对或门不起作用。TRO=1时接通控制开关,计数脉冲加到计数器上,每来一个计数脉冲,计数器加1,只有当TRO=0时,控制开关断开,计数器停止计数。

当GATA=0时,若TRO=1,或门、与门全部打开,外部信号电平通过INTO引脚直接控制定时器的启动和关闭。输人高电平时允许计数,否则停止计数。

根据定时器的结构原理,若我们将GATE位、TR0均设为‘1’,INT0端输人被测频率信号,当被测信号的高电平到来时,开始计数;当被测信号的低电平到来时,计数器停止计数,此时TL0、TH0的数据就是相应的N值。

结束语

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。在进行模拟、数字电路的设计、安装、调试过程中,因为其使用十进制数显示,测量迅速,精确度高,显示直观,会被经常使用到。

通过本次课程的设计,不但加深我对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔前景,并且通过知识与应用于实践的结合更加丰富了自己的知识。扩展了知识面,不但掌握了本专业的相关知识,而且对其他专业的知识也有所了解,而且较系统的掌握单片机应用系统的开发过程,因而自身的综合素质有了全面的提高。

经过这次一个较完整的产品设计和制作过程,对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的,为将来的的就业提前打了下坚实的基础。在设计过程中,得到了我的指导老师的悉心指导与帮助,还有其他老师和同学的大力支持和协助,在此一并表示衷心的感谢。

参考文献

[1]李光飞,楼苗然主编.51系列单片机.北京:北京航空航天大学出版社,2003

[2]黄正瑾编著.CPLD系统设计技术入门与应用. 北京: 电子工业出版社, 2002

[3]谢自美编著.电子线路设计·实验·测试.华中理工大学出版社,2002

[4]陈永甫编著.电子电路智能化设计.实例与应用.北京:电子工业出版,2002.8

[5]康华光主编.电子技术基础(第四版>.北京:高等教育出版社,1999附录 C语源程序代码

#include

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define S_RST DS_RST=1

#define C_RST DS_RST=0

#define S_CLK DS_CLK=1

#define C_CLK DS_CLK=0

#define Write_Disable RW_DS1302(0x8e,0x80> //写保护

#define Write_Enable RW_DS1302(0x8e,0x00> //允许写入

sbit SET = P1^5。 //设置按键

sbit ADD = P1^4。 //调整加

sbit DEC = P1^6。 //调整减

#define RdefineT1 TH1=0。TL1=0。TR1=0。a=0。 //初始化超时检测

//#define Delay2us(> _nop_(>。_nop_(>。 //延时2us,每nop 1us

//#define Delay8us(> _nop_(>。_nop_(>。_nop_(>。_nop_(>。_nop_(>。_nop_(>。_nop_(>。_nop_(>。

#define ReDetectTime 20 //设置重复检测次次数,超出次数则超时

//ds18b20命令

#define SkipROM 0xCC

#define MatchROM 0x55

#define ReadROM 0x33

#define SearchROM 0xF0

#define AlarmSearch 0xEC

#define Convert 0x44 //启动温度转换

#define WriteScr 0x4E

#define ReadScr 0xBE

#define CopyScr 0x48

#define RecallEE 0xB8

#define ReadPower 0xB4

#define md collect_time[0]&0x0f

#define mg (collect_time[0]&0x70>/16

#define fd collect_time[1]&0x0f

#define fg (collect_time[1]&0x70>/16

#define sd collect_time[2]&0x0f

#define sg (collect_time[2]&0x30>/16

sbit DS_RST = P1^2。 //DS复位端

sbit DS_CLK = P1^0。 //SCLK端

sbit DS_IO = P1^1。 //IO端

sbit DS18B20 = P1^3。 //温度传感器接口

bit keyboard,flash,STA=1。

uchar choose,a。

uchar collect_time[3]={0x45,0x23,0x11}。//定义变量秒分时

uchar collect_temperature[2] = {0}。

uchar num[10] = {0x7e,0x48,0x3d,0x6d,0x4b,0x67,0x77,0x4c,0x7f,0x6f}。

//七段数码管显示的段码

uchar display[8] = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08}。

void delay(uint i>

{

uint k。

while(i-->

{

for(k=0。k<120。k++>{。}

}

}

void Dat_Int(void>//数据初始化

{

P0=0xff。

P1=0xff。

P2=0xff。

choose=0。

flash=1。

}

void Time01_Int(void>

{

TMOD = 0x12。 //定时器0为8位自动重载定时采样,定时器1为16位超时检测处理

TCON = 0x00。

TH0 = 0x60。

TL0 = 0x60。

TR0 = 1。

IE = 0x0a。 //允许定时器0、1中断

IP = 0x00。

}

/********************************************************

*

*

* DS18B20温度传感器程序段 * *

*

********************************************************/

/***********11微秒延时函数**********/

//

void delayus(uint t>

for(。t>0。t-->。

}

/***********18B20复位函数**********/

void ow_reset(void>

{

char presence=1。

while(presence>

{

while(presence>

{

DS18B20 = 1。_nop_(>。_nop_(>。

DS18B20 = 0。

delayus(50>。 // 550us

DS18B20 = 1。

delayus(6>。 // 66us

presence=DS18B20。 // presence=0继续下一步

}

delayus(45>。 //延时500us

presence = ~DS18B20。

}

DS18B20 = 1。

}

/**********18B20写命令函数*********/

//向 1-WIRE 总线上写一个字节

void write_byte(uchar val>

{

uchar i。

for (i=8。 i>0。 i--> //

{

DS18B20 = 1。_nop_(>。_nop_(>。

DS18B20 = 0。_nop_(>。_nop_(>。_nop_(>。_nop_(>。_nop_(>。//5us DS18B20 = val&0x01。 //最低位移出

delayus(6>。 //66us

val=val/2。 //右移一位

}

DS18B20 = 1。

delayus(1>。

}

//

/*********18B20读1个字节函数********/

//从总线上读取一个字节

uchar read_byte(void>

{

uchar i。

uchar value = 0。

for (i=8。i>0。i-->

DS18B20 = 1。_nop_(>。_nop_(>。

value>>=1。

DS18B20 = 0。 //

_nop_(>。_nop_(>。_nop_(>。_nop_(>。 //4us

DS18B20 = 1。_nop_(>。_nop_(>。_nop_(>。_nop_(>。 //4us

if(DS18B20>value|=0x80。

delayus(6>。 //66us

}

DS18B20 = 1。

return(value>。

}

//

/***********读出温度函数**********/

//

void Ds18b20_ReadEE(void>

{

ow_reset(>。

write_byte(SkipROM>。 // Skip ROM

write_byte(Convert>。 // 发转换命令

ow_reset(>。 //总线复位

write_byte(SkipROM>。 // 发Skip ROM命令

write_byte(ReadScr>。 // 发读命令

collect_temperature[0]=read_byte(>。 //温度低8位

collect_temperature[1]=read_byte(>。 //温度高8位

}

/********************************************************

*

*

* DS1302时钟芯片程序段 * *

*

********************************************************/

void DS1302_InputByte(uchar byte> //往DS1302写入1Byte数据

{

uchar i。

uchar temp。

temp = byte。

for(i=8。 i>0。 i-->

{

DS_IO = temp&0x01。

S_CLK。

C_CLK。

temp = temp >> 1。

}

}

uchar DS1302_OutputByte(void> //从DS1302读取1Byte数据

{

uchar i。

uchar temp=0。

for(i=0。 i<8。i++>

{

C_CLK。

if(DS_IO!=0> temp|=(1<

S_CLK。

}

return(temp>。

}

void RW_DS1302(uchar reg, uchar byte>//向DS1302寄存器写数据{

C_RST。

C_CLK。

S_RST。

DS1302_InputByte(reg>。

DS1302_InputByte(byte>。

S_CLK。

C_RST。

}

uchar Read_DS1302(uchar reg>//从DS1302寄存器读数据

{

uchar byte。

C_RST。

C_CLK。

S_RST。

DS1302_InputByte(reg>。

byte = DS1302_OutputByte(>。

S_CLK。

C_RST。

return(byte>。

}

void GetTime_DS1302(uchar *ucCurtime> //读取DS1302当前时间{

ucCurtime[0] = Read_DS1302(0x81>。//格式为: 秒分时ucCurtime[1] = Read_DS1302(0x83>。

ucCurtime[2] = Read_DS1302(0x85>。

}

void Set_Time(uchar *receive> //写时间

{

Write_Enable。 //控制命令,允许写操作

RW_DS1302(0x80,receive[0]>。

RW_DS1302(0x82,receive[1]>。

RW_DS1302(0x84,receive[2]>。

Write_Disable。 // 控制命令,写保护

}

/********************************************************

*

*

* 数码管显示程序段 * *

*

********************************************************/

void deal(void>//送显前的数据处理

{uint timer2。

uint lstemp。

timer2++。

if(STA>

{GetTime_DS1302(collect_time>。}

if(flash>//用于闪动效果的控制的

{

display[0] = num[sg]。

display[1] = num[sd]。

display[2] = num[fg]。

display[3] = num[fd]。

display[4] = num[mg]。

display[5] = num[md]。

}

else

{switch(choose>

{

case 1:display[0]=0。break。

case 2:display[1]=0。break。

case 3:display[2]=0。break。

case 4:display[3]=0。break。

case 5:display[4]=0。break。

case 6:display[5]=0。break。

}

}

if(timer2==3000>//间断性获取温度

{

timer2=0。

if(STA>

{TR0=0。

Ds18b20_ReadEE(>。

}

}

if(collect_temperature[1]>127>

{

collect_temperature[0]=255-collect_temperature[0]。

collect_temperature[1]=255-collect_temperature[1]。

}

lstemp=((collect_temperature[0]>>>4>|((collect_temperature[1]><<4>。

display[6] = num[(uchar>((lstemp>/10>]。

display[7] = num[(uchar>((lstemp>%10>]。

}

/********************************************************

*

*

* 按键控制程序段 * *

*

********************************************************/

void Scan(void>

{

if(SET==0&&keyboard==1> //检测设置键有无按下,并进行相应操作

{

if(SET==0&&keyboard==1>

{ RdefineT1。 //超时检测初始化

choose++。

while(SET==0>。

if(choose==7>

{TR0=0。

Set_Time(collect_time>。

TR0=1。

STA=1。 //设置完毕,重新开始采集时间

choose=0。

}

}

}

if(choose> //只有在时间调整时,加减按键才有作用

{

if(ADD==0&&keyboard==1> //检测加调整键有无按下,并进行相应操作

{

if(ADD==0&&keyboard==1>

{ RdefineT1。 //超时检测初始化a=0

switch (choose>

{

case 1 :if(sg==2>

collect_time[2] = collect_time[2]&0x0f。

else {collect_time[2]+=16。}

break。

case 2 :if((sg<2>&&(sd==9>>

collect_time[2] &= 0x30。

if((sg>=2>&&(sd==3>>

collect_time[2] &= 0x30。

else {collect_time[2]++。}

break。

case 3: if(fg==5>

collect_time[1] &= 0x0f。

else {collect_time[1]+=16。}

break。

case 4: if(fd==9>

collect_time[1] &= 0xf0。

else {collect_time[1]++。}

break。

case 5: if(mg==5>

collect_time[0] &= 0x0f。

else {collect_time[0]+=16。}

break。

case 6: if(md==9>

collect_time[0] &= 0xf0。

else {collect_time[0]++。}

break。

}

TR0=1。

while(ADD==0>。

}

}

if(DEC==0&&keyboard==1> //检测减调整键有无按下,并进行相应操作 {

if(DEC==0&&keyboard==1>

{ RdefineT1。 //超时检测初始化

TR0=0。

switch (choose>

{

case 1 :if(sg==0>

collect_time[2]=0x20。

else collect_time[2]-=16。

break。

case 2 :if(sg<2&&sd==0>

collect_time[2] |= 0x09。

if(sg==2&&sd==0>

collect_time[2] |= 0x03。

else collect_time[2]-=1。

break。

case 3 :if(fg==0>

collect_time[1] |= 0x50。

else collect_time[1]-=16。

break。

case 4 :if(fd==0>

collect_time[1] |= 0x09。

else collect_time[1]-=1。

break。

case 5 :if(mg==0>

collect_time[0] |= 0x50。

else collect_time[0]-=16。

break。

case 6 :if(md==0>

collect_time[0] |= 0x09。

else collect_time[0]-=1。

break。

}

TR0=1。

while(DEC==0>。

}

}

}

if(choose!=0>{TR1=1。STA=0。} //在设置模式下停止采集时间

else {TR1=0。STA=1。}

}

/********************************************************

*

*

* AT89S51主程序段 * *

*

********************************************************/

void main(void>

{

Time01_Int(>。

Dat_Int(>。

EA = 1。 //开中断

ow_reset(>。 // 开机先转换一次

write_byte(0xCC>。 // Skip ROM

write_byte(0x44>。 // 发转换命令

delay(100>。

Set_Time(collect_time>。

基于51单片机的数字频率计_毕业设计

毕业论文声明 本人郑重声明: 1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。本人完全意识到本声明的法律结果由本人承担。 2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。 3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。 4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。 学位论文作者(签名): 年月

关于毕业论文使用授权的声明 本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。本人完全了解大学有关保存,使用毕业论文的规定。同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入学校有关数据 库和收录到《中国学位论文全文数据库》进行信息服务。在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。 论文作者签名:日期: 指导教师签名:日期:

简单51单片机数字时钟设计

题目:简单51单片机数字时钟设计 院系: 物理与电气工程学院 专业:自动化专业 班级:10级自动化 姓名:苏吉振 学号:2 老师:李艾华

引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。 单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 数字钟是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个 人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

基于51单片机的数字钟

专业课程设计报告 专业班级 课程 题目基于51单片机的数字钟的设计报告学号 学生姓名 指导教师 成绩 2013年6月20日

基于A T89C51的数字钟总体设计说明书 目录 1. 51单片机设计数字钟设计的现实意义 (2) 2. 总体设计 (2) 2.1.开发与运行环境 (2) 2.2.硬件功能描述 (2) 2.3.硬件结构 (3) 3. 硬件模块设计 (3) 3.1.描述 (3) 3.1.1. AT89C51单片机简介 (3) 3.1.2. 键盘电路的设计 (4) 3.1.3. 显示器的选择 (5) 3.1.4. 蜂鸣器驱动电路 (5) 3.1.5. 各部分功能 (6) 4. 嵌入式软件设计 (7) 4.1.流程逻辑 (7) 4.2.算法 (7) 4.2.1. 中断定时器的设置 (27) 4.2.2. 闹钟子函数 (28) 4.2.3. 计时函数 (29) 4.2.4. 键盘扫描函数 (31) 4.2.5. 时间和闹钟的设置 (32) 5. 实验器材清单 (33) 6. 测试与性能分析 (33) 6.1.测试结果 (33) 6.2.优点 (33) 6.3.结论 (34) 7. 心得体会 (36) 8. 致谢 (36) 9. 参考文献 (37)

1.51单片机设计数字钟设计的现实意义 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间等造成的。而钟表的数字化给人们生产生活带来了极大的方便。数字钟是通过数字电路实现时,分,秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烤箱、通断动力设备、甚至各种定时电气的自动启用等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 2.总体设计 2.1.开发与运行环境 在硬件方面,除了CPU外,使用八个七段LED数码管来进行显示,LED采用的是动态扫描显示。通过LED能够较为准确地显示时、分、秒。四个简单的按键实现对时间的调整。软件方面采用C语言编程。使用Keil单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。 2.2.硬件功能描述 硬件部分设置了的三个按键S1、S2、S3、S4。当按键S1第一次按下时,停止计时进

基于单片机的数字钟设计-(1)

基于单片机的数字时钟摘要 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 本课题主要研究的是基于单片机的数字钟设计,采用AT89C51单片机作为系统的主控芯片,外接LED显示电路,按键电路,晶振电路,复位电路模块构成一个简单的数字钟。通过按键电路能对时、分、秒分别进行设置和实时调整,并将结果显示在数码管上。 关键词:数字钟,单片机,数码管

Abstract Author:cheng dong Tutor:wang xin Electronic technology has been developed rapidly in the 20 century,with its modern electronic products, pushed by almost permeated every area of society has vigorously promoted social productive forces development and improvement of social informatization level, also make modern electronic product performance further improved, and the rhythm of upgrade its products is becoming more and more quickly. The most common SCM module is a digital clock, a digital clock is a kind of digital circuit technology implementation, minutes and seconds, the timing device with mechanical clock compared with higher accuracy and intuitive and no mechanical device, has more longer service life, so it has been widely used. This topic research is the digital clock design based on SCM, AT89C51 SCM as the main control chip system, external LED display circuit, key circuits, crystals circuit, reset circuit module constitute a simple digital clock. Through the key circuits can respectively the diffculties, minutes and seconds setting and real-time adjustment, and the result showed that in the digital tube. Key words:digital clock SCM ; digital

51单片机数字时钟

计算机硬件综合课程 设计报告 课目: 学院: 班级: 姓名: 指导教师: 目录 1 设计要求 功能需求 设计要求

2 硬件设计及描述 总体描述 系统总体框图 Proteus仿真电路图 3 软件设计流程及描述 程序流程图 函数模块及功能 4 心得体会 附:源程序 设计要求 功能需求 实现数字时钟准确实时的计时与显示功能; 实现闹钟功能,即系统时间到达闹钟时间时闹铃响; 实现时间和闹钟时间的调时功能; 刚启动系统的时候在数码管上滚动显示数字串(学号)。设计要求 应用MCS-51单片机设计实现数字时钟电路; 使用定时器/计数器中断实现计时; 选用8个数码管显示时间;

使用3个按钮实现调时间和闹钟时间的功能。按钮1:更换模式(模式0:正常显示时间;模式1:调当前时间的小时;模式2;调当前时间的分钟;模式3:调闹钟时间的小时;模式4:调闹钟时间的分钟);按钮2:在非模式0下给需要调节的时间数加一,但不溢出;按钮3:在非模式0下给需要调节的时间数减一,但不小于零; 在非0模式下,给正在调节的时间闪烁提示; 使用扬声器实现闹钟功能; 采用C语言编写程序并调试。 2 硬件设计及描述 总体描述 单片机采用AT89C51型; 时间显示电路:采用8个共阴极数码管,P1口驱动显示数字,P2口作为扫描信号; 时间设置电路:、、分别连接3个按键,实现调模式,时间加和时间减; 闹钟:口接扬声器。 系统总体框图 Proteus仿真电路图

3 软件设计流程及描述 程序流程图

函数模块及功能 void display_led() 学号的滚动显示函数; void display() 显示时间以及显示调节时间和闹钟时间的闪烁; void key_prc() 键盘功能函数,实现3个按键有关的模式转换以及数字加一减一; void init() 初始化设置中断;

基于51单片机的数字钟设计

20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 本课题主要研究的是基于单片机的数字钟设计,采用AT89C51单片机作为系统的主控芯片,外接LED显示电路,按键电路,晶振电路,复位电路模块构成一个简单的数字钟。通过按键电路能对时、分、秒分别进行设置和实时调整,并将结果显示在数码管上。

1 引言 (3) 2 单片机介绍 (4) 3 数字钟硬件设计 (4) 3.1系统方案的确定 (4) 3.2功能分析 (4) 3.3数字钟设计原理 (5) 3.3.1键盘控制电路 (5) 3.3.2晶振电路 (6) 3.3.3复位电路 (7) 3.3.4数码显示电路 (7) 4.数字钟的软件设计 (8) 4.1程序设计内容 (8) 4.2源程序 (9)

1 引言 在单片机技术日趋成熟的今天,其灵活的硬件电路和软件电路的设计,让单片机得到广泛的应用,几乎是从小的电子产品,到大的工业控制,单片机都起到了举足轻重的作用。单片机小的系统结构几乎是所有具有可编程硬件的一个缩影,可谓是“麻雀虽小,肝胆俱全”,单片机的学习和研究是对微机系统学习和研究的简捷途径。基于单片机的定时和控制装置在许多行业有着广泛的应用,而数字钟是其中最基本的,也是最具有代表性的一个例子[1],用数字电路实现对时、分、秒数字显示的计时装置。因为机具有体积小、功耗低、功能强、性价比高、易于推广应用的优点,在自动化装置、智能仪器表、过程控制、通信、家用电器等许多领域得到日益广泛的应用[2],因此具有很大的研究价值。

基于51单片机的数字频率计毕业论文

基于51单片机的数字频率计 目录 第1节引言 (2) 1.1数字频率计概述 (2) 1.2频率测量仪的设计思路与频率的计算 (2) 1.3基本设计原理 (3) 第2节数字频率计(低频)的硬件结构设计 (4) 2.1系统硬件的构成 (4) 2.2系统工作原理图 (4) 2.3AT89C51单片机及其引脚说明 (5) 2.4信号调理及放大整形模块 (7) 2.5时基信号产生电路 (7) 2.6显示模块 (8) 第3节软件设计 (12) 3.1 定时计数 (12) 3.2 量程转换 (12) 3.3 BCD转换 (12) 3.4 LCD显示 (12) 第4节结束语 (13) 参考文献 (14) 附录汇编源程序代码 (15)

基于51单片机的数字频率计 第1节引言 本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。并且引导一种创新的思维,把学到的知识应用到日常生活当中。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。 1.1数字频率计概述 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。 本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示6位数。测量围从1Hz—10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。用单片机实现自动测量功能。 基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。 1.2频率测量仪的设计思路与频率的计算 频率测量仪的设计思路主要是:对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小,其原理如右图1所示。 1 图可知: T=NT o 为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信(注:T o

基于51单片机的数字时钟的设计

基于51单片机的数字时钟的设计 摘要:现代生活中,对于数字电子钟的使用情况已经远远大于对于机械表的使用。数字时钟不仅仅是使用方便,而且由于单片机的引入,额外增加了自动控制和闹钟报时等功能,十分便利。本次毕业设计,是以STC89C52芯片为核心,添加适当外围电路,辅以C语言,所形成的数字电子钟。除了51单片机芯片,还主要用到了时钟芯片DS1302和型号是1602的液晶显示屏。 关键词:STC89C52;数字电子钟;C语言。

Design of Digital Clock System Based on MSC-51 Singlechip Abstract: In modern life, the use of digital electronic clock has been far greater than for the use of mechanical watches. Digital Clock is not just easy to use, and because of the introduction of single-chip, additional automatic control and alarm clock timekeeping functions, is very convenient. The graduation project is based STC89C52 chip as the core, adding the appropriate external circuit, supplemented by the C language, the formation of digital electronic clock. In addition to 51 single-chip, is also largely used in the clock chip DS1302 and models are 1602 LCD display. Keywords: STC89C52; digital electronic clock; C language.

基于51单片机的数字频率计的设计

1 前言 频率测量是电子学测量中最为基本的测量之一。由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。 1.1频率计概述 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号、方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路组成,产品不但体积大,运行速度慢而且测量低频信号不准确。本次采用单片机技术设计一种数字显示的频率计,测量准确度高,响应速度快,体积小等优点。 1.2频率计发展与应用 在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件。单片机作为最为典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展。单片机已成为电子系统的中最普遍的应用。单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。其中以AT89S52为内核的单片机系列目前在世界上生产量最大,派生产品最多,基本可以满足大多数用户的需要。

2 系统总体设计 2.1测频的原理 测频的原理归结成一句话,就是“在单位时间内对被测信号进行计数”。被测信号, 通过输入通道的放大器放大后,进入整形器加以整形变为矩形波,并送入主门的输入端。由晶体振荡器产生的基频,按十进制分频得出的分频脉冲,经过基选通门去触发主控电路,再通过主控电路以适当的编码逻辑便得到相应的控制指令,用以控制主门电路选通被测信号所产生的矩形波,至十进制计数电路进行直接计数和显示。若在一定的时间间隔T内累 计周期性的重复变化次数N,则频率的表达式为式: N fx= T 频率计数器严格地按照 N f= T 公式进行测频。由于数字测量的离散性,被测频率在计数 器中所记进的脉冲数可有正一个或负一个脉冲的1 ±量化误差,在不计其他误差影响的情况下,测量精度将为: 1 () fA N δ= 应当指出,测量频率时所产生的误差是由N和T俩个参数所决定的,一方面是单位时间内计数脉冲个数越多时,精度越高,另一方面T越稳定时,精度越高。为了增加单位时间内计数脉冲的个数,一方面可在输入端将被测信号倍频,另一方面可增加T来满足,为了增加T的稳定度,只需提高晶体振荡器的稳定度和分频电路的可靠性就能达到。 上述表明,在频率测量时,被测信号频率越高,测量精度越高。 2.2总体思路 频率计是我们经常会用到的实验仪器之一,频率的测量实际上就是在单位时间内对信号进行计数,计数值就是信号频率。本文介绍了一种基于单片机AT89S52 制作的频率计的设计方法,所制作的频率计测量比较高的频率采用外部十分频,测量较低频率值时采用单片机直接计数,不进行外部分频。该频率计实现10HZ~2MHZ的频率测量,而且可以实现量程自动切换功能,四位共阳极动态显示测量结果,可以测量正弦波、三角波及方波等各种波形的频率值。 2.3具体模块 根据上述系统分析,频率计系统设计共包括五大模块:单片机控制模块、电源模块、放大整形模块、分频模块及显示模块。各模块作用如下:

数字频率计(51单片机)

自动化与电子工程学院单片机课程设计 报告 课程名称:单片机原理与应用 学院:自动化与电子工程院 专业班级: 学生姓名: 完成时间: 报告成绩:

目录 第1章数字频率计概述 (2) 1.1数字频率计概述 (1) 1.2数字频率计的基本原理 (1) 1.3单脉冲测量原理 (2) 第2章课程设计方案设计 (2) 2.1系统方案的总体论述 (2) 2.2系统硬件的总体设计 (3) 2.3处理方法 (3) 第3章硬件设计 (4) 3.1单片机最小系统 (4) 第4章软件设计 (5) 4.1系统的软件流程图 (5) 4.2程序清单 (7) 第5章课程设计总结 (7) 参考文献 (8) 附录Ⅰ仿真截图 (9) 附录Ⅱ程序清单 (15)

第1章数字频率计概述 1.1数字频率计概述 数字频率计又称为数字频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量方波信号及其他各种单位时间内变化的物理量。 本数字频率计将采用定时、计数的方法测量频率,采用6个数码管显示6位十进制数。测量范围从10Hz—5.5kHz,精度为1%,用单片机实现自动测量功能。 基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量频率的方法对方波的频率进行自动的测量。 1.2数字频率计的基本原理 数字频率计最基本的工作原理为:当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T(如图1.1所示)。 图1.1 频率测量原理 频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。用单片机设计频率计通常采用的办法是使用单片机自带的计数器对输入脉冲进行计数;好处是设计出的频率计系统结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的AT89C51单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。故输入时钟信号的最高频率不得超过单片机晶振频率的二十四分之一。根

基于单片机的数字时钟之C51单片机

山东大学威海分校 基于单片机的数字时钟 C51单片机 王若愚 学号200800800307 2010/7/18

概述 AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4K的可编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。 功能特性概述 AT89S51提供以下标准功能:4K字节闪速存储器,128字节内部RAM,32个I/O口线,看门狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89S51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中到内容,但振荡器停止工作并禁止其它所有工作部件直到下一个硬件复位。

AT89S51硬件电路原理 复位及振荡电路 复位电路由按键复位和上电复位两部分组成,如图2所示。AT89S系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC 充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为8.2K和10uF。 按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。 MCS51 LITE使用22.1184MHz的晶体振荡器作为振荡源,由于单片机内部带有振荡电路, 所以外部只要连接一个晶振和两个电容即可,电容容量一般在15pF至50pF之间。

51单片机_频率计_1602

电子产品设计与开发 结课论文 题目:其于51单片机的频率计设计与仿真 班级:电子1104班 姓名:陈** (组员)学号:03 电话:1376****** 成员:曾* (组长)学号:29 电话:13726****** 成员:孙* (组员)学号:21 电话:137*******

目录 一、需求分析 二、方案设计 1设计基本原理 (4) 1.1测量频率的原理 (4) 1.2系统设计框图 (4) 三、软件设计 (5) 1资源分配表 (5) 2程序流程框图 (6) 四、系统硬件线路设计图 (7) 1 单片机最小系统设计 (7) 2 液晶LCD1602显示电路 (8) 3 频率测量电路 (11) 五.系统仿真、测试结果及性能分析 (12) 1系统仿真、测试结果 (12) 2性能分析 (13) 六、心得与体会 (14) 七、参考文献 (14)

摘要 本设计提出了一种基于AT89C51单片机开发的数字频率测量仪的设计。系统以单片机AT89C51为核心,构成完备的测量系统。可以对信号进行频率的精确测量,测频在1Hz至10kHZ。采用液晶LCD1602显示被测信号的频率。与传统的电路系统相比,其有处理速度快、稳定性高、性价比高、硬件结构简单的优点。 关键词:单片机;低频;绝对误差

一、需求分析 频率测量在科技研究和实际应用中的作用日益重要。传统的频率计通采用组合电路 和时序电路等大量的硬件电路构成,产品不但体积较大,运行速度慢,而且测量低频信号 时不宜直接使用。频率信号抗干扰性强、易于传输,可以获得较高的测量精度。同时,频率 测量方法的优化也越来越受到重视.并采用AT89C51 单片机和相关硬软件实现。MCS—51 系列单片机具有体积小,功能强,性能价格比较高等特点,因此被广泛应用于工业控制和 智能化仪器,仪表等领域。我们研制的频率计以89c51单片机为核心,具有性能优良,精 度高,可靠性好等特点。 二、设计方案 此次课程设计采用间接测量法来测量。要用到GATE信号,GATE=1时,TR0=1,INTO=1 才能启动计数器,而计数器0是通过外部中断INTO的下降沿开始触发的,计时器从0开 始计时,计数器只能测高电平,因此测得的时间为半个周期。当计数器0计时溢出,执行 m加1的操作。则测量时间为:t1=TH0*256+TL0+m*65536 ,所求频率F=1000000/(2*t1) 1设计基本原理 1.1测量频率的原理 定时/计数器工作在方式1,每产生一次定时器0中断,计数65536个脉冲,此时的 脉冲来自振荡器的12分频后的脉冲,其周期为1uS。根据产生外部中断0时,定时器0中 断的次数u,以及此时定时/计数器0计数寄存器的数值X,即可求得待测方波的周期为: T=(65536*u+X)us ,取其倒数即可求得待测方波的频率,小数点后保留两位,即可使得频 率精度为0.1HZ。 1.2系统设计框图 经过方案论证和比较后,最终确定的系统框图如图1所示,主要由AT89C51单片机、异或 器件、LCD1602、电源等组成。

单片机课程设计报告——智能数字频率计

单片机原理课程设计报告题目:智能数字频率计设计 专业:信息工程 班级:信息111 学号:*** 姓名:*** 指导教师:*** 北京工商大学计算机与信息工程学院

1、设计目的 (1)了解和掌握一个完整的电子线路设计方法和概念; (2)通过电子线路设计、仿真、安装和调试,了解和掌握电子系统研发产品的一个基本流程。 (3)了解和掌握一些常见的单元电路设计方法和在电子系统中的应用: 包括放大器、滤波器、比较器、计数和显示电路等。 (4)通过编写设计文档与报告,进一步提高学生撰写科技文档的能力。 2、设计要求 (1)基本要求 设计指标: 1.频率测量:0~250KHz; 2.周期测量:4mS~10S; 3.闸门时间:0.1S,1S; 4.测量分辨率:5位/0.1S,6位/1S; 5.用图形液晶显示状态、单位等。 充分利用单片机软、硬件资源,在其控制和管理下,完成数据的采集、处理和显示等工作,实现频率、周期的等精度测量方案。在方案设计中,要充分估计各种误差的影响,以获得较高的测量精度。 (2)扩展要求 用语音装置来实现频率、周期报数。 (3)误差测试 调试无误后,可用数字示波器与其进行比对,记录测量结果,进行误差分析。 (4)实际完成的要求及效果 1.测量范围:0.1Hz~4MHz,周期、频率测量可调; 2.闸门时间:0.05s~10s可调; 3.测量分辨率:5位/0.01S,6位/0.1S; 4.用图形液晶显示状态、单位(Hz/KHz/MHz)等。 3、硬件电路设计 (1)总体设计思路

本次设计的智能数字频率计可测量矩形波、锯齿波、三角波、方波等信号的频率。系统共设计包括五大模块: 主芯片控制模块、整形模块、分频模块、档位选择模块、和显示模块。设计的总的思想是以AT89S52单片机为核心,将被测信号送到以LM324N为核心的过零比较器,被测信号转化为方波信号,然后方波经过由74LS161构成的分频模块进行分频,再由74LS153构成的四选一选择电路控制档位,各部分的控制信号以及频率的测量主要由单片机计数及控制,最终将测得的信号频率经LCD1602显示。 各模块作用如下: 1.主芯片控制模块: 单片机AT89S52 内部具有2个16位定时/计数器T0、T1,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。利用单片机的计数器和定时器的功能对被测信号进行计数。以AT89S52 单片机为控制核心,来完成对各种被测信号的精确计数、显示以及对分频比的控制。利用其内部的定时/计数器完成待测信号周期/频率的测量。 2.整形模块:整形电路是将一些不是方波的待测信号转化成方波信号,便于测量。本设计使用运放器LM324连接成过零比较器作为整形电路。 3.分频模块: 考虑单片机利用晶振计数,使用11.0592MHz 时钟时,最大计数速率将近500 kHz,因此需要外部分频。分频电路用于扩展单片机频率测量范围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,而且也降低了系统的测频误差。本设计使用的分频芯片是74LS161实现4分频及16分频。 4.档位选择模块:控制74LS161不分频、4分频或者 16分频,控制芯片是74LS153。 5.显示模块:编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示,本设计选用LCD1602。 (2)测频基本设计原理 所谓“频率”,就是周期性信号在单位时间(1s)内变化 的次数。若在一定时间间隔T内测得这个周期性信号的重复变 化次数N,则其频率可表示为f=N/T(右图3-1所示)。其中脉 冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等 。利用单片机的定时/计数T0、T1的定时、计数 于被测频率f x 功能产生周期为1s的时间脉冲信号,则门控电路的输出信号持图3-1

(最新版)基于51单片机汇编语言的数字钟课程设计报告含有闹钟万毕业论文

单片微型计算机课程设计报告 多功能电子数字钟 姓 名 学

教师 许伟敏 电气二班 林卫

目录 一:概述 (1) 二:设计基本原理简介 (2) 三:设计要求及说明 (3) 四:整体设计方案 (4) 系统硬件电路设计 4 系统软件总流程设计模块划分及分析5 6 五:单模块流程设计 (8) 各模块设计概述、流程图模块源程序集合及注释8 13 六:单模块软件测试 (23) 七:系统检测调试 (24) 硬件电路调试 软件部分烧写调试 八:系统优化及拓展 (26) 九:心得体会 (28)

单片微型计算机课程设计 一、概述 基于汇编语言的电子数字钟概述 课程设计题目:电子数字钟 应用知识简介: ● 51 单片机 单片机又称单片微控制器,它不是完成某一个逻辑功能 的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌 入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间内51 系列单片机仍将占据嵌入式系统产品的中低端市场。 ●汇编语言 汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。汇编语言可以与高级语言配合使用,应用十分广泛。 ● ISP ISP(In-System Programming)在系统可编程, 是当今流行的单片机编程模式,指电路板上的空白元器 件可以编程写入最终用户代码,而不需要从电路板上取 下元器件。已经编程的器件也可以用ISP方式擦除或再 编程。本次课程设计便使用ISP方式,直接将编写好的 程序下载到连接好的单片机中进行调试。 选题 系统功能分析 硬件电路设计 整体流程设计 及模块划分 模块流程设计 模块编 码测试 系统合成调 试编译 下载调试(含硬件电路调试及软件烧写调试) 验收 完成总结报告课程设计流程图↑ 选题目的及设计思想简介: 课程设计是一次难得的对所学的知识进行实践的机会,我希望通过课程设计独立设计一个简单的系统从而达到强化课本知识并灵活运用的目的。电子数字钟是日常生活钟随处可见的简单系统。对电子数字钟的设计比较容易联系实际并进行拓展,在设计中我将力求尽可能跳出课本的样板,从现实生活中寻找设计原型和设计思路,争取有所突破。 如图所示便是我本次课程设计流程图,设计的整个过程运用自顶向下分析、自底向上实现的

单片机课设《数字频率计设计》

单片机课程设计 学生姓名: 学号: 在班编号: 学院:电气与电子工程学院 专业: 题目:数字频率计设计 指导教师:吴翔老师 2013年01月08日

摘要 本方案主要以单片机为核心,主要分为时基电路,复位电路,显示电路三大部分,设计以单片机为核心,利用单片机的计数器和定时器的功能对被测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。 本设计以89C51单片机为核心,应用单片机的算术运算和控制功能并采用LED数码显示管将所测频率显示出来。系统简单可靠、操作简易,能基本满足一般情况下的需要。既保证了系统的测频精度,又使系统具有较好的实时性。本频率计设计简洁,便于携带,扩展能力强,适用范围广。 [关键词]单片机,AT89C51,运算,频率计,LED数码管。

前言 在电子测量领域中,频率测量的精确度是最高的,可达10—10E-13数量级。因此,在生产过程中许多物理量,例如温度、压力、流量、液位、PH 值、振动、位移、速度、加速度,乃至各种气体的百分比成分等均用传感器转换成信号频率,然后用数字频率计来测量,以提高精确度。 国际上数字频率计的分类很多。按功能分类,测量某种单一功能的计数器。如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为基础的计数器,其测时分辨力和准确度很高,可达ns数量级;特种计数器,它具有特种功能,如可逆计数器、予置计数器、差值计数器、倒数计数器等,用于工业和白控技术等方面。数字频率计按频段分类 (1)低速计数器:最高计数频率<10MHz; (2)中速计数器:最高计数频率10—100MHz; (3)高速计数器:最高计数频率>100MHz; (4)微波频率计数器:测频范围1—80GHz或更高。 单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,因此,在工业控制、智能仪器仪表、数据采集和处理、通信系统、高级计算器、家用电器等领域的应用日益广泛,并且正在逐步取代现有的多片微机应用系统。单片机的潜力越来越被人们所重视。特别是当前用CMOS工艺制成的各种单片机,由于功耗低,使用的温度范围大,抗干扰能力强、能满足一些特殊要求的应用场合,更加扩大了单片机的应用范围,也进一步促使单片机性能的发展。

基于51单片机的1602液晶频率计设计(Proteus仿真图和程序)

基于51单片机的1602液晶频率计设计一、Proteus仿真图: 二、程序代码 //最大测量65536Hz的频率计 //原理:T0定时1S,T1计数 #include #include #define uchar unsigned char #define uint unsigned int uint count=0; uint nm=0; uchar Fw,Fq,Fb,Fs,Fg; #define DataPort P0 sbit LCM_RS=P2^0; sbit LCM_RW=P2^1; sbit LCM_EN=P2^2; uchar code str0[]={"-Test frequency-"}; uchar code str1[]={"F=00000Hz "}; //uchar code str2[]={" "};

/*******************************/ void delay(unsigned int k) { unsigned int i,j; for(i=0;i

基于51单片机的数字钟设计-毕业设计论文(可编辑)

武汉大学电子信息学院 电子系统综合设计课程论文 基于51单片机的数字钟设计

目录 1 作品的背景与意义 1 2 功能指标设计 1 3 作品方案设计 1 3.1总体方案的选择 1 3.1.1方案一:基于单片机的数字钟设计 2 3.1.1方案二:基于数电实验的数字钟设计 3 3.1.2两种方案的比较................................................................... . (3) 3.2控制方案比较 3 3.3显示方案比较 3 3.4单片机理论知识介绍 4 3.4.1单片机型号................................................................... . (5) 3.4.2硬件电路平台................................................................... (6) 3.4.3内部时钟电路................................................................... .. (7)

3.4.4复位电路................................................................... .. (7) 3.4.5按键部分................................................................... . (8) 4 硬件设计9 4.1显示模块电路图9 5 软件设计11 5.1主程序流程图11 5.2中断服务以及显示 12 6 系统测试13 6.1测试环境13 6.2测试步骤13 6.2.1硬件测试 6.2.2软件测试 1.连接单片机和计算机串接................................................................... ................13 6.2.3实施过程................................................................... ..................................................................... . (14)

相关文档
最新文档