⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_dac0832.c

📁 项目描述:产生正弦波,方波,三角波的能力.可存储多种波形,输出波形频率100Hz--200kHz,
💻 C
字号:
#include <reg51.h>
#include "LCD1602.c"

#define uchar unsigned char
#define uint unsigned int

uchar  code tab[128]={64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,109,111,113,
                      115,117,118,120,121,123,124,125,126,126,127,127,127,127,127,127,
                      127,126,126,125,124,123,121,120,118,117,115,113,111,109,106,104,
                      102,99,96,94,91,88,85,82,79,76,73,70,67,64,60,57,54,51,48,45,42,
                      39,36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,1,0,0,0,0,0,
                      0,0,1,1,2,3,4,6,7,9,10,12,14,16,18,21,23,25,28,31,33,36,39,42,45,48,51,54,57,60};


void delay( )
{
  uchar i;
  for(i=0;i<255;i++);
}


void saw()   //锯齿波.
{
 uchar i;
 while(1)
 {
  for(i=0;i<255;i++)
  P0=i;
  
 }
}

void tran()  //三角波
{
 uchar i;
 while(1)
 {
  for(i=0;i<255;i++)
  P0=i;
  for(i=255;i>0;i--)
  P0=i;
 }
}

void square()  //方波
{
  while(1)
  {
   P0=0x00;
   delay();
   P0=0xff;
   delay();  
  }

}

void sin()    //正弦波
{
  unsigned int  i;
  while(1)
  {
   if(++i==128)i=0;
   P0=tab[i];
     
  }
}

void key_press()
{
	 uchar key;
	 while(1)
	 {
	  if(P1==0xff)
	   delay();
	 if(P1==0xff)
	  key=P1; 
	 switch(key&0x0f)
	  {
	   case 0x0e:{disp_onechar(0,2);saw();};break;
	   case 0x0d:{disp_onechar(0,3);tran();};break;
	   case 0x0b:{disp_onechar(0,4);square();};break;
	   case 0x07:{disp_onechar(0,5);sin();};break;
	   default:disp_onechar(0,1);
	  }
	 } 
}





void main() 
{
 init();
 key_press();	
 while(1);  
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -