1、#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include#include#include#include#include#include#define RS_CLR RS=0 #define RS_SET RS=1#define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0#define EN_SET EN=1#define DataPort P0#define MEAS 0x00 /测量模式#define RWTR 0x08 /读写温度数据寄存器#define STX 0x0E /x 通道自检
2、#define STY 0x0F /Y 通道自检#define RDAX 0x10 /读通道加速度值#define RDAY 0x11 /读通道加速度值sbit RS = P24; /定义端口 sbit RW = P25;sbit EN = P26;sbit SPK=P20;sbit SCK=P17; sbit MISO=P16;sbit MOSI=P15;sbit CSB=P14;unsigned char frq; sbit P0_0 = P00;sbit P0_1 = P01;sbit P0_2 = P02;sbit P0_3 = P03;sbit P0_4 = P04;sbit P0_
3、5 = P05;sbit P0_6 = P06;sbit P0_7 = P07;sbit P1_0 = P10;sbit P1_1 = P11;sbit P1_2 = P12;sbit P1_3 = P13;sbit P1_4 = P14;sbit P1_5 = P15;sbit P1_6 = P16;sbit P1_7 = P17;sbit P2_0 = P20;sbit P2_1 = P21;sbit P2_2 = P22;sbit P2_3 = P23;sbit P2_4 = P24;sbit P2_5 = P25;sbit P2_6 = P26;sbit P2_7 = P27;sbit
4、 P3_0 = P30;sbit P3_1 = P31;sbit P3_2 = P32;sbit P3_3 = P33;sbit P3_4 = P34;sbit P3_5 = P35;sbit P3_6 = P36;sbit P3_7 = P37; unsigned int SPI_ReadBits(unsigned char n );void SPI_WriteByte( unsigned char wdata );void SPI_Start(void);void SPI_Stop(void);void SPI_Reset(void);void SPI_Delay(unsigned cha
5、r);unsigned int SPI_GetX( void );unsigned int SPI_GetY( void );void SPI_Init( void );void SPI_Stop( void )SCK = 0;CSB = 1; SPI_Delay(10);void SPI_Reset(void)SPI_Stop();void SPI_Delay(unsigned char n)while(n-);void SPI_Start(void)SCK = 0;CSB = 0;SPI_Delay(10);/主机写一个 BYTE 到器件/最终状态:CLK = LOWvoid SPI_Wr
6、iteByte( unsigned char wdata )unsigned char i;for( i = 0 ; i 20) g=0;LCD_Write_String(x,y,“DANGER!“);while(!P2_0)Init_Timer0(); /初始化定时器DelayMs(1); /延时 1ms,累加频率值frq+;else LCD_Write_String(x,y,“ “);EA=0;g=1;return(g);/*-发送函数-*/ void Sed(int a)SBUF=a;while(TI=0);TI=0;void Send(float n)int a,b,c,d,m;m=(
7、int)(n*100);a=m%10;Sed(a);m=m/10;b=m%10;Sed(b);m=m/10;c=m%10;Sed(c);d=m/10;Sed(d);/*-主函数-*/ void main(void) unsigned int result;double angle,a,b; LCD_Init(); LCD_Clear();/清屏 SPI_Reset();SPI_Delay(1000);SPI_Init(); SPI_Delay(1000);while (1) result = SPI_GetX();angle=angle_transfer(result);a=angle;Sen
8、d(a);P2_0=Warning(angle,9,0);P2_1=Warning(angle,9,0);if(a0) a=fabs(a);LCD_Write_String(0,0,“X:-“);LCD_Display(0,a);elseLCD_Write_String(0,0,“X:+“);LCD_Display(0,a);result = SPI_GetY();angle=angle_transfer(result);b=angle;Send(b);P2_0=Warning(angle,9,1);P2_2=Warning(angle,9,1);if(b0) b=fabs(b);LCD_Write_String(0,1,“Y:-“);LCD_Display(1,b);elseLCD_Write_String(0,1,“Y:+“);LCD_Display(1,b);