芯片解密STM8S103F3P6的手表设计
芯片解密STM8S103F3P6主程序
- #include"iostm8s103f3.h"
- #include"init.c"
- #include"OLED12864.c"
- #include"OLED12864_6X8.c"
- #include"OLED12864_8X16.c"
- #include"OLED12864_12X24.c"
- #include"DS3231.c"
- #include"BMP180.c"
- #include"ADC.c"
- /************************************************************
- 名称:基于STM8S103F3P6、OLED12864、BMP180和DS3231的手表设计
- 平台:STM8S103F3P6,HSI:16MHz不分频,Flash:8K,RAM:1K
- 简介:本设计采用STM8S103F3P6核心板主控。
- 实时时钟RTC芯片采用DS3231;
- 气压和温度数据来自BMP180;
- ************************************************************/
- //运行数组
- unsigned char Display_Time[6]={0};
- unsigned char Display_Date[9]={2,0,1,9,0,3,0,9,6};
- unsigned char Display_Pressure[4]={0};//前3位为整数部分,后1位是小数部分
- unsigned char Display_Temperature[3]={0};//前2位为整数部分,后1位是小数部分
- unsigned char Display_Voltage[3]={0};//前1位为整数部分,后2位是小数部分
- //静态显示,上电只运行一次
- void Display_Flash_Fixed()
- {
- OLED12864_6X8_AnyChar(18,0,'.',1);
- OLED12864_6X8_AnyString(30,0,"Kpa",0);
- OLED12864_6X8_AnyChar(69,0,'.',1);
- OLED12864_6X8_AnyChar(87,0,'V',0);
- OLED12864_6X8_AnyChar(110,0,'.',1);
- OLED12864_6X8_AnyChar(122,0,'C',0);
- OLED12864_12X24_MH(40,1);
- OLED12864_12X24_MH(76,1);
- _OLED12864_8X16_AnyChar(40,5,'.',1);
- _OLED12864_8X16_AnyChar(64,5,'.',1);
- OLED12864_6X8_AnyString(1,7," Linyar Lab. Watch ",0);
- }
- //动态扫描,刷新变化的数据
- void Display_Flash_Dynamic()
- {
- //气压显示
- if(Display_Pressure[0]==0)
- {
- OLED12864_6X8_AnyChar(0,0,' ',1);
- }
- else
- {
- OLED12864_6X8_AnyNumber(0,0,Display_Pressure[0],1);
- }
- OLED12864_6X8_AnyNumber(6,0,Display_Pressure[1],1);
- OLED12864_6X8_AnyNumber(12,0,Display_Pressure[2],1);
- OLED12864_6X8_AnyNumber(24,0,Display_Pressure[3],1);
- //电压显示
- OLED12864_6X8_AnyNumber(63,0,Display_Voltage[0],1);
- OLED12864_6X8_AnyNumber(75,0,Display_Voltage[1],1);
- OLED12864_6X8_AnyNumber(81,0,Display_Voltage[2],1);
- //温度显示
- if(Display_Temperature[0]==0)
- {
- OLED12864_6X8_AnyChar(98,0,' ',1);
- }
- else
- {
- OLED12864_6X8_AnyNumber(98,0,Display_Temperature[0],1);
- }
- OLED12864_6X8_AnyNumber(104,0,Display_Temperature[1],1);
- OLED12864_6X8_AnyNumber(116,0,Display_Temperature[2],1);
- //时间显示
- OLED12864_12X24_AnyNumber(16,1,Display_Time[0]);
- OLED12864_12X24_AnyNumber(28,1,Display_Time[1]);
- OLED12864_12X24_AnyNumber(52,1,Display_Time[2]);
- OLED12864_12X24_AnyNumber(64,1,Display_Time[3]);
- OLED12864_12X24_AnyNumber(88,1,Display_Time[4]);
- OLED12864_12X24_AnyNumber(100,1,Display_Time[5]);
- //日期显示
- OLED12864_8X16_AnyNumber(8,5,Display_Date[0]);
- OLED12864_8X16_AnyNumber(16,5,Display_Date[1]);
- OLED12864_8X16_AnyNumber(24,5,Display_Date[2]);
- OLED12864_8X16_AnyNumber(32,5,Display_Date[3]);
- if(Display_Date[4]==0)
- {
- _OLED12864_8X16_AnyChar(48,5,' ',1);
- }
- else
- {
- OLED12864_8X16_AnyNumber(48,5,Display_Date[4]);
- }
- OLED12864_8X16_AnyNumber(56,5,Display_Date[5]);
- if(Display_Date[6]==0)
- {
- _OLED12864_8X16_AnyChar(72,5,' ',1);
- }
- else
- {
- OLED12864_8X16_AnyNumber(72,5,Display_Date[6]);
- }
- OLED12864_8X16_AnyNumber(80,5,Display_Date[7]);
- //星期显示
- switch(Display_Date[8])
- {
- case 1:OLED12864_8X16_AnyString(96,5,"MON");break;
- case 2:OLED12864_8X16_AnyString(96,5,"TUE");break;
- case 3:OLED12864_8X16_AnyString(96,5,"WED");break;
- case 4:OLED12864_8X16_AnyString(96,5,"THU");break;
- case 5:OLED12864_8X16_AnyString(96,5,"FRI");break;
- case 6:OLED12864_8X16_AnyString(96,5,"SAT");break;
- case 7:OLED12864_8X16_AnyString(96,5,"SUN");break;
- default:OLED12864_8X16_AnyString(96,5,"ERR");break;
- }
- }

芯片解密