久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3266|回復: 0
收起左側

tlc2543AD轉換的實現

[復制鏈接]
ID:278851 發表于 2018-1-25 15:53 | 顯示全部樓層 |閱讀模式
代碼如下
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. sbit CLOCK=P1^6; /*2543時鐘*/
  4. sbit D_IN=P1^4 ;/*2543輸入*/
  5. sbit D_OUT=P1^3; /*2543輸出*/
  6. sbit _CS=P1^5; /*2543片選*/
  7. #define uint unsigned int
  8. #define uchar unsigned char
  9. uchar code string[16]={"value of v"};
  10. uchar code DispStr[16]={"TLM2543"};
  11. sbit lcden=P3^4;
  12. sbit lcdrs=P3^5;
  13. sbit dula=P2^6;
  14. sbit wela=P2^7;
  15. void display(); //待顯溫度值轉換
  16. void delay(uchar n)
  17. {
  18.         uchar i;
  19.         for(i=0;i<n;i++)
  20.         {
  21.            _nop_();
  22.         }
  23. }
  24. uint read2543(uchar port)
  25. {
  26.         uint ad=0,i;
  27.         CLOCK=0;
  28.         _CS=0;
  29.         port<<=4;
  30.         for(i=0;i<12;i++)
  31.         {
  32.           if(D_OUT) ad|=0x01;
  33.           D_IN=(bit)(port&0x80);
  34.           CLOCK=1;
  35.           delay(3);
  36.           CLOCK=0;
  37.           delay(3);
  38.           port<<=1;
  39.           ad<<=1;
  40.         }
  41.         _CS=1;
  42.         ad>>=1;
  43.         return(ad);
  44. }
  45. void DelayMs(uint z)
  46. {
  47.         uint x,y;
  48.         for(x=z;x>0;x--)
  49.                 for(y=110;y>0;y--);               
  50. }
  51. void write_com(uchar com)//write common
  52. {
  53.         lcdrs=0;
  54.         P0=com;
  55.         DelayMs(5);
  56.         lcden=1;
  57.         DelayMs(5);
  58.         lcden=0;       
  59. }
  60. void write_data(uchar date)        //write data
  61. {
  62.         lcdrs=1;
  63.         P0=date;
  64.         DelayMs(5);
  65.         lcden=1;
  66.         DelayMs(5);
  67.         lcden=0;       
  68. }
  69. void LCDInit()
  70. {
  71.         dula=0;
  72.         wela=0;
  73.         lcden=0;
  74.         write_com(0x38);//dispaly mode
  75.         write_com(0x0c);// guanbiaoshanshuo
  76.         write_com(0x06);
  77.         write_com(0x01);//clear displayer
  78.         write_com(0x80);//*p
  79. }
  80. DisplayChar(uchar X, uchar Y, uchar DData)
  81. {
  82.         Y &= 0x1;
  83.         X &= 0xF; //限制X不能大于15,Y不能大于1
  84.         if (Y) X |= 0x40; //當要顯示第二行時地址碼+0x40;
  85.         X |= 0x80; // 算出指令碼
  86.         write_com(X); //這里不檢測忙信號,發送地址碼
  87.         write_data(DData);
  88.         return X;
  89. }
  90. DisplayStr(uchar X,uchar Y,uchar code *DData)
  91. {
  92.         uchar ListLength;
  93.         ListLength = 0;
  94.         Y &= 0x1;
  95.         X &= 0xF; //限制X不能大于15,Y不能大于1
  96.         while (DData[ListLength]>0x20) //若到達字
  97.         {
  98.                 if (X <= 0xF) //X坐標應小于0xF
  99.                            {
  100.                                  DisplayChar(X, Y, DData[ListLength]); //顯示單個字符
  101.                                   ListLength++;
  102.                                  X++;
  103.                          }

  104.         }
  105.         return X ;
  106. }

  107. void main()
  108. {
  109.         uint ad,ad1,ad_val,ad_val1;
  110.         DelayMs(255);//等待電源穩定,液晶復位完成
  111.         LCDInit(); //1602 液晶初始化
  112.         DisplayStr(0,0,string);//顯示"溫度:"
  113.         DisplayStr(0,1,DispStr);//顯示"系列號"
  114.         DelayMs(250);
  115.         DelayMs(250);
  116.         DelayMs(250);
  117.         DelayMs(250);
  118.         DelayMs(250);
  119.         write_com(0x01); // 清屏
  120.         DelayMs(50);
  121.         ad=read2543(0);
  122.         DelayMs(50);
  123.         ad1=read2543(1);
  124.         ad_val = (uint)(((ad*5.0)/4096.0)*10000);
  125.         ad_val1 = (uint)(((ad1*5.0)/4096.0)*10000);
  126.         while(1)
  127.         {
  128.            display();
  129.         }
  130. }
  131. void display()
  132. {
  133.         uint ad_val,ad_val1;
  134.         uint ge,x1,x2,x3,x4,ge1,x11,x21,x31,x41;
  135.     ge = ad_val/10000;        
  136.     x1 = ad_val%10000/1000;
  137.     x2 = ad_val%1000/100;
  138.     x3 = ad_val%100/10;
  139.     x4 = ad_val%10;
  140.         ge1 = ad_val1/10000;        
  141.     x11 = ad_val1%10000/1000;
  142.     x21 = ad_val1%1000/100;
  143.     x31 = ad_val1%100/10;
  144.     x41 = ad_val1%10;
  145.         DisplayChar(4,0,ge+0x30);//個位
  146.         DisplayChar(5,0,0x2e); //小數點 .
  147.         DisplayChar(6,0,x1+0x30);
  148.         DisplayChar(7,0,x2+0x30);
  149.         DisplayChar(8,0,x3+0x30);
  150.         DisplayChar(9,0,x4+0x30);
  151.     DisplayChar(10,0,'V');  
  152.         DisplayChar(4,1,ge1+0x30);//個位
  153.         DisplayChar(5,1,0x2e); //小數點 .
  154.         DisplayChar(6,1,x11+0x30);
  155.         DisplayChar(7,1,x21+0x30);
  156.         DisplayChar(8,1,x31+0x30);
  157.         DisplayChar(9,1,x41+0x30);
  158.     DisplayChar(10,1,'V');            
  159.     ad_val = (uint)(((read2543(0)*5.0)/4096.0)*10000);//不斷掃描
  160.         ad_val1 = (uint)(((read2543(1)*5.0)/4096.0)*10000);//不斷掃描         
  161. }
