找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5441|回复: 3
打印 上一主题 下一主题
收起左侧

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. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:136090 发表于 2016-10-22 09:09 | 只看该作者
都没人下你的,我来下你的,嘿嘿!
回复

使用道具 举报

板凳
ID:136090 发表于 2016-10-22 09:15 | 只看该作者
我仿真出来没反应,求指点。
回复

使用道具 举报

地板
ID:88256 发表于 2016-10-22 09:21 | 只看该作者
下载一个看看,谢谢了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表