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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6990|回復: 7
收起左側

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

[復制鏈接]
ID:74513 發表于 2017-8-5 17:33 | 顯示全部樓層 |閱讀模式
公司項目需求,手臂抓取產品時為保證手臂夾抓處于水平位置,所以做了一款數字傾角儀。

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

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

圖紙:

原理圖

原理圖


0.png

單片機源程序如下:
  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  //求平均的次數
  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//讀寫溫度數據寄存器
  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. //=========子函數申明=========
  31. int count_x();
  32. int count_y();
  33.        
  34. //=========1602  IO=============數據端口在P0
  35. sbit RS=P4^0;// =1數據,=0命令
  36. sbit RW=P3^7;// =1讀,=0寫
  37. sbit EN=P3^6;//使能
  38. sbit BUSY=P2^7;//忙狀態線

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

  52. /*void UART_T(unchar UART_data)        //發送數據到串口
  53. {          
  54.         SBUF=UART_data;        
  55.         while(!TI);
  56.         TI=0;//發送中斷標志位清零
  57. }
  58. void UART_TC(unchar *str)        //發送字符到串口,用到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)        //延時函數
  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驅動========
  80. void spi_stop()
  81. {
  82.         SCK=0;
  83.         CSB=1;//關閉片選
  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)//寫入一個字節 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個數據
  118. {
  119.         unint temp=0;
  120.         unchar i;
  121.         MISO=1;//置高,準備接收數據
  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驅動================
  168. void wait_1602()//檢測忙狀態

  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. }
復制代碼

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

評分

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

查看全部評分

回復

使用道具 舉報

ID:187532 發表于 2018-3-28 11:42 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:128321 發表于 2018-3-29 09:32 | 顯示全部樓層
謝謝分享,正需要,可惜下載不了
回復

使用道具 舉報

ID:187532 發表于 2018-4-2 19:33 | 顯示全部樓層
老兄 sbit BUSY=P2^7是1602哪根線啊
回復

使用道具 舉報

ID:170098 發表于 2019-9-16 09:43 | 顯示全部樓層
不知道這個數字傾角儀器的精度是多少?
回復

使用道具 舉報

ID:372588 發表于 2019-11-7 15:17 | 顯示全部樓層
感謝,下載來看看,論壇能有這種分享真是太好了
回復

使用道具 舉報

ID:709057 發表于 2020-3-15 20:48 | 顯示全部樓層
想要這個分享
回復

使用道具 舉報

ID:86069 發表于 2020-3-20 13:38 | 顯示全部樓層
精度如何
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av永久| 精品综合 | 国产精品国产成人国产三级 | 欧美成人综合 | 欧美另类视频 | 国产福利资源 | 久久亚洲一区二区 | 亚洲精品久久久一区二区三区 | 中文字幕免费视频 | 久久99精品久久久久久 | 我我色综合 | 天天干夜夜操视频 | 亚洲精品乱码久久久久久蜜桃91 | 国产乱码精品一区二区三区中文 | 99久久精品视频免费 | 欧美性一区二区三区 | 成人免费片 | 国产91观看 | 男女黄网站 | 午夜视频一区二区 | 男人的天堂中文字幕 | 成人精品视频99在线观看免费 | 日日操操| www.激情.com| 欧美精品99 | 久久人人网 | 午夜久草 | 久久精品国产免费一区二区三区 | 亚洲69p | 国产一区二区三区免费视频 | 日韩一区二区免费视频 | 欧美伊人影院 | 成年无码av片在线 | 日韩精品成人 | 午夜视频免费 | 少妇特黄a一区二区三区88av | 亚洲成人久久久 | 奇米久久久 | 成人免费视频网址 | 欧美日韩黄色一级片 | 九九精品热 |