燕山大学里仁学院仪表专业STM8S105S4校内实习程序文档格式.docx
《燕山大学里仁学院仪表专业STM8S105S4校内实习程序文档格式.docx》由会员分享,可在线阅读,更多相关《燕山大学里仁学院仪表专业STM8S105S4校内实习程序文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
voiddelay(u8i)//延时
{
while(i--);
}
voidmain(void)
u8*p1="
Hello,world.YSU"
;
u8*p2="
Name"
u8*p3="
Date"
u8*p4="
Temp"
u8*p5="
Humi"
u8*p6="
Name:
"
u8*p7="
SuSheng"
u8*p8="
Humidity:
u8*p9="
Temperature:
u8a=1;
u8b=1;
u16r;
u8time;
u8temp;
u8i,add;
u16t1,t2,f;
u16t=0;
u8bai,shi,ge;
u8wan1,qian1,bai1,shi1,ge1;
u16Conversion_Value1=0;
u16Conversion_Value=0;
//依次为年:
月,日,星期几,小时,分
Set1302(11,2,28,1,23,59);
TIM2_ICInit(TIM2_CHANNEL_1,TIM2_ICPOLARITY_RISING,TIM2_ICSELECTION_DIRECTTI,TIM2_ICPSC_DIV1,0);
TIM2_Cmd(ENABLE);
//使能TIM2计数
TIM2_ClearFlag(TIM2_FLAG_CC1);
GPIO_Init(GPIOC,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_Init(GPIOB,(GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_0),GPIO_MODE_OUT_PP_LOW_FAST);
GPIO_Init(GPIOA,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5,GPIO_MODE_OUT_PP_HIGH_FAST);
ADC1_DeInit();
ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS,ADC1_CHANNEL_9,ADC1_PRESSEL_FCPU_D18,ADC1_EXTTRIG_TIM,DISABLE,ADC1_ALIGN_RIGHT,ADC1_SCHMITTTRIG_CHANNEL9,DISABLE);
ADC1_StartConversion();
lcd162a_Reset();
lcd162a_cls();
lcd162a_ePutstr(1,1,p1);
delay_ms(240);
while
(1)
{
if((GPIO_ReadInputData(GPIOA)&
GPIO_PIN_1)==0)//左移
while((GPIO_ReadInputData(GPIOA)&
GPIO_PIN_1)==0);
if((a==1)&
(b==1))b=2;
elseif((a==1)&
(b==2))b=1;
if(a==1)a=8;
elseif(a==8)a=1;
lcd162a_Reset();
delay_ms
(1);
}
if((GPIO_ReadInputData(GPIOA)&
GPIO_PIN_2)==0)//右移
GPIO_PIN_2)==0);
if((a==8)&
elseif((a==8)&
}
lcd162a_DispOneChar(b,a,239);
//显示
lcd162a_ePutstr(1,3,p2);
lcd162a_ePutstr(1,10,p3);
lcd162a_ePutstr(2,3,p4);
lcd162a_ePutstr(2,10,p5);
if((GPIO_ReadInputData(GPIOA)&
GPIO_PIN_4)==0)//姓名
GPIO_PIN_4)==0);
(b==1))
{
if((a==1)&
{lcd162a_ePutstr(1,1,p6);
lcd162a_ePutstr(2,5,p7);
{
GPIO_PIN_5)==0)//姓名返回
GPIO_PIN_5)==0);
break;
if((a==8)&
(b==1))//万年历
lcd162a_cls();
lcd162a_DispOneChar(1,4,'
2'
);
lcd162a_DispOneChar(1,5,'
0'
//年
time=Read1302(YEAR);
lcd162a_DispOneChar(1,6,48+(u8)(time/10));
lcd162a_DispOneChar(1,7,48+(u8)(time%10));
lcd162a_DispOneChar(1,8,45);
//"
-"
//月
time=Read1302(MONTH);
lcd162a_DispOneChar(1,9,48+(u8)(time/10));
lcd162a_DispOneChar(1,10,48+(u8)(time%10));
lcd162a_DispOneChar(1,11,45);
//天
time=Read1302(DATE);
lcd162a_DispOneChar(1,12,48+(u8)(time/10));
lcd162a_DispOneChar(1,13,48+(u8)(time%10));
//小时
time=Read1302(HOUR);
lcd162a_DispOneChar(2,4,48+(u8)(time/10));
lcd162a_DispOneChar(2,5,48+(u8)(time%10));
lcd162a_DispOneChar(2,6,58);
:
//分
time=Read1302(MINUTE);
lcd162a_DispOneChar(2,7,48+(u8)(time/10));
lcd162a_DispOneChar(2,8,48+(u8)(time%10));
lcd162a_DispOneChar(2,9,58);
//秒
time=Read1302(SECOND);
lcd162a_DispOneChar(2,10,48+(u8)(time/10));
lcd162a_DispOneChar(2,11,48+(u8)(time%10));
GPIO_PIN_5)==0)//万年历返回
}
if((a==8)&
(b==2))
while((TIM2->
SR1&
TIM2_FLAG_CC1)!
=TIM2_FLAG_CC1);
t1=TIM2_GetCapture1();
while((TIM2->
t2=TIM2_GetCapture1();
t=t2-t1;
Conversion_Value1=2000000/t;
Conversion_Value1=(100-(Conversion_Value1-(u32)6033)/(u16)13);
bai=(Conversion_Value1%1000)/100;
shi=(Conversion_Value1%100)/10;
ge=(Conversion_Value1%10);
lcd162a_DispOneChar(2,7,bai+48);
lcd162a_DispOneChar(2,8,shi+48);
lcd162a_DispOneChar(2,9,ge+48);
lcd162a_DispOneChar(2,10,37);
{
TIM2_ClearFlag(TIM2_FLAG_CC1);
while((TIM2->
//GetCCR1value
//GetCCR1value
t2=TIM2_GetCapture1();
t=t2-t1;
Conversion_Value1=2000000/t;
lcd162a_ePutstr(1,1,p8);
delay_ms(200);
//lcd162c中有定义
if((GPIO_ReadInputData(GPIOA)&
}
if((a==1)&
(b==2))
u8i=10;
unsignedlongt;
lcd162a_cls();
Conversion_Value=ADC1_GetConversionValue();
Conversion_Value=(((u32)1024*(u32)10000)/Conversion_Value-10000);
if((Conversion_Value>
=(u32)4160)&
(Conversion_Value<
(u32)4912))
Conversion_Value=((u32)77538-((u32)6645*Conversion_Value)/1000);
if((Conversion_Value>
=(u32)4912)&
(u32)6912))
Conversion_Value=((u32)68637-((u32)4915*Conversion_Value)/1000);
=(u32)6912)&
(u32)8944))
Conversion_Value=((u32)58497-((u32)3429*Conversion_Value)/1000);
=(u32)8944)&
(u32)11637))
Conversion_Value=((u32)50463-((u32)2546*Conversion_Value)/1000);
=(u32)11637)&
(u32)12094))
Conversion_Value=((u32)40599-((u32)1740*Conversion_Value)/1000);
=(u32)12094)&
(u32)27372))
Conversion_Value=((u32)25770-((u32)939*Conversion_Value)/1000);
wan1=(Conversion_Value/10000);
qian1=(Conversion_Value%10000)/1000;
bai1=(Conversion_Value%1000)/100;
shi1=(Conversion_Value%100)/10;
ge1=(Conversion_Value%10);
//r=(100*(1024-t)/t)*100;
lcd162a_ePutstr(1,1,p9);
lcd162a_DispOneChar(2,4,wan1+48);
lcd162a_DispOneChar(2,5,qian1+48);
lcd162a_DispOneChar(2,6,46);
lcd162a_DispOneChar(2,7,bai1+48);
lcd162a_DispOneChar(2,8,shi1+48);
lcd162a_DispOneChar(2,9,ge1+48);
lcd162a_DispOneChar(2,10,67);
GPIO_PIN_5)==0)