復制代碼


仿真結果.png
原理圖.png
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费特黄视频 | 亚洲狠狠爱 | 中文字幕一级毛片视频 | 国产一二三视频在线观看 | 成人免费在线视频 | 毛片一区二区 | av福利网| 久久综合一区二区三区 | 亚洲精品区 | 亚洲欧美少妇 | 国产ts人妖一区二区三区 | 欧美精品久久 | 91精品久久久久 | 日韩精品一区二区三区中文在线 | 亚洲视频一区二区 | 羞羞的视频在线 | av日韩在线播放 | 日韩中文字幕一区二区 | 久久99精品久久久久久狂牛 | 午夜精品久久久久久久星辰影院 | 国产成人免费视频网站视频社区 | 欧美日韩久久精品 | 一区二区三区成人 | 国产午夜精品久久久久免费视高清 | 免费污视频 | 99爱在线观看 | 免费播放一级片 | 狠狠干综合视频 | 国产精品久久久久久吹潮 | 国产精品久久久99 | 午夜精品在线观看 | 日本一区二区三区四区 | 午夜三级网站 | 国产精品久久久久久久久免费高清 | 亚洲精品视频观看 | 粉嫩av | 嫩草懂你的影院入口 | 中文字幕中文字幕 | 成年视频在线观看 | 欧美乱淫视频 | 国产一区二区在线免费视频 |