简易低频信号源的设计 1.docx
- 文档编号:26595560
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:21
- 大小:214.32KB
简易低频信号源的设计 1.docx
《简易低频信号源的设计 1.docx》由会员分享,可在线阅读,更多相关《简易低频信号源的设计 1.docx(21页珍藏版)》请在冰豆网上搜索。
简易低频信号源的设计1
课程设计任务书
课程名称单片机原理与应用
课题简易低频信号源的设计
专业班级
学生姓名
学号
指导老师
审批
任务书下达日期2012年5月20日
任务完成日期2012年5月26日
设计内容与设计要求
设计内容:
本课题以单片机为核心,实现能输出正弦波、三角波、方波信号三种波形,要求有以下功能:
1、系统在初始时轮流输出三种波形,并轮流显示。
2、用按键选择三种波形的输出,并相应的用数码管显示其波形标号。
设计要求:
1)确定系统设计方案;
2)进行系统的硬件设计;
3)完成必要的参数计算与元器件选择;
4)完成应用程序设计;
5)进行单元电路及应用程序的调试;
6)写出使用说明书。
1、MCS-51单片机实验
2、操作台1台;
2、PC机及单片机调试软件;
3、单片机应用系统板1套;
4、制作工具1套;
5、系统设计所需的元器件。
说明书格式
1.课程设计任务书
2.目录
3.说明书内容
1)课题的设计要求、目的、意义
2)系统总体方案选择与说明
3)系统结构框图与工作原理
4)各单元硬件设计说明及计算方法
5)软件设计与说明(包括流程图)
6)调试结果与必要的调试说明
7)使用说明
8)程序清单
9)总结
10)参考文献
附录
附录A系统原理图
附录B程序清单
评分表
进度安排
设计时间为两周
第一周
星期一、上午:
布置课题任务,讲课及课题介绍
下午:
借阅有关资料,总体方案讨论
星期二、确定总体设计方案
星期三、硬件模块方案设计
星期四、软件模块方案设计
星期五、各硬件模块设计
第二周
星期一、各硬件模块设计
星期二、各软件模块设计
星期三、各软件模块设计
星期四、写说明书
星期五、上午:
写说明书,整理资料
下午:
交设计资料,答辩
参考文献
[1]张迎新.《单片微型计算机原理、应用及接口技术》.国防工业出版社
[2]房小翠.《单片机实用系统设计技术》.国防工业出版社
[3]何立民.《单片机应用系统设计》.北航出版社
[4]王迎旭.《单片机原理及及应用》.机械工业出版社.2004年7月
一总体方案设计
1.1总体设计思路
根据设计要求,本系统利用单片机AT89C52采用程序设计方法产生锯齿波、三角波、正弦波、方波四种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制四种波形的类型选择。
与此同时,利用定时器T0和8位数码管以及EEPROM24C02,设计了一个电子钟,具有掉电保护和秒分时的调节功能。
1.2系统结构框图
图1
1.3工作原理
单片机一上电,首先进行初始化,然后判断开关KEY5的状态,如果KEY5断开,则该系统为低频信号发生器,并关闭数码管显示,以降低功耗。
通过开关KEY1﹑KEY2﹑KEY3﹑KEY4分别来选择正弦波﹑三角波﹑斜坡﹑方波四种信号的输出。
如果KEY5闭合,则该系统为电子钟,通过开关KEY1﹑KEY2﹑KEY3来对时间的时分秒进行调整。
按住开关1秒以上可进入参数自动加速调整状态。
电子钟具有掉电保护的功能。
二器件选择与硬件电路设计
2.1单片机的选择,复位电路,时钟电路及电源电路的设计
根据初步设计方案的分析,设计这样一个应用系统,可以选择具有以下功能的单片机。
片内有flashROM的单片机,应用程序直接储存在片内,不需要扩展程序存储器,电路可以简化。
例如ATMEL公司生产的AT89CXX系列的单片机,宏晶公司的STC89C5X系列的单片机等。
1)支持在线系统可编程技术ISP的单片机,通常进行单片机的实验和开发时,编程器是比不可少的。
仿真调试完的程序需要借助编程器烧写到单片机内部或者外接程序存储器中,而选用带有ISP技术的单片机,可以省去昂贵的仿真器,只要通过计算机的接口和一条下载线就可以直接在目标芯片上编程。
基于以上的考虑,本系统选用STC89C52单片机。
2)单片机模块,复位电路与时钟电路及电源电路的设计如图2所示
图2
2.2DAC的选择与接口电路的设计
由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以本系统选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。
DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。
DAC0832是电流型输出,在应用时外接运放使之成为电压型输出。
根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:
直通方式、单缓冲方式和双缓冲方式,本设计选用直通方式,接口电路如图3所示。
图3
2.3EEPROM的选择与接口电路的设计
随机存储器RAM,在断电后数据会丢失,为了保证电子钟的数据在断电后不会丢失,本系统中使用24C02型号的EEPROM。
它是电可擦除可编程只读存储器,掉电后数据不丢失的存储芯片。
EEPROM可以在电脑上或专用设备上擦除已有信息,重新编程。
一般用在即插即用,串行E2PROM是基于I2C-BUS的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点在仪器仪表及工业自动化控制中得到大量的应用。
随着世界上各公司对该器件的开发,市场上推出了许多牌号的24C02器件。
接口电路如图4所示。
图4
2.4系统硬件总体原理图
图5
三系统软件设计
在单片机应用系统的设计中,软件设计占有重要的位置。
软件设计包括数据采集和数据处理程序,人机交互程序。
根据功能要求,将软件分成5个模块。
定时器模块,DAC数模转换模块,IIC模块,数码管显示模块,按键扫描模块。
3.1软件设计流程框图
图6
3.2主程序设计
主程序的内容一般包括单片机的初始化,相关模块的初始化和一些子程序的调用等。
主程序流程图如图7所示
图7
3.3信号发生器程序设计
本设计将各种波形的数据固定在单片机的程序存储器中,通过改变数据的输出速度来改变信号的频率,然后通过改变DAC转换器的参考点要求来改变信号的峰峰值,电路较为简单,成本较低。
3.3.1正弦波程序设计
voidsinwave()//正弦波
{unsignedinti;
for(i=0;(i<256&&P1==0XFF)||(i<256&&sinflag);i++)
{P0=table[i];
delay_ms
(1);
}
}
3.3.2三角波程序设计
voidTrianglewave()//三角波
{unsignedinti;
for(i=0;(P1==0XFF&&i<255)||(Triangleflag&&i<255);i++)
{P0=i;
delay_ms
(1);
}
for(i=255;(i>0&&P1==0XFF)||(Triangleflag&&i>0);i--)
{P0=i;
delay_ms
(1);
}
}
3.3.3方波程序设计
voidSquarewave()//方波
{P0=0;
delay_ms
(1);
P0=255;
delay_ms
(1);
}
3.3.4斜坡信号程序设计
voidrampwave()//斜坡
{unsignedinti;
for(i=0;(i<255&&P1==0XFF)||(i<255&&rampflag);i++)
{P0=i;
delay_ms
(1);
}
}
四软件仿真及硬件制作和调试
4.1硬件制作和调试注意事项
单片机系统的调试包括硬件调试和软件调试,两者之间不能完全分开,时间进度上硬件测试稍微先于软件调试,但是许多硬件故障是在调试软件时才能发现的,通常是先排除硬件系统中明显的故障后,再与软件结合起来调试,因此硬件和软件要相互融合,匹配,调试时可能发生一些功能交互问题,这就需要软,硬件之间的协调。
为便于系统硬件测试,在进行单片机系统硬件制造时,需要注意以下一些问题:
1)在元器件的布局方面,应该把相互有关的元器件尽量靠近
2)ROM,RAM等关键元器件旁边安装去耦电容
3)地线布局应该合理,应将逻辑地和模拟地分开布线,模拟地应尽量加粗
4)数据线的宽度应尽可能宽,以减少阻抗
4.2软件Protues仿真结果和现像
4.2.1当KEY5断开时,KEY1KEY2KEY3KEY4都没有闭合时,信号发生器循环显示四种波形如图8所思。
图8
4.2.2当KEY5断开时,KEY1闭合时,信号发生器输出正弦信号如图9所示
图9
4.2.3当KEY5断开时,KEY2闭合时,信号发生器输出三角波信号如图10所示
图10
4.2.4当KEY5断开时,KEY3闭合时,信号发生器输出斜坡信号如图11所示
图11
4.2.5当KEY5断开时,KEY4闭合时,信号发生器输出方波信号如图12所示
图12
4.2.6当KEY5闭合时,该系统为电子钟,通过KEY1KEY2KEY3可以调整时间,显示时间如图13所示
图13
五设计、安装及调试中的体会
通过本次课程设计,我认识到,要将所学知识活学活用。
在实际的电路设计中,会遇到许多意想不到的问题,从发现问题到解决问题就是一种进步。
尤其在制作电路板时,问题更加实际。
如输入端为低电平的引脚一定要接地,开关处要接上拉电阻等。
这次课程设计,让我更深入的巩固了单片机技术知识,AltiumDesigner,Protues,keil等软件的应用,并且提高了编程能力和动手能力。
本次课程设计中我采用的是模块化编程,虽然以前对模块化编程思想有一定的了解,但是从未付诸行动。
在今后的学习中,要多加实践,让知识真正成为有用的知识。
从电路图的设计、仿真、实现、实验报告,都是自己思考和动手。
用所学习过的芯片设计电路,实现的过程中排错、检查的能力也得到锻炼。
总而言之,好好利用了学校给我们提供的此次实习的机会,努力按要求完成了任务,提高了自己的综合思考能力和动手实践能力。
六附录
6.1数码管显示程序设计
voiddisplay()
{P3=0x80;//第一个数码管亮
P2=table2[table3[0]];
_delay_ms(10);
P3=0x40;
P2=table2[table3[1]];
_delay_ms(10);//小时
P3=0x20;
P2=0x40;
_delay_ms(10);//'-'
P3=0x10;
P2=table2[table3[2]];
_delay_ms(10);
P3=0x08;
P2=table2[table3[3]];
_delay_ms(10);//分钟
P3=0x04;
P2=0x40;
_delay_ms(10);//'-'
P3=0x02;
P2=table2[table3[4]];
_delay_ms(10);
P3=0x01;
P2=table2[table3[5]];
_delay_ms(10);//秒
}
6.2按键扫描模块程序设计
voidkeyscan_adjust()
{unsignedinti=0;
if(key1==0)
{delay_ms(8000);
_delay_ms(8000);
_delay_ms(8000);
if(key1==0)
{hour++;
if(hour==24)
hour=0;
_delay_ms(8000);
_delay_ms(8000);
_delay_ms(8000);
}
}
if(key2==0)
{_delay_ms(8000);
_delay_ms(8000);
_delay_ms(8000);
if(key2==0)
{minute++;
_delay_ms(8000);
_delay_ms(8000);
_delay_ms(8000);
if(minute==60)
minute=0;
}
}
if(key3==0)
{_delay_ms(8000);
_delay_ms(8000);
_delay_ms(8000);
if(key3==0)
{second++;
_delay_ms(8000);
_delay_ms(8000);
_delay_ms(8000);
if(second==60)
second=0;
}
}
}
6.3IIC模块程序设计
voidwrite_24c02_date(uchardate,ucharaddress1)
{start_signal();
write_byte(0xa0);//从机地址
ack_signal();
write_byte(address1);//访问地址
ack_signal();
write_byte(date);//数据
ack_signal();
stop_signal();
}
ucharread_24c02_date(ucharaddress)
{ucharvalue2;
start_signal();
write_byte(0xa0);//从机地址
ack_signal();
write_byte(address);//访问地址
ack_signal();
start_signal();
write_byte(0xa1);//从机地址
ack_signal();
value2=read_byte();
stop_signal();
returnvalue2;
}
6.4定时器模块程序设计
#include"TO.h"
voidtimer0_init()
{TMOD=0x01;
TH0=(65535-1000)/256;
TL0=(65535-1000)%256;
EA=1;
ET0=1;
TR0=1;
}
voidtimer0()interrupt1
{unsignedinti;
TH0=(65535-1000)/256;
TL0=(65535-1000)%256;
i++;
if(i==1000)
{i=0;
second++;
if(second==60)
{second=0;
minute++;
if(minute==60)
{minute=0;
hour++;
if(hour==24)
{hour=0;
}
}
}
}
}
6.5主程序设计
#include"iic.h"
#include"DAC.h"
#include"TO.h"
#include"display.h"
#include"keyscan.h"
voidmain()
{unsignedcharkeyvalue1=1;
iic_init();
timer0_init();
hour=read_24c02_date(0x01);//断电保护
minute=read_24c02_date(0x02);
second=read_24c02_date(0x03);
while
(1)
{while(keyvalue1==1)//信号发生器
{P3=0;//管数码管,降低功耗
DispWave();
keyvalue1=keyscan();//切换模式
}
while(keyvalue1==0)//电子钟
{process();
display();
display();
write_24c02_date(second,0x03);
display();
display();
write_24c02_date(minute,0x02);
display();
display();
write_24c02_date(hour,0x01);
display();
display();//循环显示是为消除闪烁因为向24c02写数据耗时太多
keyscan_adjust();
keyvalue1=keyscan();
}
}
}
电气信息学院课程设计评分表
项目
评价
优
良
中
及格
差
设计方案合理性与创造性(10%)
开发板焊接及其调试完成情况*(10%)
硬件设计或软件编程完成情况(20%)
硬件测试或软件调试结果*(10%)
设计说明书质量(20%)
答辩情况(10%)
完成任务情况(10%)
独立工作能力(10%)
出勤情况(10%)
综合评分
指导教师签名:
_______________
日期:
_______________
注:
表中标*号项目是硬件制作或软件编程类课题必填内容;
此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:
封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易低频信号源的设计 简易 低频 信号源 设计