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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5986|回復: 2
收起左側

關于stc12a5c60s2中內部AD和DA的用法

[復制鏈接]
ID:78218 發表于 2015-8-3 09:39 | 顯示全部樓層 |閱讀模式
求大神
回復

使用道具 舉報

ID:79544 發表于 2015-8-3 18:18 | 顯示全部樓層
STC片內AD程序
  1. /****************************************************
  2.     P2口接4位數碼管顯示STC12C單片機AD轉換電壓值,
  3.         測P1 8個口任意一個口轉換電壓,
  4.     數碼管為共陽管

  5.         電壓為單片機電壓:5v經2個10k電阻分壓給單片機vref
  6.                                 提供2.5v基準電壓
  7.         作者:蘇義江
  8. ***********************************************/

  9. //#include<12c5a.h>
  10. #include<reg51.h>
  11. #include<intrins.h>  
  12. #define  uchar  unsigned  char
  13. #define  uint  unsigned   int

  14. uint AV;
  15. sfr P1ASF     = 0x9D;     //P1口模數轉換功能控制寄存器
  16. sfr ADC_CONTR = 0xBC; //AD轉換控制寄存器
  17. sfr ADC_RES   = 0xBD;  //AD轉換結果寄存器高位
  18. sfr ADC_RESL  = 0xBE; //AD轉換結果寄存器低位
  19. sfr AURX1     = 0xA2;  //AD轉換結果存儲方式控制位
  20. sfr ADC_CONTER=0xc5; //ADC控制寄存器
  21. sfr ADC_DATA=0xc6;//ADC轉換結果寄存器 高8位
  22. sfr ADC_LOW2  = 0xBE; //ADC轉換結果寄存器 低8位

  23. sfr P1M0 =0x91;
  24. sfr P1M1 =0x92;  
  25. sbit led =P0^0;
  26. sbit led1=P0^1;
  27. sbit wei =P0^6;
  28. sbit duan=P0^7;
  29. uint  a, b, c, d,temp;
  30. uchar code SMG[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  31. uchar code table1[]={0x04,0x9e,0x22,0x12,0x98,0x11,0x01,0x96,0x00,0x10};
  32. //帶小數點字碼表//
  33. uchar  code  table[]={0x44,0xde,0x62,0x52,0xd8,0x51,0x41,0xd6,0x40,0x50};
  34. //不帶小數點字碼表//

  35. void delay(uint z) //延時//   
  36. {
  37.     uint x,y;   
  38.          for(x=z;x>0;x--)   
  39.          for(y=125;y>0;y--);  
  40. }
  41. /****獲取ADC轉換結果*****/
  42. uint ADC()  //設置AD轉換口//

  43. {
  44.   ADC_CONTER = ADC_CONTER|0x80;
  45.   ADC_DATA=0x00;     
  46.   ADC_CONTER=0xe2;  
  47.   ADC_CONTER|=0x08;
  48.         //查詢ADC_FLAG位是否置1
  49.    while ((0x10&ADC_CONTER)!=0x10);
  50. //        ADC_CONTER = ADC_CONTER&0xe7;
  51.    ADC_CONTER&=0xE7; //關閉AD 清除轉換結束標志
  52.         //單片機電源為5V,求的真實電壓值
  53.    AV=256*ADC_DATA/5;//公式換算成電壓值//
  54.    return (AV);
  55. }
  56. void main ()
  57. {  
  58.         //設置P1.2為 AD 輸入口
  59. //         P1M0=0X02 ;
  60.   //   P1M1=0X02;
  61.         //把P1.0配置為ADC輸入引腳
  62. //        P1M0=0x01;
  63. //        P1M1=0x00;
  64.         //1111 1111 設置P1口為開漏模式,用來AD采集
  65.          P1M0=0xFF;
  66.          P1M1=0xFF;  
  67.          ADC_CONTER|=0x80;//打開ADC電源
  68.            while(1)  
  69.            {
  70.                 temp=ADC();   
  71.                         a=temp/1000;   
  72.                         b=(temp-a*1000)/100;   
  73.                         c=(temp-a*1000-b*100)/10;   
  74.                         d=temp%10;   
  75.                         wei=1;                       
  76.                         P2=0XFE;
  77.                         wei=0;
  78.                         duan=0;
  79.                         duan=1;                          
  80.                         P2=SMG[a];   
  81.                         delay(10);
  82.                            P2=0XFf;

  83.                         wei=1;               
  84.                         P2=0XFd;
  85.                         wei=0;
  86.                         duan=0;
  87.                         duan=1;       
  88.                         P2=SMG[b];   
  89.                         delay(10);
  90.                            P2=0XFf;

  91.                         wei=0;
  92.                         wei=1;
  93.                         P2=0XFb;
  94.                         duan=0;
  95.                         duan=1;          
  96.                     P2=SMG[c];   
  97.                         delay(10);
  98.                            P2=0XFf;

  99.                         wei=0;
  100.                         wei=1;
  101.                         P2=0XF7;
  102.                         duan=0;
  103.                         duan=1;         
  104.                           P2=SMG[d];   
  105.                           delay(10);   
  106.                           P2=0XFf;

  107.                                 if(AV>5.3)
  108.                                 led=0;led1=1;
  109.                                 if(AV<4.5)
  110.                                 led=1;led1=0;
  111.                                 if(AV<5.25&&AV>4.55)
  112.                                 led=1;led1=1;
  113.                 }
  114. }
復制代碼
回復

使用道具 舉報

ID:78218 發表于 2015-8-4 10:05 | 顯示全部樓層

謝謝大神
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频三区 | 老妇激情毛片免费 | 国产做爰 | 欧美日韩中文字幕在线 | 日本又色又爽又黄的大片 | 欧美精品一区二区三区在线播放 | 91精品国产乱码久久久久久久 | 国产高清视频一区二区 | 日本欧美在线视频 | 日韩免费网站 | 国产视频在线一区二区 | 天天人人精品 | 精品视频在线播放 | 欧美日韩高清一区 | 亚洲高清免费视频 | 国产成人综合久久 | 一区精品视频在线观看 | 午夜视频网 | 久久久久久久久久久久久9999 | 国产高清一区二区三区 | a级大片免费观看 | 国产成人麻豆免费观看 | 黄色大片观看 | 福利视频大全 | 一级黄色片免费在线观看 | 成人精品一区二区三区四区 | 精品国产91乱码一区二区三区 | 黄色亚洲网站 | 国产成人精品一区二区三 | 精品国产一区二区三区观看不卡 | 国产精品久久国产愉拍 | 国产日韩精品在线 | 97久久精品午夜一区二区 | 成人h动漫精品一区二区器材 | 国产精品久久久久久久久久免费看 | 午夜精品一区 | 日韩一区在线播放 | 亚洲成人免费 | 日韩精品国产精品 | 亚洲福利在线观看 | 99久久精品国产一区二区三区 |