久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2287|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

ADXL345中文PDF資料和源程序下載

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ADXL345中文資料下載


pdf文件:
ADXL345中文PDF.pdf (874.7 KB, 下載次數(shù): 10)

單片機(jī)源程序:
  1. #include<reg52.h>
  2. #include<math.h>
  3. #include"1602.h"
  4. #include  <INTRINS.H>
  5. #define SlaveAddress   0xA6   //1010 0110    定義器件在IIC總線中的從地址,根據(jù)ALT  ADDRESS地址引腳不同修改
  6.                               //ALT  ADDRESS引腳接地時(shí)地址為0xA6,接電源時(shí)地址為0x3A 0011 1010
  7. sbit sclk=P0^0;
  8. sbit sda=P0^1;
  9. float  dis_datax,dis_datay,dis_dataz,acc,acc1=1000;
  10. uchar BUF[8];
  11. uchar wan, qian, bai, shi ,ge,flag,miao,miao1,n;
  12. uint count;
  13. void conversion(uint temp_data)  
  14. {  
  15.     wan=temp_data/10000+0x30 ;
  16.     temp_data=temp_data%10000;   //取余運(yùn)算
  17. qian=temp_data/1000+0x30 ;
  18.     temp_data=temp_data%1000;    //取余運(yùn)算
  19.     bai=temp_data/100+0x30   ;
  20.     temp_data=temp_data%100;     //取余運(yùn)算     -e----------------eee-e
  21.     shi=temp_data/10+0x30    ;
  22.     temp_data=temp_data%10;      //取余運(yùn)算
  23.     ge=temp_data+0x30;  
  24. }
  25. void delay6us()                 //6us延時(shí)函數(shù)
  26. {
  27. _nop_(); _nop_();   

  28. }
  29. void delay_ms(uint n)       //N ms延時(shí)函數(shù)
  30. {
  31. uint x,y;
  32. for(x=n;x>0;x--)
  33.   for(y=110;y>0;y--);
  34. }
  35.                     /////
  36. void ADXL345_Start()
  37. {
  38.     sda = 1;                    //拉高數(shù)據(jù)線
  39.     sclk = 1;                    //拉高時(shí)鐘線
  40.     delay6us();                 //延時(shí)
  41.     sda = 0;                    //產(chǎn)生下降沿
  42.     delay6us();                 //延時(shí)
  43.     sclk = 0;                    //拉低時(shí)鐘線
  44. }
  45. void ADXL345_Stop()
  46. {
  47.     sda = 0;                    //拉低數(shù)據(jù)線
  48.     sclk = 1;                    //拉高時(shí)鐘線
  49.     delay6us();                 //延時(shí)
  50.     sda = 1;                    //產(chǎn)生上升沿
  51.     delay6us();                 //延時(shí)
  52. }
  53. void ADXL345_SendACK(bit ack)
  54. {
  55.     sda = ack;                  //寫(xiě)應(yīng)答信號(hào)
  56.     sclk = 1;                    //拉高時(shí)鐘線
  57.     delay6us();                 //延時(shí)
  58.     sclk = 0;                    //拉低時(shí)鐘線
  59.     delay6us();                 //延時(shí)
  60. }

  61. bit ADXL345_RecvACK()
  62. {
  63.     sclk = 1;                    //拉高時(shí)鐘線
  64.     delay6us();                 //延時(shí)
  65.     CY = sda;                   //讀應(yīng)答信號(hào)
  66.     sclk = 0;                    //拉低時(shí)鐘線
  67.     delay6us();                 //延時(shí)
  68.     return CY;
  69. }

  70. void ADXL345_SendByte(uchar dat)
  71. {
  72.     uchar i;
  73. // sclk = 0;                //拉低時(shí)鐘線
  74.     for (i=0; i<8; i++)         //8位計(jì)數(shù)器
  75.     {
  76.         dat <<= 1;              //移出數(shù)據(jù)的最高位
  77.         sda = CY;               //送數(shù)據(jù)口
  78.         sclk = 1;                //拉高時(shí)鐘線
  79.         delay6us();             //延時(shí)
  80.         sclk = 0;                //拉低時(shí)鐘線
  81.         delay6us();             //延時(shí)
  82.     }
  83.     ADXL345_RecvACK();
  84. }

  85. uchar ADXL345_RecvByte()
  86. {
  87.     uchar i;
  88.     uchar dat = 0;
  89.     sda = 1;
  90. // write_com(0x80);
  91.                    //使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù),
  92.     for (i=0; i<8; i++)         //8位計(jì)數(shù)器
  93.     {
  94.         dat <<= 1;
  95.         sclk = 1;                //拉高時(shí)鐘線
  96.         delay6us();             //延時(shí)
  97.         dat |= sda;             //讀數(shù)據(jù)               
  98.         sclk = 0;                //拉低時(shí)鐘線
  99.         delay6us();             //延時(shí)
  100.     }

  101.     return dat;
  102. }
  103. void Single_Write_ADXL345(uchar REG_Address,uchar REG_data)
  104. {
  105.     ADXL345_Start();                  //起始信號(hào)
  106.     ADXL345_SendByte(SlaveAddress);   //發(fā)送設(shè)備地址+寫(xiě)信號(hào)
  107.     ADXL345_SendByte(REG_Address);    //內(nèi)部寄存器地址,請(qǐng)參考中文pdf22頁(yè)
  108.     ADXL345_SendByte(REG_data);       //內(nèi)部寄存器數(shù)據(jù),請(qǐng)參考中文pdf22頁(yè)
  109.     ADXL345_Stop();                   //發(fā)送停止信號(hào)
  110. }
  111. uchar Single_Read_ADXL345(uchar REG_Address)
  112. {
  113. uchar REG_data;
  114.     ADXL345_Start();            



  115.                //起始信號(hào)
  116.     ADXL345_SendByte(SlaveAddress);           //發(fā)送設(shè)備地址+寫(xiě)信號(hào)
  117.     ADXL345_SendByte(REG_Address);                   //發(fā)送存儲(chǔ)單元地址,從0開(kāi)始
  118.     ADXL345_Start();                          //起始信號(hào)
  119.     ADXL345_SendByte(SlaveAddress+1);         //發(fā)送設(shè)備地址+讀信號(hào)
  120.     REG_data=ADXL345_RecvByte();              //讀出寄存器數(shù)據(jù)
  121. ADXL345_SendACK(1);   
  122. ADXL345_Stop();                           //停止信號(hào)
  123.     return REG_data;
  124. }
  125. void Multiple_read_ADXL345()
  126. {   
  127. uchar i;
  128.     ADXL345_Start();                          //起始信號(hào)
  129.     ADXL345_SendByte(SlaveAddress);           //發(fā)送設(shè)備地址+寫(xiě)信號(hào)    1010 0110
  130.     ADXL345_SendByte(0x32);                   //發(fā)送存儲(chǔ)單元地址,從0x32開(kāi)始 0011 0010
  131.     ADXL345_Start();                          //起始信號(hào)
  132.     ADXL345_SendByte(SlaveAddress+1);         //發(fā)送設(shè)備地址+讀信號(hào)    1010 0111
  133. for (i=0; i<6; i++)                      //連續(xù)讀取6個(gè)地址數(shù)據(jù),存儲(chǔ)中BUF
  134.     {
  135.         BUF[i] = ADXL345_RecvByte();          //BUF[0]存儲(chǔ)0x32地址中的數(shù)據(jù)
  136.         if(i == 5) ADXL345_SendACK(1);       //最后一個(gè)數(shù)據(jù)需要回NOACK
  137.         else ADXL345_SendACK(0);           //回應(yīng)ACK
  138.     }
  139.     ADXL345_Stop();                          //停止信號(hào)
  140.     delay_ms(10);
  141. }
  142. void Init_ADXL345()    //初始化ADXL345,根據(jù)需要請(qǐng)參考pdf進(jìn)行修改***********************
  143. {
  144. // delay(500);                     //上電延時(shí)
  145.    Single_Write_ADXL345(0x31,0x2B);   //測(cè)量范圍,正負(fù)16g,13位模式
  146.    Single_Write_ADXL345(0x2C,0x06);   //0000 0110速率設(shè)定為6.25 參考pdf13頁(yè)
  147.    Single_Write_ADXL345(0x2D,0x08);   //選擇電源模式   參考pdf24頁(yè)
  148.    Single_Write_ADXL345(0x2E,0x80);   //使能 DATA_READY 中斷
  149.    Single_Write_ADXL345(0x1E,0x00);   //X 偏移量 根據(jù)測(cè)試傳感器的狀態(tài)寫(xiě)入pdf29頁(yè)
  150.    Single_Write_ADXL345(0x1F,0x00);   //Y 偏移量 根據(jù)測(cè)試傳感器的狀態(tài)寫(xiě)入pdf29頁(yè)
  151.    Single_Write_ADXL345(0x20,0x05);   //Z 偏移量 根據(jù)測(cè)試傳感器的狀態(tài)寫(xiě)入pdf29頁(yè)
  152. }

  153. float operation(uchar starti)
  154. {
  155. float  dis_data ;
  156. int temp;
  157. temp=(BUF[starti+1]<<8)+BUF[starti];  //合成數(shù)據(jù)
  158. // write_com(0x80);  
  159. if(temp<0)
  160. {
  161.   temp=-temp;
  162.   flag=1;
  163. }
  164. else flag=0; //顯示空格
  165.     dis_data=(float)temp*3.9;  //計(jì)算數(shù)據(jù)和顯示,查考ADXL345快速入門(mén)第4頁(yè)
  166.   return dis_data;
  167. }
  168. void display_x()  //顯示x軸
  169. {   
  170.    conversion(dis_datax);          //轉(zhuǎn)換出顯示需要的數(shù)據(jù)
  171.    
  172. write_com(0x80);
  173. if(flag==0) write_dat(' ');
  174. else write_dat('-');
  175. write_dat('X');
  176. write_dat(':');
  177. write_dat(qian);
  178. write_dat('.');
  179. write_dat(bai);
  180.   write_dat(shi);
  181. write_dat('g');
  182. }
  183. void display_y() //顯示y軸
  184. {   
  185.    
  186.   // dis_datay=operation(2);
  187.     conversion(dis_datay);          //轉(zhuǎn)換出顯示需要的數(shù)據(jù)
  188. write_com(0x80+8);
  189. if(flag==0)  write_dat(' ');
  190. else write_dat('-');
  191. write_dat('Y');
  192. write_dat(':');
  193. write_dat(qian);
  194. write_dat('.');
  195. write_dat(bai);
  196.   write_dat(shi);
  197. write_dat('g');
  198. }
  199. void display_z()    //顯示z軸
  200. {  
  201. //  dis_dataz=operation(4);
  202.     conversion(dis_dataz);           //轉(zhuǎn)換出顯示需要的數(shù)據(jù)
  203. write_com(0x80+0x40);
  204. if(flag==0)    write_dat(' ');
  205. else write_dat('-');
  206. write_dat('Z');
  207. write_dat(':');
  208. write_dat(qian);
  209. write_dat('.');
  210. write_dat(bai);
  211.   write_dat(shi);
  212. write_dat('g');
  213. }
  214. void countstep()
  215. {
  216. dis_datax=operation(0);
  217. dis_datay=operation(2);
  218.    dis_dataz=operation(4);
  219. acc1=acc;
  220. acc=sqrt(dis_dataz*dis_dataz+dis_datax*dis_datax+dis_datay*dis_datay)  ;
  221. if(acc1<990&&acc>1010)
  222. // if(fabs(acc-acc1)>140&&miao1!=miao)
  223. {
  224. // miao1=miao;
  225.   count++;
  226. }
  227. write_com(0x80);
  228. conversion(acc);
  229. write_dat('A');
  230. write_dat(':');
  231. write_dat(qian);
  232. write_dat('.');
  233. write_dat(bai);
  234.   write_dat(shi);
  235. write_dat('g');

  236. write_com(0x80+0x40);
  237. write_dat('C');
  238. write_dat('o');
  239. write_dat('u');
  240. write_dat('n');
  241. write_dat('t');
  242. write_dat(':');
  243. write_dat(count/100+0x30);
  244. write_dat((count%100)/10+0x30);
  245. write_dat(count%10+0x30);

  246. }
  247. void ADXL345_Measure()    //測(cè)量角度值并顯示
  248. {
  249. Multiple_read_ADXL345();     //連續(xù)讀出數(shù)據(jù),存儲(chǔ)在BUF中
  250. // display_x();                 //---------顯示X軸
  251. // display_y();                 //---------顯示Y軸
  252. // display_z();                 //---------顯示Z軸
  253. countstep();
  254. }

  255. void main()
  256. {
  257. init();
  258. Init_ADXL345();
  259. while(1)
  260. {
  261. ADXL345_Measure();
  262.     }
  263. }

復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费黄色录像视频 | 久草色播| 涩爱av一区二区三区 | 午夜在线小视频 | 一区二区三区四区不卡 | 日韩欧美国产精品 | 精品国模一区二区三区欧美 | 国产色婷婷精品综合在线播放 | 久久一 | 久久精品高清视频 | 91av免费版| 日韩和的一区二在线 | 欧美人妖网站 | 精品久久久久久一区二区 | 亚洲自拍一区在线观看 | 91精品久久久久久久久中文字幕 | 最新黄色毛片 | 一级片免费视频 | 在线观看国产精品视频 | 一区免费观看 | 四虎影院在线观看免费视频 | 麻豆精品久久久 | 亚洲三区在线 | 国产极品车模吞精高潮呻吟 | 国产精品高潮呻吟 | 亚州影院| 欧美888 | 国产免费一区二区 | 久久er精品 | 亚洲天堂精品久久 | 国产精品资源在线 | 中文字幕乱码视频32 | 91精品国产91久久综合桃花 | av在线一区二区三区 | 在线中文一区 | 成人免费在线视频 | 精品视频在线播放 | 国产乱码精品一品二品 | 一区二区三区欧美 | 国产精品99久久久久久www | 国产91色在线 | 亚洲 |