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

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

QQ登錄

只需一步,快速開始

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

求指導(dǎo)STC15F2K60S2單片機(jī)內(nèi)部AD通過按鈕控制輸出的電路圖及程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:841799 發(fā)表于 2022-3-15 10:45 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
30黑幣
由于本論壇禁止直接求程序,禁止伸手黨,所以向大家請(qǐng)教一下大致的實(shí)現(xiàn)方法與思路,理清頭緒后我自己來寫程序去實(shí)現(xiàn),謝謝大家

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

使用道具 舉報(bào)

沙發(fā)
ID:161164 發(fā)表于 2022-3-15 23:34 | 只看該作者
輸出什么?
  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15F4K60S4 系列 AD轉(zhuǎn)換中斷方式舉例----------------------------*/
  4. /* 如果要在程序中使用此代碼,請(qǐng)?jiān)诔绦蛑凶⒚魇褂昧薙TC的資料及程序        */
  5. /* 如果要在文章中應(yīng)用此代碼,請(qǐng)?jiān)谖恼轮凶⒚魇褂昧薙TC的資料及程序        */
  6. /*---------------------------------------------------------------------*/

  7. //本示例在Keil開發(fā)環(huán)境下請(qǐng)選擇Intel的8058芯片型號(hào)進(jìn)行編譯
  8. //若無特別說明,工作頻率一般為11.0592MHz


  9. #include "reg51.h"
  10. #include "intrins.h"

  11. #define FOSC    11059200UL
  12. #define BAUD    115200

  13. typedef unsigned char BYTE;
  14. typedef unsigned int WORD;

  15. #define     URMD    0           //0:使用定時(shí)器2作為波特率發(fā)生器
  16.                                 //1:使用定時(shí)器1的模式0(16位自動(dòng)重載模式)作為波特率發(fā)生器
  17.                                 //2:使用定時(shí)器1的模式2(8位自動(dòng)重載模式)作為波特率發(fā)生器

  18. sfr T2H   = 0xd6;               //定時(shí)器2高8位
  19. sfr T2L   = 0xd7;               //定時(shí)器2低8位

  20. sfr P1M1 = 0x91;    //PxM1.n,PxM0.n     =00--->Standard,    01--->push-pull
  21. sfr P1M0 = 0x92;    //                  =10--->pure input,  11--->open drain
  22. sfr P0M1 = 0x93;
  23. sfr P0M0 = 0x94;
  24. sfr P2M1 = 0x95;
  25. sfr P2M0 = 0x96;
  26. sfr P3M1 = 0xB1;
  27. sfr P3M0 = 0xB2;
  28. sfr P4M1 = 0xB3;
  29. sfr P4M0 = 0xB4;
  30. sfr P5M1 = 0xC9;
  31. sfr P5M0 = 0xCA;
  32. sfr P6M1 = 0xCB;
  33. sfr P6M0 = 0xCC;
  34. sfr P7M1 = 0xE1;
  35. sfr P7M0 = 0xE2;

  36. sfr  AUXR       =   0x8e;       //輔助寄存器                              

  37. sfr ADC_CONTR   =   0xBC;           //ADC控制寄存器
  38. sfr ADC_RES     =   0xBD;           //ADC高8位結(jié)果
  39. sfr ADC_LOW2    =   0xBE;           //ADC低2位結(jié)果
  40. sfr P1ASF       =   0x9D;           //P1口第2功能控制寄存器

  41. #define ADC_POWER   0x80            //ADC電源控制位
  42. #define ADC_FLAG    0x10            //ADC完成標(biāo)志
  43. #define ADC_START   0x08            //ADC起始控制位
  44. #define ADC_SPEEDLL 0x00            //540個(gè)時(shí)鐘
  45. #define ADC_SPEEDL  0x20            //360個(gè)時(shí)鐘
  46. #define ADC_SPEEDH  0x40            //180個(gè)時(shí)鐘
  47. #define ADC_SPEEDHH 0x60            //90個(gè)時(shí)鐘

  48. void InitUart();
  49. void SendData(BYTE dat);
  50. void Delay(WORD n);
  51. void InitADC();

  52. BYTE ch = 0;                        //ADC通道號(hào)

  53. void main()
  54. {
  55.     P0M0 = 0x00;
  56.     P0M1 = 0x00;
  57.     P1M0 = 0x00;
  58.     P1M1 = 0x00;
  59.     P2M0 = 0x00;
  60.     P2M1 = 0x00;
  61.     P3M0 = 0x00;
  62.     P3M1 = 0x00;
  63.     P4M0 = 0x00;
  64.     P4M1 = 0x00;
  65.     P5M0 = 0x00;
  66.     P5M1 = 0x00;
  67.     P6M0 = 0x00;
  68.     P6M1 = 0x00;
  69.     P7M0 = 0x00;
  70.     P7M1 = 0x00;

  71.     InitUart();                     //初始化串口
  72.     InitADC();                      //初始化ADC
  73.     IE = 0xa0;                      //使能ADC中斷
  74.                                     //開始AD轉(zhuǎn)換
  75.     while (1);
  76. }

  77. /*----------------------------
  78. ADC中斷服務(wù)程序
  79. ----------------------------*/
  80. void adc_isr() interrupt 5
  81. {
  82.     ADC_CONTR &= !ADC_FLAG;         //清除ADC中斷標(biāo)志

  83.     SendData(ch);                   //顯示通道號(hào)
  84.     SendData(ADC_RES);              //讀取高8位結(jié)果并發(fā)送到串口

  85. //    SendData(ADC_LOW2);           //顯示低2位結(jié)果
  86.    
  87.     if (++ch > 7) ch = 0;           //切換到下一個(gè)通道
  88.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
  89. }

  90. /*----------------------------
  91. 初始化ADC
  92. ----------------------------*/
  93. void InitADC()
  94. {
  95.     P1ASF = 0xff;                   //設(shè)置P1口為AD口
  96.     ADC_RES = 0;                    //清除結(jié)果寄存器
  97.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
  98.     Delay(2);                       //ADC上電并延時(shí)
  99. }

  100. /*----------------------------
  101. 初始化串口
  102. ----------------------------*/
  103. void InitUart()
  104. {
  105.     SCON = 0x5a;                //設(shè)置串口為8位可變波特率
  106. #if URMD == 0
  107.     T2L = (65536 - (FOSC/4/BAUD));
  108.     T2H = (65536 - (FOSC/4/BAUD)) >> 8;
  109.     AUXR = 0x14;                //T2為1T模式, 并啟動(dòng)定時(shí)器2
  110.     AUXR |= 0x01;               //選擇定時(shí)器2為串口1的波特率發(fā)生器
  111. #elif URMD == 1
  112.     AUXR = 0x40;                //定時(shí)器1為1T模式
  113.     TMOD = 0x00;                //定時(shí)器1為模式0(16位自動(dòng)重載)
  114.     TL1 = (65536 - (FOSC/4/BAUD));
  115.     TH1 = (65536 - (FOSC/4/BAUD)) >> 8;
  116.     TR1 = 1;                    //定時(shí)器1開始啟動(dòng)
  117. #else
  118.     TMOD = 0x20;                //設(shè)置定時(shí)器1為8位自動(dòng)重裝載模式
  119.     AUXR = 0x40;                //定時(shí)器1為1T模式
  120.     TH1 = TL1 = (256 - (FOSC/32/BAUD));
  121.     TR1 = 1;
  122. #endif
  123. }

  124. /*----------------------------
  125. 發(fā)送串口數(shù)據(jù)
  126. ----------------------------*/
  127. void SendData(BYTE dat)
  128. {
  129.     while (!TI);                    //等待前一個(gè)數(shù)據(jù)發(fā)送完成
  130.     TI = 0;                         //清除發(fā)送標(biāo)志
  131.     SBUF = dat;                     //發(fā)送當(dāng)前數(shù)據(jù)
  132. }

  133. /*----------------------------
  134. 軟件延時(shí)
  135. ----------------------------*/
  136. void Delay(WORD n)
  137. {
  138.     WORD x;

  139.     while (n--)
  140.     {
  141.         x = 5000;
  142.         while (x--);
  143.     }
  144. }

