(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)
2017-2-23 11:19 上傳
點擊文件名下載附件
報告
修改好的程序.docx
(20.97 KB, 下載次數: 18)
2017-2-23 11:19 上傳
點擊文件名下載附件
程序
|