多频率的正弦波低频信号发生器的设计

机械与电子工程学院

接口技术课程设计报告

题目:多频率的正弦波低频信号发生器的

设计

摘 要: 本系统利用单片机AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz,10Hz,100Hz,1000Hz的波形。通过键盘来控制正弦波频率的变化,并通过数码管显示其数值,系统大致包括信号发生部分、数/模转换部分以及显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。

关键词:单片机AT89C51、DAC0808、74HC573

目录

1.设计任务及要求 .......................................................................................................................... 1

2.方案选择 ...................................................................................................................................... 1

3.硬件系统设计 .............................................................................................................................. 1

3.1 总体系统设计思路 .......................................................................................................... 1

3.2 电路构成介绍 ................................................................................................................... 2

3.2.1单片机最小系统 ................................................................................................... 2

3.2.2波形产生电路设计 ............................................................................................... 3

3.2.3频率显示电路的设计 ........................................................................................... 4

3.2.4键盘显示电路的设计 ........................................................................................... 4

3.2.5系统整体电路 ....................................................................................................... 5

4. 软件系统设计 ............................................................................................................................ 6

5.系统调试与存在的问题 .............................................................................................................. 6

5.1 Proteus仿真结果 ............................................................................................................... 6

5.2 结果分析 .......................................................................................................................... 9

5.3 存在问题 .......................................................................................................................... 9

6.心得体会 ...................................................................................................................................... 9

参考文献 ........................................................................................................................................ 10

附录1:程序 ................................................................................................................................. 11

1.设计任务及要求

(1)设计任务为多频率的正弦波低频信号发生器

(2)要求正弦波低频信号发生器产生1Hz,10Hz,100Hz,1000Hz的波形,频率可由开关选择。

2.方案选择

信号发生电路方案论证:

方案一:通过单片机控制D/A,输出正弦波。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。

方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波。此方案,电路复杂,干扰因素多,不易实现。

方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的正弦波周期性波形。但此方案成本高,程序复杂度高。

综合考虑以上三种方案,本设计选择方案一。

3.硬件系统设计

3.1 总体系统设计思路

本设计系统由主控制模块、数模转换模块、显示模块、控制模块共四个模块组成。主控芯片使用AT89C51单片机,数模转换模块采用DAC0808实现,显示模块采用4个数码管构成,利用键盘控制正弦波频率的改变。系统整体模块如图1所示。

图1系统整体模块

1.设计任务及要求

(1)设计任务为多频率的正弦波低频信号发生器

(2)要求正弦波低频信号发生器产生1Hz,10Hz,100Hz,1000Hz的波形,频率可由开关选择。

2.方案选择

信号发生电路方案论证:

方案一:通过单片机控制D/A,输出正弦波。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。

方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波。此方案,电路复杂,干扰因素多,不易实现。

方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的正弦波周期性波形。但此方案成本高,程序复杂度高。

综合考虑以上三种方案,本设计选择方案一。

3.硬件系统设计

3.1 总体系统设计思路

本设计系统由主控制模块、数模转换模块、显示模块、控制模块共四个模块组成。主控芯片使用AT89C51单片机,数模转换模块采用DAC0808实现,显示模块采用4个数码管构成,利用键盘控制正弦波频率的改变。系统整体模块如图1所示。

图1系统整体模块

3.2 电路构成介绍

利用单片机AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz,10Hz,100Hz,1000Hz的波形。通过键盘来控制正弦波频率的变化,并通过数码管显示其数值,系统大致包括信号发生部分、数/模转换部分以及显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。 3.2.1单片机最小系统

AT89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用AT89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图 89C51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:

(1) 有可供用户使用的大量I/O口线。 (2) 内部存储器容量有限。 (3) 应用系统开发具有特殊性。

图2 AT89C51单片机最小系统

3.2.2波形产生电路设计

由单片机采用编程方法产生正弦波波形、通过D/A转换模块DAC0808在进过滤波放大之后输出。单片机的P2口连接DAC0808的八位数据输入端,DAC0808的输出端接放大器,经过放大后输出所要的波形。DAC0808的为八位数据并行输入的,DAC0808的引脚图如图3所示,其结构图如图4所示:

