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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于SCA100T制作的兩軸數(shù)字傾角儀 含單片機程序與圖紙

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:74513 發(fā)表于 2017-8-5 17:33 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
公司項目需求,手臂抓取產(chǎn)品時為保證手臂夾抓處于水平位置,所以做了一款數(shù)字傾角儀。

該程序目前只完成通過單片機io模擬SPI通訊讀取SCA100T的數(shù)據(jù),并將數(shù)據(jù)簡單的數(shù)字濾波一下顯示在1602上面;其中四顆按鈕的功能以及串口通訊部分還未完善。

已作出實際PCBA,顯示結(jié)果一切正常;源碼分享出來給有需要的朋友。
單片機型號:STC12C5A60S2
雙軸傾角感應(yīng)芯片(感應(yīng)范圍雙軸±30°):SCA100T-D01
附件:源碼+SCA100T-D01的datasheet

圖紙:




單片機源程序如下:
  1. #include <STC12C5A60S2.h>
  2. #include <math.h>
  3. //#include <string.h>

  4. #define unint unsigned int
  5. #define unchar unsigned char

  6. #define N 30  //求平均的次數(shù)
  7. #define PI 3.141593       
  8. #define R 0x7e         //1602 右箭頭
  9. #define L 0x7f         //1602        左箭頭                               
  10. #define K 0xa0         //1602 空格



  11. //========SCA100T控制指令===
  12. #define MEAS 0x00//測量模式
  13. #define RWTR 0x08//讀寫溫度數(shù)據(jù)寄存器
  14. #define RDSR 0x0a
  15. #define RLOAD 0x0b
  16. #define STX        0x0e//X通道自檢
  17. #define STY 0x0f//Y通道自檢
  18. #define RDAX 0x10 //讀X通道加速度值
  19. #define RDAY 0x11 //讀Y通道加速度值

  20. sbit Twinkle=P3^5;
  21. sbit sw1=P0^7;
  22. sbit sw2=P0^6;
  23. sbit sw3=P0^5;
  24. sbit sw4=P0^4;
  25. //========SCA100T  IO===========
  26. sbit SCK=P1^0;
  27. sbit MISO=P1^1;
  28. sbit MOSI=P1^2;
  29. sbit CSB=P1^5; //片選
  30. //=========子函數(shù)申明=========
  31. int count_x();
  32. int count_y();
  33.        
  34. //=========1602  IO=============數(shù)據(jù)端口在P0
  35. sbit RS=P4^0;// =1數(shù)據(jù),=0命令
  36. sbit RW=P3^7;// =1讀,=0寫
  37. sbit EN=P3^6;//使能
  38. sbit BUSY=P2^7;//忙狀態(tài)線

  39. void init()
  40. {
  41. /*RI讀取完成時請求中斷的標(biāo)志,需軟件清零
  42.   TI發(fā)送完成時請求中斷的標(biāo)志,需軟件清零                  */
  43.         AUXR=0x40;//用定時器1做波特率發(fā)生器
  44.         SCON=0x50;//8bit工作模式,串口工作方式1_SM0=0/SM1=1,允許串口接收數(shù)據(jù)REN=1
  45.         TH1=TL1=-(11059200/12/32/9600);
  46.         TR1=1;
  47.         ES=1;  //串口中斷允許
  48.         EA=1;  //總中斷允許
  49.         IPH=IPH|0x10; //串口1的中斷優(yōu)先級最高
  50.         PS=1;//串口1的中斷優(yōu)先級最高
  51. }       

  52. /*void UART_T(unchar UART_data)        //發(fā)送數(shù)據(jù)到串口
  53. {          
  54.         SBUF=UART_data;        
  55.         while(!TI);
  56.         TI=0;//發(fā)送中斷標(biāo)志位清零
  57. }
  58. void UART_TC(unchar *str)        //發(fā)送字符到串口,用到string.h頭文件
  59. {
  60.         while(*str!='\0')
  61.         {
  62.                 UART_T(*str);
  63.                 *str=*str++;
  64.         }
  65.         *str=0;
  66. }                                                          */
  67.        
  68. void delay(unint z)        //延時函數(shù)
  69. {
  70.         unint i,j;
  71.         for(i=z;i>0;i--)
  72.                 for(j=110;j>0;j--);
  73. }                                                                                       
  74. void delay_spi(unint z)
  75. {
  76.         z*=12;
  77.         while(z--);
  78. }
  79. //==================SPI  SCA100T驅(qū)動========
  80. void spi_stop()
  81. {
  82.         SCK=0;
  83.         CSB=1;//關(guān)閉片選
  84.         delay_spi(10);
  85. }
  86. void spi_reset()
  87. {
  88.         spi_stop();
  89. }
  90. void spi_start()
  91. {
  92.         SCK=0;
  93.         CSB=0;//開片選,L有效
  94.         delay_spi(10);
  95. }
  96. void write_spi(unchar wdata)//寫入一個字節(jié) 8 bit ,寫指令用
  97. {
  98.         unchar i;

  99.         for(i=0;i<8;i++)
  100.         {
  101.                 SCK=0;
  102.                 delay_spi(10);
  103.                 if(wdata & 0x80)//按位于,取最高位
  104.                 {
  105.                         MOSI=1;
  106.                 }
  107.                 else
  108.                 {
  109.                         MOSI=0;
  110.                 }
  111.                 SCK=1;//上升沿SCA100T開始讀自己的MOSI引腳
  112.                 wdata=wdata<<1;
  113.                 delay_spi(10);
  114.         }
  115.         SCK=0; //歸還時鐘總線
  116. }

  117. unint read_spi(unchar n)//讀入n個數(shù)據(jù)
  118. {
  119.         unint temp=0;
  120.         unchar i;
  121.         MISO=1;//置高,準(zhǔn)備接收數(shù)據(jù)
  122.         for(i=0;i<n;i++)
  123.         {
  124.                 temp=temp<<1;
  125.                 SCK=1;
  126.                 delay_spi(10);
  127.                 if(MISO==1)
  128.                 {
  129.                         temp=temp|0x01;
  130.                 }
  131.                 else
  132.                 {
  133.                         temp=temp&0x0ffe;
  134.                 }                                                               
  135.                 SCK=0; //下降沿時,傾角儀輸出
  136.                 delay_spi(10);
  137.         }
  138.         return temp;
  139. }
  140. void init_spi()
  141. {
  142.         spi_reset();
  143.         delay_spi(1000);

  144.         spi_start();
  145.         write_spi(MEAS);
  146.         spi_stop();
  147.         delay_spi(1000);
  148. }

  149. unint read_x() //讀X軸加速度
  150. {
  151.         unint x_data;
  152.         spi_start();
  153.         write_spi(RDAX);
  154.         x_data=read_spi(11);
  155.         spi_stop();

  156.         return x_data;
  157. }
  158. unint read_y() //讀Y軸加速度
  159. {
  160.         unint y_data;
  161.         spi_start();
  162.         write_spi(RDAY);
  163.         y_data=read_spi(11);
  164.         spi_stop();

  165.         return y_data;
  166. }
  167. //==============顯示1602驅(qū)動================
  168. void wait_1602()//檢測忙狀態(tài)

  169. ……………………

  170. …………限于本文篇幅 余下代碼請從51黑下載附件…………

  171. ……………………

  172. void main()
  173. {
  174.     init_spi();
  175.     init_1602();
  176.     while(1)
  177.     {        
  178.         show(count_x(),count_y());
  179. //        delay(2000);
  180. //        Twinkle=~Twinkle;
  181.     }
  182. }
