首次提交
This commit is contained in:
9
.gitignore
vendored
9
.gitignore
vendored
@@ -52,3 +52,12 @@ Module.symvers
|
||||
Mkfile.old
|
||||
dkms.conf
|
||||
|
||||
.vscode/c_cpp_properties.json
|
||||
.vscode/keil-assistant.log
|
||||
.vscode/uv4.log.lock
|
||||
|
||||
!Release/*
|
||||
|
||||
*.uvgui.*
|
||||
Objects/
|
||||
Listings/
|
||||
|
411
220V_Controller.uvopt
Normal file
411
220V_Controller.uvopt
Normal file
@@ -0,0 +1,411 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Extensions>
|
||||
<cExt>*.c</cExt>
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLK51>35000000</CLK51>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>1</RunSim>
|
||||
<RunTarget>0</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>120</PageWidth>
|
||||
<PageLength>65</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>0</CCode>
|
||||
<CListInc>0</CListInc>
|
||||
<CSymb>0</CSymb>
|
||||
<LinkerCodeListing>0</LinkerCodeListing>
|
||||
</ListingPage>
|
||||
<OPTXL>
|
||||
<LMap>1</LMap>
|
||||
<LComments>1</LComments>
|
||||
<LGenerateSymbols>1</LGenerateSymbols>
|
||||
<LLibSym>1</LLibSym>
|
||||
<LLines>1</LLines>
|
||||
<LLocSym>1</LLocSym>
|
||||
<LPubSym>1</LPubSym>
|
||||
<LXref>0</LXref>
|
||||
<LExpSel>0</LExpSel>
|
||||
</OPTXL>
|
||||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>0</CpuCode>
|
||||
<DebugOpt>
|
||||
<uSim>0</uSim>
|
||||
<uTrg>1</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>0</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<nTsel>10</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon>BIN\STCMON51.DLL</pMon>
|
||||
</DebugOpt>
|
||||
<Breakpoint/>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>0</periodic>
|
||||
<aLwin>0</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>0</viewmode>
|
||||
<vrSel>0</vrSel>
|
||||
<aSym>0</aSym>
|
||||
<aTbox>0</aTbox>
|
||||
<AscS1>0</AscS1>
|
||||
<AscS2>0</AscS2>
|
||||
<AscS3>0</AscS3>
|
||||
<aSer3>0</aSer3>
|
||||
<eProf>0</eProf>
|
||||
<aLa>0</aLa>
|
||||
<aPa1>0</aPa1>
|
||||
<AscS4>0</AscS4>
|
||||
<aSer4>0</aSer4>
|
||||
<StkLoc>0</StkLoc>
|
||||
<TrcWin>0</TrcWin>
|
||||
<newCpu>0</newCpu>
|
||||
<uProt>0</uProt>
|
||||
</DebugFlag>
|
||||
<LintExecutable></LintExecutable>
|
||||
<LintConfigFile></LintConfigFile>
|
||||
<bLintAuto>0</bLintAuto>
|
||||
<Lin2Executable></Lin2Executable>
|
||||
<Lin2ConfigFile></Lin2ConfigFile>
|
||||
<bLin2Auto>0</bLin2Auto>
|
||||
</TargetOption>
|
||||
</Target>
|
||||
|
||||
<Group>
|
||||
<GroupName>Source Group</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>1</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\main.c</PathWithFileName>
|
||||
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>2</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\DS18B20.c</PathWithFileName>
|
||||
<FilenameWithoutPath>DS18B20.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>3</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\public.c</PathWithFileName>
|
||||
<FilenameWithoutPath>public.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>4</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\Sys_Init.c</PathWithFileName>
|
||||
<FilenameWithoutPath>Sys_Init.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>5</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\Timer0.c</PathWithFileName>
|
||||
<FilenameWithoutPath>Timer0.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\Timer2.c</PathWithFileName>
|
||||
<FilenameWithoutPath>Timer2.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\PWM.c</PathWithFileName>
|
||||
<FilenameWithoutPath>PWM.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\HeatingSetting.c</PathWithFileName>
|
||||
<FilenameWithoutPath>HeatingSetting.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\TM1650.c</PathWithFileName>
|
||||
<FilenameWithoutPath>TM1650.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\IIC.c</PathWithFileName>
|
||||
<FilenameWithoutPath>IIC.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>Header Group</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\main.h</PathWithFileName>
|
||||
<FilenameWithoutPath>main.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\DS18B20.h</PathWithFileName>
|
||||
<FilenameWithoutPath>DS18B20.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\public.h</PathWithFileName>
|
||||
<FilenameWithoutPath>public.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\Sys_Init.h</PathWithFileName>
|
||||
<FilenameWithoutPath>Sys_Init.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\Timer0.h</PathWithFileName>
|
||||
<FilenameWithoutPath>Timer0.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\Timer2.h</PathWithFileName>
|
||||
<FilenameWithoutPath>Timer2.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\PWM.h</PathWithFileName>
|
||||
<FilenameWithoutPath>PWM.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\HeatingSetting.h</PathWithFileName>
|
||||
<FilenameWithoutPath>HeatingSetting.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\TM1650.h</PathWithFileName>
|
||||
<FilenameWithoutPath>TM1650.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\App\IIC.h</PathWithFileName>
|
||||
<FilenameWithoutPath>IIC.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
477
220V_Controller.uvproj
Normal file
477
220V_Controller.uvproj
Normal file
@@ -0,0 +1,477 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
|
||||
|
||||
<SchemaVersion>1.1</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Targets>
|
||||
<Target>
|
||||
<TargetName>Target 1</TargetName>
|
||||
<ToolsetNumber>0x0</ToolsetNumber>
|
||||
<ToolsetName>MCS-51</ToolsetName>
|
||||
<TargetOption>
|
||||
<TargetCommonOption>
|
||||
<Device>STC15F104W Series</Device>
|
||||
<Vendor>STC</Vendor>
|
||||
<Cpu>IRAM(0-0x7F) IROM(0-0xFF8) CLOCK(35000000)</Cpu>
|
||||
<FlashUtilSpec></FlashUtilSpec>
|
||||
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
|
||||
<FlashDriverDll></FlashDriverDll>
|
||||
<DeviceId>62101</DeviceId>
|
||||
<RegisterFile>STC15F2K60S2.H</RegisterFile>
|
||||
<MemoryEnv></MemoryEnv>
|
||||
<Cmp></Cmp>
|
||||
<Asm></Asm>
|
||||
<Linker></Linker>
|
||||
<OHString></OHString>
|
||||
<InfinionOptionDll></InfinionOptionDll>
|
||||
<SLE66CMisc></SLE66CMisc>
|
||||
<SLE66AMisc></SLE66AMisc>
|
||||
<SLE66LinkerMisc></SLE66LinkerMisc>
|
||||
<SFDFile></SFDFile>
|
||||
<bCustSvd>0</bCustSvd>
|
||||
<UseEnv>0</UseEnv>
|
||||
<BinPath></BinPath>
|
||||
<IncludePath></IncludePath>
|
||||
<LibPath></LibPath>
|
||||
<RegisterFilePath>STC\</RegisterFilePath>
|
||||
<DBRegisterFilePath>STC\</DBRegisterFilePath>
|
||||
<TargetStatus>
|
||||
<Error>0</Error>
|
||||
<ExitCodeStop>0</ExitCodeStop>
|
||||
<ButtonStop>0</ButtonStop>
|
||||
<NotGenerated>0</NotGenerated>
|
||||
<InvalidFlash>1</InvalidFlash>
|
||||
</TargetStatus>
|
||||
<OutputDirectory>.\Objects\</OutputDirectory>
|
||||
<OutputName>220V_Controller</OutputName>
|
||||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
<HexFormatSelection>0</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
<CreateBatchFile>0</CreateBatchFile>
|
||||
<BeforeCompile>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopU1X>0</nStopU1X>
|
||||
<nStopU2X>0</nStopU2X>
|
||||
</BeforeCompile>
|
||||
<BeforeMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopB1X>0</nStopB1X>
|
||||
<nStopB2X>0</nStopB2X>
|
||||
</BeforeMake>
|
||||
<AfterMake>
|
||||
<RunUserProg1>0</RunUserProg1>
|
||||
<RunUserProg2>0</RunUserProg2>
|
||||
<UserProg1Name></UserProg1Name>
|
||||
<UserProg2Name></UserProg2Name>
|
||||
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
|
||||
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
|
||||
<nStopA1X>0</nStopA1X>
|
||||
<nStopA2X>0</nStopA2X>
|
||||
</AfterMake>
|
||||
<SelectedForBatchBuild>0</SelectedForBatchBuild>
|
||||
<SVCSIdString></SVCSIdString>
|
||||
</TargetCommonOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>0</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>0</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>0</AssembleAssemblyFile>
|
||||
<PublicsOnly>0</PublicsOnly>
|
||||
<StopOnExitCode>3</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
<BankNo>65535</BankNo>
|
||||
</CommonProperty>
|
||||
<DllOption>
|
||||
<SimDllName>S8051.DLL</SimDllName>
|
||||
<SimDllArguments></SimDllArguments>
|
||||
<SimDlgDll>DP51.DLL</SimDlgDll>
|
||||
<SimDlgDllArguments>-pDR8051</SimDlgDllArguments>
|
||||
<TargetDllName>S8051.DLL</TargetDllName>
|
||||
<TargetDllArguments></TargetDllArguments>
|
||||
<TargetDlgDll>TP51.DLL</TargetDlgDll>
|
||||
<TargetDlgDllArguments>-p51</TargetDlgDllArguments>
|
||||
</DllOption>
|
||||
<DebugOption>
|
||||
<OPTHX>
|
||||
<HexSelection>0</HexSelection>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
<Oh166RecLen>16</Oh166RecLen>
|
||||
</OPTHX>
|
||||
<Simulator>
|
||||
<UseSimulator>0</UseSimulator>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>1</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>1</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Simulator>
|
||||
<Target>
|
||||
<UseTarget>1</UseTarget>
|
||||
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
|
||||
<RunToMain>0</RunToMain>
|
||||
<RestoreBreakpoints>1</RestoreBreakpoints>
|
||||
<RestoreWatchpoints>1</RestoreWatchpoints>
|
||||
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
|
||||
<RestoreFunctions>0</RestoreFunctions>
|
||||
<RestoreToolbox>1</RestoreToolbox>
|
||||
<RestoreTracepoints>1</RestoreTracepoints>
|
||||
<RestoreSysVw>1</RestoreSysVw>
|
||||
</Target>
|
||||
<RunDebugAfterBuild>0</RunDebugAfterBuild>
|
||||
<TargetSelection>10</TargetSelection>
|
||||
<SimDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
</SimDlls>
|
||||
<TargetDlls>
|
||||
<CpuDll></CpuDll>
|
||||
<CpuDllArguments></CpuDllArguments>
|
||||
<PeripheralDll></PeripheralDll>
|
||||
<PeripheralDllArguments></PeripheralDllArguments>
|
||||
<InitializationFile></InitializationFile>
|
||||
<Driver>BIN\STCMON51.DLL</Driver>
|
||||
</TargetDlls>
|
||||
</DebugOption>
|
||||
<Utilities>
|
||||
<Flash1>
|
||||
<UseTargetDll>0</UseTargetDll>
|
||||
<UseExternalTool>0</UseExternalTool>
|
||||
<RunIndependent>0</RunIndependent>
|
||||
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
|
||||
<Capability>0</Capability>
|
||||
<DriverSelection>-1</DriverSelection>
|
||||
</Flash1>
|
||||
<bUseTDR>0</bUseTDR>
|
||||
<Flash2></Flash2>
|
||||
<Flash3></Flash3>
|
||||
<Flash4></Flash4>
|
||||
<pFcarmOut></pFcarmOut>
|
||||
<pFcarmGrp></pFcarmGrp>
|
||||
<pFcArmRoot></pFcArmRoot>
|
||||
<FcArmLst>0</FcArmLst>
|
||||
</Utilities>
|
||||
<Target51>
|
||||
<Target51Misc>
|
||||
<MemoryModel>0</MemoryModel>
|
||||
<RTOS>0</RTOS>
|
||||
<RomSize>2</RomSize>
|
||||
<DataHold>0</DataHold>
|
||||
<XDataHold>0</XDataHold>
|
||||
<UseOnchipRom>0</UseOnchipRom>
|
||||
<UseOnchipArithmetic>0</UseOnchipArithmetic>
|
||||
<UseMultipleDPTR>0</UseMultipleDPTR>
|
||||
<UseOnchipXram>0</UseOnchipXram>
|
||||
<HadIRAM>1</HadIRAM>
|
||||
<HadXRAM>0</HadXRAM>
|
||||
<HadIROM>1</HadIROM>
|
||||
<Moda2>0</Moda2>
|
||||
<Moddp2>0</Moddp2>
|
||||
<Modp2>0</Modp2>
|
||||
<Mod517dp>0</Mod517dp>
|
||||
<Mod517au>0</Mod517au>
|
||||
<Mode2>0</Mode2>
|
||||
<useCB>0</useCB>
|
||||
<useXB>0</useXB>
|
||||
<useL251>0</useL251>
|
||||
<useA251>0</useA251>
|
||||
<Mx51>0</Mx51>
|
||||
<ModC812>0</ModC812>
|
||||
<ModCont>0</ModCont>
|
||||
<Lp51>0</Lp51>
|
||||
<useXBS>0</useXBS>
|
||||
<ModDA>0</ModDA>
|
||||
<ModAB2>0</ModAB2>
|
||||
<Mx51P>0</Mx51P>
|
||||
<hadXRAM2>0</hadXRAM2>
|
||||
<uocXram2>0</uocXram2>
|
||||
<ModC2>0</ModC2>
|
||||
<ModH2>0</ModH2>
|
||||
<Mdu_R515>0</Mdu_R515>
|
||||
<Mdu_F120>0</Mdu_F120>
|
||||
<Psoc>0</Psoc>
|
||||
<hadIROM2>0</hadIROM2>
|
||||
<ModSmx2>0</ModSmx2>
|
||||
<cBanks>0</cBanks>
|
||||
<xBanks>0</xBanks>
|
||||
<OnChipMemories>
|
||||
<RCB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0xffff</Size>
|
||||
</RCB>
|
||||
<RXB>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</RXB>
|
||||
<Ocm1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm1>
|
||||
<Ocm2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm2>
|
||||
<Ocm3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocm3>
|
||||
<Ocr1>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr1>
|
||||
<Ocr2>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr2>
|
||||
<Ocr3>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</Ocr3>
|
||||
<IRO>
|
||||
<Type>1</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0xff9</Size>
|
||||
</IRO>
|
||||
<IRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x80</Size>
|
||||
</IRA>
|
||||
<XRA>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA>
|
||||
<XRA512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</XRA512>
|
||||
<IROM512>
|
||||
<Type>0</Type>
|
||||
<StartAddress>0x0</StartAddress>
|
||||
<Size>0x0</Size>
|
||||
</IROM512>
|
||||
</OnChipMemories>
|
||||
</Target51Misc>
|
||||
<C51>
|
||||
<RegisterColoring>0</RegisterColoring>
|
||||
<VariablesInOrder>0</VariablesInOrder>
|
||||
<IntegerPromotion>1</IntegerPromotion>
|
||||
<uAregs>0</uAregs>
|
||||
<UseInterruptVector>1</UseInterruptVector>
|
||||
<Fuzzy>3</Fuzzy>
|
||||
<Optimize>8</Optimize>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<SizeSpeed>1</SizeSpeed>
|
||||
<ObjectExtend>1</ObjectExtend>
|
||||
<ACallAJmp>0</ACallAJmp>
|
||||
<InterruptVectorAddress>0</InterruptVectorAddress>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>.\App</IncludePath>
|
||||
</VariousControls>
|
||||
</C51>
|
||||
<Ax51>
|
||||
<UseMpl>0</UseMpl>
|
||||
<UseStandard>1</UseStandard>
|
||||
<UseCase>0</UseCase>
|
||||
<UseMod51>0</UseMod51>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Ax51>
|
||||
<Lx51>
|
||||
<useFile>0</useFile>
|
||||
<linkonly>0</linkonly>
|
||||
<UseMemoryFromTarget>1</UseMemoryFromTarget>
|
||||
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
|
||||
<WarningLevel>2</WarningLevel>
|
||||
<DataOverlaying>1</DataOverlaying>
|
||||
<OverlayString></OverlayString>
|
||||
<MiscControls></MiscControls>
|
||||
<DisableWarningNumbers></DisableWarningNumbers>
|
||||
<LinkerCmdFile></LinkerCmdFile>
|
||||
<Assign></Assign>
|
||||
<ReserveString></ReserveString>
|
||||
<CClasses></CClasses>
|
||||
<UserClasses></UserClasses>
|
||||
<CSection></CSection>
|
||||
<UserSection></UserSection>
|
||||
<CodeBaseAddress></CodeBaseAddress>
|
||||
<XDataBaseAddress></XDataBaseAddress>
|
||||
<PDataBaseAddress></PDataBaseAddress>
|
||||
<BitBaseAddress></BitBaseAddress>
|
||||
<DataBaseAddress></DataBaseAddress>
|
||||
<IDataBaseAddress></IDataBaseAddress>
|
||||
<Precede></Precede>
|
||||
<Stack></Stack>
|
||||
<CodeSegmentName></CodeSegmentName>
|
||||
<XDataSegmentName></XDataSegmentName>
|
||||
<BitSegmentName></BitSegmentName>
|
||||
<DataSegmentName></DataSegmentName>
|
||||
<IDataSegmentName></IDataSegmentName>
|
||||
</Lx51>
|
||||
</Target51>
|
||||
</TargetOption>
|
||||
<Groups>
|
||||
<Group>
|
||||
<GroupName>Source Group</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>DS18B20.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\DS18B20.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>public.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\public.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Sys_Init.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\Sys_Init.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Timer0.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\Timer0.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Timer2.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\Timer2.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>PWM.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\PWM.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>HeatingSetting.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\HeatingSetting.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>TM1650.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\TM1650.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>IIC.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\App\IIC.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Header Group</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>main.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\main.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>DS18B20.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\DS18B20.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>public.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\public.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Sys_Init.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\Sys_Init.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Timer0.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\Timer0.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>Timer2.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\Timer2.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>PWM.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\PWM.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>HeatingSetting.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\HeatingSetting.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>TM1650.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\TM1650.h</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>IIC.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>.\App\IIC.h</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
</Target>
|
||||
</Targets>
|
||||
|
||||
</Project>
|
162
App/DS18B20.c
Normal file
162
App/DS18B20.c
Normal file
@@ -0,0 +1,162 @@
|
||||
/*
|
||||
* 18B20.c
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
#include <main.h>
|
||||
|
||||
static uint8_t Init(void);
|
||||
static uint8_t ReadData(void);
|
||||
static void WriteData(uint8_t Data);
|
||||
static uint8_t ReadTemp(void);
|
||||
|
||||
void Delay1us(); //@20.000MHz
|
||||
void Delay60us(); //@20.000MHz
|
||||
void Delay500us(); //@20.000MHz
|
||||
DS18B20_t DS18B20 = {
|
||||
0x003C,
|
||||
Init,
|
||||
ReadTemp};
|
||||
|
||||
static uint8_t Init(void)
|
||||
{
|
||||
uint8_t CY = 1,count = 0;
|
||||
while (CY)
|
||||
{
|
||||
DS18B20_PIN = LOW;
|
||||
Delay500us(); //电平拉低500us使18b20复位
|
||||
|
||||
DS18B20_PIN = HIGH;
|
||||
Delay60us();
|
||||
CY = DS18B20_PIN; //等待18B20响应 响应后跳出循环
|
||||
Delay500us();
|
||||
|
||||
if (count >= 5) //超过三次直接跳出
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
count++; //循环计数
|
||||
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static uint8_t ReadTemp(void)
|
||||
{
|
||||
float tt;
|
||||
uint8_t Data_temp1 = 0, Data_temp2 = 0;
|
||||
|
||||
if ( DS18B20.Init() == FALSE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
WriteData(0xCC); //跳过读取ROM指令
|
||||
WriteData(0x44); //开始温度转换指令
|
||||
|
||||
Public.Delay_ms(375); //延时750mS 等待转换完成
|
||||
DS18B20.Init(); //复位后重新读写
|
||||
|
||||
WriteData(0xCC); //跳过读取ROM
|
||||
WriteData(0xBE); //读出寄存器的值
|
||||
Data_temp1 = ReadData(); //读出低8位
|
||||
Data_temp2 = ReadData(); //读出高8位
|
||||
|
||||
DS18B20.Temp = Data_temp2;
|
||||
DS18B20.Temp <<= 8;
|
||||
DS18B20.Temp |= Data_temp1; // 两个数据组合
|
||||
tt = DS18B20.Temp * 0.0625;
|
||||
DS18B20.Temp = tt * 10 + 0.5;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static uint8_t ReadData(void)
|
||||
{
|
||||
|
||||
uint8_t i = 0, Data = 0;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
Data = Data >> 1;
|
||||
DS18B20_PIN = LOW;
|
||||
Delay1us();
|
||||
DS18B20_PIN = HIGH; //拉高时钟线等待信号
|
||||
Delay1us();
|
||||
Delay1us();
|
||||
Delay1us();
|
||||
if (DS18B20_PIN)
|
||||
{
|
||||
Data |= 0x80;
|
||||
}
|
||||
Delay60us(); //等待时间片结束
|
||||
}
|
||||
|
||||
return Data;
|
||||
}
|
||||
|
||||
static void WriteData(uint8_t Data)
|
||||
{
|
||||
uint8_t i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
|
||||
if (Data & 0x01)
|
||||
{
|
||||
DS18B20_PIN = LOW;
|
||||
Delay1us(); //延时1us代表写周期开始
|
||||
DS18B20_PIN = HIGH;
|
||||
Delay60us(); //等待时间片结束
|
||||
}
|
||||
else
|
||||
{
|
||||
DS18B20_PIN = LOW;
|
||||
Delay60us(); //等待时间片结束
|
||||
DS18B20_PIN = HIGH;
|
||||
Delay1us(); //延时1us代表写周期开始
|
||||
}
|
||||
|
||||
DS18B20_PIN = HIGH; //拉高代表一个写周期结束
|
||||
Data = Data >> 1;
|
||||
}
|
||||
}
|
||||
|
||||
void Delay1us() //@20.000MHz
|
||||
{
|
||||
uint8_t i;
|
||||
// _nop_();
|
||||
// _nop_();
|
||||
i = 2;
|
||||
while (--i)
|
||||
;
|
||||
}
|
||||
|
||||
void Delay60us() //@20.000MHz
|
||||
{
|
||||
unsigned char i;
|
||||
|
||||
_nop_();
|
||||
_nop_();
|
||||
i = 147;
|
||||
while (--i)
|
||||
;
|
||||
}
|
||||
|
||||
void Delay500us() //@20.000MHz
|
||||
{
|
||||
unsigned char i, j;
|
||||
|
||||
i = 5;
|
||||
j = 218;
|
||||
do
|
||||
{
|
||||
while (--j)
|
||||
;
|
||||
} while (--i);
|
||||
}
|
||||
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
28
App/DS18B20.h
Normal file
28
App/DS18B20.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* 18B20.h
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#ifndef __DS18B20_H_
|
||||
#define __DS18B20_H_
|
||||
|
||||
#define DS18B20_PIN P34
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t Temp;
|
||||
uint8_t (*Init)(void);
|
||||
uint8_t(*ReadTemp)(void);
|
||||
}DS18B20_t;
|
||||
|
||||
extern DS18B20_t DS18B20;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
33
App/HeatingSetting.c
Normal file
33
App/HeatingSetting.c
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* PWM.c
|
||||
*
|
||||
* Created on: 2022年03月21日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#include <main.h>
|
||||
|
||||
void Init(void);
|
||||
|
||||
HeatingSetting_t HeatingSetting = {
|
||||
Init};
|
||||
|
||||
void Init(void)
|
||||
{
|
||||
EX0 = 1; // 使能INT0中断
|
||||
IT0 = 0; //设置INT0的中断类型(1:仅下降沿 0:上升沿和下降沿)
|
||||
EA = 1; //打开总中断
|
||||
}
|
||||
|
||||
/********************* INT0中断函数 *************************/
|
||||
void INT0_int(void) interrupt 0 //进中断时已经清除标志 无论上升下降沿都把定时器2计数清零
|
||||
{
|
||||
|
||||
Timer2.Heating_Run_Timer = 0;
|
||||
|
||||
}
|
||||
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
||||
|
24
App/HeatingSetting.h
Normal file
24
App/HeatingSetting.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* PWM.c
|
||||
*
|
||||
* Created on: 2022年03月21日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#define Heating_SET_PIN P32
|
||||
#define PTC_Fan_PIN P35
|
||||
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void (*Init)(void);
|
||||
} HeatingSetting_t;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern HeatingSetting_t HeatingSetting;
|
||||
|
||||
|
90
App/IIC.c
Normal file
90
App/IIC.c
Normal file
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* IIC.c
|
||||
*
|
||||
* Created on: 2022年03月12日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#include <Main.h>
|
||||
|
||||
static void Start1(void);
|
||||
|
||||
static void Write1(uint8_t Data);
|
||||
|
||||
static void ACK1(void);
|
||||
|
||||
static void Stop1(void);
|
||||
|
||||
static void Delay1us(); //@20.000MHz
|
||||
|
||||
IIC_t IIC_1 = {
|
||||
Start1,
|
||||
Write1,
|
||||
ACK1,
|
||||
Stop1};
|
||||
|
||||
static void Start1(void)
|
||||
{
|
||||
SCL_1 = HIGH;
|
||||
SDA_1 = HIGH;
|
||||
Delay1us(); //@20.000MHz // 1微秒延时
|
||||
SDA_1 = LOW; //时钟线高电平 拉低数据线以为传输开始
|
||||
}
|
||||
|
||||
static void Write1(uint8_t Data)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
|
||||
SCL_1 = LOW; //拉低时钟线 数据可以变化
|
||||
Delay1us(); // 1微秒延时
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (Data & 0x80)
|
||||
SDA_1 = HIGH;
|
||||
else
|
||||
SDA_1 = LOW;
|
||||
|
||||
Delay1us(); // 1微秒延时
|
||||
SCL_1 = LOW;
|
||||
Delay1us(); // 1微秒延时
|
||||
SCL_1 = HIGH;
|
||||
Delay1us(); // 1微秒延时
|
||||
SCL_1 = LOW;
|
||||
Data <<= 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void ACK1(void)
|
||||
{
|
||||
// static uint8_t timeout = 0;
|
||||
SCL_1 = 1;
|
||||
Delay1us();
|
||||
SCL_1 = 0;
|
||||
// while ((SDA_1) || (timeout <= 10))
|
||||
// {
|
||||
|
||||
// timeout++;
|
||||
// }
|
||||
Delay1us();
|
||||
Delay1us();
|
||||
SCL_1 = 0;
|
||||
}
|
||||
|
||||
static void Stop1(void)
|
||||
{
|
||||
SCL_1 = 1;
|
||||
SDA_1 = 0;
|
||||
Delay1us();
|
||||
SDA_1 = 1; //时钟线高电平时 拉高数据线为停止信号
|
||||
}
|
||||
|
||||
static void Delay1us() //@20.000MHz
|
||||
{
|
||||
unsigned char i;
|
||||
|
||||
_nop_();
|
||||
_nop_();
|
||||
i = 5;
|
||||
while (--i)
|
||||
;
|
||||
}
|
26
App/IIC.h
Normal file
26
App/IIC.h
Normal file
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* IIC.h
|
||||
*
|
||||
* Created on: 2022年03月12日
|
||||
* Author: User
|
||||
*/
|
||||
#ifndef __IIC_H
|
||||
#define __IIC_H
|
||||
|
||||
#include <Public.h>
|
||||
|
||||
#define SCL_1 P30
|
||||
#define SDA_1 P31
|
||||
|
||||
|
||||
typedef struct // IIC 结构体
|
||||
{
|
||||
void (*start)(void);
|
||||
void (*write)(uint8_t);
|
||||
void (*ACK)(void);
|
||||
void (*stop)(void);
|
||||
} IIC_t;
|
||||
|
||||
extern IIC_t IIC_1;
|
||||
|
||||
#endif
|
52
App/PWM.c
Normal file
52
App/PWM.c
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* PWM.c
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#include <main.h>
|
||||
|
||||
static void Init(void);
|
||||
static void LoadPWM(uint8_t DudyCycle);
|
||||
|
||||
|
||||
PWM_Wave_t PWM = {
|
||||
0,
|
||||
Init,
|
||||
LoadPWM
|
||||
};
|
||||
|
||||
|
||||
static void Init(void)
|
||||
{
|
||||
PWM.LoadPWM(0);
|
||||
}
|
||||
|
||||
|
||||
// /**************** 计算pwm重装值函数 *******************/
|
||||
static void LoadPWM(uint8_t DudyCycle)
|
||||
{
|
||||
if (DudyCycle == 100)
|
||||
{
|
||||
PWM.High = DudyCycle + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
PWM.High = DudyCycle;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
31
App/PWM.h
Normal file
31
App/PWM.h
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* PWM.h
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#ifndef __PWM_H_
|
||||
#define __PWM_H_
|
||||
|
||||
|
||||
#define FAN_PWM_PIN P33
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t High;
|
||||
void(*Init)(void);
|
||||
void(*LoadPWM)(uint8_t);
|
||||
}PWM_Wave_t;
|
||||
|
||||
extern PWM_Wave_t PWM;
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
49
App/Sys_Init.c
Normal file
49
App/Sys_Init.c
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Sys_init.c
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#include "main.h"
|
||||
|
||||
static void Init(void);
|
||||
static void GPIO_Init(void);
|
||||
|
||||
Sys_Init_t Sys_Init = {
|
||||
Init};
|
||||
|
||||
static void Init(void)
|
||||
{
|
||||
|
||||
GPIO_Init(); //输入输出端口初始化
|
||||
|
||||
Timer0.Timer0_Init(); //定时器0初始化
|
||||
Timer2.Timer2_Init(); //定时器2初始化
|
||||
HeatingSetting.Init(); //加热信号士刂瞥跏蓟?
|
||||
TM1650.Init(); // tm1650初始化
|
||||
DS18B20.Init(); // DS18B20初始化
|
||||
PWM.Init(); // PWM初始化
|
||||
PTC_Fan_PIN = LOW; //上电默认关闭加热风扇
|
||||
}
|
||||
|
||||
static void GPIO_Init(void)
|
||||
{
|
||||
|
||||
// M1 M0
|
||||
// 0 0 准双向口
|
||||
// 0 1 推挽输出
|
||||
// 1 0 高阻输入
|
||||
// 1 1 开漏
|
||||
|
||||
// P34 开漏 18b20
|
||||
// P33 推挽模式 风扇
|
||||
// P32 加热信号输入
|
||||
// P35 加热风扇
|
||||
|
||||
P3M1 = 0x14; // M1 = 0001 0100B;
|
||||
P3M0 = 0x38; // M0 = 0011 1000B
|
||||
}
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
27
App/Sys_Init.h
Normal file
27
App/Sys_Init.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* Sys_init.h
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#ifndef __SYS_INIT_H_
|
||||
#define __SYS_INIT_H_
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
|
||||
|
||||
void(*Init)(void);
|
||||
|
||||
|
||||
}Sys_Init_t;
|
||||
|
||||
|
||||
extern Sys_Init_t Sys_Init;
|
||||
|
||||
#endif
|
||||
|
||||
|
100
App/TM1650.c
Normal file
100
App/TM1650.c
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* TM1650.c
|
||||
*
|
||||
* Created on: 2022年03月12日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#include <Main.h>
|
||||
|
||||
// 数码管显示数组
|
||||
static uint8_t tab[] = {
|
||||
0x3F, // 0
|
||||
0x06, // 1
|
||||
0x5B, // 2
|
||||
0x4F, // 3
|
||||
0x66, // 4
|
||||
0x6D, // 5
|
||||
0x7D, // 6
|
||||
0x07, // 7
|
||||
0x7F, // 8
|
||||
0x6F, // 9
|
||||
0x00, // 10 = Null
|
||||
0x61, // 11 = 上c
|
||||
};
|
||||
|
||||
static void Init(void); // tm1650初始化
|
||||
static void TM1650_Set(IIC_t *Channel, uint8_t Add, uint8_t Value); //设置tm1650寄存器的值
|
||||
|
||||
static void Display_OFF(IIC_t *Channel); //显示OFF 字符
|
||||
static void Display_Close(IIC_t *Channel); //显示暂时关闭
|
||||
|
||||
void TM1650_Display(IIC_t *Channel, uint16_t Value, uint8_t dot); //显示使能
|
||||
|
||||
TM1650_t TM1650 = {
|
||||
1,
|
||||
Init,
|
||||
Display_OFF,
|
||||
Display_Close};
|
||||
|
||||
static void Init(void)
|
||||
{
|
||||
TM1650_Set(&IIC_1, 0x48, 0x31); //打开通道1 设置亮度3级 开显示
|
||||
}
|
||||
|
||||
static void TM1650_Set(IIC_t *Channel, uint8_t Add, uint8_t Value)
|
||||
{
|
||||
IIC_t *const COM = Channel;
|
||||
|
||||
COM->start(); // iic开始
|
||||
COM->write(Add); // iic写功能或者地址
|
||||
COM->ACK(); //等待应答信号
|
||||
COM->write(Value); // iic写设置数据或显示数据
|
||||
COM->ACK(); //等待应答信号
|
||||
COM->stop(); // iic停止
|
||||
|
||||
}
|
||||
|
||||
void TM1650_Display(IIC_t *Channel, uint16_t Value, uint8_t dot)
|
||||
{
|
||||
IIC_t *const IIC = Channel;
|
||||
|
||||
if (Value < 100)
|
||||
{
|
||||
TM1650_Set(IIC, DIG1, tab[10]); //如果温度不到100 关闭最高位数码管
|
||||
}
|
||||
else
|
||||
{
|
||||
TM1650_Set(IIC, DIG1, tab[Value % 1000 / 100]);
|
||||
}
|
||||
if (dot == 1) //判断是否加点
|
||||
{
|
||||
TM1650_Set(IIC, DIG2, (tab[Value % 100 / 10] | 0x80));
|
||||
}
|
||||
else
|
||||
{
|
||||
TM1650_Set(IIC, DIG2, tab[Value % 100 / 10]);
|
||||
}
|
||||
TM1650_Set(IIC, DIG3, tab[Value % 10 / 1]);
|
||||
|
||||
TM1650_Set(IIC, DIG4, tab[11]); //不带点 显示小c
|
||||
|
||||
}
|
||||
|
||||
static void Display_OFF(IIC_t *Channel)
|
||||
{
|
||||
IIC_t *const IIC = Channel;
|
||||
TM1650_Set(IIC, DIG1, tab[0]); //第一位显示O
|
||||
TM1650_Set(IIC, DIG2, tab[22]); //第二位显示F
|
||||
TM1650_Set(IIC, DIG3, tab[22]); //第三位显示F
|
||||
TM1650_Set(IIC, DIG4, tab[13]); //第四位显示关闭
|
||||
}
|
||||
|
||||
static void Display_Close(IIC_t *Channel)
|
||||
{
|
||||
IIC_t *const IIC = Channel;
|
||||
TM1650_Set(IIC, DIG1, tab[13]); //关闭显示
|
||||
TM1650_Set(IIC, DIG2, tab[13]); //关闭显示
|
||||
TM1650_Set(IIC, DIG3, tab[13]); //关闭显示
|
||||
TM1650_Set(IIC, DIG4, tab[13]); //关闭显示
|
||||
}
|
37
App/TM1650.h
Normal file
37
App/TM1650.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* TM1650.h
|
||||
*
|
||||
* Created on: 2022年03月12日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#ifndef __TM1650_H
|
||||
#define __TM1650_H
|
||||
#include <IIC.h>
|
||||
|
||||
|
||||
|
||||
#define DIG1 0x68
|
||||
#define DIG2 0x6A
|
||||
#define DIG3 0x6C
|
||||
#define DIG4 0x6E
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t Flicker_Flag;
|
||||
void (*Init)(void);
|
||||
|
||||
void (*Display_OFF)(IIC_t*);
|
||||
void (*Display_Close)(IIC_t*);
|
||||
}TM1650_t;
|
||||
|
||||
|
||||
|
||||
|
||||
extern void TM1650_Display(IIC_t *Channel, uint16_t Value,uint8_t dot); //显示使能
|
||||
extern TM1650_t TM1650;
|
||||
|
||||
|
||||
#endif
|
||||
|
72
App/Timer0.c
Normal file
72
App/Timer0.c
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Timer0.c
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <main.h>
|
||||
|
||||
/* Private define-------------------------------------------------------------*/
|
||||
|
||||
/* Private variables----------------------------------------------------------*/
|
||||
|
||||
/* Private function prototypes------------------------------------------------*/
|
||||
static void Timer0_Init(void); //定时器0初始化
|
||||
|
||||
/* Public variables-----------------------------------------------------------*/
|
||||
Timer0_t Timer0 =
|
||||
{
|
||||
0,
|
||||
Timer0_Init};
|
||||
|
||||
/*
|
||||
* @name Timer0_Init
|
||||
* @brief 定时器0初始化
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Timer0_Init() // 5微秒@20.000MHz
|
||||
{
|
||||
AUXR |= 0x80; //定时器时钟1T模式
|
||||
TMOD &= 0xF0; //设置定时器模式
|
||||
TL0 = 0x9C; //设置定时初始值
|
||||
TH0 = 0xFF; //设置定时初始值
|
||||
TF0 = 0; //清除TF0标志
|
||||
TR0 = 1; //定时器0开始计时
|
||||
ET0 = 1; //打开定时器0中断
|
||||
EA = 1; //打开总中断
|
||||
}
|
||||
|
||||
/*
|
||||
* @name Timer0_isr()
|
||||
* @brief 定时器0中断函数(5us中断一次)
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
/***********定时器0中断函数***********/
|
||||
void Timer0_isr() interrupt 1
|
||||
{
|
||||
if (PWM.High == Timer0.usMCU_Run_Timer)
|
||||
{
|
||||
FAN_PWM_PIN = LOW;
|
||||
}
|
||||
Timer0.usMCU_Run_Timer++;
|
||||
if (Timer0.usMCU_Run_Timer >= TIMER0_500uS)
|
||||
{
|
||||
if (PWM.High != 0)
|
||||
{
|
||||
FAN_PWM_PIN = HIGH;
|
||||
}
|
||||
else
|
||||
{
|
||||
FAN_PWM_PIN = LOW;
|
||||
}
|
||||
|
||||
Timer0.usMCU_Run_Timer = 0;
|
||||
}
|
||||
}
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
33
App/Timer0.h
Normal file
33
App/Timer0.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Timer0.h
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#ifndef __Timer0_H__
|
||||
#define __Timer0_H__
|
||||
|
||||
//定义枚举类型
|
||||
typedef enum
|
||||
{
|
||||
TIMER0_50uS = (uint16_t)10,
|
||||
TIMER0_100uS = (uint16_t)20,
|
||||
TIMER0_500uS = (uint16_t)100,
|
||||
TIMER0_1mS = (uint16_t)200,
|
||||
}TIMER0_Value_t;
|
||||
|
||||
//定义结构体类型
|
||||
typedef struct
|
||||
{
|
||||
uint16_t volatile usMCU_Run_Timer; //系统运行定时器
|
||||
void (*Timer0_Init)(void); //定时器0初始化
|
||||
} Timer0_t;
|
||||
|
||||
/* extern variables-----------------------------------------------------------*/
|
||||
extern Timer0_t Timer0;
|
||||
|
||||
#endif
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
69
App/Timer2.c
Normal file
69
App/Timer2.c
Normal file
@@ -0,0 +1,69 @@
|
||||
/*
|
||||
* Timer0.c
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include <main.h>
|
||||
|
||||
/* Private define-------------------------------------------------------------*/
|
||||
|
||||
/* Private variables----------------------------------------------------------*/
|
||||
|
||||
/* Private function prototypes------------------------------------------------*/
|
||||
static void Timer2_Init(void); //定时器2初始化
|
||||
|
||||
/* Public variables-----------------------------------------------------------*/
|
||||
Timer2_t Timer2 =
|
||||
{
|
||||
0,
|
||||
Timer2_Init};
|
||||
|
||||
/*
|
||||
* @name Timer0_Init
|
||||
* @brief 定时器0初始化
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void Timer2_Init() // 20毫秒@20.000MHz
|
||||
{
|
||||
|
||||
AUXR &= 0xFB; //定时器时钟12T模式
|
||||
T2L = 0xCB; //设置定时初始值
|
||||
T2H = 0x7D; //设置定时初始值
|
||||
AUXR |= 0x10; //定时器2开始计时
|
||||
IE2 |= 0x04; //打开定时器2中断
|
||||
EA = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* @name Timer2_isr()
|
||||
* @brief 定时器2中断函数(20ms中断一次)
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
/***********定时器2中断函数***********/
|
||||
void Timer2_isr() interrupt 12
|
||||
{
|
||||
|
||||
if (Heating_SET_PIN == HIGH) //判断加热是否使能
|
||||
{
|
||||
PTC_Fan_PIN = HIGH; //加热使能打开风扇
|
||||
}
|
||||
else
|
||||
{
|
||||
if (++Timer2.Heating_Run_Timer >= TIMER2_20S)
|
||||
{
|
||||
Timer2.Heating_Run_Timer = 0;
|
||||
if (Heating_SET_PIN != HIGH)
|
||||
{
|
||||
PTC_Fan_PIN = LOW; //关闭风扇
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
39
App/Timer2.h
Normal file
39
App/Timer2.h
Normal file
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Timer0.h
|
||||
*
|
||||
* Created on: 2022年03月21日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#ifndef __Timer2_H__
|
||||
#define __Timer2_H__
|
||||
|
||||
|
||||
#include <main.h>
|
||||
//定义枚举类型
|
||||
typedef enum
|
||||
{
|
||||
TIMER2_100mS = (uint16_t)5,
|
||||
TIMER2_500mS = (uint16_t)25,
|
||||
TIMER2_1S = (uint16_t)50,
|
||||
TIMER2_2S = (uint16_t)100,
|
||||
TIMER2_4S = (uint16_t)200,
|
||||
TIMER2_5S = (uint16_t)250,
|
||||
TIMER2_10S = (uint16_t)500,
|
||||
TIMER2_20S = (uint16_t)1000,
|
||||
}TIMER2_Value_t;
|
||||
|
||||
//定义结构体类型
|
||||
typedef struct
|
||||
{
|
||||
uint16_t volatile Heating_Run_Timer; //信号检测定时器
|
||||
void (*Timer2_Init)(void); //定时器2初始化
|
||||
}Timer2_t;
|
||||
|
||||
/* extern variables-----------------------------------------------------------*/
|
||||
extern Timer2_t Timer2;
|
||||
|
||||
#endif
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
40
App/UART.h
Normal file
40
App/UART.h
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* UART.h
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* f
|
||||
*/
|
||||
|
||||
#ifndef __UART_H_
|
||||
#define __UART_H_
|
||||
|
||||
|
||||
//#define MAIN_Fosc 11059200UL //定义主时钟
|
||||
#define MAIN_Fosc 20000000UL //定义主时钟
|
||||
#define UART3_Baudrate 9600UL //定义波特率
|
||||
#define RX_Lenth 32 //接收长度
|
||||
|
||||
#define UART3_BitTime (MAIN_Fosc / UART3_Baudrate)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void(*Init)(void);
|
||||
void(*Rec)(void);
|
||||
void(*Send)(uint8_t *,uint8_t);
|
||||
}UART_t;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
extern UART_t UART;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
200
App/UART1.c
Normal file
200
App/UART1.c
Normal file
@@ -0,0 +1,200 @@
|
||||
/*
|
||||
* UART1.c
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#include <main.h>
|
||||
#ifdef MYDEBUG
|
||||
|
||||
uint8_t Tx3_read; //发送读指针
|
||||
uint8_t Rx3_write; //接收写指针
|
||||
uint8_t idata buf3[RX_Lenth]; //接收缓冲
|
||||
//uint8_t idata buftest[2] = {1, 2};
|
||||
uint16_t RxTimeOut;
|
||||
bit B_RxOk; //接收结束标志
|
||||
|
||||
//===================== 模拟串口相关===========================
|
||||
// #define P_RX3 P30; //定义模拟串口接收IO
|
||||
// #define P_TX3 P31; //定义模拟串口发送IO
|
||||
sbit P_RX3 = P3 ^ 0; //定义模拟串口接收IO
|
||||
sbit P_TX3 = P3 ^ 1; //定义模拟串口发送IO
|
||||
|
||||
uint8_t Tx3_DAT; // 发送移位变量, 用户不可见
|
||||
uint8_t Rx3_DAT; // 接收移位变量, 用户不可见
|
||||
uint8_t Tx3_BitCnt; // 发送数据的位计数器, 用户不可见
|
||||
uint8_t Rx3_BitCnt; // 接收数据的位计数器, 用户不可见
|
||||
uint8_t Rx3_BUF; // 接收到的字节, 用户读取
|
||||
uint8_t Tx3_BUF; // 要发送的字节, 用户写入
|
||||
bit Rx3_Ring; // 正在接收标志, 低层程序使用, 用户程序不可见
|
||||
bit Tx3_Ting; // 正在发送标志, 用户置1请求发送, 底层发送完成清0
|
||||
bit RX3_End; // 接收到一个字节, 用户查询 并清0
|
||||
//=============================================================
|
||||
|
||||
void UART_Init(void);
|
||||
void UART_Rec(void);
|
||||
void UART_Send(uint8_t *buftest,uint8_t len);
|
||||
|
||||
UART_t UART = {
|
||||
UART_Init,
|
||||
UART_Rec,
|
||||
UART_Send
|
||||
|
||||
};
|
||||
|
||||
void UART_Rec(void)
|
||||
{
|
||||
if (RX3_End)
|
||||
{ // 检测是否收到一个字节
|
||||
RX3_End = 0; // 清除标志
|
||||
buf3[Rx3_write] = Rx3_BUF; // 写入缓冲
|
||||
if (++Rx3_write >= RX_Lenth)
|
||||
Rx3_write = 0; // 指向下一个位置, 溢出检测
|
||||
RxTimeOut = 1000; //装载超时时间
|
||||
}
|
||||
if (RxTimeOut != 0)
|
||||
{ // 超时时间是否非0?
|
||||
if (--RxTimeOut == 0)
|
||||
{ // (超时时间 - 1) == 0?
|
||||
B_RxOk = 1;
|
||||
AUXR &= ~(1 << 4); // Timer2 停止运行
|
||||
INT_CLKO &= ~(1 << 6); //禁止INT4中断
|
||||
T2H = (65536 - UART3_BitTime) / 256; //数据位
|
||||
T2L = (65536 - UART3_BitTime) % 256; //数据位
|
||||
AUXR |= (1 << 4); // Timer2 开始运行
|
||||
}
|
||||
}
|
||||
|
||||
if (B_RxOk)
|
||||
{ // 检测是否接收OK?
|
||||
if (!Tx3_Ting)
|
||||
{ // 检测是否发送空闲
|
||||
if (Tx3_read != Rx3_write)
|
||||
{ // 检测是否收到过字符
|
||||
Tx3_BUF = buf3[Tx3_read]; // 从缓冲读一个字符发送
|
||||
Tx3_Ting = 1; // 设置发送标志
|
||||
if (++Tx3_read >= RX_Lenth)
|
||||
Tx3_read = 0; // 指向下一个位置, 溢出检测
|
||||
}
|
||||
else
|
||||
{
|
||||
B_RxOk = 0;
|
||||
AUXR &= ~(1 << 4); // Timer2 停止运行
|
||||
INT_CLKO |= (1 << 6); //允许INT4中断
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UART_Send(uint8_t *buftest,uint8_t len)
|
||||
{
|
||||
EA = 0; //关闭总中断
|
||||
INT_CLKO &= ~(1 << 6); //禁止INT4中断
|
||||
T2H = (65536 - UART3_BitTime) / 256; //数据位
|
||||
T2L = (65536 - UART3_BitTime) % 256; //数据位
|
||||
AUXR |= (1 << 4); // Timer2 开始运行
|
||||
|
||||
// Tx3_BitCnt = 0;
|
||||
|
||||
Tx3_BUF = buftest[Tx3_read]; // 从缓冲读一个字符发送
|
||||
Tx3_Ting = 1; // 设置发送标志
|
||||
|
||||
|
||||
if (++Tx3_read > len)
|
||||
{
|
||||
Tx3_read = 0; // 指向下一个位置, 溢出检测
|
||||
AUXR &= ~(1 << 4); // Timer2 停止运行
|
||||
|
||||
}
|
||||
|
||||
EA = 1; //打开总中断
|
||||
}
|
||||
|
||||
// 描述: UART初始化程序.
|
||||
void UART_Init(void)
|
||||
{
|
||||
Tx3_read = 0;
|
||||
Rx3_write = 0;
|
||||
Tx3_Ting = 0;
|
||||
Rx3_Ring = 0;
|
||||
RX3_End = 0;
|
||||
Tx3_BitCnt = 0;
|
||||
RxTimeOut = 0;
|
||||
B_RxOk = 0;
|
||||
|
||||
AUXR &= ~(1 << 4); // Timer2 停止运行
|
||||
T2H = (65536 - UART3_BitTime) / 256; // 数据位
|
||||
T2L = (65536 - UART3_BitTime) % 256; // 数据位
|
||||
INT_CLKO |= (1 << 6); // 允许INT4中断
|
||||
IE2 |= (1 << 2); // 允许Timer2中断
|
||||
AUXR |= (1 << 2); // 1T
|
||||
}
|
||||
|
||||
// 描述: Timer2中断处理程序.
|
||||
void timer2_int(void) interrupt 12
|
||||
{
|
||||
if (Rx3_Ring)
|
||||
{ //已收到起始位
|
||||
if (--Rx3_BitCnt == 0)
|
||||
{ //接收完一帧数据
|
||||
Rx3_Ring = 0; //停止接收
|
||||
Rx3_BUF = Rx3_DAT; //存储数据到缓冲区
|
||||
RX3_End = 1;
|
||||
AUXR &= ~(1 << 4); // Timer2 停止运行
|
||||
INT_CLKO |= (1 << 6); //允许INT4中断
|
||||
}
|
||||
else
|
||||
{
|
||||
Rx3_DAT >>= 1; //把接收的单b数据 暂存到 RxShiftReg(接收缓冲)
|
||||
if (P_RX3)
|
||||
Rx3_DAT |= 0x80; // shift RX data to RX buffer
|
||||
}
|
||||
}
|
||||
|
||||
if (Tx3_Ting)
|
||||
{ // 不发送, 退出
|
||||
if (Tx3_BitCnt == 0)
|
||||
{ //发送计数器为0 表明单字节发送还没开始
|
||||
|
||||
P_TX3 = 0; //发送开始位
|
||||
Tx3_DAT = Tx3_BUF; //把缓冲的数据放到发送的buff
|
||||
Tx3_BitCnt = 9; //发送数据位数 (8数据位+1停止位)
|
||||
}
|
||||
else
|
||||
{ //发送计数器为非0 正在发送数据
|
||||
if (--Tx3_BitCnt == 0)
|
||||
{ //发送计数器减为0 表明单字节发送结束
|
||||
P_TX3 = 1; //送停止位数据
|
||||
Tx3_Ting = 0; //发送停止
|
||||
}
|
||||
else
|
||||
{
|
||||
Tx3_DAT >>= 1; //把最低位送到 CY(益处标志位)
|
||||
P_TX3 = CY; //发送一个bit数据
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/********************* INT4中断函数 *************************/
|
||||
void Ext_INT4(void) interrupt 16
|
||||
{
|
||||
AUXR &= ~(1 << 4); // Timer2 停止运行
|
||||
T2H = (65536 - (UART3_BitTime / 2 + UART3_BitTime)) / 256; //起始位 + 半个数据位
|
||||
T2L = (65536 - (UART3_BitTime / 2 + UART3_BitTime)) % 256; //起始位 + 半个数据位
|
||||
AUXR |= (1 << 4); // Timer2 开始运行
|
||||
Rx3_Ring = 1; //标志已收到起始位
|
||||
Rx3_BitCnt = 9; //初始化接收的数据位数(8个数据位+1个停止位)
|
||||
|
||||
INT_CLKO &= ~(1 << 6); //禁止INT4中断
|
||||
T2H = (65536 - UART3_BitTime) / 256; //数据位
|
||||
T2L = (65536 - UART3_BitTime) % 256; //数据位
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
80
App/main.c
Normal file
80
App/main.c
Normal file
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
* main.c
|
||||
*
|
||||
* Created on: 2022年3月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#include <main.h>
|
||||
|
||||
void main()
|
||||
{
|
||||
// static uint8_t i = 0;
|
||||
static uint8_t flag = 0;
|
||||
static uint16_t temp = 0;
|
||||
Sys_Init.Init(); //系统初始化
|
||||
WDT_CONTR |= 0x3F; // 0011 1111b 设置看门狗并打开 看门狗时钟 256分频 20MHz 5S秒内喂狗
|
||||
WDT_CONTR |= 0x10; //喂看门狗
|
||||
PWM.LoadPWM(100); //启动时风扇先转
|
||||
|
||||
while (1)
|
||||
{
|
||||
WDT_CONTR |= 0x10; //喂看门狗
|
||||
if (DS18B20.ReadTemp() == FALSE) //判断ds18b20是否正常
|
||||
{
|
||||
DS18B20.Temp = 600; // 18B20不正常 让风扇全开
|
||||
TM1650.Display_OFF(&IIC_1); // 18B20不正常 显示off
|
||||
}
|
||||
else
|
||||
{
|
||||
TM1650_Display(&IIC_1, DS18B20.Temp, 1);
|
||||
}
|
||||
|
||||
WDT_CONTR |= 0x10; //喂狗
|
||||
if (DS18B20.Temp > 350)
|
||||
{
|
||||
if (flag == 1)
|
||||
{
|
||||
flag = 0;
|
||||
PWM.LoadPWM(100); //首次风扇全速打开
|
||||
Public.Delay_ms(2);
|
||||
}
|
||||
|
||||
temp = DS18B20.Temp - 350;
|
||||
PWM.LoadPWM((temp * 2.8 / 10) + 30); //超过35°C 每上升1°C PWM加2
|
||||
}
|
||||
else
|
||||
{
|
||||
flag = 1; //关闭风扇标志位
|
||||
PWM.LoadPWM(0); //低于25°C关闭风扇
|
||||
}
|
||||
|
||||
// if (DS18B20.Temp >= 600)
|
||||
// {
|
||||
// PWM.LoadPWM(100);
|
||||
// }
|
||||
// else if(DS18B20.Temp < 600 && DS18B20.Temp >=500)
|
||||
// {
|
||||
// PWM.LoadPWM(90); //大于60°c风扇90%
|
||||
// }
|
||||
// else if(DS18B20.Temp < 500 && DS18B20.Temp >=400)
|
||||
// {
|
||||
// PWM.LoadPWM(70); //大于40°c风扇70%
|
||||
// }
|
||||
// else if(DS18B20.Temp < 400 && DS18B20.Temp >=300)
|
||||
// {
|
||||
// PWM.LoadPWM(50); //大于30°c风扇50%
|
||||
// }
|
||||
// else if(DS18B20.Temp < 300 && DS18B20.Temp >=250)
|
||||
// {
|
||||
// PWM.LoadPWM(30); //大于25°c风扇30%
|
||||
// }
|
||||
// else if(DS18B20.Temp < 250)
|
||||
// {
|
||||
// PWM.LoadPWM(0); //小于25°c风扇0%
|
||||
// }
|
||||
}
|
||||
}
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
43
App/main.h
Normal file
43
App/main.h
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* main.h
|
||||
*
|
||||
* Created on: 2022年3月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#ifndef _MAIN_H_
|
||||
#define _MAIN_H_
|
||||
|
||||
#include <STC15.H>
|
||||
#include <intrins.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <Sys_Init.h>
|
||||
#include <public.h>
|
||||
#include <DS18B20.h>
|
||||
#include <PWM.h>
|
||||
#include <Timer0.h>
|
||||
#include <Timer2.h>
|
||||
#include <TM1650.h>
|
||||
#include <IIC.h>
|
||||
#include <HeatingSetting.h>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//#define MYDEBUG
|
||||
|
||||
#ifdef MYDEBUG
|
||||
#include <UART.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif /* SRC_MAIN_H_ */
|
48
App/public.c
Normal file
48
App/public.c
Normal file
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* public.c
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
|
||||
#include <main.h>
|
||||
|
||||
/* Private define-------------------------------------------------------------*/
|
||||
|
||||
/* Private variables----------------------------------------------------------*/
|
||||
static void Delay_ms(uint16_t); // ms延时
|
||||
|
||||
/* Public variables-----------------------------------------------------------*/
|
||||
Public_t Public =
|
||||
{
|
||||
Delay_ms};
|
||||
|
||||
/* Private function prototypes------------------------------------------------*/
|
||||
|
||||
/*
|
||||
* @name Delay_ms
|
||||
* @brief 毫秒延时函数
|
||||
* @param ms -> 需要延时的时间
|
||||
* @retval None
|
||||
*/
|
||||
static void Delay_ms(uint16_t ms) //@20.000MHz
|
||||
{
|
||||
|
||||
unsigned char i, j;
|
||||
do
|
||||
{
|
||||
i = 20;
|
||||
j = 113;
|
||||
do
|
||||
{
|
||||
while (--j)
|
||||
;
|
||||
} while (--i);
|
||||
} while (--ms);
|
||||
}
|
||||
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
61
App/public.h
Normal file
61
App/public.h
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* public.h
|
||||
*
|
||||
* Created on: 2022年03月15日
|
||||
* Author: User
|
||||
*/
|
||||
|
||||
#ifndef __PUBLIC_H_
|
||||
#define __PUBLIC_H_
|
||||
|
||||
//数据类型重定义
|
||||
typedef signed char sint8_t;
|
||||
typedef signed short int sint16_t;
|
||||
typedef signed long int sint32_t;
|
||||
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short int uint16_t;
|
||||
typedef unsigned long int uint32_t;
|
||||
|
||||
//定义位操作枚举类型
|
||||
typedef enum
|
||||
{
|
||||
BIT0 = (uint8_t)(0x01 << 0),
|
||||
BIT1 = (uint8_t)(0x01 << 1),
|
||||
BIT2 = (uint8_t)(0x01 << 2),
|
||||
BIT3 = (uint8_t)(0x01 << 3),
|
||||
BIT4 = (uint8_t)(0x01 << 4),
|
||||
BIT5 = (uint8_t)(0x01 << 5),
|
||||
BIT6 = (uint8_t)(0x01 << 6),
|
||||
BIT7 = (uint8_t)(0x01 << 7),
|
||||
}BIT_t;
|
||||
|
||||
//定义枚举类型
|
||||
typedef enum
|
||||
{
|
||||
TRUE = (bit)1,
|
||||
FALSE = (bit)0,
|
||||
}BOOL_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
LOW = (bit)0,
|
||||
HIGH = (bit)1,
|
||||
}Voltage_t;
|
||||
|
||||
|
||||
//定义结构体类型
|
||||
typedef struct
|
||||
{
|
||||
void (*Delay_ms)(uint16_t); //ms延时函数
|
||||
} Public_t;
|
||||
|
||||
/* extern variables-----------------------------------------------------------*/
|
||||
extern Public_t Public;
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
/********************************************************
|
||||
End Of File
|
||||
********************************************************/
|
BIN
Release/220V_Controller.v1.1.exe
Normal file
BIN
Release/220V_Controller.v1.1.exe
Normal file
Binary file not shown.
Reference in New Issue
Block a user