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

📄 voidce.c

📁 2008年山东省大学生电子设计大赛 c题 多功能电子计价秤 单片机用的 c8051f005
💻 C
字号:

#include "include.h"


unsigned char code dizhibiao[]={
0x00,0x00,0x00,0x4b,0x00,0x96,0x00,0xe1,0x01,0x2c,0x01,0x77,0x01,0xc2,0x02,0x0d,
0x02,0x58,0x02,0xa3,0x02,0xee,0x03,0x39,0x03,0x84,0x03,0xcf,0x04,0x1a,0x04,0x65,
0x04,0xb0,0x04,0xfb,0x05,0x46,0x05,0x91,0x05,0xdc,0x06,0x27,0x06,0x72,0x06,0xbd,
0x07,0x08,0x07,0x53,0x07,0x9e,0x07,0xe9,0x08,0x34,0x08,0x7f,0x08,0xca,0x09,0x15};


unsigned int duanhaozub[32];
//unsigned int duanhaozu[32]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};

int a,b,c,i;
/*--------------------------------------------
金额 9999.99
将一个浮点数按位拆开放入一个数组的第i位起
x:金额0x0f 总金额0x10
----------------------------------------------*/

uchar voice_yuan(uchar x,float num)
{
	uchar i=0;
	uint num_int;							//整数部分
	uint num_fra;							//小数部分
	num_int=(uint)num;
	num_fra=(uint)((num-num_int)*100);
//--------------------------------------------转换整数部分
	duanhaozub[i]=x;									//"金额"
	i++;
	if(num_int>=1000)
	{
		duanhaozub[i]=num_int/1000;		//转换千位
		i++;
		duanhaozub[i]=(num_int%1000)/100;//转换百位
		i++;
		duanhaozub[i]=(num_int%100)/10;	//转换十位
		i++;
		duanhaozub[i]=num_int%10;		//转换个位
	}
	else if(num_int>=100)
	{
		duanhaozub[i]=num_int/100;		//转换百位
		i++;
		duanhaozub[i]=(num_int%100)/10;	//转换十位
		i++;
		duanhaozub[i]=num_int%10;		//转换个位
	}
	else if(num_int>=10)
	{
		duanhaozub[i]=num_int/10;		//转换十位
		i++;
		duanhaozub[i]=num_int%10;		//转换个位
	}
	else
	{
		duanhaozub[i]=num_int;			//转换个位
	}
	i++;
	duanhaozub[i]=0x0b;					//转换小数点
	i++;
//-----------------------------------------------转换小数部分
	duanhaozub[i]=num_fra/10;			//转换十分位
	i++;
	duanhaozub[i]=num_fra%10;			//转换千分位
	i++;

	duanhaozub[i]=0x0c;				//"元"
	i++;
	return i;
}

/*--------------------------------------------
重量 99.999
将一个浮点数按位拆开放入一个数组的第i位起

----------------------------------------------*/

uchar voice_zhong(float num)
{
	uchar i=0;
	uint num_int;							//整数部分
	uint num_fra;							//小数部分
	num_int=(uint)num;
	num_fra=(uint)((num-num_int)*1000);
//--------------------------------------------转换整数部分
	duanhaozub[i]=0x0e;									//"金额"
	i++;

	if(num_int>=10)
	{
		duanhaozub[i]=num_int/10;		//转换十位
		i++;
		duanhaozub[i]=num_int%10;		//转换个位
	}
	else
	{
		duanhaozub[i]=num_int;			//转换个位
	}
	i++;
	duanhaozub[i]=0x0b;					//转换小数点
	i++;
//-----------------------------------------------转换小数部分
	duanhaozub[i]=num_fra/100;			//转换十分位
	i++;
	duanhaozub[i]=(num_fra%100)/10;
	i++;
	duanhaozub[i]=num_fra%10;			//转换千分位
	i++;

	duanhaozub[i]=0x0d;				//"元"
	i++;
	return i;
}



//***************************
//串行发送子程序 8BIT
void send(unsigned char isdx)
{ unsigned char isxcounter;
  SS=0;
  SCLK=0;
  for(isxcounter=0;isxcounter<8;isxcounter++)
  {if((isdx&0x01)==1)
   MOSI=1;
   else
   MOSI=0;
   isdx=isdx>>1;
   SCLK=1;
   delay(24);
   SCLK=0;
   delay(24);
  }
}
//****************************
//发送STOP指令,延时50MS
void isdstop(void)
{
  delay(120);
  send(0x30);
  SS=1;
  delay_ms(600);
}
//****************************
//发送上电指令,延时50MS
void isdpwrup(void)
{
  delay(120);
  SS=0;
  send(0x20);
  SS=1;
  delay_ms(600);  
}
//****************************
//发送掉电指令,延时50MS
void isdpwrdown(void)
{
  delay(120);
  send(0x10);
  SS=1;
  delay_ms(600);  
}
//****************************

//****************************
//发送setplay指令
void setplay(unsigned char adh,unsigned char adl)
{
 delay_ms(24);
 send(adl);
 delay(24);
 send(adh);
 delay(24);
 send(0xe0);
 SS=1;
 send(0xf0);
 SS=1;  
}
//****************************
//PALY 全部的函数
void play(uchar n)
{
  for(i=0;i<n;i++)
   {  
//	a=duanhaozu[i]*2;//调用数组duanhaozu
   a=duanhaozub[i]*2;//或者数组duanhaozub
	 _nop_();
     b=dizhibiao[a];
	 _nop_();
	 a=a+1;
     c=dizhibiao[a];
	 _nop_();
     setplay(b,c);
     delay(20);
	 while(ISDINT==1)//EOM未中断
     {;}//若''中断‘’,向下执行
     LED=1;
     isdstop();
    }  
}


//************************************

⌨️ 快捷键说明

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