找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4185|回复: 3
打印 上一主题 下一主题
收起左侧

基于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)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:264431 发表于 2017-12-20 20:53 | 只看该作者
有仿真吗
回复

使用道具 举报

板凳
ID:1 发表于 2017-12-20 20:58 | 只看该作者

貌似只有论文与源码,不含仿真
回复

使用道具 举报

地板
ID:264431 发表于 2017-12-20 21:42 | 只看该作者
admin 发表于 2017-12-20 20:58
貌似只有论文与源码,不含仿真

谢谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表