吴志元 基于单片机的函数信号发生器设计(2)

2019-03-11 15:32

2.开发软件介绍

2.1Keile C51软件

Keile C51是美国Keile Software公司出品的51系列兼容单片机C语言软件开发系统。与汇

编相比,在功能、结构、可读性上都有明显的优势。Keile C51软件提供提供丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率非常高。

[4]

Keile软件公司的C51单片机软件开发工具已经用于众多的8051及派生软件实现嵌入应用,可

以编译C源程序、汇编源程序、连接和定位目标文件及库,创建HEX文件以及调试目标程序[4]。 Keile C51编译器是符合ANSI标准的编译器。Keile C51语言扩展支持51单片机的应用包括:1.数据类型 2.存储器类型 3.存储器模型 4.指针 5.重入函数 6.中断函数 7.实时操作系统 8.PL/M和A51源文件接口 。

Keile C51支持的基本数据类型有位型(bit)、无符号字符型(unsigned char)、有符号字符型(signed char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长整型(unsigned long)、有符号整型(signed long)和浮点型(float)等。

[4]

[4]

2.2Proteus软件

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它具有4大功能模块:

1.智能原理图设计(ISIS) 2.完善的电路仿真功能(Prospice) 3.独特的单片机协同仿真功能(VSM) 4.实用的PCB设计平台。

Proteus软件是一款功能强大的电路设计分析软件。在利用其进行单片机的软件仿真时,仅仅使用了其部分功能:1.ISIS智能原理图输入系统。2.Proteus VSM虚拟系统模型。

Proteus ISIS是Proteus软件的核心,其具有以下特性:1.出版高质量的原理图:ISIS提供给用户图形外观,包括线宽、填充类型、字符库等的全部控制,使用户能生成精美的原理图。画完图后可以以图形文件输出。2.良好的用户界面:用户只需单机元件的引脚或者先前布好的线,就能实现布线。而且摆放、移动和删除操作能都直接鼠标实现,无需去单机菜单或图标。3.自动走线:只要单机想要连接的两个引脚,就能简单地实现走线。在特殊的位置需要布线时,只需在中间的角落单机。自动走线也能在元件移动时操作,自动解决相应连线。4.元件库:ISIS的元件库包括8000多个元件,有标准符号、三极管、二极管、CMO微处理存储元件、模拟IC和运算放大器等。 Proteus VSM的核心是ProSpice,是一个组合了SPICE3F5模拟仿真器和基于快速事件驱动的数字仿真器的混合仿真系统。Proteus VSM包含大量的虚拟模型仪器,如示波器、逻辑分析仪、函数发生器、数字信号发生器、时钟计数器、虚拟终端以及简单的电压计、电流计等。

[5]

[5]

[5]

3

3.基于单片机的函数信号发生器设计的实现原理

3.1原理框图

图3-1原理框图

如图3-1,整个系统包括按键、AT89C51单片机、LCD显示、D/A转换器、电流电压转化器、示波器。按键控制AT89C51单片机的输出,包括波形的种类和波形的频率,AT89C51单片机通过LCD来显示波形的种类和波形的频率,单片机输出的是数字信号,DAC0832是电流型D/A转换器,通过DAC0832输出电流信号,再通过电流电压转换器输出电压,示波器接收的是电压信号,所以示波器接收到电压信号后显示出波形。

4.基于单片机的函数信号发生器软件实现

本系统利用单片机AT89C51采用程序设计方法产生正弦波、矩形波、三角波三种波形。 具体功能有:(1)各个波形的切换;(2)频率增减等。 软件的流程图4-1如下:

4

图4-1软件设计流程图

4.1延时模块 void delay(uint z) {

uchar i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); }

void delay1(uint y) {

uint i;

for(i=y;i>0;i--); }

5

//延时子程序 代表MS

//延时代表US

4.2显示模块

图4-2写操作时序图

当我们要进行写指令,设置LCD1602工作方式时:应把RS置为低电平,RW置为低电平,再将数据送到数据口D0-D7,最后E引脚一个高脉冲将数据写入。

当我们要写数据时,在LCD1602上实现显示时:应把RS置为高电平,RW置为低电平,再将数据送到数据口D0-D7,最后E引脚一个高脉冲将数据写入。 void write_com(uchar com) //1602写指令 {

lcdrs=0; }

void write_data(uchar date) {

lcdrs=1;

6

P1=com; delay(5); lcde=1; delay(5); lcde=0;

//1602写数据

P1=date; delay(5); lcde=1; delay(5); lcde=0;

}

void init() //初始化{

lcdrw=0; lcde=0; wr=0; cs=0;

write_com(0x38); write_com(0x0c); /// write_com(0x06); // write_com(0x01); // write_com(0x80+0x00); write_data(0x77); // write_data(0x61); write_data(0x76); write_data(0x65); write_data(0x3a);

write_com(0x80+0x40); write_data(0x66); // write_data(0x3a); }

void write_f(float date) //{

uchar qian,bai,shi,ge; float temp; char temp1;

qian=(int)date/1000; bai=(int)date/100;

//设置16×2显示,5×7点阵,8位数据接口

显示开,光标关,闪烁开

数据读、写操作后,AC自动加一,画面不移动清除DDRAM和AC,光标复位 //写入地址第一行 写wave: //写入地址第二行 写 f: 写频率 //千位计算 //百位计算

7


吴志元 基于单片机的函数信号发生器设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新目标英语九年级新版第八单元教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: