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

📄 波形发生器.c

📁 这是本人参加电子设计竞赛过程中编写的几个单片机程序
💻 C
📖 第 1 页 / 共 3 页
字号:
void  write_24lc16b(uint adrress, uchar *wdata, uchar number)
{
	uchar control;
	uchar sub_addr;
	uchar flag;
	
	flag = 0;
	control = (uchar)(adrress >> 7) & 0x0e; 
	control |= 0xa0;  
	sub_addr = (uchar)(adrress & 0x00ff);
	
	do
	{
    		flag = ISendStr(control, sub_addr, wdata, number);
	}while(flag == 0);

}

/**************************************************************************
                     读函数                				                  *
函数原型: void  read_24lc16b(uint adrress, uchar *data, uchar number);  *
功能:       向24lc16b以address地址开始的单元读number个数据,number从1到2048*
  
**************************************************************************/
void  read_24lc16b(uint adrress, uchar *rdata, uchar number)
{
	uchar control;
	uchar sub_addr;
	uchar flag;
	
	flag = 0;
	control = (uchar)(adrress >> 7) & 0x0e; 
	control |= 0xa0; 
	sub_addr = (uchar)(adrress & 0x00ff);
		
	do
	{
    		flag = IRcvStr(control, sub_addr, rdata, number);
	}while(flag == 0);
}

void write_string(uchar  word_data[16],uchar  hang,uchar  lie )        //对LCD进行字符写入											
{//hang 1-4  ,lie1-16
	uchar  i;
	uchar lie1;
	if(hang<=4&&lie<=16)
	{
	if(lie<=8)
     	 for(i=0;i<16;i++)
	     {
			 if(i%2==0)
			 {
				 _nop_();
			      setlstartx(strat_xaddr+2*hang-2);//设置行1
		          setlstarty(strat_yaddr+8*lie-8+i/2);//设置列
		          lcdlwrite(word_data[i]);
			 }
			else
			{
				_nop_();
			    setlstartx(strat_xaddr+2*hang-1);//设置行1
		        setlstarty(strat_yaddr+8*lie-8+i/2);//设置列
		        lcdlwrite(word_data[i]);
			}
				_nop_();
		}

		else
     {
	     lie1=lie-8;
 	     for(i=0;i<16;i++)
	     {
			 if(i%2==0)
			 {
				 _nop_();

			      setrstartx(strat_xaddr+2*hang-2);//设置行1
		          setrstarty(strat_yaddr+8*lie1-8+i/2);//设置列
		          lcdrwrite(word_data[i]);
			 }
			else
			{
				_nop_();
			    setrstartx(strat_xaddr+2*hang-1);//设置行1
		        setrstarty(strat_yaddr+8*lie1-8+i/2);//设置列
		        lcdrwrite(word_data[i]);
			}
				_nop_();
  		
		}
	
	}
	}
	else
			_nop_();

}

/* 对LCD进行汉字字符写入*/
void  write_chinese(uchar  word_datas1[32], uchar  hang,uchar  lie )
{
uchar  i;
uchar  lie1;

	if(hang<=4&&lie<=8)
	   {
		if(lie<=4)
 
 	     for(i=0;i<32;i++)
	     {
			 if(i%2==0)
			 {
				 _nop_();
			      setlstartx(strat_xaddr+2*hang-2);//设置行1
		          setlstarty(strat_yaddr+16*lie-16+i/2);//设置列
		          lcdlwrite(word_datas1[i]);
			 }
			else
			{
				_nop_();
			    setlstartx(strat_xaddr+2*hang-1);//设置行1
		        setlstarty(strat_yaddr+16*lie-16+i/2);//设置列
		        lcdlwrite(word_datas1[i]);
			}
				_nop_();
		}
		else
		{
		 lie1=lie-4;
 	     for(i=0;i<32;i++)
	     {
			 if(i%2==0)
			 {
				 _nop_();
			      setrstartx(strat_xaddr+2*hang-2);//设置行1
		          setrstarty(strat_yaddr+16*lie1-16+i/2);//设置列
		          lcdrwrite(word_datas1[i]);
			 }
			else
			{
				_nop_();
			    setrstartx(strat_xaddr+2*hang-1);//设置行1
		        setrstarty(strat_yaddr+16*lie1-16+i/2);//设置列
		        lcdrwrite(word_datas1[i]);
			}
				_nop_();
  		
		}
	}
	}
	else
			_nop_();
}	


void write_data(uint datas,uchar i,uchar j)//第i行第j列开始显示;注:data的值0~9之间
{
     if(datas<10)
     {
		 switch(datas)
		 {
		 case 0:
			 write_string(shuzi0,i,j);
			 break;
         case 1:
			 write_string(shuzi1,i,j);
			 break;
         case 2:
			 write_string(shuzi2,i,j);
			 break;
		 case 3:
			 write_string(shuzi3,i,j);
			 break;
		 case 4:
			 write_string(shuzi4,i,j);
			 break;
		 case 5:
			 write_string(shuzi5,i,j);
			 break;
         case 6:
			 write_string(shuzi6,i,j);
			 break;
         case 7:
			 write_string(shuzi7,i,j);
			 break;
		 case 8:
			 write_string(shuzi8,i,j);
			 break;
		 case 9:
			 write_string(shuzi9,i,j);
			 break;
		 }
	 }
     else 
		 _nop_();
}

//数值的液晶显示
void show_data(double print,uchar hang,uchar lie,uchar wei)
{
	 long printz;
	 bit biaozhi;
	 uint  m=0;
	 uint  counter=0;
	 biaozhi=0;
	 if(print>=10000||print<=0.0001)//科学计数法
     {   if(print>=10)
		 {
		 biaozhi=1;
	      for(;;)
		  {		      
              print=print/10; 
			  counter++;
			  if(print<10)
				  break;
			  else
				  _nop_();
		  }
		 }
         else if(print<1&&print>0)
		 {
		 for(;;)
		 {
		      print=print*10;
 			  counter++;
			  if(print>=1)
				  break;
			  else
				  _nop_();
		 }
		 }
	     else if(print>=1&&print<10)
		     biaozhi=1;
	     else
		     _nop_();
	 
	     for(m=0;m<=wei;m++)
		 {
		 if(m==1)
		     _nop_();	 
	     else
		 {
			 printz=(long)(print);
			 printz=printz%10;
			 write_data(printz,hang,lie+m);
	         print=print*10;
		 }
		 }
	     write_string(dian,hang,lie+1);
	     write_string(space,hang,lie+wei+1);
	     write_string(exp,hang,lie+wei+2);
	     if(biaozhi==0)
		     write_string(fuhao,hang,lie+wei+3);
	     else
	         write_string(space,hang,lie+wei+3);
	         write_data(counter,hang,lie+wei+4);
	}
	else//小数表示
	{
		 if(print>=10)
		 {
			 for(;;)
			 {		      
              print=print/10; 
			  counter++;
			  if(print<10)
				  break;
			  else
				  _nop_();
			 }
		 }
	     for(m=0;m<=wei;m++)
		 {
			 if(m=counter+1&&m!=wei)
				write_string(dian,hang,lie+counter+1); 
			 else
			 {
			 printz=(long)(print);
			 printz=printz%10;
			 write_data(printz,hang,lie+m);
	         print=print*10;
			 }
          }
	}
}

void show_bfs(double print,uchar hang,uchar lie,uchar wei)//百分数(0~1)
{
     long printz;
	 bit biaozhi;
	 uint  m=0;
	 uint  counter=0;
	 biaozhi=0;
	 if(print<1&&print>0)
     {
		 print=print*100;
		 if(print>=10)
		 {
              biaozhi=1;
			  print=print/10;
		 }
	     for(m=0;m<=wei;m++)
		 {
		 if(m==1&&biaozhi==0)
		     _nop_();
		 else if(m==2&&biaozhi==1)
		     _nop_();	
	     else
		 {
			 printz=(long)(print);
			 printz=printz%10;
			 write_data(printz,hang,lie+m);
	         print=print*10;
		 }
		 }
		 if(biaozhi==0)
	         write_string(dian,hang,lie+1);
		 else
			 write_string(dian,hang,lie+2);
	     write_string(baifenhao,hang,lie+wei+1);
	}
	else
		_nop_();

} 




/*液晶显示使用的字符数据*/
uchar code shuzi0[16] = {
	
	0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,
	0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00};	    /*"0"*/

uchar code shuzi1[16] = {
	0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,
	0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00};	    /*"1"*/

uchar code shuzi2[16] = {
	0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,
	0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00};	    /*"2"*/

uchar code shuzi3[16] = {
	0x00,0x00,0x30,0x18,0x08,0x20,0x88,0x20,
	0x88,0x20,0x48,0x11,0x30,0x0E,0x00,0x00};	    /*"3"*/

uchar code shuzi4[16] = {
	0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,
	0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00};	    /*"4"*/

uchar code shuzi5[16] = {
	0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,
	0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00};	    /*"5"*/

uchar code shuzi6[16] = {
	0x00,0x00,0xE0,0x0F,0x10,0x11,0x88,0x20,
	0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00};	    /*"6"*/

uchar code shuzi7[16] = {
	0x00,0x00,0x38,0x00,0x08,0x00,0x08,0x3F,
	0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00};	    /*"7"*/

uchar code shuzi8[16] = {	
	0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,
	0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00};	    /*"8"*/

uchar code shuzi9[16] = {	
	0x00,0x00,0xE0,0x00,0x10,0x31,0x08,0x22,
	0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00};	    /*"9"*/
uchar code exp[16]={
	0x08,0x20,0xF8,0x3F,0x88,0x20,0x88,0x20,
	0xE8,0x23,0x08,0x20,0x10,0x18,0x00,0x00};	    /*"E"*/
uchar code space[16]={
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};	    /*" "*/
uchar code fuhao[16]={
	0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,
	0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01};	    /*"-"*/
uchar code dian[16]={		
	0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};	    /*"."*/
uchar code baifenhao[16]={
    0xF0,0x00,0x08,0x21,0xF0,0x1C,0x00,0x03,
    0xE0,0x1E,0x18,0x21,0x00,0x1E,0x00,0x00};      /*"%"*/
uchar code string_k[16]={
0x08,0x20,0xF8,0x3F,0x00,0x24,0x00,0x02,
0x80,0x2D,0x80,0x30,0x80,0x20,0x00,0x00};         /*"k"*/
uchar code string_H[16]={
0x08,0x20,0xF8,0x3F,0x08,0x21,0x00,0x01,
0x00,0x01,0x08,0x21,0xF8,0x3F,0x08,0x20};        /*"H"*/
uchar code string_z[16]={
0x00,0x00,0x80,0x21,0x80,0x30,0x80,0x2C,
0x80,0x22,0x80,0x21,0x80,0x30,0x00,0x00};        /*"z"*/
uchar code string_V[16]={
0x08,0x00,0x78,0x00,0x88,0x07,0x00,0x38,
0x00,0x0E,0xC8,0x01,0x38,0x00,0x08,0x00};       /*"V"*/

uchar code arrow[32]={
0x00,0x00,0x00,0x00,0xE0,0x07,0xE0,0x07,
0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,
0xE0,0x07,0xFE,0x7F,0xFC,0x3F,0xF8,0x1F,
0xF0,0x0F,0xE0,0x07,0xC0,0x03,0x80,0x01};          /*"arrow"*/