图3 DAC0808引脚图

图4 DAC0808的内部结构

其连接电路图如下:

图5 波形产生电路

如图所示,VEE接-5V电压,COMP端与VEE之间接0.1uF电容,VREF(+)通过5K电阻接+5V电源,VREF(-)接地。输出端IOUT连接运算放大器反向输入端。运算放大器同相输入端接地。

3.2.3频率显示电路的设计

通过4个74HC753连接4个数码管显示输出的正弦波的频率,其电路图如下:

图6 正弦波频率显示

如上图所示,74HC753输入端接单片机的P0口,其LE端分别接单片机的P3.1—P1.4。通过软件控制可以显示波形的频率。

3.2.4键盘显示电路的设计

由于本系统所用按键少,其连接电路图如下:

图7 键盘

图中独立键盘引出的线接单片机的P1.0-P1.1,开关的功能如图所示。P11每按一次频率×10,P22每按一次频率÷10。

3.2.5系统整体电路

系统整体电路图如图8所示;

图8 整体电路图

单片机AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产1Hz,10Hz,100Hz,1000Hz的波形。通过键盘来控制正弦波频率的变化,并通过数码管显示其数值。

4.软件系统设计

软件的流程图:

本系统采用AT89C51单片机,用编程的方法来产生正弦波波形,设置初始值,并通过编程来切换波形频率的改变。

具体功能有:(1)正弦波波形的显示;(2)频率增减。

软件调试后,通过编程器下载到AT89C51芯片中,首先初始化函数,接着键盘扫描,定时器初始化,分离函数,最后显示出正弦波频率。

软件的流程图如下:

图9 软件的流程图

5.系统调试与存在的问题

5.1 Proteus仿真结果

仿真结果如下所示:

图10 频率为1Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产1Hz。

图11 频率为10Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产10Hz。

图12 频率为100Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产100Hz。

图13 频率为1000Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产1000Hz。

5.2 结果分析

本系统通过对AT89C51加载程序使其输出正弦波波形,同时可以通过按键正弦波频率。设置初始频率为1Hz,当第一次按下K键时,选择要改变正弦波的频率为10Hz,第二次按下K键时,选择要改变正弦波的频率为100Hz,第三次按下K键时,选择要改变正弦波的频率为1000Hz,第四次按下K键时,正弦波的频率恢复到初始状态1Hz,同时输出各个频率对应的波形,能正确显示波形及其频率。

5.3 存在问题

刚开始用4位数码管显示的时候,正弦波频率到了100Hz和1000Hz的时候数码管就会不停地闪烁。之后换用74HC573连接静态数码管,前面的问题得到解决,不过当正弦波频率到了1000Hz以后,有时候按下×10键就回不到程序要求的1Hz。

6.心得体会

在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。

最后还要在此感谢各位毕业设计的指导老师们和我的组员们,他们在整个过程中都给予了我充分的帮助与支持。

参考文献

[1] 郭文川主编.单片机原理与接口技术.中国农业出版社,2007.8

[2] 郭天祥.51单片机C语言教程.北京: 电子工业出版社,2009.1

[3] 郑学坚,周斌.微型计算机

附录1:程序

#include

#include

#define uchar unsigned char

