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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

簡易單片機數控直流電源仿真設計 帶源碼

[復制鏈接]
跳轉到指定樓層
樓主
1 設計任務
設計出一個基于51單片機的有一定輸出電壓范圍和功能的數控電源。

2 設計要求
(1)輸出電壓:范圍0~+9.9V,步進0.1V,紋波不大于10mV;
(2)輸出電壓值由LCD顯示;
(3)由“+”、“-”兩鍵分別控制輸出電壓步進增減;
(4)輸出電壓可預置在0~9.9V之間的任意一個值;
5)自制鍵盤設置電壓值。


單片機源程序如下:
  1. #include<reg51.h>
  2. #include<math.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int


  5. sbit rs=P2^4;
  6. sbit rw=P2^5;
  7. sbit ea=P2^6;

  8. uchar num,i,key,j=0;
  9. float a2;
  10. uchar keyscan(void);


  11. uchar code table[6]="Please";
  12. uchar code table1[16]=" enter letter...";
  13. uchar code table2[16]="0123456789abcde.";
  14. float  table3[6];
  15. uchar code table4[8]="volt(v):";
  16. uchar code table5[6]="error!";
  17. uchar  table6[6];

  18. void delay(uint z)
  19. {
  20. uint x,y;
  21. for(x=z;x>0;x--)
  22.   for(y=110;y>0;y--);
  23. }

  24. void write_com(uchar com)
  25. {
  26. rs=0;           
  27. rw=0;         
  28. P0=com;
  29. delay(5);
  30. ea=1;               
  31. delay(5);
  32. ea=0;
  33. }
  34. void write_date(uchar date)
  35. {
  36. rs=1;               
  37. rw=0;
  38. P0=date;
  39. delay(5);
  40. ea=1;
  41. delay(5);
  42. ea=0;
  43. }
  44. void disvol()
  45. {
  46.                 write_com(0x80+0x40);                 
  47.                 for(num=0;num<8;num++)         
  48.                    {
  49.                     write_date(table4[num]);
  50.                     delay(10);
  51.                    }               
  52. }
  53.   
  54. void init()
  55. {
  56. delay(5);
  57. write_com(0x38);
  58. write_com(0x0c);
  59. write_com(0x06);
  60. write_com(0x01);
  61. write_com(0x80);
  62. for(num=0;num<6;num++)
  63.   {
  64.    write_date(table[num]);         
  65.    delay(20);
  66.   }
  67. write_com(0x80+0x40);   
  68. for(num=0;num<0x10;num++)         
  69.   {
  70.     write_date(table1[num]);   
  71.     delay(20);
  72.    }
  73. }

  74. void diserr()
  75. {
  76.            write_com(0x80+0x40);        
  77.            for(num=0;num<6;num++)
  78.            {
  79.             write_date(table5[num]);        
  80.                 delay(20);
  81.            }
  82.            delay(2000);        
  83. }

  84. void he_zhi()
  85. {
  86. uint a1,a3,c11,c12;
  87. float b1,b2,b3,b4,c1,c2,h;
  88. if(table3[0]!='.')           
  89. {
  90.          if(!table3[1])
  91.          {
  92.                  if(j==1)
  93.                 {
  94.                          table3[1]='.';
  95.                 }
  96.          }

  97.          if(!table3[2])
  98.          {
  99.                  if(j==2)
  100.                 {
  101.                         table3[2]='.';
  102.                 }
  103.          }

  104. if(table3[1]=='.')
  105.          {         
  106.                  b1=table3[0];
  107.                  b2=table3[2]/10;
  108.                  b3=table3[3]/100;
  109.                  h=b1+b2+b3;
  110.                  a2=h*256/10;
  111.                  a3=a2;
  112.                  a1=a3+1;
  113.                  c1=a2-a3;
  114.                  c2=a1-a2;
  115.                  c11=1000*c1;
  116.                  c12=1000*c2;
  117.                  if(c11>c12)
  118.                  {
  119.                  P1=a1;
  120.                  }
  121.                  else
  122.                  {
  123.                   P1=a3;
  124.                  }
  125.                
  126.                  if(j==1)
  127.                  {
  128.                          write_com(0x80+0x49);        
  129.                  }                                          
  130.                  if(j==3)
  131.                  {
  132.                          write_com(0x80+0x4b);
  133.                  }
  134.                  if(j==4)
  135.                  {
  136.                          write_com(0x80+0x4c);
  137.                  }
  138.                   
  139.          }

  140. else if(table3[2]=='.')
  141.          {         
  142.                   b1=table3[0]*10;
  143.                   b2=table3[1];
  144.                   b3=table3[3]/10;
  145.                   b4=table3[4]/100;
  146.                   h=b1+b2+b3+b4;
  147.                   if(h<=10)
  148.           {
  149.                                  a2=h*256/10;
  150.                                  a3=a2;
  151.                                  a1=a3+1;
  152.                                  c1=a2-a3;
  153.                                  c2=a1-a2;
  154.                                  c11=1000*c1;
  155.                                  c12=1000*c2;
  156.                                  if(c11>c12)
  157.                                  {
  158.                                          P1=a1;
  159.                                  }
  160.                                  else                 
  161.                                  {
  162.                                          if(a3==256)  
  163.                                          {
  164.                                              P1=255;
  165.                                          }
  166.                                          else                  
  167.                                          {
  168.                                                     P1=a3;
  169.                                          }
  170.                                  }                                 
  171.                  if(j==2)
  172.                  {
  173.                          write_com(0x80+0x4a);        
  174.                  }

  175.         }
  176.                         
  177.                         
  178.                         
  179.                          else
  180.                           {
  181.                                           write_com(0x01);
  182.                                         diserr();               
  183.                           }        
  184.         }
  185.         else
  186.                 {
  187.                         write_com(0x01);
  188.                         diserr();        
  189.                 }
  190. }

  191.         if(table3[0]=='.')
  192.         {
  193.            write_com(0x01);
  194.            diserr();               
  195.         }
  196.         
  197. }




  198. void qingchu(uchar p)
  199. {        
  200.         uchar z;
  201.         for(z=0;z<=5;z++)
  202.         {
  203.         table3[z]=p;
  204.         }
  205. }



  206. void main()
  207. {
  208. init();

  209. delay(4500);
  210. write_com(0x01);
  211. write_com(0x80+0x40);
  212. write_com(0x0f);
  213. disvol();
  214. i=0x80+0x48;

  215. while(1)
  216. {
  217. key=keyscan();                          
  218. delay(100);
  219. switch(key)
  220. {         
  221.   case 0xee:write_com(i);
  222.            write_date(table2[0]);table3[j]=0;j++;         //  table2[16]="0123456789abcde."
  223.                         i++;
  224.                         break;//0
  225.   case 0xde:write_com(i);
  226.             write_date(table2[1]);table3[j]=1;j++;
  227.                         i++;
  228.                         break;//1
  229.   case 0xbe:write_com(i);
  230.             write_date(table2[2]);table3[j]=2;j++;
  231.                         i++;break;//2
  232.   case 0x7e:write_com(i);
  233.             write_date(table2[3]);table3[j]=3;j++;
  234.                         i++;break;//3
  235.   case 0xed:write_com(i);
  236.             write_date(table2[4]);table3[j]=4;j++;
  237.                         i++;break;//4
  238.   case 0xdd:write_com(i);
  239.             write_date(table2[5]);table3[j]=5;j++;
  240.                         i++;break;//5
  241.   case 0xbd:write_com(i);
  242.             write_date(table2[6]);table3[j]=6;j++;
  243.                         i++;break;//6
  244.   case 0x7d:write_com(i);
  245.             write_date(table2[7]);table3[j]=7;j++;
  246.                         i++;break;//7
  247.   case 0xeb:write_com(i);
  248.             write_date(table2[8]);table3[j]=8;j++;
  249.                         i++;break;//8
  250.   case 0xdb:write_com(i);
  251.             write_date(table2[9]);table3[j]=9;j++;
  252.                         i++;break;//9
  253.   case 0xe7:write_com(i);
  254.             write_date(table2[15]);table3[j]='.';j++;
  255.                         i++;break;

  256.   case 0xbb:write_com(i);
  257.                          table3[j]=table3[j]+0.1 ;
  258. ……………………

  259. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
電子綜合實驗1.zip (119.26 KB, 下載次數: 194)


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

使用道具 舉報

沙發
ID:222497 發表于 2017-7-26 11:10 | 只看該作者
很給力!
回復

使用道具 舉報

板凳
ID:242547 發表于 2018-3-19 22:02 | 只看該作者
怎么運行時發生錯誤啊
回復

使用道具 舉報

地板
ID:242547 發表于 2018-3-19 22:09 | 只看該作者
樓主怎么仿真出錯啊
回復

使用道具 舉報

5#
ID:92810 發表于 2018-11-4 23:01 | 只看該作者
學習一波,謝謝樓主分享的好東西了
回復

使用道具 舉報

6#
ID:92810 發表于 2018-11-4 23:02 | 只看該作者
謝謝分享了
回復

使用道具 舉報

7#
ID:92810 發表于 2018-11-4 23:07 | 只看該作者
不行啊
回復

使用道具 舉報

8#
ID:691056 發表于 2020-2-8 12:01 | 只看該作者
仿真出錯了
回復

使用道具 舉報

9#
ID:929468 發表于 2021-5-30 14:10 | 只看該作者
為什么壓縮包里打不開程序
回復

使用道具 舉報

10#
ID:319039 發表于 2023-12-9 18:33 | 只看該作者
不好用,就做了設置顯示,沒有做電源控制
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲免费片 | 日本精品一区二区 | 精品一区二区三区不卡 | 五月激情综合网 | 亚洲手机在线 | 91精品国产色综合久久不卡98口 | 日韩一区二区三区在线观看 | 日本亚洲欧美 | 天天干天天操 | 男人天堂视频在线观看 | 亚洲毛片 | 成人在线中文字幕 | 国产精品国产三级国产aⅴ中文 | 一区二区三区小视频 | 欧美视频第二页 | 国内av在线 | 国产精品污污视频 | 国产精品永久久久久久久www | 精品国产一区二区在线 | 激情六月丁香婷婷 | 久久久精 | 久久不卡 | 91国在线 | 国产一区二区三区网站 | 国产99精品 | 91亚洲精品国偷拍自产在线观看 | 香蕉久久a毛片 | 九九热精品视频 | www.788.com色淫免费 | 日韩国产欧美 | 在线四虎 | 九九热在线视频观看这里只有精品 | 日韩欧美在线视频观看 | 国产91视频免费 | 欧美美女一区二区 | 91看片网 | 成年免费视频 | 日韩成人在线播放 | 颜色网站在线观看 | 欧美午夜精品久久久久久浪潮 | 国产高清视频一区二区 |