亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4995|回復: 1
打印 上一主題 下一主題
收起左側

深入學習STC12單片機AD多通道轉

[復制鏈接]
跳轉到指定樓層
樓主
ID:358930 發表于 2018-12-4 03:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
AD的用途還是很大的
  1. #include "reg51.h"
  2. #include "intrins.h"
  3. #define uchar unsigned char//只有256
  4. #define uint unsigned int//有16位但占內存。
  5. sbit rs=P2^6;//
  6. sbit rw=P2^5;//
  7. sbit en=P2^7;//
  8. sbit k1=P1^4;//按鍵
  9. sbit k2=P1^5;//按鍵
  10. sbit k3=P1^6;//按鍵
  11. sbit k4=P1^7;//按鍵
  12. sbit k5=P3^5;//按鍵
  13. uchar th=50;//放大10 倍
  14. uchar tl=37;//放大10 倍
  15. uint tmp;//tmp電壓值
  16. sbit led=P2^0;
  17. //STC12C5A60S2 特殊功能寄存器 關于AD部分的寄存器定義
  18. sfr ADC_CONTR   =   0xBC;           //ADC控制寄存器 通道配置
  19. sfr ADC_RES     =   0xBD;           //ADC高8位數據寄存器(存AD轉換的結果,共10位)
  20. sfr ADC_LOW2    =   0xBE;           //ADC低2位數據寄存器(存AD轉換的結果,共10位)
  21. sfr P1ASF       =   0x9D;           //P1第二功能選擇寄存器
  22. unsigned char ch ; //ADC通道選擇,本例程選擇P1.0為AD轉換,其他P1口做普通IO用 01234567
  23. unsigned int ad_out;//ADC_CONTR寄存器的位變量定義
  24. #define ADC_POWER   0x80            //ADC power control bit
  25. #define ADC_FLAG    0x10            //ADC complete flag
  26. #define ADC_START   0x08            //ADC start control bit
  27. #define ADC_SPEEDLL 0x00            //420 clocks
  28. #define ADC_SPEEDL  0x20            //280 clocks
  29. #define ADC_SPEEDH  0x40            //140 clocks
  30. #define ADC_SPEEDHH 0x60            //70 clocks
  31. void delay(unsigned int n)
  32. {
  33.     unsigned int x;
  34.     while (n--)
  35.     {
  36.         x = 5000;
  37.         while (x--);
  38.     }
  39. }
  40. void InitADC() //10位AD數據緩存
  41. {
  42.     P1ASF = 0xff;//設置P1.0為AD腳,P1ASF = 0x01 其他P1口為普通IO功能
  43.     ADC_RES = 0;                    //清空AD輸出高8位
  44. //        if(++ch>7)ch=0;        //循環顯示8個通道AD采樣
  45.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
  46.     delay(2);                       //ADC power-on delay and Start A/D conversion
  47. }                     
  48. void write_com(uchar com)//寫命令
  49. {
  50. rs=0;//
  51. rw=0;
  52. en=0;
  53. P0=com;
  54. delay(2);
  55. en=1;
  56. delay(5);
  57. en=0;
  58. delay(2);
  59. }
  60. void write_dat(uchar dat)//寫數據
  61. {
  62. rs=1;//
  63. rw=0;
  64. en=0;
  65. P0=dat;
  66. delay(2);
  67. en=1;
  68. delay(5);
  69. en=0;
  70. delay(2);
  71. }
  72. void write_zfc(uchar *p)//定義一個帶指針的函數?(字符串)
  73. {
  74.         while(*p!=0)//不能用";"
  75.         write_dat(*p++);
  76. }
  77. void init_1602()//1602初始化
  78. {
  79. write_com(0x38);//設置16X2顯示
  80. delay(1);
  81. write_com(0x0C);//0e光標不閃//0c不顯//0f閃爍顯示
  82. delay(1);
  83. write_com(0x06);//光標移位加1
  84. delay(1);
  85. write_com(0x01);//清屏
  86. delay(1);
  87. write_com(0x80);
  88. write_zfc("TH:");
  89. write_com(0x80+8);
  90. write_zfc("TL:");
  91. }
  92. void write_TH(uchar th)//高溫顯示
  93. {
  94. uchar a,b;
  95. a=th/10;
  96. b=th%10;
  97. write_com(0x80+3);
  98. write_dat(0x30+a);
  99. write_dat('.');
  100. write_dat(0x30+b);
  101. write_dat('V');  
  102. }
  103. void write_TL(uchar tl)//低溫顯示
  104. {
  105. uchar a,b;
  106. a=tl/10;
  107. b=tl%10;
  108. write_com(0x80+11);
  109. write_dat(0x30+a);
  110. write_dat('.');
  111. write_dat(0x30+b);
  112. write_dat('V');  
  113. }
  114.    void display()//4位顯示子函數
  115. {
  116.    uchar qian,bai,shi,ge;

  117.         tmp = (ad_out * 50) / 1024; //10位AD讀取的數值是0-1024,將這個值轉換成對應的0-5V電壓
  118.         qian=tmp/1000;
  119.         bai=tmp%1000/100;
  120.         shi=tmp%100/10;
  121.         ge=tmp%10;
  122.         write_com(0x80+0x40);
  123.         write_zfc("ch");
  124.         write_dat(0x30+ch);
  125.         write_com(0x80+0x40+5);
  126.         write_zfc("out:");
  127.       
  128.         //write_dat(0x30+qian);
  129.    // write_dat(0x30+bai);
  130.         write_dat(0x30+shi);
  131.         write_dat('.');
  132.     write_dat(0x30+ge);
  133.         //write_dat(0xdf);//顯上0標志
  134.    write_dat('V');  
  135.    }
  136.         void keyscan()
  137. {
  138. if(k1==0)
  139. {
  140. delay(5);
  141. while(!k1);
  142. th++;
  143. if(th>50)
  144. th=0;
  145. write_TH(th);
  146. }
  147. if(k3==0)
  148. {
  149. delay(5);
  150. while(!k3);
  151. th--;
  152. if(th<1)
  153. th=50;
  154. write_TH(th);
  155. }
  156. if(k2==0)
  157. {
  158. delay(5);
  159. while(!k2);
  160. tl++;
  161. if(tl>50)
  162. tl=0;
  163. write_TL(tl);
  164. }
  165. if(k4==0)
  166. {
  167. delay(5);
  168. while(!k4);
  169. tl--;
  170. if(tl<1)
  171. tl=50;
  172.   write_TL(tl);
  173. }
  174.   if(k5==0)//選擇AD通道0——7
  175. {
  176. delay(5);
  177. while(!k5);
  178. ch++;
  179. if(ch>7)
  180. ch=0;  
  181. }
  182. }
  183. void main()
  184. {               
  185.      InitADC();                      //AD初始化
  186.      IE = 0xa0;                      //允許AD中斷
  187.      init_1602();         
  188.          write_TH(th);
  189.          write_TL(tl);
  190.          led=1;
  191.     while (1)
  192.         {
  193.             display();
  194.                  keyscan();
  195.             EA = 1;// 打開AD中斷         
  196.            if(tmp>tl)//tmp電壓值放大10倍進行比較顯示
  197.            {led=0;}
  198.            else led=1;                          
  199.     }
  200. }
  201. void adc_isr() interrupt 5 using 1 //通道電壓整合
  202. {
  203.     ADC_CONTR &= !ADC_FLAG;                                 //Clear ADC interrupt flag
  204.     ad_out = (ADC_RES << 2) + ADC_LOW2;                     //高8位+低兩位
  205.         //if(++ch>7)ch=0;//循環顯示8個通道AD采樣
  206.     ADC_CONTR = ADC_POWER | ADC_SPEEDLL | ADC_START | ch;
  207.       
  208. }
復制代碼









1602顯STC12 8通道按鍵選擇顯示OK.zip

43.12 KB, 下載次數: 29, 下載積分: 黑幣 -5

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:358930 發表于 2018-12-4 03:30 | 只看該作者
上個圖

20181204_030839.jpg (314.2 KB, 下載次數: 34)

20181204_030839.jpg

20181204_030925.jpg (353.06 KB, 下載次數: 31)

20181204_030925.jpg
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表