uchar code SINX[]={

0x7F,0x82,0x85,0x88,0x8B,0x8F,0x92,0x95,0x98,0x9B,0x9E,0xA1,0xA4,0xA7,0xAA,0xAD,

0xB0,0xB3,0xB6,0xB8,0xBB,0xBE,0xC1,0xC3,0xC6,0xC8,0xCB,0xCD,0xD0,0xD2,0xD5,0xD7,

0xD9,0xDB,0xDD,0xE0,0xE2,0xE4,0xE5,0xE7,0xE9,0xEB,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,

0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFB,0xFC,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,

0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,

0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEB,0xE9,0xE7,0xE5,0xE4,0xE2,0xE0,0xDD,0xDB,

0xD9,0xD7,0xD5,0xD2,0xD0,0xCD,0xCB,0xC8,0xC6,0xC3,0xC1,0xBE,0xBB,0xB8,0xB6,0xB3,

0xB0,0xAD,0xAA,0xA7,0xA4,0xA1,0x9E,0x9B,0x98,0x95,0x92,0x8F,0x8B,0x88,0x85,0x82,

0x7F,0x7C,0x79,0x76,0x73,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x54,0x51,

0x4E,0x4B,0x48,0x46,0x43,0x40,0x3D,0x3B,0x38,0x36,0x33,0x31,0x2E,0x2C,0x29,0x27,

0x25,0x23,0x21,0x1E,0x1C,0x1A,0x19,0x17,0x15,0x13,0x12,0x10,0x0F,0x0D,0x0C,0x0A,

0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,

0x09,0x0A,0x0C,0x0D,0x0F,0x10,0x12,0x13,0x15,0x17,0x19,0x1A,0x1C,0x1E,0x21,0x23,

0x25,0x27,0x29,0x2C,0x2E,0x31,0x33,0x36,0x38,0x3B,0x3D,0x40,0x43,0x46,0x48,0x4B,

0x4E,0x51,0x54,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x73,0x76,0x79,0x7C };//正弦波信号

#define uint unsigned int

#define Fosc 11059200 //晶振频率11059200

#define ALL 65536 //最长基数长度65536

uchar LED1_BUF=0xff,LED2_BUF=0xff,LED3_BUF=0xff,LED4_BUF=0xff; //数码管显示

uchar TIMER0_H,TIMER0_L; //定时器0的初值设置

uchar NUM=0; //计数变量 uint FREQ=1;

uint a;

//bit FLAG=0; //频率调节标志

sbit F_UP=P1^0;

sbit F_DOWN=P1^1;

void delay(uchar t);

void display(); //

void calculate_F();

void discrete();

void key_scan();

void init(); //

void timer0(); //

void delay(uchar t)

