标题: 基于51单片机的水位控制器设计论文 带源码 [打印本页]

作者: 潇洒先生    时间: 2017-2-23 11:21
标题: 基于51单片机的水位控制器设计论文 带源码
(1)画出电路原理图;
(2)确定元器件及元件参数;
(3)进行电路模拟仿真;
(4)SCH文件生成与打印输出;
(5)PCB文件生成与打印输出。

论文截图:

目录
1、引言------------------------------------------------------------1
2、总体设计方案----------------------------------------------------1
2.1 设计思路-------------------------------------------------------1
2.2 总体设计框图---------------------------------------------------1
3 设计组成及原理分析-----------------------------------------------2
3.1 信号产生电路---------------------------------------------------2
3.2 信号编码电路---------------------------------------------------3
3.3 水位显示电路---------------------------------------------------3
3.4 电动机控制电路-------------------------------------------------4
3.5 报警控制电路---------------------------------------------------5
4 总结与体会-------------------------------------------------------6
参考文献-----------------------------------------------------------7
附录1--------------------------------------------------------------8
附录2--------------------------------------------------------------9



51单片机的水位控制器51单片机程序源码:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code dispbitcode[]={0x03,0xf3,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
  5. uchar dispbuf[6];
  6. uint i,j,getdata,temp,temp1;
  7. uchar count,d,k=1;
  8. sbit CLK=P2^7;
  9. sbit ST=P2^3;
  10. sbit OE=P2^0;
  11. sbit EOC=P2^2;
  12. sbit adda=P2^4;
  13. sbit addb=P2^5;
  14. sbit addc=P2^6;
  15. sbit seg0=P1^7;
  16. sbit seg1=P3^2;
  17. sbit seg2=P3^3;
  18. sbit seg3=P3^4;
  19. sbit seg4=P3^5;
  20. sbit seg5=P3^6;
  21. sbit seg6=P3^7;
  22. sbit key1=P3^1;
  23. void Delay(uint i);
  24. void Display();
  25. void key(void);
  26. void key()
  27. {
  28. if(key1==0)
  29. {
  30. Delay(30);//按键消抖
  31. while(key1==0);//判断是否真的消抖
  32. k++;
  33. if(k>=9)
  34. k=1;
  35. }
  36. }
  37. void adc0809()
  38. {
  39. ST=0;    //  初始化时
  40. OE=0;    //使ST和OE信号全为低电平
  41. ST=1;        //ST 为转换启动信号。当ST 上跳沿时,所有内部寄存器清零;
  42. ST=0;    // ST下跳沿时,开始进行A/D 转
  43. /*选择通道*/
  44. {
  45. if(k==1)
  46. {
  47. adda=0;  addb=0;  addc=0;
  48. }
  49. if(k==2)
  50. {
  51. adda=1;  addb=0;  addc=0;
  52. }
  53. if(k==3)
  54. {
  55. adda=0;  addb=1;  addc=0;
  56. }
  57. if(k==4)
  58. {
  59. adda=1;  addb=1;  addc=0;
  60. }
  61. if(k==5)
  62. {
  63. adda=0;  addb=0;  addc=1;
  64. }
  65. if(k==6)
  66. {
  67. adda=1;  addb=0;  addc=1;
  68. }
  69. if(k==7)
  70. {
  71. adda=0;  addb=1;  addc=1;
  72. }
  73. if(k==8)
  74. { adda=1;  addb=1;  addc=1;}
  75. }

  76. if(EOC==1)         //当EOC 为高电平时,表明转换结束
  77. {
  78. OE=1;                    //OE=1,输出转换得到的数据
  79. getdata=P0;
  80. OE=0;                  //输出数据线呈高阻状态
  81. }
  82. }
  83. void main()
  84. {

  85. while(1)
  86. {TMOD=0x10;
  87. TH1=(65536-200)/256;
  88. TL1=(65536-200)%256;
  89. EA=1;
  90. ET1=1;
  91. TR1=1;
  92. key();
  93. {
  94. adc0809();
  95. temp=getdata*1.0/255*500;
  96. dispbuf[0]=temp%10;
  97. dispbuf[1]=temp/10%10;
  98. dispbuf[2]=temp/100;
  99. dispbuf[3]=8;//正向显示8
  100. dispbuf[4]=k;//通道显示
  101. dispbuf[5]=0;//待用
  102. Display();
  103. }
  104. }
  105. }
  106. void Delay(uint i)
  107. {
  108. uint j;
  109. for(;i>0;i--)
  110. {
  111. for(j=0;j<125;j++);
  112. }
  113. }
  114. void Display()

  115. {
  116. P1=dispbitcode[dispbuf[3]];//端口显示位+第一管口亮
  117. seg0=0;
  118. seg1=0;
  119. seg2=0;
  120. seg3=0;
  121. seg4=1;
  122. seg5=0;
  123. seg6=0;
  124. Delay(5);
  125. P1=0xff;
  126. P1=dispbitcode[dispbuf[0]];//个位+第四管口亮
  127. seg1=1;
  128. seg2=0;
  129. seg3=0;
  130. seg4=0;
  131. seg5=0;
  132. seg6=0;
  133. Delay(5);
  134. P1=0xff;
  135. P1=dispbitcode[dispbuf[1]];//十位+第三管口亮
  136. seg1=0;
  137. seg2=1;
  138. seg3=0;
  139. seg4=0;
  140. seg5=0;
  141. seg6=0;
  142. Delay(5);
  143. P1=0xff;
  144. P1=dispbitcode[dispbuf[2]];//百位+第二管口亮
  145. seg0=0;
  146. seg1=0;
  147. seg2=0;
  148. seg3=1;
  149. seg4=0;
  150. seg5=0;
  151. seg6=0;
  152. Delay(5);
  153. P1=0xff;
  154. P1=dispbitcode[dispbuf[4]];//第2管口亮
  155. seg1=0;
  156. seg2=0;
  157. seg3=0;
  158. seg4=0;
  159. seg5=1;
  160. seg6=0;
  161. Delay(5);
  162. P1=0xff;
  163. P1=dispbitcode[dispbuf[5]];//第1管口亮
  164. seg1=0;
  165. seg2=0;
  166. seg3=0;
  167. seg4=0;
  168. seg5=0;
  169. seg6=1;
  170. Delay(5);
  171. P1=0xff;
  172. }
  173. void t1(void) interrupt 3
  174. {
  175. TH1=(65536-200)/256;
  176. TL1=(65536-200)%256;
  177. CLK=~CLK;
  178. }
复制代码
论文和源码下载:
水位控制器.docx (99.71 KB, 下载次数: 39)
修改好的程序.docx (20.97 KB, 下载次数: 18)


作者: GROW    时间: 2017-12-20 20:53
有仿真吗
作者: admin    时间: 2017-12-20 20:58
GROW 发表于 2017-12-20 20:53
有仿真吗

貌似只有论文与源码,不含仿真
作者: GROW    时间: 2017-12-20 21:42
admin 发表于 2017-12-20 20:58
貌似只有论文与源码,不含仿真

谢谢了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1