燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx

上传人:b****5 文档编号:3524725 上传时间:2022-11-23 格式:DOCX 页数:13 大小:66.03KB
下载 相关 举报
燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx_第1页
第1页 / 共13页
燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx_第2页
第2页 / 共13页
燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx_第3页
第3页 / 共13页
燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx_第4页
第4页 / 共13页
燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx

《燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx》由会员分享,可在线阅读,更多相关《燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx(13页珍藏版)》请在冰豆网上搜索。

燕山大学里仁学院仪表专业STM8S105S4校内实习程序.docx

燕山大学里仁学院仪表专业STM8S105S4校内实习程序

燕山大学(里仁学院)仪表专业STM8S105S4校内实习程序

注:

1、由于本人水平有限,只能整理出姓名、万年历、温度三者,湿度未能如愿,望我校后起之秀加以补全方便学弟学妹,望理解。

2、运行此程序需图片中的附加程序,请在STVISUALDEVELOP窗口下自行添加。

/*STM8控制程序:

S1**********PA1

S2**********PA2

S3**********PA4

S4**********PA5

HS1101**********PD4

MF25***********PE6

四个按键,分别为左移,右移,确认,返回。

实现四种功能,分别为姓名,时间,温度,湿度。

*/

#include"stm8s_gpio.h"

#include"stm8s_adc1.h"

#include"lcd162a.h"

#include"stm8s_exti.h"

#include"DS1302.h"

#include"stm8s_clk.h"

#include"stm8s_tim2.h"

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);

lcd162a_cls();

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();

lcd162a_cls();

delay_ms

(1);

}

}

if((GPIO_ReadInputData(GPIOA)&GPIO_PIN_2)==0)//右移

{

while((GPIO_ReadInputData(GPIOA)&GPIO_PIN_2)==0);

{

if((a==8)&(b==1))b=2;

elseif((a==8)&(b==2))b=1;

if(a==1)a=8;

elseif(a==8)a=1;

lcd162a_Reset();

lcd162a_cls();

delay_ms

(1);

}

}

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)//姓名

{

while((GPIO_ReadInputData(GPIOA)&GPIO_PIN_4)==0);

{

if((a==1)&(b==1))

{

lcd162a_Reset();

lcd162a_cls();

delay_ms

(1);

if((a==1)&(b==1))

{lcd162a_ePutstr(1,1,p6);

lcd162a_ePutstr(2,5,p7);

}

while

(1)

{

if((GPIO_ReadInputData(GPIOA)&GPIO_PIN_5)==0)//姓名返回

{

while((GPIO_ReadInputData(GPIOA)&GPIO_PIN_5)==0);

{

lcd162a_Reset();

lcd162a_cls();

delay_ms

(1);

break;

}

}

}

}

if((a==8)&(b==1))//万年历

{

lcd162a_Reset();

lcd162a_cls();

delay_ms

(1);

while

(1)

{

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));

if((GPIO_ReadInputData(GPIOA)&GPIO_PIN_5)==0)//万年历返回

{

while((GPIO_ReadInputData(GPIOA)&GPIO_PIN_5)==0);

{

lcd162a_Reset();

lcd162a_cls();

delay_ms

(1);

break;

}

}

}

}

if((a==8)&(b==2))

{

while((TIM2->SR1&TIM2_FLAG_CC1)!

=TIM2_FLAG_CC1);

t1=TIM2_GetCapture1();

TIM2_ClearFlag(TIM2_FLAG_CC1);

while((TIM2->SR1&TIM2_FLAG_CC1)!

=TIM2_FLAG_CC1);

t2=TIM2_GetCapture1();

TIM2_ClearFlag(TIM2_FLAG_CC1);

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);

lcd162a_cls();

while

(1)

{

TIM2_ClearFlag(TIM2_FLAG_CC1);

while((TIM2->SR1&TIM2_FLAG_CC1)!

=TIM2_FLAG_CC1);

//GetCCR1value

t1=TIM2_GetCapture1();

TIM2_ClearFlag(TIM2_FLAG_CC1);

while((TIM2->SR1&TIM2_FLAG_CC1)!

=TIM2_FLAG_CC1);

//GetCCR1value

t2=TIM2_GetCapture1();

TIM2_ClearFlag(TIM2_FLAG_CC1);

t=t2-t1;

Conversion_Value1=2000000/t;

Conversion_Value1=(100-(Conversion_Value1-(u32)6033)/(u16)13);

lcd162a_ePutstr(1,1,p8);

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);

delay_ms(200);//lcd162c中有定义

if((GPIO_ReadInputData(GPIOA)&GPIO_PIN_5)==0)//万年历返回

{

while((GPIO_ReadInputData(GPIOA)&GPIO_PIN_5)==0);

{

lcd162a_Reset();

lcd162a_cls();

delay_ms

(1);

break;

}

}

}

}

if((a==1)&(b==2))

{

u8i=10;

unsignedlongt;

lcd162a_cls();

while

(1)

{

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)&(Conversion_Value<(u32)6912))

Conversion_Value=((u32)68637-((u32)4915*Conversion_Value)/1000);

if((Conversion_Value>=(u32)6912)&(Conversion_Value<(u32)8944))

Conversion_Value=((u32)58497-((u32)3429*Conversion_Value)/1000);

if((Conversion_Value>=(u32)8944)&(Conversion_Value<(u32)11637))

Conversion_Value=((u32)50463-((u32)2546*Conversion_Value)/1000);

if((Conversion_Value>=(u32)11637)&(Conversion_Value<(u32)12094))

Conversion_Value=((u32)40599-((u32)1740*Conversion_Value)/1000);

if((Conversion_Value>=(u32)12094)&(Conversion_Value<(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);

delay_ms(200);//lcd162c中有定义

if((GPIO_ReadInputData(GPIOA)&GPIO_PIN_5)==0)

{

while((GPIO_ReadInputData(GPIOA)&GPIO_PIN_5)==0);

{

lcd162a_Reset();

lcd162a_cls();

delay_ms

(1);

break;

}

}

}

}

}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1