(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单片机程序源码:
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code dispbitcode[]={0x03,0xf3,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
- uchar dispbuf[6];
- uint i,j,getdata,temp,temp1;
- uchar count,d,k=1;
- sbit CLK=P2^7;
- sbit ST=P2^3;
- sbit OE=P2^0;
- sbit EOC=P2^2;
- sbit adda=P2^4;
- sbit addb=P2^5;
- sbit addc=P2^6;
- sbit seg0=P1^7;
- sbit seg1=P3^2;
- sbit seg2=P3^3;
- sbit seg3=P3^4;
- sbit seg4=P3^5;
- sbit seg5=P3^6;
- sbit seg6=P3^7;
- sbit key1=P3^1;
- void Delay(uint i);
- void Display();
- void key(void);
- void key()
- {
- if(key1==0)
- {
- Delay(30);//按键消抖
- while(key1==0);//判断是否真的消抖
- k++;
- if(k>=9)
- k=1;
- }
- }
- void adc0809()
- {
- ST=0; // 初始化时
- OE=0; //使ST和OE信号全为低电平
- ST=1; //ST 为转换启动信号。当ST 上跳沿时,所有内部寄存器清零;
- ST=0; // ST下跳沿时,开始进行A/D 转
- /*选择通道*/
- {
- if(k==1)
- {
- adda=0; addb=0; addc=0;
- }
- if(k==2)
- {
- adda=1; addb=0; addc=0;
- }
- if(k==3)
- {
- adda=0; addb=1; addc=0;
- }
- if(k==4)
- {
- adda=1; addb=1; addc=0;
- }
- if(k==5)
- {
- adda=0; addb=0; addc=1;
- }
- if(k==6)
- {
- adda=1; addb=0; addc=1;
- }
- if(k==7)
- {
- adda=0; addb=1; addc=1;
- }
- if(k==8)
- { adda=1; addb=1; addc=1;}
- }
- if(EOC==1) //当EOC 为高电平时,表明转换结束
- {
- OE=1; //OE=1,输出转换得到的数据
- getdata=P0;
- OE=0; //输出数据线呈高阻状态
- }
- }
- void main()
- {
- while(1)
- {TMOD=0x10;
- TH1=(65536-200)/256;
- TL1=(65536-200)%256;
- EA=1;
- ET1=1;
- TR1=1;
- key();
- {
- adc0809();
- temp=getdata*1.0/255*500;
- dispbuf[0]=temp%10;
- dispbuf[1]=temp/10%10;
- dispbuf[2]=temp/100;
- dispbuf[3]=8;//正向显示8
- dispbuf[4]=k;//通道显示
- dispbuf[5]=0;//待用
- Display();
- }
- }
- }
- void Delay(uint i)
- {
- uint j;
- for(;i>0;i--)
- {
- for(j=0;j<125;j++);
- }
- }
- void Display()
- {
- P1=dispbitcode[dispbuf[3]];//端口显示位+第一管口亮
- seg0=0;
- seg1=0;
- seg2=0;
- seg3=0;
- seg4=1;
- seg5=0;
- seg6=0;
- Delay(5);
- P1=0xff;
- P1=dispbitcode[dispbuf[0]];//个位+第四管口亮
- seg1=1;
- seg2=0;
- seg3=0;
- seg4=0;
- seg5=0;
- seg6=0;
- Delay(5);
- P1=0xff;
- P1=dispbitcode[dispbuf[1]];//十位+第三管口亮
- seg1=0;
- seg2=1;
- seg3=0;
- seg4=0;
- seg5=0;
- seg6=0;
- Delay(5);
- P1=0xff;
- P1=dispbitcode[dispbuf[2]];//百位+第二管口亮
- seg0=0;
- seg1=0;
- seg2=0;
- seg3=1;
- seg4=0;
- seg5=0;
- seg6=0;
- Delay(5);
- P1=0xff;
- P1=dispbitcode[dispbuf[4]];//第2管口亮
- seg1=0;
- seg2=0;
- seg3=0;
- seg4=0;
- seg5=1;
- seg6=0;
- Delay(5);
- P1=0xff;
- P1=dispbitcode[dispbuf[5]];//第1管口亮
- seg1=0;
- seg2=0;
- seg3=0;
- seg4=0;
- seg5=0;
- seg6=1;
- Delay(5);
- P1=0xff;
- }
- void t1(void) interrupt 3
- {
- TH1=(65536-200)/256;
- TL1=(65536-200)%256;
- CLK=~CLK;
- }
复制代码 论文和源码下载:
水位控制器.docx
(99.71 KB, 下载次数: 39)
修改好的程序.docx
(20.97 KB, 下载次数: 18)
|