復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

板凳
ID:47286 發(fā)表于 2022-3-16 00:46 | 只看該作者
官方手冊(cè)上 ADC采集有詳細(xì)的查詢法和中斷法范例 先搞定ADC采集

官方手冊(cè)上 有ADC按鍵的電路圖 并聯(lián)法串聯(lián)法都有 連阻值容值都給了 照著做就行

這兩樣都有了 剩下就是程序判斷鍵值

總之 你下個(gè)官方的手冊(cè)看一下就是了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 有码一区| 精品视频国产 | 激情小视频 | 国产精品毛片久久久久久久 | 欧美精品一区二区三区在线播放 | 国产.com | 精品免费在线 | 亚洲欧美日韩精品久久亚洲区 | 亚洲精品视频免费观看 | 国产免费观看一区 | 看毛片的网站 | 一区二区av | 日韩三级 | 色视频在线观看 | 亚洲精品丝袜日韩 | 国产午夜精品久久久 | 日韩精品影院 | 天天操夜夜爽 | 欧美一区二区在线免费观看 | 午夜小视频在线观看 | 久久久www成人免费精品 | 日韩精品在线免费观看视频 | www.狠狠干 | 日韩成人免费视频 | 男女国产网站 | 国产免费xxx | 亚洲视频在线观看 | 毛片.com| 国产日韩欧美激情 | 337p日本欧洲亚洲大胆精蜜臀 | 成人精品鲁一区一区二区 | 亚洲视频三 | 天堂色网| 国产一区二区三区免费视频 | 伊人电影院av | 中文字幕免费观看 | 91av视频 | 色综合av| 国产乱码精品一区二区三区忘忧草 | 一区二区三区国产好 | 精品久久电影 |