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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ATMEGA16單片機(jī)+AD7715采集陀螺儀的驅(qū)動(dòng)程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:335334 發(fā)表于 2019-4-27 21:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
,用ATMEGA16編寫,使用AD7715做AD采集,16BIT精度

單片機(jī)源程序如下:
  1. #include<avr/io.h>  
  2. #include<stdio.h>
  3. #include <avr/interrupt.h>
  4. #include <avr/signal.h>

  5. #define uchar unsigned char
  6. #define uint unsigned int
  7. #define ulong unsigned long

  8. #define RDY (PINA&_BV(5))

  9. #define RES_1 PORTA|=_BV(5)
  10. #define RES_0 PORTA&=~_BV(5)


  11. static uint g_aAdValue[100]; //A/D 轉(zhuǎn)換緩沖區(qū)

  12. unsigned long int results=0;
  13. uint jiaodu,zhong;
  14. uint adc;
  15. int vjiao;
  16. long fx;
  17. /*----------------------------------------------------------------------------
  18. 延時(shí)一些時(shí)間
  19. ------------------------------------------------------------------------------*/
  20. void delay10ms(unsigned int x)
  21. {
  22. unsigned char i,j,k;
  23. for(i=0;i<x;i++)
  24.   for(j=0;j<10;j++)
  25.    for(k=0;k<120;k++);
  26. }
  27. void delay(unsigned int x)
  28. {

  29. while(x--)
  30. {;}
  31. }
  32. /*----------------------------------------------------------------------------
  33. 初始化IO口
  34. ------------------------------------------------------------------------------*/
  35. void IoInit(void)
  36. {
  37. DDRA=0X0F;
  38. PORTA=0Xff;
  39. //DDRD=0Xff;
  40. //PORTD=0Xff;
  41. }

  42. void InitS() //初始化串口
  43. {
  44. UBRRL=51;//設(shè)置波特率為9600
  45. UCSRB|=_BV(RXEN)|_BV(TXEN);//允許串口接受
  46. // UCSR1B|=_BV(RXCIE);//允許串口中斷



  47. }

  48. void SPI_SET(void)                                            //SPI初始化
  49. {
  50.            DDRB=0XBE;                                                 //DRDY接PB1,設(shè)置PB1為輸入口
  51.          PORTB=0XFF;
  52.          PORTB=0XEF&PORTB;                                 //復(fù)位接PB4,此處為拉低PB4
  53.          SPCR=0X5c;                                                   //設(shè)置SPI使能,工作于主機(jī)狀態(tài),
  54.                                                                           //并設(shè)CPOL=0,CPHA=1,SPR1=0,SPR2=0
  55.                                                                          //SCK為對(duì)11.0592晶振的1/4分頻
  56. }
  57. void WRITE_DATA(uchar i)                         //SPI發(fā)送數(shù)據(jù)
  58. {
  59.            uchar CLEAR;
  60.          SPDR=i;
  61.          while(!(SPSR&0X80));
  62.         CLEAR=SPSR;
  63.         CLEAR=SPDR;
  64. }
  65. uchar READ_DATA(void)                                  //SPI接收數(shù)據(jù)
  66. {
  67.            
  68.           uchar data,clear;
  69.           SPDR=0x00;
  70.           while(!(SPSR&0x80));
  71.           clear=SPSR;
  72.           data=SPDR;
  73.           return(data);
  74. }
  75. void putbyte(uchar x)
  76. {
  77. while( !(UCSRA & (1<<UDRE)) );
  78. UDR=x;
  79. }

  80. ////////////////////////////////////////////////////////////////////////////////

  81. uchar num(uchar x)
  82. {
  83. switch(x)
  84. {
  85.   case 0:x='0';break;
  86.   case 1:x='1';break;
  87.   case 2:x='2';break;
  88.   case 3:x='3';break;
  89.   case 4:x='4';break;
  90.   case 5:x='5';break;
  91.   case 6:x='6';break;
  92.   case 7:x='7';break;
  93.   case 8:x='8';break;
  94.   case 9:x='9';break;
  95. }
  96. return x;
  97. }
  98. uint AD(void)
  99. {
  100. uint result1,result2,ad;
  101. RES_1;
  102. while(RDY);
  103. WRITE_DATA(0x38);
  104. while(RDY);
  105. result1=READ_DATA();
  106. result2=READ_DATA();
  107. RES_0;
  108. ad=(result1<<8)+result2;
  109. return ad;
  110. }
  111. void InitTLY(void)
  112. {
  113. uchar i;
  114. for(i=0;i<200;i++)
  115.   {
  116.    results+=AD();
  117.   }
  118. zhong=results/200;
  119. }
  120. //****************************************************************************//
  121. //                                                                                            //
  122. //                                                         主函數(shù)                                                                                          //
  123. //                                                                                                                                                          //
  124. //****************************************************************************//
  125. int main(void)
  126. {
  127. uchar i;

  128. IoInit();
  129. InitS();
  130. SPI_SET();
  131. while(1)
  132. ……………………

  133. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
陀螺儀.zip (11.63 KB, 下載次數(shù): 10)


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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-4-27 22:27 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线视频一区二区三区 | 久久久久国产一区二区三区 | 国产精品成人一区二区 | 日韩精品久久久久 | 超碰成人免费 | 成人av网站在线观看 | 国产成人精品一区二区三区网站观看 | www.日日干 | 日本一区二区高清视频 | 亚洲三级在线观看 | 中文成人在线 | 热久色| 欧美精品 在线观看 | 欧美日韩在线观看视频网站 | 天天综合亚洲 | 日韩精品一区二区三区久久 | 亚洲天堂日韩精品 | 欧美精品啪啪 | 欧美精品在线一区 | av在线一区二区三区 | 精品久久久久久 | 国产精品久久久久久久午夜 | 久久亚洲美女 | 欧美一区二区三区在线观看视频 | 欧美三级免费观看 | 久久久精 | 男女av| 一区二区亚洲 | 五月网婷婷 | 午夜小电影 | 一区免费观看 | 在线播放亚洲 | 天天夜碰日日摸日日澡 | 亚洲综合激情 | 久久免费精品视频 | 在线激情视频 | 超碰高清| 韩日一区二区三区 | 亚洲久草 | 中文字幕成人在线 | 在线观看www高清视频 |