搜索
bottom↓
回复: 1

求助,ADC0832程序问题

[复制链接]

出0入0汤圆

发表于 2012-8-20 14:36:49 | 显示全部楼层 |阅读模式


  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. #define LCD P0
  6. sbit CS=P1^0;
  7. sbit CLK=P1^1;
  8. sbit DIO=P1^2;
  9. sbit RS=P2^5;
  10. sbit RW=P2^6;
  11. sbit E=P2^7;
  12. uchar code qnum[]=
  13. {
  14.         "my test for adc 0832"
  15. };
  16. uchar disv[]=
  17. {
  18.         "0.00V"
  19. };
  20. void delay(uint z)
  21. {
  22.         uchar i;
  23.         while(z--)
  24.         {
  25.                 for(i=120;i>0;i--);
  26.         }
  27. }
  28. void delayus(void)
  29. {
  30.         uchar i;
  31.         for(i=20;i>0;i--);
  32. }

  33. uchar adc0832()
  34. {
  35.         uchar i=0,dat1=0,dat2=0;
  36.         DIO=1;
  37.         CS=0;
  38.         CLK=1;_nop_();       
  39.         CLK=0;_nop_();_nop_();
  40.         DIO=1;//set H
  41.         CLK=1;_nop_();
  42.         CLK=0;_nop_();_nop_();
  43.         DIO=0;//set L
  44.         CLK=1;_nop_();       
  45.         CLK=0;_nop_();_nop_();
  46.         DIO=1;//这个我看时序图的时候是低,但是设置为低。它就不工作了。为什么?
  47.         while(i<8)
  48.         {
  49.                 CLK=1;_nop_();
  50.                 CLK=0;
  51.                 dat1=dat1<<1 | DIO;
  52.                 _nop_();_nop_();
  53.                 i++;               
  54.         }

  55. for (i=0;i<8;i++)
  56.         {
  57.                 CLK=1;_nop_();
  58.                 CLK=0;
  59.                 if(DIO)dat2=dat2|0x80;//这些语句写错了吗?求解释!
  60.                 if(i<7)dat2>>=1;
  61.                 _nop_();_nop_();
  62.         }
  63.         CS=1;
  64.         return dat1;//正常
  65. //        return dat2;//返回值是dat1的一半左右
  66. //        return (dat1==dat2*2)?dat1:0;  //一直返回0
  67. }

  68. void lcd1602_write_com(uchar com)
  69. {
  70.        
  71.         RS=0;
  72.         RW=0;
  73.         E=0;
  74.         _nop_();
  75.         E=1;
  76.         LCD=com;
  77.         delayus();
  78.         E=0;
  79. }
  80. void lcd1602_write_data(uchar dat)
  81. {
  82.         RS=1;
  83.         RW=0;
  84.         E=0;
  85.         _nop_();
  86.         E=1;
  87.         LCD=dat;
  88.         delayus();
  89.         E=0;       
  90. }
  91.   

  92. void main()
  93. {
  94.         uchar i;
  95.         uint adcdata;
  96.         lcd1602_write_com(0x38);delay(1);
  97.         lcd1602_write_com(0x0c);delay(1);
  98.         lcd1602_write_com(0x06);delay(1);
  99.         lcd1602_write_com(0x01);delay(1);
  100.         lcd1602_write_com(0x84);delay(1);
  101.         for (i=0;i<16;i++)
  102.         {
  103.                 lcd1602_write_data(qnum[i]);
  104.                 delay(50);
  105.         }
  106.         while(1)
  107.         {
  108.                 adcdata=adc0832()*500/255;
  109.                 disv[0]=adcdata/100+'0';
  110.                 disv[2]=adcdata%100/10+'0';
  111.                 disv[3]=adcdata%10+'0';
  112.                 lcd1602_write_com(0xc4);
  113.                 for (i=0;i<5;i++)
  114.                 {
  115.                         lcd1602_write_data(disv[i]);
  116.                 }
  117.         };
  118.        
  119. }
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-8-20 15:50:22 | 显示全部楼层
很难吗?怎么没有人回答?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 22:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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