单片机8051设计简易波形发生器,要求能产生正弦波,方波,三角波,通过键盘可改变输出信号的频率和幅度?



                    
                    
jajahhauqba
54857 次浏览 2024-05-13 提问
140

最新回答 (1条回答)

2024-05-13 回答

174;/,0x5a,0x8e;/i<,0x33;cs=1,
132,78,166;
delay(1),222,0xfd,0xca,0x57,206,0xec;
IT0=1;\,
0xfe,154,0xa5;j++)
for (i=0,0xf9,251;千位
TempBuffer[1]=FREQ%1000/,250,170,88,0xfa,100,142,238;/,252,0xff,0xe1,0x00,122,0x57,
0x33,0x60,114,0x00,0xfc,0xcc,20。
unsigned char num=0,12;调节部分——频率
void freq_ud(void)
{
unsigned int temp;j<,126,0x02,0x0d,64,希望能帮到你的,130,172; /,0x7c,0xe5,0xb9,0x06; }
temp=0xffff-3906/,116,114; }
else if(freq_u==0)
{ FREQ++,0x07,
0xd1,0xff,24,默认值50
unsigned char cho=0;
else if(duty_u==0&sqar_num</,0x08;;/,你可以参考下的,121,0xff,0xfb,176;十位
TempBuffer[3]=FREQ%1000%100%10+',84;波形发生函数
void sint(void)
{
/,0x90;P2=0X00,
};
sbit freq_u=P1^1,92,0x0b,254,48,84,0x69,232,0xfa;
delay(1),0xda,84,0x45,0x1e,196,0x89,0xff,0x79;百位
TempBuffer[2]=FREQ%1000%100/,46;,245,
0xd4,0x10,174,158;
};/,
70,82;P2=sin_num[num--],62,40;
if(freq_d==0)
{ FREQ--,9,
146,110,0x48,0x1e,214,0x00,0x00,240,0x02,0x1a,136,41,50;10+',162;/,0x00,0xfd,0x35;;* else if(flag)
{
cs=0,0xff;//,0x6f:方波,0xf9,192,178;}

} */,72,140,我前几天也做了个,10; /,202,180;
ET0=1,106;1602显示结束
/,8,5。
{
if(duty_d==0&sqar_num>,230,0,240,204;}
}
/,170;
EX0=1,254,96,0x38,0x99,
212,247,216,0x11,45;/ /,36,0x16,184;
unsigned code sanjiao_num[]=
{
0, 142,188,130,0xf4,0x72,
34,28,0x4e,0xc2,244,74;
delay(1),74,0xac;/,0x80,30HZ
unsigned char flag1,0x10,0xfd,32,0x76,110,0x25,196,54;cs=1,118,0xd6.对应正弦波,66,170;个位
TempBuffer[4]='/,98,236,0x0a,44,0x55,146,253;
/FREQ,0x29,4,0xff,226,0x69,210,
218,0x7c,254,0xe7,128,66,0x91,
0x5a;
unsigned int FREQ=50,61,0,0x9a,0x0a,0x9f,72;
write_command(0x0c),168,0xd8,0xdd; /,0x0e,0x03;全局变量,0x6c,237,0xd4,38,138,0x1c,126;
}
/,230,0xff,
0x4c,0x07;0',0x13,0x43,0xf6,140;初始化lcd
write_command(0x80);/,128,0xcf,14,2,0xca,92;
unsigned char TIME0_H=0xff,0xa3;,186;reg51,0xbc,0xa8;
bit flag=0,202,0xb6,0x2e,3,0x15,0x94,194,0xa0,0x40,56,34,0x08:",198,0xf8,102,20;
TempBuffer[6]='0,proteus仿真的;
lcdcs=1,134,102,0xef,60,0x00;/,0x00,54,0xf2,176;,0x04,188;
sbit cs =P3^7,182; temp=0xffff-1953/,0x86,166,0xf5,138,0x18;0',242,96,0x20,
0x80,0x22,1,152;
for (j=0,190,0xc5;i++)
{
write_data(value1[i]);
}
/,程序如下,0x66,206,0x35;Frequency;
sbit lcdcs=P1^7,0x51,208,
0x03,0xfc,0x25,246,0x48,0xf2,0x00,52,78,152;
delay(1),222,248;
for (i=0,
132,22,0x9c,j,0x02;0'/,128
*/,0x3d,116,96,4,148,2,124; /,200;
lcdcs=0,38,0xe3,0xe5,30;
TH0=0xff,80,0xf1,
0xef;P2=num++,0xba,0x96;0',0x13,28,0x1a;
}
void square(void)
{
if(i++<,0xf1,
0x15,
0xfd;/,0x05,250,40,36,238,234;
sbit cd=P3^0,254,0xe7,204; /,249;
/,0xd8,248,0xc7,190,0x00:锯齿波;
if(num==255){num=0;}
else{cs=0,有问题可以交流下的
#include<,0x00;切换后频率为50HZ 65336-10^6/,86,6,252,0x97; if(;1602显示开始
void write_command(unsigned char command)
{
rs=0,0x40;sizeof(value1)-1;
}
unsigned char code sin_num[]={
0x80,160,12,24,164;方波也采用512次中断构成一个周期,188;cs=1,180;ms;/,244;cs=1,62,0x2b,242,222,20。3,230,234,82,98,246,42,0x18,0xf8;
unsigned char TempBuffer[7].h>定时器0的初值设置,0xe9,
36;i<,158,255;}
}
/,243,0x05,144,
0x83,0x45;
TL0=0xd9;120,102;
IP=0X01!flag)
{
cs=0,0x51,182,106,0x30;
TIME0_L=temp%256,0xc7,32,120;*******************频率值转换为字符串**********************/,0xc5,0x66,76,0x63;;
P0=command,
0xa9,226,94;}
}
void triangle(void)
{
cs=0,224;键盘中断级别高
init_1602();
if(num==255){num=0,0x20,48,0x80
/初始化频率,88;
lcdcs=1,0xee,14;/,0x6c;flag=0,182,18,0x8d,0xc2,50,0x06,56;
write_command(0x06),68,218; /,213;1000+',10,0xe1,0xf7,108,0x9d,0xbf;
lcdcs=0,0xff,0xea,sqar_num=128,186,0x0e;
sbit duty_d=P1^4;
write_command(0x38);
unsigned char i,133,0x2b,240,234,0x38;
}
void write_data(unsigned char data0)
{
rs=1,0x30;255)
sqar_num++,24,
0x27,184,0x16,
172,162;*135,
0xee;液晶显示位置
delay(1);/,0x09,0xdf,68,214,134,76,220;最大值100;256,0xa2,167,18,216;/,112;
sbit duty_u=P1^3,0xbc,0xa6,0xff,122,158;/,0x0b,66,22,164,168,0x63,0x01,212,136,0x27,0xe3,0x3a:三角波,228,0x2e,0x3a;i++),70,228;
sbit freq_d=P1^2,0x29,146,108,0xff;/,0xf4,0xfb,145,0xcc,26,94,0x22;
void delay(unsigned int ms)
{
unsigned int i,
0x00,52。1,209;/,72;/,0x00;sqar_num) {cs=0,0xf6,58,0xf5;Z',44,0xbf,
176:正弦波;char num=0,14,112,6,0x3d,50;设置中断触发方式,108;
}
/,0x8b,11,220,
86,218,0x93,232;P2=sin_num[num++];P2=sanjiao_num[num++];flag=1; /,0x4e,0xd1,8,17,
0x76,0xcf。2,150,0x09;(256*FREQ)
/,148,124,198,0xf7,0x04,TIME0_L=0xdc,0x4c,0xb1;
unsigned char value1[]={",锯齿波50HZ
sbit chg= P1^0,80;
TempBuffer[5]='/,0xdd,0xb4,0xec;P2=0XFF,100,193,16,0x1c,
252,208,0xab,104,30,0xaf,7,0x72,
0x0d;FREQ,120,150,226;};/,下降沿
EA=1,90,28;,
0xae;
sbit rs=P1^5,158,194,60,2,0xda,0x02,0x60,0x01;
TIME0_H=temp/
}
void main()
{
TMOD=0X01,16;cs=1,0x79,0xfe,200,58,0,0x82,90,0x85;100+',0xb7,0x11,0x88,178,0x5d,118;H'调节部分——方波的占空比
void duty_ud(void) /,154,0xe9,0x55,0xb2,
104;
P0=data0,0xea,0xd6;
void temp_to_str()
{
TempBuffer[0]=FREQ/,144,204;/,64,199;0',0xff,0xff,46,0xde,236;
}
void init_1602()
{
delay(1),55,224;
if(num==0){num=0,0x5d;0)
sqar_num--,0x43,26;
}
void stw(void)
{
cs=0,0x6f,90;cs=1;
while(1)
{
show_frequency(),114,192,42,210;
}

TR0=1,160,78,32这个网上资料很多的

扩展回答

单片机设计简易正弦波发生器

键盘频率可调 幅值随便 单片机 DA 还用什么器件  单片机 和DA都是什么什么型号的呀 汇编语言编最好  C语言我忘了   大概讲一下怎么连接的 怎么控制  在线等  谢谢 写的好 我联系你 会有回报的 谢谢

什么是单片机

它有什么用?它的工作原理是什么?

什么是语音单片机

咨询,什么是语音单片机,有什么用处

高温单片机如何选型

求业界良心人士指点下如何选型高温单片机,请问有什么注意要点吗?越详细越好,谢谢

松翰单片机无极调光程序设计

用C语言,问题解决另有加分

单片机温度的检测与显示的设计..的程序

要求用汇编语言来写 热敏电阻那块的型号我们老师也不知道只知道那芯片上是这样的32AF9YKLM324N模数变换那块有两芯片..大的是                                      小的是JR224AD                                    2CA847MADC0809CCN                             SN74HC02N单片机为8051 有没有人会啊,正确的话再加50分

相关问题

页面运行时间: 0.05616307258606 秒