基于MCP03204/3208的压力检测系统
选用元器件
MCP03204/3208
LCD128*64
PWM
URAT
#include <REG52.h>
#include "12864.h"
#include "Delay.h"
#include "MCP3208.h"
#include "Motor.h"
#include "UART.h"
#include "Key.h"
#include "Timer0.h"
unsigned int num = 0, PL = 600, PH = 1200;
unsigned char KeyNum;
void Display()
{
num = GET_MCP3208();
KeyNum=Key();
//LCD P: Pa
Display_ZM(1,0,0,15);
Display_FH(1,0,8,4);
Display_SZ(1,0,16,num/1000%10);
Display_SZ(1,0,24,num/100%10);
Display_SZ(1,0,32,num/10%10);
Display_SZ(1,0,40,num/1%10);
Display_ZM(1,0,48,15);
Display_ZM(1,0,56,26);
//LCD PL: Pa
Display_ZM(1,2,0,15);
Display_ZM(1,2,8,11);
Display_FH(1,2,16,4);
Display_SZ(1,2,24,PL/1000%10);
Display_SZ(1,2,32,PL/100%10);
Display_SZ(1,2,40,PL/10%10);
Display_SZ(1,2,48,PL/1%10);
Display_ZM(1,2,56,15);
Display_ZM(2,2,0,26);
//LCD PH: Pa
Display_ZM(1,4,0,15);
Display_ZM(1,4,8,7);
Display_FH(1,4,16,4);
Display_SZ(1,4,24,PH/1000%10);
Display_SZ(1,4,32,PH/100%10);
Display_SZ(1,4,40,PH/10%10);
Display_SZ(1,4,48,PH/1%10);
Display_ZM(1,4,56,15);
Display_ZM(2,4,0,26);
//LCd STATE£º
Display_ZM(2,0,8,18);
Display_ZM(2,0,16,19);
Display_ZM(2,0,24,0);
Display_ZM(2,0,32,19);
Display_ZM(2,0,40,4);
Display_FH(2,0,48,4);
//LCD MOTO:
Display_ZM(2,2,16,12);
Display_ZM(2,2,24,14);
Display_ZM(2,2,32,19);
Display_ZM(2,2,40,14);
Display_FH(2,2,48,4);
if(KeyNum)
{
if(KeyNum==1){PH++;}
if(KeyNum==2){PH--;}
if(KeyNum==3){PL++;}
if(KeyNum==4){PL--;}
}
if(num < PL )
{
Display_ZM(2,0,56,11);
Display_ZM(2,2,24,14);
Display_ZM(2,2,32,13);
Display_FH(2,2,56,10);
Back(10,100);
}
else if(num > PH)
{
Display_ZM(2,0,56,7);
Display_FH(2,2,56,9);
Forward(5,20);
}
else
{
Display_FH(2,0,56,1);
Display_FH(2,2,56,1);
Stop();
}
}
int main()
{
InitLCD();
UART_Init();
Timer0_Init();
while (1)
{
Display();
}
}
void Timer0_Routine() interrupt 1
{
static unsigned int T0Count;
TL0 = 0x18;
TH0 = 0xFC;
T0Count++;
if(T0Count>=1000)
{
T0Count=0;
Key_Loop();
UART_SendByte(num/256);
UART_SendByte(num%256);
}
}