欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11853|回復: 1
收起左側

基于51單片機的ADC0832在LCD1602顯示程序與連接圖

[復制鏈接]
ID:269551 發表于 2017-12-31 18:18 | 顯示全部樓層 |閱讀模式
單片機源程序如下:
搜狗截圖20171231182336.jpg
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit RS=P2^0;        /***LCD1602工作端口定義***/
  6. sbit E=P2^2;
  7. sbit RW=P2^1;
  8. //sbit qp=P3^5;                                  /***清屏按鍵***/
  9. sbit cs=P1^4;                                  /***adc0832端口定義***/
  10. sbit clk=P1^5;
  11. sbit di=P1^6;
  12. sbit DO1=P1^7;
  13. char table5[5];                                        /***用來存儲數字轉換成字符的***/
  14. uint temp,i,time;                          /***速度、角度、循環/定時時間變量定義***/
  15. uchar data2; //char型
  16. void delay(uint z)                                        /***延時子程序***/
  17. {
  18.         uint x,y;
  19.         for(x=z;x>0;x--)
  20.         for(y=110;y>0;y--);
  21. }
  22. void write_com(uchar com)                                 /***LCD1602寫命令子程序***/
  23. {        RW=0;
  24.         RS=0;
  25.         P0=com;
  26.         delay(5);
  27.         E=1;
  28.         delay(5);
  29.         E=0;
  30. }
  31. void write_data(uchar dat)           /***LCD1602寫數字子程序***/
  32. {        RW=0;
  33.         RS=1;
  34.         P0= dat;
  35.         delay(5);
  36.         E=1;
  37.         delay(5);
  38.         E=0;

  39. }
  40. void LCD_write_char(uchar x,uchar y,uchar Data1)           /***LCD1602在指定位置寫字符子程序***/
  41. {
  42.     if (y == 0)
  43.     {
  44.         write_com(0x80 + x);
  45.     }
  46.     else
  47.     {
  48.         write_com(0xC0 + x);
  49.     }
  50.     write_data( Data1);
  51. }
  52. void init()                  /***LCD1602初始化子程序***/
  53. {
  54.         E=0;
  55.         write_com(0x38);
  56.         write_com(0x0e);
  57.         write_com(0x06);
  58.         write_com(0x01);
  59.         write_com(0x80+ 0x1);
  60. }
  61. void convector_num(uint x)          /***把數字 轉化成 字符串***/
  62. {
  63.         if(x<100)
  64.         {
  65.         table5[0]=x/10+0x30;
  66.         table5[1]=x%10+0x30;
  67.         table5[2]=' ';
  68.         table5[3]=' ';
  69.         table5[4]=' ';
  70.         }
  71.         else if(x>=100)
  72.         {
  73.         table5[0]=x/100+0x30;
  74.         table5[1]=(x/10)%10+0x30;
  75.         table5[2]=x%10+0x30;
  76.         table5[3]=' ';
  77.         table5[4]=' ';
  78.         }               
  79. }

  80. void convector_float(float x)          /***把數字 轉化成 float***/
  81. {
  82.         uint y=x*10;

  83.         table5[0]=y/10+0x30;
  84.         table5[1]='.';
  85.         table5[2]=y%10+0x30;
  86.         table5[3]=' ';
  87.         table5[4]=' ';               
  88. }

  89. void zhczfc(uint x)          /***把數字 轉化成 字符串***/
  90. {
  91.         if(x<10)
  92.         {
  93.         table5[0]=x/1000+0x30;
  94.         table5[1]= '.';
  95.         table5[2]=x%1000/100+0x30;
  96.         table5[3]= x%100/10+0x30;
  97.         table5[4]= x%10+0x30;
  98.         }
  99.         if(x>=10)
  100.         {
  101.         table5[0]=x/10000+0x30;
  102.         table5[1]=x%10000/1000+0x30;
  103.         table5[2]= '.';
  104.         table5[3]=x%1000/100+0x30;
  105.         table5[4]= x%100/10+0x30;
  106.         }               
  107. }

  108. readadc0832()           /***adc0832數據量讀取***/
  109. {
  110.         uchar j;
  111.         data2=0;
  112.         data2<<=3;
  113.         data2|=3;
  114.         cs=0;
  115.         for(i=0;i<3;i++)
  116.         {
  117.                 clk=0;
  118.                 delay(5);
  119.                 di=data2;
  120.                 data2>>=1;
  121.                 delay(5);
  122.                 clk=1;
  123.                 di=0 ;
  124.         }
  125.         clk=0;
  126.         delay(5);
  127.         clk=1;
  128.         for(j=0;j<8;j++)
  129.         {
  130.                 clk=0;
  131.                 delay(5);
  132.                 if(DO1==1)data2|=0x01;
  133.                 data2<<=1;
  134.                 delay(5) ;
  135.                 clk=1;
  136.         }
  137.         cs=1;
  138. }

  139. float voltage;        //電壓值
  140. void main()
  141. {        
  142.         init();                                 /***lcd1602初始化***/
  143.         delay(100);
  144.         while(1)
  145.         {        
  146.                 readadc0832();

  147.                 convector_num(data2);
  148.                 for(i=0;i<5;i++)
  149.                 {
  150.                         LCD_write_char(i,0,table5[i]);        
  151.                         delay(20);
  152.                 }

  153.                 voltage=data2*5.0/255;                  /***500為5*100,100為保留2位小數***/
  154.                 //zhczfc(data2);
  155.                 convector_float(voltage);
  156.                 for(i=0;i<5;i++)
  157.                 {
  158.                         LCD_write_char(i,1,table5[i]);        
  159.                         delay(20);
  160.                 }
  161. }
  162. }
復制代碼



回復

使用道具 舉報

ID:495323 發表于 2019-8-1 14:17 | 顯示全部樓層
能顯示嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表