找回密码
 立即注册

QQ登录

只需一步,快速开始

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

ADC0832源码 C语言

[复制链接]
跳转到指定楼层
楼主
ID:878235 发表于 2021-1-17 18:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include "reg52.h"
  2. #define SD 0
  3. //==========================
  4. sbit CS=P0^0;
  5. sbit CLK=P0^1;
  6. sbit DI =P0^2;
  7. sbit DO =P0^3;
  8. //============================
  9. unsigned  char bdata ADC_BIT;
  10. sbit ADC0=ADC_BIT^0;
  11. sbit ADC1=ADC_BIT^1;
  12. sbit ADC2=ADC_BIT^2;
  13. sbit ADC3=ADC_BIT^3;

  14. sbit ADC4=ADC_BIT^4;
  15. sbit ADC5=ADC_BIT^5;
  16. sbit ADC6=ADC_BIT^6;
  17. sbit ADC7=ADC_BIT^7;
  18. //==============================





  19. char numf[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xe6};
  20. char numz[]={0xff,0x01,0x02,0x04,0x08};//数码管位选
  21. //           关闭 个位 十位 百位 千位
  22. void yc(int n);   //延时n毫秒
  23. void smg_xs (int num)
  24. {
  25.   char ws[]={0,0,0,0,0};
  26.   //位数,个十百千
  27.   //个 十 百 千

  28.   if(num>999&&num<9999)
  29.   {        
  30.     ws[1]=num%10000%100%100%10%10;
  31.            ws[2]=num%10000%1000%100/10;
  32.         ws[3]=num%10000%1000/100;
  33.         ws[4]=num%10000/1000;
  34.   }


  35.   if(num>99&&num<999)
  36.   {        
  37.     ws[1]=num%1000%10%10;
  38.     ws[2]=num%1000%100/10;
  39.         ws[3]=num%1000/100;
  40.   }

  41.   if(num>9&&num<99)
  42.   {        ws[1]=num%10;
  43.     ws[2]=num/10;
  44.   }
  45.   if(num>-1&&num<9)
  46.   {ws[1]=num;}


  47. //================================
  48. {//局部范围
  49.    int sm;
  50.    int i;

  51.   for(sm=0;sm<15;sm++)
  52.   {
  53.      for(i=1;i<=4;i++)
  54.      {
  55.               P3=numz[i];
  56.            P2=~numf[ws[i]];
  57.            yc(1);        
  58.            P3=~numz[0];
  59.       }//for i end
  60.   }// for sm end


  61. }//局部范围 end

  62. }//smg_xs() end
  63. //=========================================
  64. void BEGIN_ADC0832()
  65. {
  66.         //初始化 ADC
  67.         //CLK=0;
  68.         //CS=0;
  69.         //1脉冲  DI=1 开始
  70.         //2脉冲  DI=1
  71.         //3脉冲  DI=0
  72.         
  73.         //=================
  74.         CLK=0;yc(SD);
  75.         CS=0;yc(SD);
  76.         //========================准备
  77.         

  78.         DI=1;        
  79.         yc(SD);
  80.         CLK=1;
  81. //1脉冲
  82.         
  83.         
  84.   yc(SD);
  85.   CLK=0;
  86.         DI=1;
  87.         yc(SD);
  88.         CLK=1;      
  89. //2脉冲
  90.         
  91.   yc(SD);
  92.   CLK=0;
  93.         DI=0;
  94.         yc(SD);
  95.         CLK=1;     
  96. //3脉冲


  97. }

  98. void READ_ADC0832()
  99. {
  100.         CLK=0;//3脉冲 下降沿
  101.         yc(SD);
  102.         
  103. //------------------------        
  104.         CLK=1;
  105.         yc(SD);
  106. //4脉冲
  107.         
  108.         CLK=0;
  109.         yc(SD);
  110.         ADC7=DO;
  111. //------------------------        
  112.         CLK=1;
  113.         yc(SD);
  114. //5脉冲
  115.         CLK=0;
  116.         yc(SD);
  117.         ADC6=DO;
  118. //------------------------
  119.   CLK=1;
  120.         yc(SD);
  121. //6脉冲
  122.         CLK=0;
  123.         yc(SD);
  124.         ADC5=DO;
  125. //------------------------        
  126.         CLK=1;
  127.         yc(SD);
  128. //7脉冲
  129.         CLK=0;
  130.         yc(SD);
  131.   ADC4=DO;
  132. //------------------------        
  133.   CLK=1;
  134.         yc(SD);
  135. //8脉冲
  136.         CLK=0;
  137.         yc(SD);
  138.         ADC3=DO;
  139. //------------------------
  140.   CLK=1;
  141.         yc(SD);
  142. //9脉冲
  143.         CLK=0;
  144.         yc(SD);
  145.         ADC2=DO;
  146. //------------------------
  147.   CLK=1;
  148.         yc(SD);
  149. //10脉冲
  150.         CLK=0;
  151.         yc(SD);
  152.         ADC1=DO;
  153. //------------------------        
  154.         CLK=1;
  155.         yc(SD);
  156. //11脉冲
  157.         CLK=0;
  158.         yc(SD);
  159.         ADC0=DO;
  160. //------------------------        
  161. CS=1;        




  162. }


  163. //=========================================
  164. main()
  165. {
  166.   float NUM_F;
  167.         char D4,D3,D2,D1;
  168.         
  169. while(1)
  170. {  

  171.         BEGIN_ADC0832();   
  172.   READ_ADC0832();
  173.         
  174.         NUM_F=  ADC_BIT * 0.0196;
  175.         

  176.         //==================
  177.         D4=NUM_F;
  178.         D3=(NUM_F*10)-(D4*10);
  179.         D2=(NUM_F*100)-(D4*100)-(D3*10);
  180.         D1=0;
  181.         
  182.         
  183.         
  184.         
  185.         
  186.         
  187.         //=============
  188.         smg_xs(D4*1000 + D3*100 + D2 *10 +D1);
  189.   //1 函数的形参  类型是什么  int
  190.         //2       实参  类型        double


  191. }
  192. //等待
  193. }

  194. void yc(int n)   //延时n毫秒
  195. {
  196.    char i;
  197.    while(n--)
  198.    {
  199.      for(i=0;i<120;i++);
  200. }
  201. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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