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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C51單片機+TLC5615+LM358+ADC0832數控電源電路原理圖程序等資料

[復制鏈接]
跳轉到指定樓層
樓主
電路原理圖如下:


制作出來的實物圖如下:


元件型號    元件名稱    元件標號
TL431    穩壓    1
10uF    電解電容    C1
20pf    瓷片電容    C2, C3
220UF    電解電容    C5, C8
104    瓷片電容    C6, C9
發光二極管    發光二極管    D1
SMG04_1    數碼管    DS1
ADJ    接線柱    J1
電源輸入    電源    P1
9012    三極管    Q1, Q2, Q3, Q4
1K    電阻    R1, R2, R3, R4, R8, R10, R11, R12,R13
0.1    大電阻    R7
10K    電阻    R5,R9
103    可調電阻    RT1
SW-PB    按鍵    S1, S2, S3, S4, S5
電源開關    電源開關    SW1
STC89C52    單片機    U1
TLC5615    DA轉換芯片     U2
9Z24N    場效應管    U3
LM358    運放芯片     U4
ADC0832    AD采集芯片     U5
7805    穩壓芯片    VR1
12M    晶振     Y1

單片機源程序如下:

  1. #include "reg52.h"

  2. //宏定義
  3. #define uchar unsigned char
  4. #define uint  unsigned int

  5. //按鍵定義
  6. sbit KEY1= P3^7;
  7. sbit KEY2= P3^6;
  8. sbit KEY3= P3^5;
  9. sbit KEY4= P3^4;

  10. //數碼管定義
  11. sbit W1= P2^6;
  12. sbit W2= P2^4;
  13. sbit W3= P2^2;
  14. sbit W4= P2^0;

  15. //DAC定義
  16. sbit  CS_5615=P1^5;
  17. sbit CLK_5615=P1^6;
  18. sbit DAT_5615=P1^7;

  19. //ADC定義
  20. sbit  CS=P1^2;      
  21. sbit CLK=P1^1;      
  22. sbit DIO=P1^0;
  23.   
  24. uint  U;
  25. uchar GETU=0;
  26. bit flag=0;
  27. uint  a=0;

  28. uchar code table[]=
  29. {
  30.         0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x47,0xDF,0xD7
  31. };        //共陽數碼管段碼表        沒有小數點 0~9
  32. uchar code table1[]=
  33. {
  34.         0x7F,0x64,0xBD,0xF5,0xE6,0xF3,0xFB,0x67,0xFF,0xF7,0x5e
  35. };//帶小數點的編碼            0~9


  36. void delay_ms(uint z)                          //延時函數
  37. {
  38.   uint a,b;
  39.   for(a=z;a>0;a--)
  40.    for(b=5;b>0;b--);
  41. }

  42. void  shuma(uint buf)
  43. {
  44.         uchar a,b,c,d;
  45.         a=buf/1000;
  46.         b=buf%1000/100;
  47.         c=buf%100/10;
  48.         d=buf%10;

  49.         W1=0;W2=1;W3=1;W4=1;        
  50.         P0=~table[a];
  51.         delay_ms(60);

  52.         W1=1;W2=0;W3=1;W4=1;
  53.         P0=~table1[b];
  54.         delay_ms(60);

  55.         W1=1;W2=1;W3=0;W4=1;
  56.         P0=~table[c];
  57.         delay_ms(60);

  58.         W1=1;W2=1;W3=1;W4=0;
  59.         P0=~table1[10];
  60.         delay_ms(60);
  61. }

  62. void tlc_5615(uint buf)
  63. {
  64.         uint a,c;
  65.         c=buf;   
  66.     CS_5615=0;
  67.         for(a=16;a>0;a--)
  68.         {
  69.          DAT_5615=c>>15;      
  70.          c=c<<1;
  71.          CLK_5615=1;
  72.          CLK_5615=0;                 
  73.     }
  74.         CLK_5615=1;
  75.         CLK_5615=0;
  76.         CLK_5615=1;
  77.         CLK_5615=0;
  78.         CS_5615=1;
  79. }

  80. unsigned int  A_D()
  81. {
  82.         unsigned char i,dat;
  83.         CS=1;   //一個轉換周期開始
  84.         CLK=0;  //為第一個脈沖作準備
  85.         CS=0;  //CS置0,片選有效
  86.         
  87.         DIO=1;    //DIO置1,規定的起始信號  
  88.         CLK=1;   //第一個脈沖
  89.         CLK=0;   //第一個脈沖的下降沿,此前DIO必須是高電平
  90.         DIO=1;   //DIO置1, 通道選擇信號  
  91.         CLK=1;   //第二個脈沖,第2、3個脈沖下沉之前,DI必須跟別輸入兩位數據用于選擇通道,這里選通道CH0
  92.         CLK=0;   //第二個脈沖下降沿
  93.         DIO=0;   //DI置0,選擇通道0
  94.         CLK=1;    //第三個脈沖
  95.         CLK=0;    //第三個脈沖下降沿
  96.         DIO=1;    //第三個脈沖下沉之后,輸入端DIO失去作用,應置1
  97.         CLK=1;    //第四個脈沖
  98.         for(i=0;i<8;i++)  //高位在前
  99.         {
  100.                 CLK=1;         //第四個脈沖
  101.                 CLK=0;
  102.                 dat<<=1;       //將下面儲存的低位數據向右移
  103.                 dat|=(unsigned char)DIO;          //將輸出數據DIO通過或運算儲存在dat最低位
  104.         }                                 
  105.         CS=1;          //片選無效
  106.         return dat;         //將讀出的數據返回     
  107. }


  108. //主函數
  109. void main(void)
  110. {
  111.         U=0;
  112.         while(1)
  113.         {
  114.                 tlc_5615(U);
  115.                 shuma(U/8*10);
  116.                 if(flag==0)
  117.                 {
  118.                         if(KEY1==0)
  119.                         {
  120.                                 shuma(U/8*10);
  121.                                 shuma(U/8*10);
  122.                                 shuma(U/8*10);
  123.                                 shuma(U/8*10);
  124.                                 shuma(U/8*10);
  125.                                 if(KEY1==0)
  126.                                 {
  127.                                         if(U<960)        //1V對應的是80  10位ad
  128.                                         U=U+8;
  129.                                 }        
  130.                         }
  131.                         if(KEY2==0)
  132.                         {
  133.                                 shuma(U/8*10);
  134.                                 shuma(U/8*10);
  135.                                 shuma(U/8*10);
  136.                                 shuma(U/8*10);
  137.                                 shuma(U/8*10);
  138.                                 if(KEY2==0)
  139.                                 {
  140.                                         if(U>=8)
  141.                                         U=U-8;
  142.                                 }        
  143.                         }                        
  144.                         if(KEY3==0)
  145.                         {
  146.                                 shuma(U/8*10);
  147.                                 shuma(U/8*10);
  148.                                 shuma(U/8*10);
  149.                                 shuma(U/8*10);
  150.                                 shuma(U/8*10);
  151.                                 if(KEY3==0)
  152.                                 {
  153.                                         U=400;        
  154.                                 }        
  155.                         }        
  156.                         if(KEY4==0)
  157.                         {
  158.                                 shuma(U/8*10);
  159.                                 shuma(U/8*10);
  160.                                 shuma(U/8*10);
  161.                                 shuma(U/8*10);
  162.                                 shuma(U/8*10);
  163.                                 if(KEY4==0)
  164.                                 {
  165.                                         U=0;
  166.                                 }        
  167.                         }
  168.                 }
  169.                 GETU=A_D();
  170.                 if(GETU>=12)   //0.0196V
  171.                 {
  172.                         U=0;
  173.                          a=0;
  174.                         flag=1;
  175.                 }                                
  176.         }
  177. }
復制代碼

單片機是通用的無論51還是52、無論stc還是at都一樣,引腳功能都一樣,原理圖和程序也是一樣的。
原理圖中的. sch等格式是要用protel99se打開的,沒有軟件的不要緊,我已幫您轉換成word格式和pdf格式的了。
程序中的.c文件可以用記事本打開,就是程序了。其他的是寫程序是自動生成的,沒什么用的。

程序原理圖下載: 資料.7z (2.22 MB, 下載次數: 90)

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:987418 發表于 2021-12-16 17:39 | 只看該作者
這個輸出的范圍是多少啊
回復

使用道具 舉報

板凳
ID:994114 發表于 2021-12-19 20:27 來自手機 | 只看該作者
這個輸出范圍是多少
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久毛片 | 国产一区二区影院 | 亚洲国产日韩一区 | 美女张开腿露出尿口 | 一区二区不卡 | 一区二区三区欧美大片 | 亚洲精品一区中文字幕乱码 | 中文字幕综合 | 亚洲精品日韩视频 | 成人av一区二区在线观看 | 九九热在线观看 | 成人不卡视频 | 免费观看国产视频在线 | 亚洲精品视频免费 | 欧美日韩综合视频 | 欧美啊v在线观看 | 日韩手机在线视频 | 韩日一区二区 | 欧美一级黄色片免费观看 | 九一视频在线播放 | 中文一区 | 精品中文字幕在线 | 欧美一区免费在线观看 | 国产在线观看一区二区三区 | 亚洲综合资源 | 久草资源在线 | 人成在线视频 | 国产剧情一区 | 国产精品精品视频一区二区三区 | 精品一区二区在线观看 | 一级二级三级黄色 | 天堂成人av | 操夜夜| 国产成人叼嘿视频在线观看 | 欧美一区视频 | 亚洲精品一二三区 | 黄色片在线 | 激情欧美一区二区三区中文字幕 | 欧美激情黄色 | 日韩三级在线观看 | 日韩在线日韩 |