下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、/*STM8控制程序:燕山大學工業(yè)自動化儀表專業(yè)STM8S105S4校內實習程序注:1、程序功能為“按鍵功能選擇”,菜單顯示“姓名、萬年歷、溫度計、濕度計”,各部分功能完善,但是有一些操作上的小bug,望自行改良。2、運行此程序需自行添加inc和src里的.c和.h文件,請在ST VISUAL DEVELOP 窗口下自行添加。3、液晶控制和DS1302控制文件已經修改了引腳,分別在lcd162a.h和DS1302.h里面,這里不提供程序,請自行修改。4、這只是有個簡單的功能,還可以深入的進行擴展。S1*PC6S2*PC7S3*PG0S4*PG1DS1302*PC2、PC3、PC5HS1101*
2、PC1MF25*PE6LCD控制*PA4、PA5、PA6LCD數據*PB0、PB1、PB2、PB3、PB4、PB5、PB6、PB7四個按鍵,分別為左移,右移,確認,返回。實現四種功能,分別為姓名,時間,溫度,濕度。*/#include "stm8s_gpio.h"#include "stm8s_adc1.h"#include "lcd162a.h"#include "stm8s_exti.h"#include "DS1302.h"#include "stm8s_clk.h"#
3、include "stm8s_tim1.h"void delay(u8 i) /延時while(i-);void main(void)u8 *p1="Hello,world.YSU"u8 *p2="Name",*p3="Date",*p4="Temp",*p5="Humi",*p6="Name:",*p7="byeditor",*p8="Humidity:",*p9="Temperature:"u
4、8 a=1,b=1;u8 time;u16 t1,t2;u16 t=0;u8 bai,shi,ge;u8 wan1,qian1,bai1,shi1,ge1;u16 Conversion_Value1 = 0;u16 Conversion_Value = 0;GPIO_Init(GPIOA,GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6,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
5、|GPIO_PIN_0), GPIO_MODE_OUT_PP_LOW_FAST);GPIO_Init(GPIOC,GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST );GPIO_Init(GPIOC, GPIO_PIN_6|GPIO_PIN_7,GPIO_MODE_OUT_PP_HIGH_FAST ); GPIO_Init(GPIOG, GPIO_PIN_0|GPIO_PIN_1,GPIO_MODE_OUT_PP_HIGH_FAST );TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_R
6、ISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV1, 0x00);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);TIM1_Cmd(ENABLE); /使能TIM1計數TIM1_ClearFlag(TIM1_FLAG_CC1);ADC1_StartConvers
7、ion();Set1302(12,2,28,1,23,59);/依次為年:月,日,星期幾,小時,分lcd162a_Reset();lcd162a_cls();lcd162a_ePutstr(1,1,p1);delay_ms(240);lcd162a_cls();while(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(GPIOC)&a
8、mp;GPIO_PIN_6)=0) /左移 while(GPIO_ReadInputData(GPIOC)&GPIO_PIN_6)=0); if(a=1)&(b=1) b=2; else if(a=1)&(b=2) b=1; if(a=1) a=8; else if(a=8) a=1; lcd162a_Reset(); lcd162a_cls(); delay_ms(1); if(GPIO_ReadInputData(GPIOC)&GPIO_PIN_7)=0) /右移 while(GPIO_ReadInputData(GPIOC)&GPIO_PIN_7)
9、=0); if(a=8)&(b=1) b=2; else if(a=8)&(b=2) b=1; if(a=1) a=8; else if(a=8) a=1; lcd162a_Reset(); lcd162a_cls(); delay_ms(1); if(GPIO_ReadInputData(GPIOG)&GPIO_PIN_0)=0) /確認 while(GPIO_ReadInputData(GPIOG)&GPIO_PIN_0)=0); if(a=1)&(b=1) /姓名 lcd162a_Reset(); lcd162a_cls(); delay_ms(1
10、); lcd162a_ePutstr(1,1,p6); lcd162a_ePutstr(2,5,p7); while(1) if(GPIO_ReadInputData(GPIOG)&GPIO_PIN_1)=0) /返回 while(GPIO_ReadInputData(GPIOG)&GPIO_PIN_1)=0); lcd162a_Reset(); lcd162a_cls(); delay_ms(1); break; if(a=8)&(b=1) /萬年歷 lcd162a_Reset(); lcd162a_cls(); delay_ms(1); while(1) lcd16
11、2a_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_
12、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);
13、 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+(
14、u8)(time%10); delay_ms(1000); if(GPIO_ReadInputData(GPIOG)&GPIO_PIN_1)=0)/萬年歷返 while(GPIO_ReadInputData(GPIOG)&GPIO_PIN_1)=0); lcd162a_Reset(); lcd162a_cls(); delay_ms(1); break; if(a=1)&(b=2) /溫度 lcd162a_cls(); while(1) Conversion_Value=ADC1_GetConversionValue(); Conversion_Value=(u32)1
15、024*(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
16、)/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>
17、=(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_Val
18、ue%10000)/1000; bai1=(Conversion_Value%1000)/100; shi1=(Conversion_Value%100)/10; ge1=(Conversion_Value%10); 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);
19、lcd162a_DispOneChar(2,9,ge1+48); lcd162a_DispOneChar(2,10,67); delay_ms(200);/lcd162c中有定義 if(GPIO_ReadInputData(GPIOG)&GPIO_PIN_1)=0) while(GPIO_ReadInputData(GPIOG)&GPIO_PIN_1)=0); lcd162a_Reset(); lcd162a_cls(); delay_ms(1); break; if(a=8)&(b=2) /濕度 lcd162a_cls(); while(TIM1->SR1 &a
20、mp; TIM1_FLAG_CC1) != TIM1_FLAG_CC1); t1 = TIM1_GetCapture1(); TIM1_ClearFlag(TIM1_FLAG_CC1); while(TIM1->SR1 & TIM1_FLAG_CC1) != TIM1_FLAG_CC1); t2 = TIM1_GetCapture1(); TIM1_ClearFlag(TIM1_FLAG_CC1); t=t2-t1; while(1) TIM1_ClearFlag(TIM1_FLAG_CC1); while(TIM1->SR1 & TIM1_FLAG_CC1) != TIM1_FLAG_CC1); t1 = TIM1_GetCapture1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO 20679:2025 EN Ships and marine technology - Marine environment protection - Testing of ship biofouling in-water cleaning systems
- 我的家鄉(xiāng)敘事課程設計
- 弦樂小夜曲課程設計
- 中西醫(yī)執(zhí)業(yè)醫(yī)師模擬試卷16
- 礦井灌漿設計課程設計
- 站姿坐姿課程設計
- 花藝烘焙課程設計
- 藥品驗收入門課程設計
- 互聯(lián)網行業(yè)安全管理實踐
- 領導班子與教學院校協(xié)調計劃
- 職業(yè)生涯規(guī)劃班會課教案設計
- 微觀經濟學(對外經濟貿易大學)智慧樹知到期末考試答案2024年
- (正式版)HGT 6277-2024 甲醇制烯烴(MTO)級甲醇
- 注射用更昔洛韋的臨床療效研究
- 2023年1月廣東省自考00634廣告策劃試題及答案含解析
- 2024年青海西部機場集團青海機場有限公司招聘筆試參考題庫含答案解析
- 中國綠色建筑現狀與未來展望
- 河南省洛陽市2023-2024學年高二上學期期末考試英語試題(解析版)
- 超聲檢查醫(yī)療糾紛的防范培訓課件
- 采購管理的流程與原則
- 2022-2023學年山東省東營市東營區(qū)七年級(上)期末歷史試卷(五四學制)(附答案詳解)
評論
0/150
提交評論