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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7745|回復: 3
打印 上一主題 下一主題
收起左側

TLC1543數模轉換驅動程序(C語言版)

[復制鏈接]
跳轉到指定樓層
樓主
ID:83710 發表于 2015-6-24 21:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define ulong unsigned long

  6. sbit TLC1543_CLK=P3^3;         //TLC1543硬件連接
  7. sbit TLC1543_DIN = P3^4;
  8. sbit TLC1543_DOUT= P3^5;
  9. sbit TLC1543_CS = P3^7;
  10. sbit TLC1543_EOC = P3^2;        //這里沒用到中斷
  11. //*****************************************************************
  12. //數碼管顯示子程序,將一個數num顯示到某一位weixuan數碼管
  13. //*****************************************************************
  14. void numdis(uchar num,uchar weixuan,uchar brightness )
  15. {
  16.     while(brightness--)P0=num*0x10+weixuan*0x01;
  17.      P0=0xFF;
  18. }
  19. //*****************************************************************
  20. //將讀到的溫度顯示在六個數碼管上,只顯示整數部分,即顯示精度為一度
  21. //*****************************************************************
  22. void display(uint num)
  23. {
  24.     numdis(num/10000,        4,20);
  25.     numdis(num%10000/1000,     3,20);
  26.     numdis(num%1000/100,    2,20);
  27.     numdis(num%100/10,        1,20);
  28.     numdis(num%10,            0,20);

  29. }
  30. uint read1543(uchar channel) //從TLC1543讀取采樣值,形參channel是采樣的通道號
  31. {
  32.     uint  data ad;
  33.     uint  data i;
  34.     uchar data al=0,ah=0;
  35.    
  36.     TLC1543_CLK = 0;
  37.     TLC1543_CS  = 0;
  38.     for (i=0;i<4;i++) //把通道號打入1543
  39.     {
  40.         TLC1543_DIN=(channel&0x0f);
  41.         TLC1543_CLK=1;
  42.         TLC1543_CLK=0;
  43.         channel<<=1;
  44.     }
  45.    
  46.     for (i=0;i<6;i++) //填充6個TLC1543_CLK
  47.     {
  48.         TLC1543_CLK=1;
  49.         TLC1543_CLK=0;
  50.     }
  51.    
  52.     TLC1543_CS=1;
  53.     _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  54.     _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  55.     _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
  56.     _nop_();_nop_();_nop_();
  57.     TLC1543_CS=0; //等待AD轉換
  58.     _nop_();_nop_();_nop_();
  59.    
  60.     for (i=0;i<2;i++) //取D9,D8
  61.     {
  62.         TLC1543_DOUT=1;
  63.         TLC1543_CLK=1;
  64.         ah<<=1;
  65.         if(TLC1543_DOUT) ah|=0x01;
  66.         TLC1543_CLK=0;
  67.     }
  68.    
  69.     for (i=0;i<8;i++) //取D7--D0
  70.     {
  71.         TLC1543_DOUT=1;
  72.         TLC1543_CLK=1;
  73.         al<<=1;
  74.         if (TLC1543_DOUT) al|=0x01;
  75.         TLC1543_CLK=0;
  76.     }
  77.    
  78.     TLC1543_CS=1;
  79.     ad=(uint)ah;
  80.     ad<<=8;
  81.     ad|=(uint)al; //得到AD值
  82.     return (ad);
  83. }
  84. uint volt_convert(uchar channel)
  85. {
  86.     uint temp_volt[4];
  87.     ulong sum_volt=0;
  88.     uchar i;
  89.     for(i=0;i<4;i++)
  90.     {
  91.         temp_volt[i] = read1543(channel);
  92.         sum_volt += temp_volt[i];
  93.     }
  94.     return (((sum_volt/4)*500)/1023);

  95. }
  96. main()
  97. {      
  98.     while(1)
  99.     {
  100.         display(volt_convert(2));
  101.    
  102.     }
  103. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:119140 發表于 2018-7-23 09:23 | 只看該作者
收到,很好的資料,學習了
回復

使用道具 舉報

板凳
ID:518981 發表于 2019-8-7 20:33 | 只看該作者
學習了
回復

使用道具 舉報

地板
ID:541071 發表于 2019-8-7 23:45 | 只看該作者
優秀,前一段時間找了好久,不過很強
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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