标题: 帮忙检查下程序,数字电压表 [打印本页]

作者: 若叶12345    时间: 2017-6-5 19:09
标题: 帮忙检查下程序,数字电压表
  1. include<reg52.h>
  2. #include<intrins.h>         //调用_nop_();延时函数用
  3. #define uchar unsigned char#define uint unsigned int
  4. uchar code table[]="0123456789.";//定义显示的数组

  5. sbit lcden=P3^5;//定义管脚
  6. sbit lcdrs=P3^3;
  7. sbit lcdrw=P3^4;
  8. sbit a=P2^1;
  9. sbit b=P2^2;
  10. sbit c=P2^3;
  11. sbit st=P2^4;
  12. sbit eoc=P2^5;
  13. sbit oe=P2^6;
  14. uchar num,flag;
  15. void delay(uint z)//延时函数
  16. {
  17. uint x,y;
  18. for(x=z;x>0;x--)
  19. for(y=110;y>0;y--);
  20. }
  21. void write_com(uchar com)//1602读指令
  22. { lcdrw=0;
  23. lcdrs=0;
  24. P1=com;
  25. delay(5);
  26. lcden=1;
  27. delay(5);
  28. lcden=0;
  29. }


  30. void write_data(uchar date)//1602读数据
  31. { lcdrw=0;
  32. lcdrs=1;
  33. P1=date;
  34. delay(5);
  35. lcden=1;
  36. delay(5);
  37. lcden=0;
  38. }


  39. void lcd_init()//1602初始化函数
  40. {

  41. lcden=0;
  42. write_com(0x38);
  43. write_com(0x0c);
  44. write_com(0x06);
  45. write_com(0x01);

  46. }


  47. void main()
  48. {
  49. uchar date=0;
  50. float temp=0.0;
  51.     uchar q,b,s,g;
  52.   a=1;//选着ADC0809的第7通道
  53.   b=1;
  54.   c=1;
  55.      lcd_init();   
  56.      oe=0;
  57.     while(1)
  58.    {
  59.        st=0;
  60.     st=1;
  61.     st=0;
  62.        delay(5);
  63.     while(!eoc)
  64.      {
  65.        oe=1;
  66.     date=P0;
  67.     oe=0;
  68. temp= (float) date*5.0/256;//数据处理


  69. temp=temp/100.0;
  70. temp=temp*100000.0;
  71. q=(int)temp/1000;
  72. b=(int)temp%1000/100;
  73. s=(int)temp%1000%100/10;
  74. g=(int)temp%10;



  75.      write_com(0x80);//1602显示处理好的数据
  76.   write_data(table[q]);
  77.   delay(20);
  78.   write_data(table[11]);
  79.   delay(20);
  80.   write_data(table[b]);
  81.   delay(20);
  82.   write_data(table[s]);
  83.   delay(20);
  84.   write_data(table[g]);
  85.   delay(20);
  86.      }

  87.    }   

  88. }



复制代码

作者: a11123    时间: 2017-6-5 20:55
有没有仿真图
作者: 卓林2211    时间: 2017-6-5 22:46
管脚定义对了嘛
作者: 51mcu    时间: 2017-6-6 06:34
你的这个程序,没看出什么啊。
作者: bayga456    时间: 2017-6-7 10:20
oe=1;
    date=P0;
    oe=0;
temp= (float) date*5.0/256;//数据处理
oe=1是不是A/D芯片转换使能。要不要延时?还有这里是芯片为高电平使能。
另:
temp=temp/100.0;
temp=temp*100000.0;
这两句能不能直接改为 temp=temp*1000.0;
这句s=(int)temp%1000%100/10;能不能改为 s=(int)temp%100/10;




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