{

uchar i,j;

//频率上调按钮 //频率下调按钮 //延时函数 显示函数 //频率变化,计算定时初值 //分离频率用于显示 //键盘扫描函数 初始化函数 定时器0的终端服务函数 //函数功能:延时

while(t--)

{

for(i=0;i

for(j=0;j

;

}

}

void calculate_F()

出定时器0的初值

{

float temp;

temp=ALL-Fosc/11.0592/256/FREQ; TIMER0_H=(uint)temp/256; TIMER0_L=(uint)temp%256; }

void key_scan()

{

//a=k; //函数功能:键盘扫描函数 //函数功能:频率计数函数,当频率变化,计算

if(F_UP==0) {delay(5); if(F_UP==0) {

TR0=0; a++;

//k=a;

while(F_UP==0); if(a>3) {

a=0; }

//FLAG=1;

}

}

if(a==0)

{FREQ=1;}

if(a==1)

{FREQ=10;} if(a==2)

{FREQ=100;}

if(a==3)

{FREQ=1000;}

void init()

{

TMOD=0x01;

TH0=TIMER0_H;

TL0=TIMER0_L;

ET0=1;

EA=1;

TR0=1;

calculate_F();

discrete();

display();

}

void discrete()

{

//函数功能:定时器初始化函数//函数功能:参数分离函数 16

LED1_BUF=FREQ/1000;

LED2_BUF=FREQ/100%10;

LED3_BUF=FREQ%100/10;

LED4_BUF=FREQ%10;

}

uchar

DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void display() //函数功能:数码管显示函数

{

P3=0Xf1;

P0=DSY_CODE[LED1_BUF];

delay(5);

P3=0xf2;

P0=DSY_CODE[LED2_BUF];

delay(5);

P3=0xf4;

P0=DSY_CODE[LED3_BUF];

delay(5);

P3=0xf8;

17 code

P0=DSY_CODE[LED4_BUF];

delay(5);

}

void timer0() interrupt 1 //函数功能:定时器0中断函数 {

//TR0=0;

TH0=TIMER0_H;

TL0=TIMER0_L;

P2=SINX[NUM];

NUM++;

//TR0=1;

}

main() //函数功能:主程序入口

{

init();

while(1)

{

key_scan();

18

calculate_F(); discrete(); display(); }

}

19

机械与电子工程学院

接口技术课程设计报告

题目:多频率的正弦波低频信号发生器的

设计

摘 要: 本系统利用单片机AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz,10Hz,100Hz,1000Hz的波形。通过键盘来控制正弦波频率的变化,并通过数码管显示其数值,系统大致包括信号发生部分、数/模转换部分以及显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。

关键词:单片机AT89C51、DAC0808、74HC573

目录

1.设计任务及要求 .......................................................................................................................... 1

2.方案选择 ...................................................................................................................................... 1

3.硬件系统设计 .............................................................................................................................. 1

3.1 总体系统设计思路 .......................................................................................................... 1

3.2 电路构成介绍 ................................................................................................................... 2

3.2.1单片机最小系统 ................................................................................................... 2

3.2.2波形产生电路设计 ............................................................................................... 3

3.2.3频率显示电路的设计 ........................................................................................... 4

3.2.4键盘显示电路的设计 ........................................................................................... 4

3.2.5系统整体电路 ....................................................................................................... 5

4. 软件系统设计 ............................................................................................................................ 6

5.系统调试与存在的问题 .............................................................................................................. 6

5.1 Proteus仿真结果 ............................................................................................................... 6

5.2 结果分析 .......................................................................................................................... 9

5.3 存在问题 .......................................................................................................................... 9

6.心得体会 ...................................................................................................................................... 9

参考文献 ........................................................................................................................................ 10

附录1:程序 ................................................................................................................................. 11

1.设计任务及要求

(1)设计任务为多频率的正弦波低频信号发生器

(2)要求正弦波低频信号发生器产生1Hz,10Hz,100Hz,1000Hz的波形,频率可由开关选择。

2.方案选择

信号发生电路方案论证:

方案一:通过单片机控制D/A,输出正弦波。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。

方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波。此方案,电路复杂,干扰因素多,不易实现。

方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的正弦波周期性波形。但此方案成本高,程序复杂度高。

综合考虑以上三种方案,本设计选择方案一。

3.硬件系统设计

3.1 总体系统设计思路

本设计系统由主控制模块、数模转换模块、显示模块、控制模块共四个模块组成。主控芯片使用AT89C51单片机,数模转换模块采用DAC0808实现,显示模块采用4个数码管构成,利用键盘控制正弦波频率的改变。系统整体模块如图1所示。

图1系统整体模块

1.设计任务及要求

(1)设计任务为多频率的正弦波低频信号发生器

(2)要求正弦波低频信号发生器产生1Hz,10Hz,100Hz,1000Hz的波形,频率可由开关选择。

2.方案选择

信号发生电路方案论证:

方案一:通过单片机控制D/A,输出正弦波。此方案输出的波形不够稳定,抗干扰能力弱,不易调节。但此方案电路简单、成本低。

方案二:使用传统的锁相频率合成方法。通过芯片IC145152,压控振荡器搭接的锁相环电路输出稳定性极好的正弦波。此方案,电路复杂,干扰因素多,不易实现。

方案三:利用MAX038芯片组成的电路输出波形。MAX038是精密高频波形产生电路,能够产生准确的正弦波周期性波形。但此方案成本高,程序复杂度高。

综合考虑以上三种方案,本设计选择方案一。

3.硬件系统设计

3.1 总体系统设计思路

本设计系统由主控制模块、数模转换模块、显示模块、控制模块共四个模块组成。主控芯片使用AT89C51单片机,数模转换模块采用DAC0808实现,显示模块采用4个数码管构成,利用键盘控制正弦波频率的改变。系统整体模块如图1所示。

图1系统整体模块

3.2 电路构成介绍

利用单片机AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,能产1Hz,10Hz,100Hz,1000Hz的波形。通过键盘来控制正弦波频率的变化,并通过数码管显示其数值,系统大致包括信号发生部分、数/模转换部分以及显示部分三部分,其中尤其对数/模转换部分和波形产生和变化部分进行详细论述。 3.2.1单片机最小系统

AT89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。用AT89C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图 89C51单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:

(1) 有可供用户使用的大量I/O口线。 (2) 内部存储器容量有限。 (3) 应用系统开发具有特殊性。

图2 AT89C51单片机最小系统

3.2.2波形产生电路设计

由单片机采用编程方法产生正弦波波形、通过D/A转换模块DAC0808在进过滤波放大之后输出。单片机的P2口连接DAC0808的八位数据输入端,DAC0808的输出端接放大器,经过放大后输出所要的波形。DAC0808的为八位数据并行输入的,DAC0808的引脚图如图3所示,其结构图如图4所示:

图3 DAC0808引脚图

图4 DAC0808的内部结构

其连接电路图如下:

图5 波形产生电路

如图所示,VEE接-5V电压,COMP端与VEE之间接0.1uF电容,VREF(+)通过5K电阻接+5V电源,VREF(-)接地。输出端IOUT连接运算放大器反向输入端。运算放大器同相输入端接地。

3.2.3频率显示电路的设计

通过4个74HC753连接4个数码管显示输出的正弦波的频率,其电路图如下:

图6 正弦波频率显示

如上图所示,74HC753输入端接单片机的P0口,其LE端分别接单片机的P3.1—P1.4。通过软件控制可以显示波形的频率。

3.2.4键盘显示电路的设计

由于本系统所用按键少,其连接电路图如下:

图7 键盘

图中独立键盘引出的线接单片机的P1.0-P1.1,开关的功能如图所示。P11每按一次频率×10,P22每按一次频率÷10。

3.2.5系统整体电路

系统整体电路图如图8所示;

图8 整体电路图

单片机AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产1Hz,10Hz,100Hz,1000Hz的波形。通过键盘来控制正弦波频率的变化,并通过数码管显示其数值。

4.软件系统设计

软件的流程图:

本系统采用AT89C51单片机,用编程的方法来产生正弦波波形,设置初始值,并通过编程来切换波形频率的改变。

具体功能有:(1)正弦波波形的显示;(2)频率增减。

软件调试后,通过编程器下载到AT89C51芯片中,首先初始化函数,接着键盘扫描,定时器初始化,分离函数,最后显示出正弦波频率。

软件的流程图如下:

图9 软件的流程图

5.系统调试与存在的问题

5.1 Proteus仿真结果

仿真结果如下所示:

图10 频率为1Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产1Hz。

图11 频率为10Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产10Hz。

图12 频率为100Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产100Hz。

图13 频率为1000Hz时波形图

AT89C51采用程序设计方法产生正弦波,再通过D/A转换器DAC0808将数字信号转换成模拟信号,最终由示波器显示出来,能产1000Hz。

5.2 结果分析

本系统通过对AT89C51加载程序使其输出正弦波波形,同时可以通过按键正弦波频率。设置初始频率为1Hz,当第一次按下K键时,选择要改变正弦波的频率为10Hz,第二次按下K键时,选择要改变正弦波的频率为100Hz,第三次按下K键时,选择要改变正弦波的频率为1000Hz,第四次按下K键时,正弦波的频率恢复到初始状态1Hz,同时输出各个频率对应的波形,能正确显示波形及其频率。

5.3 存在问题

刚开始用4位数码管显示的时候,正弦波频率到了100Hz和1000Hz的时候数码管就会不停地闪烁。之后换用74HC573连接静态数码管,前面的问题得到解决,不过当正弦波频率到了1000Hz以后,有时候按下×10键就回不到程序要求的1Hz。

6.心得体会

在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多。对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。

要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。

最后还要在此感谢各位毕业设计的指导老师们和我的组员们,他们在整个过程中都给予了我充分的帮助与支持。

参考文献

[1] 郭文川主编.单片机原理与接口技术.中国农业出版社,2007.8

[2] 郭天祥.51单片机C语言教程.北京: 电子工业出版社,2009.1

[3] 郑学坚,周斌.微型计算机

附录1:程序

#include

#include

#define uchar unsigned char

uchar code SINX[]={

0x7F,0x82,0x85,0x88,0x8B,0x8F,0x92,0x95,0x98,0x9B,0x9E,0xA1,0xA4,0xA7,0xAA,0xAD,

0xB0,0xB3,0xB6,0xB8,0xBB,0xBE,0xC1,0xC3,0xC6,0xC8,0xCB,0xCD,0xD0,0xD2,0xD5,0xD7,

0xD9,0xDB,0xDD,0xE0,0xE2,0xE4,0xE5,0xE7,0xE9,0xEB,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,

0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFB,0xFC,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,

0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFC,0xFB,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6,

0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEB,0xE9,0xE7,0xE5,0xE4,0xE2,0xE0,0xDD,0xDB,

0xD9,0xD7,0xD5,0xD2,0xD0,0xCD,0xCB,0xC8,0xC6,0xC3,0xC1,0xBE,0xBB,0xB8,0xB6,0xB3,

0xB0,0xAD,0xAA,0xA7,0xA4,0xA1,0x9E,0x9B,0x98,0x95,0x92,0x8F,0x8B,0x88,0x85,0x82,

0x7F,0x7C,0x79,0x76,0x73,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x54,0x51,

0x4E,0x4B,0x48,0x46,0x43,0x40,0x3D,0x3B,0x38,0x36,0x33,0x31,0x2E,0x2C,0x29,0x27,

0x25,0x23,0x21,0x1E,0x1C,0x1A,0x19,0x17,0x15,0x13,0x12,0x10,0x0F,0x0D,0x0C,0x0A,

0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,

0x09,0x0A,0x0C,0x0D,0x0F,0x10,0x12,0x13,0x15,0x17,0x19,0x1A,0x1C,0x1E,0x21,0x23,

0x25,0x27,0x29,0x2C,0x2E,0x31,0x33,0x36,0x38,0x3B,0x3D,0x40,0x43,0x46,0x48,0x4B,

0x4E,0x51,0x54,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x73,0x76,0x79,0x7C };//正弦波信号

#define uint unsigned int

#define Fosc 11059200 //晶振频率11059200

#define ALL 65536 //最长基数长度65536

uchar LED1_BUF=0xff,LED2_BUF=0xff,LED3_BUF=0xff,LED4_BUF=0xff; //数码管显示

uchar TIMER0_H,TIMER0_L; //定时器0的初值设置

uchar NUM=0; //计数变量 uint FREQ=1;

uint a;

//bit FLAG=0; //频率调节标志

sbit F_UP=P1^0;

sbit F_DOWN=P1^1;

void delay(uchar t);

void display(); //

void calculate_F();

void discrete();

void key_scan();

void init(); //

void timer0(); //

void delay(uchar t)

{

uchar i,j;

//频率上调按钮 //频率下调按钮 //延时函数 显示函数 //频率变化,计算定时初值 //分离频率用于显示 //键盘扫描函数 初始化函数 定时器0的终端服务函数 //函数功能:延时

while(t--)

{

for(i=0;i

for(j=0;j

;

}

}

void calculate_F()

出定时器0的初值

{

float temp;

temp=ALL-Fosc/11.0592/256/FREQ; TIMER0_H=(uint)temp/256; TIMER0_L=(uint)temp%256; }

void key_scan()

{

//a=k; //函数功能:键盘扫描函数 //函数功能:频率计数函数,当频率变化,计算

if(F_UP==0) {delay(5); if(F_UP==0) {

TR0=0; a++;

//k=a;

while(F_UP==0); if(a>3) {

a=0; }

//FLAG=1;

}

}

if(a==0)

{FREQ=1;}

if(a==1)

{FREQ=10;} if(a==2)

{FREQ=100;}

if(a==3)

{FREQ=1000;}

void init()

{

TMOD=0x01;

TH0=TIMER0_H;

TL0=TIMER0_L;

ET0=1;

EA=1;

TR0=1;

calculate_F();

discrete();

display();

}

void discrete()

{

//函数功能:定时器初始化函数//函数功能:参数分离函数 16

LED1_BUF=FREQ/1000;

LED2_BUF=FREQ/100%10;

LED3_BUF=FREQ%100/10;

LED4_BUF=FREQ%10;

}

uchar

DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void display() //函数功能:数码管显示函数

{

P3=0Xf1;

P0=DSY_CODE[LED1_BUF];

delay(5);

P3=0xf2;

P0=DSY_CODE[LED2_BUF];

delay(5);

P3=0xf4;

P0=DSY_CODE[LED3_BUF];

delay(5);

P3=0xf8;

17 code

P0=DSY_CODE[LED4_BUF];

delay(5);

}

void timer0() interrupt 1 //函数功能:定时器0中断函数 {

//TR0=0;

TH0=TIMER0_H;

TL0=TIMER0_L;

P2=SINX[NUM];

NUM++;

//TR0=1;

}

main() //函数功能:主程序入口

{

init();

while(1)

{

key_scan();

18

calculate_F(); discrete(); display(); }

}

19


相关文章

  • 低频三相正弦信号发生器系统毕业论文
  • 2012年"迅通杯"海南省大学生电子设计竞赛试题 参赛注意事项 (1)2012年11月5日8:00竞赛正式开始.本科组参赛队只能在[本科组]题目中任选一题: 高职高专组参赛队在[高职高专组]题目中任选一题,也可以选择[本 ...查看


  • 低频正弦信号发生器
  • 低频正弦信号发生器 摘 要 正弦信号发生器是信号中最常见的一种,它能输出一个幅度可调.频率可调的正弦信号在这些信号发生器中,又以低频正弦信号发生器最为常用,在科学研究及生产实践中均有着广泛应用. 目前,常用的信号发生器绝大部分是由模拟电路构 ...查看


  • 正弦信号发生器设计论文
  • 安徽工贸职业技术学院 毕业论文(设计) 论文题目: 正弦信号发生器设计 姓 名: 欧阳高翔 指导教师: 崔璨 提交日期: 2009年4月 专 业: 生产过程自动化 正弦信号发生器设计 摘要:本设计基于两个函数信号发生器芯片MAX038和FP ...查看


  • 简介FJ-XD22PS低频信号发生器的使用方法
  • 简介FJ-XD22PS低频信号发生器的使用方法 摘要:本文结合笔者多年在电工电子类实验室的使用经验,以及教学的总结,把FJ-XD22PS低频信号发生器的使用方法进行了详细的阐述,以便各位同行使用,同时可以作为学生自学的辅助材料. 关键词:低 ...查看


  • 函数信号发生器
  • ( 江苏联合职业技术学院 江苏省惠山中等专业学校(办学点) (论文) 系 专 业 电子信息工程技术 年 级 09 班 级 31 姓 名 周烨静 学 号 095223103 指导教师 王晓琳 2013年 3 月 25 日 摘要 本文介绍一种用 ...查看


  • 正弦信号的采样与恢复
  • ***************** 实践教学 ******************* 题 目:专业班级:姓 名:学 号:指导教师:成 绩:计算机与通信学院 2013年春季学期 课程设计 正弦信号的采样与恢复 摘 要 通过对信号取样定理与信号 ...查看


  • 电子设计竞赛论文范文
  • 低频数字式相位测量仪 摘要:本设计给出了以凌阳16位单片机Spce061A 为核心的数字式相位测量的基本原理与实现方案.该系统由相位测量仪.数字式移相信号发生器和移相网络三个模块构成,分别由两块单片机独立地实现控制与显示功能.采用DDS 技 ...查看


  • 调频发射机
  • 编号: (高频电路设计与制作) 实训论文说明书 题 目: 调频发射机 院 (系): 信息与通信学院 专 业: 电子信息工程 学生姓名: 学 号: 指导教师: 2013年1月9日 摘 要 本设计主要是设计一个调频发射机.发射机的主要任务是完成 ...查看


  • 全国电子设计大赛题目分析
  • 第6章 全国大学生电子设计竞赛题目与 分析 6.1 全国大学生电子设计竞赛简介 6.1.1 总则 1.指导思想与目的 全国大学生电子设计竞赛是教育部倡导的大学生学科竞赛之一,是面向大学生的群众性科技活动,目的在于推动高等学校促进信息与电子类 ...查看


热门内容