MMA7260的STC12C5410AD单片机程序

发布者:中和子最新更新时间:2015-05-27 来源: 51hei关键字:MMA7260  STC12C5410AD  单片机 手机看文章 扫描二维码
随时随地手机看文章
头文件可以在本站的软件下载区下载 在51hei.com上搜索即可找到
#include "STC12C5410AD.H"  
sbit    MMA7260sleep=P1^0;     //MMA7260休眠与否,0-休眠;1-正常工作
//---------------------------------------
//名称: 延时约1毫秒函数
//-----------------------------------------
void delay1ms()
{
  word k;
 for(k=0;k<12000;k++);
void delayms(word ms)
{
  word k,j;
 for(j=0;j
  for(k=0;k<12000;k++);
}
//---------------------------------------
//名称: 串口数据发送函数
//-----------------------------------------
void uart_putchar(byte ch)
{
  TI=0;
  if (ch == ' ') 
  {
    
      SBUF= 0x0d;            //output'CR'
   while(!TI); 
   return;
   }  
   SBUF=ch;
   while(!TI); 
}
//---------------------------------------
//名称: 串口数据接收函数
//-----------------------------------------
byte uart_getchar(void)
{   
 
 if(RI)
    { 
  RI=0;   
  return SBUF;   //有数据接收到,返回1
  }
  else
  {
  return 0;    //无数据接收到,返回0
  }
}
void putstr(char ch[])
{
  byte ptr=0;
  while(ch[ptr])
  {
      uart_putchar((byte)ch[ptr++]);
  }    
 
}
//---------------------------------------
//名称: 模数转换函数(8位)
//-----------------------------------------
byte ReadAD(byte ch)
{
  ADC_DATA = 0;                 //清A/D转换结果寄存器 
    
 ADC_CONTR = 0xF8|ch;   //0000,1000ADCS = 1,启动转换
 delay1ms();
 do{;}   
    while((ADC_CONTR&0x10)==0);   //0001,0000等待A/D转换结束
 ADC_CONTR = ADC_CONTR&0xE7;   //1110,0111清ADC_FLAG位,停止A/D转换
 return ADC_DATA;  
}
/***************************************************
  把0--255的数值转化为3位字符串格式
****************************************************/
void Byte2Str3(char zifu[],byte val,byte StartPtr)
{
  char characters[11]="0123456789";  
  byte tv=0;
 
  tv=val/100;
  zifu[StartPtr++] = characters[tv];
  tv=(val%100)/10;
  zifu[StartPtr++] = characters[tv];
  tv=val%10;
  zifu[StartPtr] = characters[tv];
  //zifu[3] = '';
  return;
}
 
 
//---------------------------------------
//名称: 初始化函数函数
//-----------------------------------------
void init_ad(void)
{
  P1M0=0x07;     //设置P1.012为高阻输入,以准备AD
 P1M1=0x00;
    ADC_CONTR = 0xf8; //1000,0000打开A/D转换电源
 delay1ms();
 ADC_CONTR = ADC_CONTR&0xe0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
}
void init_uart(void) //P3.0,3.1
{
    TMOD=0x20;     //TH1=256-INT(22118400/32/12/baud+0.5)
    TH1=0xfa;  //0xfa,9600
    TL1=0xfd;  //0xff,57600
    PCON=0x00;
    TR1=1;
    SCON=0xd0;
}
void init_dev(void)
{   
 init_ad();
 init_uart();
}
//---------------------------------------
//名称: 主函数 
//-----------------------------------------
void main()
{
 char txtbuf[17]=" ADC Val:  "; 
 byte adbuf;
 init_dev();
 putstr(" MMA7260 starts working! ");  
 MMA7260sleep=1;//MMA7260开始工作
 while(1)
 {  
     //ADC
  adbuf=ReadAD(0); //X AXIS
   Byte2Str3(txtbuf,adbuf,11);    
        putstr(txtbuf);
  
  adbuf=ReadAD(1); //Y AXIS
   Byte2Str3(txtbuf,adbuf,11);    
        putstr(txtbuf);
  
  adbuf=ReadAD(2); //Z AXIS
   Byte2Str3(txtbuf,adbuf,11);    
        putstr(txtbuf);
 
  delayms(300);
 }
}
关键字:MMA7260  STC12C5410AD  单片机 引用地址:MMA7260的STC12C5410AD单片机程序

上一篇:单片机程序巧用printf
下一篇:DS3231高精度时钟模块程序

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved