📄 q1.c
字号:
}
P1IFG&=~BIT0;//clear IFG
}
//========================================================================================
//函数:void adc_init(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void adc_init(void)
{
unsigned char i;
//int chan;
// unsigned char ACRVal;
// ADS1240Init();
P6OUT&=~ADS1240_RESET;//RSET LO
Delay(6);//52 cycle
P6OUT|=ADS1240_RESET;//RSET HI, LO-->HI > 16 clock
Delay(6);//52 cycle
AD1240_Reg_Val[0]=PGA_Plus;//ADS1240_GAIN_32;//PGA_Plus;//SETUP
AD1240_Reg_Val[1]=ADS1240_MUXP_AIN0+ADS1240_MUXN_AIN1;//MUX
AD1240_Reg_Val[2]=0;//BUFEN_BIT+RANGE_BIT;//
while(P1IN&BIT0) {;}
ADS1240WriteRegister(ADS1240_SETUP_REGISTER, 3, AD1240_Reg_Val);
ADS1240SendByte(ADS1240_CMD_SELFCAL);
//ADS1240SendByte(ADS1240_CMD_SYSOCAL);
//ADS1240SendByte(ADS1240_CMD_SYSGCAL);
for (i=0; i<4; i++)
ADS1240WaitForDataReady(0);
}
//========================================================================================
//函数:void mode_check(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void mode_check(void)
{
unsigned char i;
switch(key_data)
{
case 2:
{
Mode=2;
key_data=0;
WDTCTL =WDT_ADLY_1000; //WDT_ADLY_250;//WDT_ADLY_1000; // WDT 1s/4 interval timer
IE1 |= WDTIE; // Enable WDT interrupt
}
break;
case 1:
{
Mode=1;
key_data=0;
set_lcd_out();
LCD_Cursor_Addr=0;
for(i=0;i<6;i++)
LCD_Key_bar[i]=0;
password_ok_flag=0;
}
break;
case 3:
{
Mode=3;
key_data=0;
}
break;
case 4:
{
// Mode=4;
// key_data=0;
// P2DIR |= BIT5;//
//P2OUT &= ~BIT5;// 0x7e;
//back_light_flag=1;
// back_light_num=0;
}
break;
case 5:
{
/* if(C_Power_Flag==1)
{
power_off();
}
else
{
C_Power_Flag=1;
EN_AD_Flag=1;
Mode=0;
WDTCTL =WDT_ADLY_1000; //WDT_ADLY_250;//WDT_ADLY_1000; // WDT 1s/4 interval timer
IE1 |= WDTIE;
En_key_INT();
}
*/
key_data=0;
}
break;
}
}
//========================================================================================
//函数:void Password_check(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Password_check(void)
{
unsigned char flag,i;
////校正密码验证
while(!password_ok_flag)
{
if(key_data==0x02)
{
LCD_Cursor_Addr++;
if(LCD_Cursor_Addr>=LCD_NUM) LCD_Cursor_Addr=0;
key_data=0;
}
if(key_data==0x03)
{
LCD_Key_bar[LCD_Cursor_Addr]++;
if(LCD_Key_bar[LCD_Cursor_Addr]>=10) LCD_Key_bar[LCD_Cursor_Addr]=0;
key_data=0;
}
if(key_data==0x01)
{
flag=0;
for(i=0;i<LCD_NUM;i++)
{
if(LCD_Key_bar[i]!=password[i])//password_ok_flag
{ flag=1;break;}
}
if(flag==1)
password_ok_flag=0;
else
password_ok_flag=1;
key_data=0;
}
if(key_data==0x05)
{
power_off();
break;
}
LCD_Display(LCD_Cursor_Addr,LCD_Key_bar);
}
}
//========================================================================================
//函数:void LCD_Display(unsigned char Cursor_Addr, unsigned char *LCD_data)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
//闪烁显示函数
void LCD_Display(unsigned char Cursor_Addr, unsigned char *LCD_data)
{
unsigned char i;
for(i=0;i<LCD_NUM;i++)
{
if(i==LCD_Cursor_Addr)
DisplayNum((Cursor_Addr+1),LCD_data[Cursor_Addr],0,0);
else
DisplayNum((i+1),LCD_data[i],0,0);
}
Delay(26500);
for(i=0;i<LCD_NUM;i++)
{
if(i==LCD_Cursor_Addr)
DisplayNum((Cursor_Addr+1),LCD_data[Cursor_Addr],0,1);
else
DisplayNum((i+1),LCD_data[i],0,0);
}
Delay(26500);
}
//========================================================================================
//函数:unsigned char get_key_bar(unsigned char *out_key_bar)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
unsigned char get_key_bar(unsigned char *out_key_bar)
{
unsigned char flag;
////校正密码验证
flag=0;
if(key_data==0x02)
{
LCD_Cursor_Addr++;
if(LCD_Cursor_Addr>=LCD_NUM) LCD_Cursor_Addr=0;
key_data=0;
}
if(key_data==0x03)
{
out_key_bar[LCD_Cursor_Addr]++;
if(out_key_bar[LCD_Cursor_Addr]>=10) out_key_bar[LCD_Cursor_Addr]=0;
key_data=0;
}
if(key_data==0x01)
{
flag=1;
key_data=0;
}
LCD_Display(LCD_Cursor_Addr,out_key_bar);
return flag;
}
//========================================================================================
//函数:void Save_key_data(unsigned long *data,unsigned int EE_addr)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Save_key_data(unsigned long int*data,unsigned int EE_addr)
{
unsigned char i;
*data=0;
for(i=0;i<(LCD_NUM-1);i++)
*data=(*data+(unsigned long)LCD_Key_bar[i])*10;
*data=*data+(unsigned long)LCD_Key_bar[5];
key_assignments=*data;
Save_AD_Data(data,EE_addr);
}
//========================================================================================
//函数:void rest_LCD_data(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void rest_LCD_data(void)
{
unsigned char i;
LCD_Cursor_Addr=0;
for(i=0;i<6;i++)
LCD_Key_bar[i]=0;
}
//========================================================================================
//函数:void Open_AD_Sampling(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Open_AD_Sampling(void)
{
AD_num=0;
Open_AD_Power();
Delay(20);
adc_init();
En_AD_DRDY_INT();
_NOP();
ad_flag=0;
}
//========================================================================================
//函数:void Open_AD_Sampling(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Close_AD_Sampling(void)
{
EN_AD_Flag=0;
Close_AD_Power();//关AD电源
Dis_AD_DRDY_INT(); //关中断
//Delay(500);//消抖
AD_num=0;
ad_flag=0;
}
//========================================================================================
//函数:void Open_AD_Sampling(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Open_WatchDog(void)
{
WDTCTL =WDT_ADLY_1000; //WDT_ADLY_250;//WDT_ADLY_1000; // WDT 1s/4 interval timer
IE1 |= WDTIE; // Enable WDT interrupt
}
//========================================================================================
//函数:void Open_AD_Sampling(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Close_WatchDog(void)
{
WDTCTL=WDTPW+WDTHOLD;//Stop WDT
}
//========================================================================================
//函数:void Show_AD_Data(void)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Show_AD_Data(void)
{
unsigned char i;
unsigned long int bar6;
AD_Sampling_num=4;
if(AD_num>(AD_Sampling_num-1))
{
for(i=0;i<(AD_Sampling_num+1);i++)
ad1240_test1[i]=ad1240_test[i+1];
ad1240=0;
ad1240=AD_Data_Manage(ad1240_test1,AD_Sampling_num);
set_lcd_out();
I_VDisplay(6,ad1240);
set_lcd_powdn();
dataa=Hex_to_BCD(ad1240);
for(i=7;i>0;i--)
{
re_buffer1[i-1]=(dataa&0x0000000f);
re_buffer1[i-1]=re_buffer1[i-1]+0x30;
dataa=dataa>>4;
}
for(i=0;i<9;i++)
{
sent_byte(re_buffer1[i]);
}
sent_byte(0x0D);
sent_byte(0x0A);
Zero_Sampling_AD=30800;
Most_Sampling_AD=6723789;
AD_num=0;
Press_Data=(float)(ad1240-Zero_Sampling_AD);
bar6=(Most_Sampling_AD-Zero_Sampling_AD);
Press_Data=(Press_Data/((float)bar6));
Press_Data=Press_Data*((float)Most_data);//((float)Most_data);
}
}
//========================================================================================
//函数:void Save_AD_Data(unsigned long int*data,unsigned int EE_addr)
//功能:读取AD1240积存器
//变量:Byte
//返回:无
//========================================================================================
void Save_AD_Data(unsigned long int*data,unsigned int EE_addr)
{
unsigned char char_bar,i;
unsigned long long_bar;
Dis_key_INT();
long_bar=*data;
char_bar=(0x000000ff&long_bar);
WriteWord((EE_addr),char_bar);
long_bar=*data;
for(i=0;i<4;i++)
{
long_bar=long_bar>>8;
char_bar=(unsigned char)(0x000000ff&long_bar);
WriteWord((EE_addr+1+i),char_bar);
}
En_key_INT();
}
void writetoreg(uchar ad_reg)
{
uchar i;
for(i=8;i>=1;i--)
{ P5OUT&=~BIT3;//SCLK=0
if(ad_reg&0x80) P5OUT|=BIT1;//DIN=1
else P5OUT&=~BIT1;//DIN=0
_NOP();_NOP();_NOP();
ad_reg=ad_reg<<1;
P5OUT|=BIT3;//SCLK=1
_NOP();_NOP();_NOP();
}
for(i=15;i>=1;i--) {;}
}
void power_off(void)
{
P2OUT |= BIT5;// 关背光
back_light_flag=1;
back_light_num=0;
C_Power_Flag=0;
WDTCTL=WDTPW+WDTHOLD;//Stop WDT
Dis_AD_DRDY_INT(); //关中断
Close_AD_Power();//关AD电源
set_lcd_out();
ClearRAM(ALL);
set_lcd_powdn();
//set_lcd_powdoff();
Dis_key_INT();
P2IES|=BIT0;
P2SEL&=~BIT0;
P2IE|=BIT0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -