标题: STC15F单片机AD与DA转换接口设计检测5V电压 带仿真图 [打印本页]

作者: hanyubo    时间: 2016-4-24 09:25
标题: STC15F单片机AD与DA转换接口设计检测5V电压 带仿真图
stc15f单片机ad和da仿真图:



STC15F单片机AD与DA转换接口设计检测5V电压
全部资料(压缩包)下载:
带仿真图 A D与D A转换接口设计检测5V电压.rar (24.18 KB, 下载次数: 62)





下面是部分程序预览(完整版本请下载本帖附件):
  1. #include <STC15F2K60S2.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code led[]={
  5. //0   1    2    3    4     5    6    7    8    9   
  6. 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};        //定义字形码表,共阳极
  7. ///////////////////////
  8. #define SI P00
  9. #define SCK P01
  10. #define RCK P02
  11. #define ADC_POWER   0x80            //ADC电源控制位
  12. #define ADC_FLAG    0x10            //ADC完成标志
  13. #define ADC_START   0x08            //ADC起始控制位
  14. #define ADC_SPEEDLL 0x00            //540个时钟
  15. /////////////////////////////////////////
  16. unsigned char disp[4]={0,0,0,0};
  17. ///////////////////////////////////////////
  18. void delay_ms(uint ms)
  19. {  uint i,j;
  20.    for(;ms>0;ms--)
  21.    {
  22.    for(i=0;i<7;i++)
  23.     for(j=0;j<210;j++);
  24.         }
  25.    }
  26. /*----------------------------
  27. 初始化ADC
  28. ----------------------------*/
  29. void ADC_initiate()
  30. {   P1ASF=0XFF;
  31.     ADC_RES=0;
  32.         ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
  33.         delay_ms(1);
  34.         }
  35. unsigned char ADC_STC12C5(unsigned char ch)
  36. {  ADC_RES=0;
  37.    ADC_CONTR|=ch;
  38.    delay_ms(1);
  39.    ADC_CONTR|=ADC_START;
  40.    while(!(ADC_CONTR&ADC_FLAG));
  41.    ADC_CONTR&=(~ADC_START);
  42.    ADC_CONTR&=(~ADC_FLAG);
  43.    return(ADC_RES);
  44.    }
  45. void data_process(unsigned char value)
  46. {   unsigned int temp;
  47.     temp=value*196;
  48.     disp[0]=temp/10000;
  49.         disp[1]=(temp/1000)%10;
  50.         disp[2]=(temp/100)%10;
  51.         disp[3]=(temp/10)%10;
  52.         }
  53. void sendData(unsigned char sendDat)        
  54. {        unsigned char i;
  55.         for(i=0;i<8;i++)
  56.         {        if((sendDat&0x01)==0) SI=0;
  57.                 else  SI=1;       //发出最低位
  58.         SCK=0;
  59.         SCK=1;          //上升沿,存储一位数据。
  60.                 sendDat=sendDat>>1;
  61.         }
  62. }

  63. void seg_display(unsigned char n)
  64. {        unsigned char c, i;
  65.         
  66.         for(i=0;i<n;i++)
  67.         {        c=disp[i];                //取出待显示字符
  68.                 if(i==0)
  69.                 sendData(led[c]+0x80);        //送出字形码数据
  70.             else                 
  71.                 sendData(led[c]);
  72.                 }        
  73.     RCK=0;
  74.         RCK=1;                        //输出                        
  75. }

  76. void main()
  77. {  unsigned char voltage;
  78.    ADC_initiate(); //初始化
  79.    delay_ms(10);
  80.    while(1)
  81.    {voltage=ADC_STC12C5(7);
  82.    data_process(voltage);
  83.    seg_display(4);
  84.    delay_ms(10);
  85.    }
  86. }
复制代码



作者: chjx0132    时间: 2016-10-22 09:09
都没人下你的,我来下你的,嘿嘿!
作者: chjx0132    时间: 2016-10-22 09:15
我仿真出来没反应,求指点。
作者: hhdsdy    时间: 2016-10-22 09:21
下载一个看看,谢谢了!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1