Bổn thiết kế
51 đan phiến cơSiêu thanh ba trắc cựĐái ngữ âm bá báo ( nguyên trình tự +Nguyên lý đồ+ nguyên lý đồ giảng giải )
Nguyên lý đồ:Altium Designer
Trình tựBiên dịch khí:keil 4
Biên trình ngữ ngôn: C ngữ ngôn
Biên hào S0004
Công năng thuyết minh:
1. Bổn thiết kế thải dụngSTC89C51/52 ( dữ AT89S51/52,AT89C51/52 thông dụng, khả nhậm tuyển ) đan phiến cơ tác vi chủKhống chế khí;
2.LCD1602Dịch tinh hiển kỳ trắc lượng đích cự ly hòa ôn độ;
3. Đái hữu ôn độ bổ thường công năng (DS18B20Truyện cảm khí);
4. Trắc lượng phạm vi 0.02m~4m, tinh độ vi 0.01m;
5. Đái thật thời ngữ âm bá báo công năng;
6. Án kiện công năng: Án kiện 2: Gia báo cảnh trị án kiện 3: Giảm báo cảnh trị án kiện 1: Thiết trí án kiện ( chỉ hữu tại án hạ thiết trí đích thời hầu tài khả dĩ gia giảm báo cảnh trị ), tại vị án hạ án kiện 1 thời, án hạ án kiện 3 bá báo trắc lượng cự ly.
Sử dụng phương pháp:
Khai cơ tức khả trắc thí, tiền diện đích chướng ngại vật tẫn lượng bất yếu thái loạn, tẫn lượng bình chỉnh ( như tường bích ). Chỉ hữu tại thiết trí đích thời hầu tài khả dĩ gia giảm báo cảnh trị thủy kế thời
Nguyên lý đồ:
Trình tự:
Phục chế đáo lưu lãm khí https://docs.qq.com/sheet/DS0xIa0llTmtNakRW
// hoành định nghĩa
#define uchar unsigned char
#define uint unsigned int
#define ULint unsigned long int
// ôn độ linh thượng dữ linh hạ đích tiêu chí vị
char flag=0;
// siêu thanh ba
char flags=0;
// siêu thanh ba cự ly
char flag1s=0;
// kế toán định thời gian
uint time=0;
// kế toán cự ly
ULint L_=0;
// ôn độ
uint t_=0;
// hiển kỳ mô thức 0 chính thường 1 tối đại trị điều chỉnh 2 tối tiểu trị điều chỉnh
uchar mode=0;
uint Max=490;
uint Min=10;
// án kiện tiêu chí
uchar k=0;
// sổ trị hữu ngộ
uchar FW=0;
// đầu hàm sổ
#include <reg52.h>
#include <intrins.h>
#include "BJ_Key.h" // báo cảnh án kiện
#include "display.h" // hiển kỳ đầu hàm sổ
#include "ultrasonic_wave.h" // siêu thanh ba đầu hàm sổ
#include "DS18B20.h" //Ôn độ truyện cảm khíĐầu hàm sổ
uchar ONE1[6]={0x7E,0x04,0x03,0x00,0X0D,0xEF};// hiện tại cự ly vi
uchar ONE2[6]={0x7E,0x04,0x03,0x00,0X0C,0xEF};// mễ
uchar ONE3[6]={0x7E,0x04,0x03,0x00,0X0B,0xEF};// điểm
uchar ONE4[6]={0x7E,0x04,0x03,0x00,0X00,0xEF};// bách vị
uchar ONE5[6]={0x7E,0x04,0x03,0x00,0X00,0xEF};// thập vị
uchar ONE6[6]={0x7E,0x04,0x03,0x00,0X00,0xEF};// cá vị
void delayms(uint ms)
{
uchar i=100,j;
for(;ms;ms--)
{
while(--i)
{
j=10;
while(--j);
}
}
}
/********UARTSơ thủy hóaBa đặc suất:9600 ******/
void UART_init(void)
{
SCON = 0x50; // 10 vị uart, duẫn hứa xuyến hành tiếp thụ
TMOD= 0x20; //Định thời khí1 công tác tại phương thức 2 ( tự động trọng trang )
TH1 = 0xFD;
TL1 = 0xFD; // thiết trí ba đặc suất vi 9600
TR1 = 1;
}
/*
* UART phát tống nhất tự tiết
Nhập khẩu tham sổ uint8 đích sổ cư loại hình tức yếu phát tống đích sổ cư
*/
void UART_send_byte(uchar dat)
{
SBUF = dat;
while (TI == 0);
TI = 0;
}
/*
* UART phát tống tự phù xuyến
Đệ nhất cá tham sổ yếu phát tống tự phù xuyến hoặc sổ cư đích thủ địa chỉ
Đệ nhị cá tham sổ thị yếu phát tống đích sổ cư hoặc tự phù xuyến đích trường độ
*/
void UART_send_string(uchar *buf,uchar len)
{
uchar i;
for(i=0;i<len;i++)
UART_send_byte(*buf++);
}
// chủ hàm sổ
void main()
{
UART_init();
Init_ultrasonic_wave();
// bình mạc sơ thủy hóa
Init1602();
// ôn độ sơ thủy hóa
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
tmpchange();
t_=tmp();
// tuần hoàn hiển kỳ
while(1)
{
Key();
if(yuyin_flag==1)
{
yuyin_flag=0;
ONE4[4]=L_/100;
ONE5[4]=L_/10%10;
ONE6[4]=L_%10;
if(ONE4[4]==0)ONE4[4]=0x0A;
if(ONE5[4]==0)ONE5[4]=0x0A;
if(ONE6[4]==0)ONE6[4]=0x0A;
UART_send_string(ONE1,6);
delayms(1);
UART_send_string(ONE4,6);
delayms(1);
UART_send_string(ONE3,6);
delayms(1);
UART_send_string(ONE5,6);
delayms(1);
UART_send_string(ONE6,6);
delayms(1);
UART_send_string(ONE2,6);
delayms(1);
}
// chính thường hiển kỳ
if(mode==0)
{
StartModule();// khải động siêu thanh ba
while(!RX); // đương RX vi linh thời đẳng đãi
TR0=1; // khai khải kế sổ
while(RX); // đương RX vi 1 kế sổ tịnh đẳng đãi
TR0=0; // quan bế kế sổ
delayms(20); //20MS
tmpchange(); // ôn độ chuyển hoán
t_=tmp(); // độ ôn độ
Conut(t_/10); // kế toán cự ly
if(L_>Max||L_<Min)
{
Feng_Start();
}
else
{
if(FW!=1)
Feng_Stop();
}
Display_1602(t_/10,L_);
}
// điều chỉnh hiển kỳ
else if(mode!=0)
{
// tối đại tối tiểu trị
Init_MaxMin();
while(mode!=0)
{
Key();
if(k==1&&mode==1)
{
Init_MaxMin();
write_com(0x8d);// thiết trí vị trí
}
else if(k==1&&mode==2)
{
Init_MaxMin();
write_com(0x8d+0x40);// thiết trí vị trí
}
k=0;
}
// giới diện sơ thủy hóa
Init1602();
}
}
}
//T0 trung đoạn dụng laiKế sổ khíDật xuất, siêu quá trắc cự phạm vi
void CJ_T0() interrupt 1
{
flags=1; // trung đoạn dật xuất tiêu chí
}
Bách độVân phân hưởng hạ tái liên tiếp: