设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和由用户编辑的特定形状波形。 50

二、要求1.基本要求(1)具有产生正弦波、方波、三角波三种周期性波形的功能。(2)用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及由基波及其谐波(5次以下)线... 二、要求
1.基本要求
(1)具有产生正弦波、方波、三角波三种周期性波形的功能。
(2)用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及由基波及其谐波(5次以下)线性组合的波形。
(3)具有波形存储功能。
(4)输出波形的频率范围为100Hz~20kHz(非正弦波频率按10次谐波计算);重复频率可调,频率步进间隔≤100Hz。
(5)输出波形幅度范围0~5V(峰-峰值),可按步进0.1V(峰-峰值)调整。
(6)具有显示输出波形的类型、重复频率(周期)和幅度的功能。
2.发挥部分
(1)输出波形频率范围扩展至100Hz~200kHz。
(2)用键盘或其他输入装置产生任意波形。
(3)增加稳幅输出功能,当负载变化时,输出电压幅度变化不大于±3%(负载电阻变化范围:100Ω~∞)。
(4)具有掉电存储功能,可存储掉电前用户编辑的波形和设置。
(5)可产生单次或多次(1000次以下)特定波形(如产生1个半周期三角波输出)。
(6)其它(如增加频谱分析、失真度分析、频率扩展>200kHz、扫频输出等功能)。

谁有电路图和论文报告啊?急!
展开
 我来答
dd444444
2008-03-28 · TA获得超过145个赞
知道答主
回答量:270
采纳率:100%
帮助的人:0
展开全部
/////P2口接4*4键盘的行线和列线;红灯亮时进行频率输入;绿灯亮时进行占空比输入;频率值暂定在100到60KHZ之间;输入频率和占空比时要输够六位整数,不够的在前面补0;占空比以百比数(0-100)形式存在。///////////
/////////方波发生器资料。空军工程大学导院501明明,2007.10.10初稿/////////
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
sbit coma=P1^0;
sbit comb=P1^1;
sbit comc=P1^2;
sbit comd=P1^3;
sbit come=P1^4;
sbit red=P1^5;
sbit green=P1^6;
sbit new=P1^7;
sbit Q=P3^7;
int i,x,y;

/* 延时函数 */
void delay(void)
{
uchar j;
for (j=300;j>0;j--);
}

/*数字对应的共阳极段码*/
uchar getcode(uchar i)
{
uchar p;
switch (i)
{
case 0: p=0xC0; break; /* 0 */
case 1: p=0xF9; break; /* 1 */
case 2: p=0xA4; break; /* 2 */
case 3: p=0xB0; break; /* 3 */
case 4: p=0x99; break; /* 4 */
case 5: p=0x92; break; /* 5 */
case 6: p=0x82; break; /* 6 */
case 7: p=0xF8; break; /* 7 */
case 8: p=0x80; break; /* 8 */
case 9: p=0x90; break; /* 9 */
default: break;
}
return(p);
}
/////////显示函数/////////
void display(int t)
{int a=t/10000,b=t/1000%10,c=t/100%10,d=t/10%10,e=t%10;
P1=0x00;
P0=getcode(a);coma=1;comb=0;delay();
P0=getcode(b);coma=0;comb=1;delay();
P0=getcode(c);comb=0;comc=1;delay();
P0=getcode(d);comc=0;comd=1;delay();
P0=getcode(e);comd=0;come=1;delay();
}

/* 键扫描函数 */
uchar keyscan(void)
{
uchar scancode,tmpcode;
P2 = 0xf0; // 发全0行扫描码
if ((P2&0xf0)!=0xf0) // 若有键按下
{
delay(); // 延时去抖动
if ((P2&0xf0)!=0xf0) // 延时后再判断一次,去除抖动影响
{
scancode = 0xfe;
while((scancode&0x10)!=0) // 逐行扫描
{
P2 = scancode; // 输出行扫描码
if ((P2&0xf0)!=0xf0) // 本行有键按下
{
tmpcode = (P2&0xf0)|0x0f;

/* 返回特征字节码,为1的位即对应于行和列 */
return((~scancode)+(~tmpcode));
}
else scancode = (scancode<<1)|0x01; // 行扫描码左移一位
}
}
}
return(0); // 无键按下,返回值为0
}
/////////////T0中断/////////
timer0 () interrupt 1
{
Q=~Q;
i=~i;
if(i)
{TL0=65536-(1000000/y*(1-x/100))%256; ////输出低电平状态计数器所需溢出次数///
TH0=65536-(1000000/y*(1-x/100))/256;}

else
{TL0=65536-(1000000/y*(x/100))%256; ////输出高电平状态计数器所需溢出次数///
TH0=65536-(1000000/y*(x/100))/256;}
}
///////////主函数///////////
main( )
{
int key,count,confirm;
Q=1;
TMOD=0x01;
EA=1;ET0=1;
while(1)
{TR0=1;red=1;
while(confirm<2)
{
key = keyscan(); // 调用键盘扫描函数
switch(key)
{case 0x11: if (count<=5) {x=10*x;count++;} break; // 1行1列,数字0
case 0x21: if (count<=5) {x=10*x+1;count++;} break;// 1行2列,数字1
case 0x41: if (count<=5) {x=10*x+2;count++;} break;// 1行3列,数字2
case 0x81: if (count<=5) {x=10*x+3;count++;} break;// 1行4列,数字3
case 0x12: if (count<=5) {x=10*x+4;count++;} break;// 2行1列,数字4
case 0x22: if (count<=5) {x=10*x+5;count++;}break; // 2行2列,数字5
case 0x42: if (count<=5) {x=10*x+6;count++;} break;// 2行3列,数字6
case 0x82: if (count<=5) {x=10*x+7;count++;} break;// 2行4列,数字7
case 0x14: if (count<=5) {x=10*x+8;count++;} break;// 3行1列,数字8
case 0x24: if (count<=5) {x=10*x+9;count++;} break;// 3行2列,数字9
case 0x44: if (count==5) {if(confirm==0)
{y=x;x=0;count=0;red=0;green=1;}confirm++;} break;// 3行3列,确认键
//输入完频率,按下确认键,再输入占空比
case 0x84: x=0;count=0; break; // 3行4列,取消键
default: break;
}
display(x);
}
TR0=1;
if(new==0)
{ delay();if(new==0){confirm=0;y=0;x=0;count=0;} }
}}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
康干Td
2008-03-28 · TA获得超过1650个赞
知道小有建树答主
回答量:1678
采纳率:0%
帮助的人:935万
展开全部
这种东西买一个就可以了。

很成熟的产品,自己做反而更贵。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cbing2000
2008-03-29 · TA获得超过1274个赞
知道小有建树答主
回答量:990
采纳率:100%
帮助的人:437万
展开全部
呵呵!~楼上的楼上 这么长程序 没有一个电路图 什么管脚干什么用都很难弄清楚 也真是辛苦了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
呢以俺连廉
2008-03-28 · TA获得超过6344个赞
知道大有可为答主
回答量:1645
采纳率:66%
帮助的人:1095万
展开全部
百度一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式