加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入

基于51单片机函数信号发生器波形发生器

10/29 08:57
1474
服务支持:
技术交流群

完成交易后在“购买成功”页面扫码入群,即可与技术大咖们分享疑惑和经验、收获成长和认同、领取优惠和红包等。

虚拟商品不可退

当前内容为数字版权作品,购买后不支持退换且无法转移使用。

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论
放大
实物图
相关方案
  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

功能要求:

1.本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机

2.LCD1602液晶显示波形种类和频率值(10-100HZ)。

3.按键设置波形种类和设定频率步进值。

4.电位器器改变振幅(0V-3.5V稳定)。

5.本设计可产生正弦波锯齿波三角波矩形波

6.有四个指示灯分别指示发出的是哪种波形,方便明了。

uchar code juchi[64]={
0,4,8,12,16,20,24,28,32,36,40,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,130,134,138,142,
146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,215,219,223,227,231,235,239,243,247,251,255
};					  //锯齿波取码

void delay(uint xms)	 //延时函数
{
	int a,b;
	for(a=xms;a>0;a--)
		for(b=110;b>0;b--);
}
void write_com(uchar com)		//写命令函数
{
	lcdrs=0;
	P0=com;	
	delay(1);
	lcden=1;
	delay(1);						 			  
	lcden=0;
}

void write_date(uchar date)		//写数据函数
{
	lcdrs=1;
	P0=date;
	delay(1);
	lcden=1;
	delay(1);
	lcden=0;
}

//自定义字符集
void Lcd_ram()      
{ 
	uint i,j,k=0,temp=0x40; 
	for(i=0;i<7;i++)
	{
	   for(j=0;j<8;j++)
	   {
	    write_com(temp+j);
	    write_date(zifu[k]);
	    k++;
	   }
	   temp=temp+8;
	}
}

void init_lcd()					//初始化函数
{
	uchar i;								  
	lcden=0;					//默认开始状态为关使能端,见时序图  
	Lcd_ram();
	write_com(0x0f);
	write_com(0x38);			//显示模式设置,默认为0x38,不用变。
	write_com(0x01);			//显示清屏,将上次的内容清除,默认为0x01. 
	write_com(0x0c);			//显示功能设置0x0f为开显示,显示光标,光标闪烁;0x0c为开显示,不显光标,光标不闪
	write_com(0x06);			//设置光标状态默认0x06,为读一个字符光标加1. 
	write_com(0x80);			//设置初始化数据指针,是在读指令的操作里进行的
	for(i=10;i<20;i++)			   //显示初始化
	{
		write_date(table1[i]);
	}
	write_com(0x80+0x40);
	for(i=0;i<9;i++)
	{
		write_date(table1[i]);
	}
	write_com(0x80+10);
	write_date(0);
	write_date(1);
	write_date(0);
	write_date(1);
	write_date(0);
	write_date(1);
	write_com(0x80+0x40+0x09);
	write_date(' ');
	write_date('1');
	write_date('0');
	write_date('.');
	write_date('0');
	write_date('H');
	write_date('z');
}
void initclock()			   //时钟初始化
{
	TMOD=0x01;
	TH0=a;
	TL0=b;
	EA=1;
	ET0=1;
	TR0=1;
}
void display()				   //显示函数
{
	uchar qian,bai,shi,ge;
	qian=pinlv/1000;
	bai=pinlv%1000/100;
	shi=pinlv%1000%100/10;
	ge=pinlv%1000%100%10;
	write_com(0x80+0x40+0x09);

   	if(qian==0)
	write_date(' ');
	else
	write_date(table[qian]);
	if(qian==0&&bai==0)
	write_date(' ');
	else
	write_date(table[bai]);
	write_date(table[shi]);
	write_date('.');
	write_date(table[ge]);
	write_date('H');
	write_date('z');
	if(boxing==0)
	{
		write_com(0x80+10);
		write_date(0);
		write_date(1);
		write_date(0);
		write_date(1);
		write_date(0);
		write_date(1);
		led3=1;
		led0=0;
	}
	if(boxing==1)
	{
		write_com(0x80+10);
		write_date(2);
		write_date(3);
		write_date(2);
		write_date(3);
		write_date(2);
		write_date(3);
		led0=1;
		led1=0;
	}


	if(boxing==2)
	{
		write_com(0x80+10);
		write_date(4);
		write_date(5);
		write_date(4);
		write_date(5);
		write_date(4);
		write_date(5);
		led1=1;
		led2=0;
	}
	if(boxing==3)
	{
		write_com(0x80+10);
		write_date(6);
		write_date(6);
		write_date(6);
		write_date(6);
		write_date(6);

  • 有需要资料的可了解一下.docx

相关推荐

电子产业图谱