uchar code functionlists[11][32]={
 /*方(0) 波(1) 三(2) 角(3) 波(4) 正(5) 弦(6) 波(7)
 脉(8) 冲(9) 波(10)*/

0x08,0x40,0x08,0x40,0x08,0x20,0x08,0x10,
0x08,0x0C,0x08,0x03,0xF9,0x00,0x4A,0x00,
0x4C,0x20,0x48,0x40,0x48,0x40,0xC8,0x3F,
0x08,0x00,0x08,0x00,0x08,0x00,0x00,0x00,/*"方",0*/

0x10,0x04,0x60,0x04,0x01,0xFF,0xE6,0x40,
0x00,0x30,0xF8,0x8F,0x88,0x80,0x88,0x41,
0x88,0x26,0xFF,0x18,0x88,0x18,0x88,0x26,
0x88,0x61,0x18,0xC0,0x08,0x40,0x00,0x00,/*"波",1*/

0x00,0x00,0x04,0x20,0x84,0x20,0x84,0x20,
0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,
0x84,0x20,0x84,0x20,0x84,0x20,0x84,0x20,
0x84,0x20,0x04,0x20,0x00,0x20,0x00,0x00,/*"三",2*/

0x00,0x00,0x40,0x80,0x20,0x60,0xF0,0x1F,
0x98,0x04,0x97,0x04,0x92,0x04,0x92,0x04,
0xF2,0xFF,0x92,0x04,0x9A,0x04,0x96,0x44,
0x92,0x84,0xF0,0x7F,0x00,0x00,0x00,0x00,/*"角",3*/

0x10,0x04,0x60,0x04,0x01,0xFF,0xE6,0x40,
0x00,0x30,0xF8,0x8F,0x88,0x80,0x88,0x41,
0x88,0x26,0xFF,0x18,0x88,0x18,0x88,0x26,
0x88,0x61,0x18,0xC0,0x08,0x40,0x00,0x00,/*"波",4*/

0x00,0x20,0x02,0x20,0x02,0x20,0xC2,0x3F,
0x02,0x20,0x02,0x20,0x02,0x20,0x02,0x20,
0xFE,0x3F,0x82,0x20,0x82,0x20,0x82,0x20,
0x82,0x20,0x82,0x20,0x02,0x20,0x00,0x00,/*"正",5*/

0x02,0x01,0xF2,0x23,0x12,0x41,0x12,0x81,
0x3E,0x7F,0x00,0x00,0x04,0x21,0x84,0x71,
0x44,0x29,0xB5,0x25,0x86,0x22,0x84,0x21,
0xE4,0x28,0x44,0x70,0x04,0x20,0x00,0x00,/*"弦",6*/

0x10,0x04,0x60,0x04,0x01,0xFF,0xE6,0x40,
0x00,0x30,0xF8,0x8F,0x88,0x80,0x88,0x41,
0x88,0x26,0xFF,0x18,0x88,0x18,0x88,0x26,
0x88,0x61,0x18,0xC0,0x08,0x40,0x00,0x00,/*"波",7*/

0x00,0x60,0xFE,0x1F,0x12,0x41,0x12,0x81,
0xFE,0x7F,0x00,0x10,0x48,0x08,0xC8,0x47,
0x09,0x80,0xFE,0x7F,0x82,0x00,0x40,0x01,
0x38,0x06,0x10,0x1C,0x00,0x08,0x00,0x00,/*"脉",8*/

0x00,0x04,0x02,0x04,0x1C,0xFE,0xC8,0x01,
0x00,0x00,0xF8,0x03,0x08,0x01,0x08,0x01,
0x08,0x01,0xFF,0xFF,0x08,0x01,0x08,0x01,
0x08,0x01,0xF8,0x03,0x00,0x00,0x00,0x00,/*"冲",9*/

0x10,0x04,0x60,0x04,0x01,0xFF,0xE6,0x40,
0x00,0x30,0xF8,0x8F,0x88,0x80,0x88,0x41,
0x88,0x26,0xFF,0x18,0x88,0x18,0x88,0x26,
0x88,0x61,0x18,0xC0,0x08,0x40,0x00,0x00/*"波",10*/};

uchar code shujuchuanshu[4][32]={
 //发(0) 送(1) 接(2) 受(3)

0x00,0x40,0x10,0x20,0x3E,0x10,0x10,0x88,
0x10,0x87,0xF0,0x41,0x9F,0x46,0x90,0x28,
0x90,0x10,0x92,0x28,0x94,0x27,0x1C,0x40,
0x10,0xC0,0x10,0x40,0x10,0x00,0x00,0x00,/*"发",0*/

0x40,0x40,0x41,0x20,0xC6,0x1F,0x00,0x20,
0x40,0x40,0x48,0x48,0x49,0x44,0x4E,0x43,
0xF8,0x40,0x4C,0x41,0x4B,0x42,0x48,0x4C,
0x48,0x40,0x40,0x40,0x00,0x40,0x00,0x00,/*"送",1*/

0x08,0x02,0x08,0x42,0x08,0x81,0xFF,0x7F,
0x88,0x02,0x68,0x82,0x24,0x8A,0x2C,0x4E,
0xB4,0x53,0x25,0x32,0x26,0x12,0x34,0x2E,
0x2C,0x42,0x24,0xC2,0x20,0x02,0x00,0x00,/*"接",2*/

0x80,0x00,0x62,0x80,0x26,0x80,0x2A,0x41,
0x32,0x43,0x22,0x25,0x26,0x29,0x3A,0x11,
0x2B,0x11,0x21,0x2D,0x31,0x23,0x2F,0x40,
0xA5,0xC0,0x60,0x40,0x20,0x00,0x00,0x00/*"受",3*/};