復(fù)制代碼

所有資料51hei提供下載:
程序源碼 ICdatasheet.zip (2.49 MB, 下載次數(shù): 119)




評分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:187532 發(fā)表于 2018-3-28 11:42 | 只看該作者
謝謝分享
回復(fù)

使用道具 舉報

板凳
ID:128321 發(fā)表于 2018-3-29 09:32 | 只看該作者
謝謝分享,正需要,可惜下載不了
回復(fù)

使用道具 舉報

地板
ID:187532 發(fā)表于 2018-4-2 19:33 | 只看該作者
老兄 sbit BUSY=P2^7是1602哪根線啊
回復(fù)

使用道具 舉報

5#
ID:170098 發(fā)表于 2019-9-16 09:43 | 只看該作者
不知道這個數(shù)字傾角儀器的精度是多少?
回復(fù)

使用道具 舉報

6#
ID:372588 發(fā)表于 2019-11-7 15:17 | 只看該作者
感謝,下載來看看,論壇能有這種分享真是太好了
回復(fù)

使用道具 舉報

7#
ID:709057 發(fā)表于 2020-3-15 20:48 | 只看該作者
想要這個分享
回復(fù)

使用道具 舉報

8#
ID:86069 發(fā)表于 2020-3-20 13:38 | 只看該作者
精度如何
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产视频中文字幕在线观看 | 天堂视频一区 | 一区二区av | 国产成人99久久亚洲综合精品 | 精品国产一区二区国模嫣然 | 欧美白人做受xxxx视频 | 中文字幕影院 | 欧美成人精品一区二区男人看 | 成人精品免费视频 | 国产精品久久久久久网站 | 成人免费在线视频 | 免费一区二区 | 亚州成人 | 亚洲国产成人在线观看 | 99在线国产| 国产小视频自拍 | 日韩小视频在线 | 国产精品毛片一区二区三区 | 国产做a爱片久久毛片 | 久久精品国产亚洲一区二区三区 | 天天av天天好逼 | 精品国产一区二区国模嫣然 | 日本公妇乱淫xxxⅹ 国产在线不卡 | av日韩一区 | 欧美激情网站 | 成人在线不卡 | 国产一区二区免费 | 97色伦网 | 国际精品久久 | 国产高清区 | 99re在线视频 | 久草网址| 激情91| 免费一区二区在线观看 | 久久精品亚洲 | 亚洲精品久久久久久一区二区 | 国产成人精品综合 | 精品国产乱码久久久久久图片 | 看a网站| 日本三级播放 | 亚洲精品综合 |