uchar code pinlvzhi[3][32]={
 //频(0) 率(1) 值(2)

0x20,0x44,0x3C,0x43,0x20,0x20,0x20,0x10,
0xBF,0x0B,0x24,0x04,0x24,0x43,0x00,0x40,
0xF2,0x27,0x1A,0x18,0xD6,0x07,0x12,0x08,
0x12,0x10,0xF2,0x27,0x02,0x60,0x00,0x00,/*"频",0*/

0x00,0x08,0x0C,0x0A,0x14,0x09,0xA4,0x08,
0x04,0x08,0x64,0x0A,0x35,0x0B,0xAE,0xFE,
0x64,0x0A,0x24,0x0B,0x14,0x0C,0xA4,0x08,
0x14,0x09,0x04,0x0A,0x04,0x08,0x00,0x00,/*"率",1*/

0x80,0x00,0x40,0x00,0xF0,0xFF,0x2F,0x00,
0x02,0x40,0x04,0x40,0xE4,0x7F,0xA4,0x4A,
0xB4,0x4A,0xAF,0x4A,0xA6,0x4A,0xA4,0x4A,
0xE4,0x7F,0x04,0x40,0x00,0x40,0x00,0x00/*"值",2*/};

uchar code fuduzhi[3][32]={
// 幅(0) 度(1) 值(2)

0xF8,0x0F,0x08,0x00,0xFF,0xFF,0x08,0x08,
0xF8,0x0F,0x00,0x00,0x02,0x7F,0x7A,0x25,
0x4A,0x25,0x4A,0x25,0x4A,0x3F,0x4A,0x25,
0x4A,0x25,0x7A,0x25,0x02,0x7F,0x00,0x00,/*"幅",0*/

0x00,0x80,0x00,0x60,0xFC,0x1F,0x04,0x80,
0x24,0x80,0x24,0x42,0xFC,0x46,0xA5,0x2A,
0xA6,0x12,0xA4,0x12,0xFC,0x2A,0x24,0x26,
0x24,0x42,0x24,0xC0,0x04,0x40,0x00,0x00,/*"度",1*/

0x80,0x00,0x40,0x00,0xF0,0xFF,0x2F,0x00,
0x02,0x40,0x04,0x40,0xE4,0x7F,0xA4,0x4A,
0xB4,0x4A,0xAF,0x4A,0xA6,0x4A,0xA4,0x4A,
0xE4,0x7F,0x04,0x40,0x00,0x40,0x00,0x00/*"值",2*/};

uchar code bujinzhi[4][32]={
// 步(0) 进(1) 选(2) 择(3)

0x00,0x00,0x20,0x44,0x20,0x44,0x20,0x42,
0xBC,0x41,0x20,0x20,0x20,0x20,0x20,0x20,
0xFF,0x17,0x24,0x10,0x24,0x08,0x24,0x04,
0x24,0x03,0x20,0x02,0x20,0x00,0x00,0x00,/*"步",0*/

0x80,0x00,0x82,0x40,0x9C,0x20,0x88,0x1F,
0x00,0x20,0x88,0x50,0x88,0x4C,0xFF,0x43,
0x88,0x40,0x88,0x40,0x88,0x40,0xFF,0x5F,
0x88,0x40,0x88,0x40,0x80,0x40,0x00,0x00,/*"进",1*/

0x40,0x00,0x40,0x40,0x42,0x20,0xCC,0x1F,
0x00,0x20,0x50,0x48,0x4E,0x46,0xC8,0x41,
0x48,0x40,0x7F,0x40,0xC8,0x47,0x48,0x48,
0x48,0x48,0x40,0x4E,0x00,0x40,0x00,0x00,/*"选",2*/

0x08,0x42,0x08,0x81,0xFF,0x7F,0x88,0x00,
0x48,0x00,0x08,0x08,0x42,0x09,0x46,0x09,
0x2A,0x09,0xD2,0xFF,0x2A,0x09,0x46,0x09,
0x42,0x09,0x80,0x08,0x80,0x08,0x00,0x00/*"择",3*/};

⌨️ 快捷键说明

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