<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>单片机 &#8211; Simon</title>
	<atom:link href="https://www.luisimon.com/category/%E7%B7%A8%E7%A8%8B%E4%B8%89%E5%85%A9%E4%BA%8B/%E5%8D%95%E7%89%87%E6%9C%BA/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.luisimon.com</link>
	<description>blog</description>
	<lastBuildDate>Sun, 01 Sep 2024 09:44:35 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>https://www.luisimon.com/wp-content/uploads/2019/09/cbrks-x5t4i-001.ico</url>
	<title>单片机 &#8211; Simon</title>
	<link>https://www.luisimon.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>奥克斯(AUX)风扇遥控器协议</title>
		<link>https://www.luisimon.com/2024/09/01/897/</link>
		
		<dc:creator><![CDATA[Alan]]></dc:creator>
		<pubDate>Sun, 01 Sep 2024 06:04:26 +0000</pubDate>
				<category><![CDATA[单片机]]></category>
		<category><![CDATA[編程三兩事]]></category>
		<category><![CDATA[红外]]></category>
		<guid isPermaLink="false">https://www.luisimon.com/?p=897</guid>

					<description><![CDATA[分析可知，奥克斯遥控器应该是私有协议不同于NEC协议。 由逻辑分析仪图可以看出，每个位的信号周期由400us和 ... <a title="奥克斯(AUX)风扇遥控器协议" class="read-more" href="https://www.luisimon.com/2024/09/01/897/" aria-label="继续阅读奥克斯(AUX)风扇遥控器协议">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<p>分析可知，奥克斯遥控器应该是私有协议不同于NEC协议。</p>



<p>由逻辑分析仪图可以看出，每个位的信号周期由400us和1200us组成。根据抓取到遥控器所有按键信号数据，分析前面4bit是固定的，后8bit可以理解位数据。注意：由于此协议无固定结束信号，所以最后1bit在分析仪上看并不完整，只需要判断低电平时长即可。</p>



<p>命令需要发送至少2次，每次间隔8ms。</p>



<p>笔者定义：</p>



<ul class="wp-block-list">
<li>1.2ms载波（低电平）+400us空闲（高电平）为“1”。</li>
</ul>



<ul class="wp-block-list">
<li>400us载波（低电平）+1.2ms空闲（高电平）为“0”。</li>
</ul>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="197" src="https://www.luisimon.com/wp-content/uploads/2024/09/AUX分析-1024x197.jpg" alt="" class="wp-image-899" srcset="https://www.luisimon.com/wp-content/uploads/2024/09/AUX分析-1024x197.jpg 1024w, https://www.luisimon.com/wp-content/uploads/2024/09/AUX分析-300x58.jpg 300w, https://www.luisimon.com/wp-content/uploads/2024/09/AUX分析-768x148.jpg 768w, https://www.luisimon.com/wp-content/uploads/2024/09/AUX分析.jpg 1162w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>將電風扇改造為支持紅外遙控的思路</title>
		<link>https://www.luisimon.com/2024/06/12/814/</link>
		
		<dc:creator><![CDATA[Simon]]></dc:creator>
		<pubDate>Wed, 12 Jun 2024 04:34:08 +0000</pubDate>
				<category><![CDATA[单片机]]></category>
		<category><![CDATA[日常]]></category>
		<category><![CDATA[C語言]]></category>
		<category><![CDATA[嘉立創]]></category>
		<category><![CDATA[紅外遙控]]></category>
		<category><![CDATA[遙控]]></category>
		<category><![CDATA[風扇]]></category>
		<guid isPermaLink="false">https://www.luisimon.com/?p=814</guid>

					<description><![CDATA[最近天氣好熱，到了開風扇的時候了。突然發現家中老舊的電風扇經過30多年的使用後，風速檔按鍵出現了一些小故障。雖 ... <a title="將電風扇改造為支持紅外遙控的思路" class="read-more" href="https://www.luisimon.com/2024/06/12/814/" aria-label="继续阅读將電風扇改造為支持紅外遙控的思路">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<p>最近天氣好熱，到了開風扇的時候了。突然發現家中老舊的電風扇經過30多年的使用後，風速檔按鍵出現了一些小故障。雖然不影響使用，修理一下也可以回復青春。但是在我看來，這個每次調速換檔都要走過去的操作的老古董已經與這個【智能】的時代和懶惰的我顯得格格不入。於是我萌生了要將它改成遙控的想法。</p>



<p>故事的開始，我先是想到了萬能的淘寶。於是用【風扇】【遙控】【改裝】這些關鍵詞進行搜索。我發現出來的結果基本都是下圖這樣的需要整個“身體”換掉。對於那個鑄鐵的老古董老，這樣的塑料件恐怕是不堪重負。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="698" height="721" src="https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-11-192136.jpg" alt="" class="wp-image-815" srcset="https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-11-192136.jpg 698w, https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-11-192136-290x300.jpg 290w" sizes="(max-width: 698px) 100vw, 698px" /></figure>



<p>另外，也有直接是一套控制板的類型（如下圖），這種大概率是可以進行改裝的。</p>



<figure class="wp-block-image size-full"><img decoding="async" width="674" height="689" src="https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-11-195819.jpg" alt="" class="wp-image-816" srcset="https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-11-195819.jpg 674w, https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-11-195819-293x300.jpg 293w" sizes="(max-width: 674px) 100vw, 674px" /></figure>



<p>不過强迫症轉念一想，這豈不是很不美觀，另外也沒有狀態顯示，這顯然不合我意。</p>



<p>通過觀察和思考，我發現風扇的調速其實原來很簡單。傳統的交流電(AC)風扇實現調速其實是電機中有多組綫圈（受限于體積和成本以及實用性基本都是3組綫），給不同的綫圈進行通電會使電機輸出不同的功率，體現在風扇中就是不同的轉速。那麽我想，如果能自己設計一個電路使用（傳説中）單片機進行控制給綫圈通電，不就可能可以實現遙控了嗎。</p>



<p>於是我馬上從0開始學習單片機的控制開發。由於我本來有計算機變成的基礎，所以學習起來也是相對容易的。</p>



<p>電路設計</p>



<p>單片機允許通過編程的方式改變功能引脚的輸出狀態。OK，那麽就可以用來控制電風扇的開關狀態。不過顯然單片機使用的是低壓電直流電，不能夠直接驅動帶你風扇的電機，所以我們需要神奇的半導體【開關管】來幫我們在電路中充當開關。</p>



<p>思路</p>



<p>風扇有3個檔，那麽對應三個開關。所以我們在電路設計中需要有三個半導體開關，因爲這裏控制的是交流電，不能直接用三極管或者MOS管這種單向導通的元件。爲了減輕設計的複雜都，我這裏使用【雙向可控硅】（晶閘管）來做交流電的開關，另外配合一個【光耦】（光電耦合器）來做電氣隔離。單片機通過控制【光耦】間接控制雙向可控硅。</p>



<p>控制控制電機的開關就是這麽簡單的思路了，至於其他的還有RC（阻容）尖峰吸收的設計（主要是用來吸收電機啓停是產生的尖峰電壓）保護開關管不被擊穿。</p>



<p>聽起來好像有點複雜，確實。一開始我是想直接選用繼電器來做開關，不過想起繼電器有“噠噠噠”的聲音所以又放棄了。</p>



<p>那麽一個風扇怎麽能沒有狀態顯示呢？我是用了兩個數碼管來做狀態顯示，另外還配合了4顆LED燈珠，以及一個蜂鳴器做聲音的反饋。數碼管主要用來顯示當前的風速檔位和定時信息。</p>



<p>紅外遙控</p>



<p>電路中還需要集成一個紅外脈衝信號接收元件。由於紅外遙控的信號屬於載波信號，爲了方便單片機處理信號，我選用了直接輸出調製后信號的紅外接收傳感器，單片機可以直接處理輸出的信號。</p>



<p>至於遙控器，可以直接選用一個品牌電風扇的遙控器，使用【邏輯分析儀】分析遙控器發送的信號，自己編程做對應的處理。家中沒有遙控器，當然也可以直接在網上購買一個（如下圖）</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="686" height="680" src="https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-12-113456.jpg" alt="" class="wp-image-818" srcset="https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-12-113456.jpg 686w, https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-12-113456-300x297.jpg 300w, https://www.luisimon.com/wp-content/uploads/2024/06/Screenshot-2024-06-12-113456-150x150.jpg 150w" sizes="auto, (max-width: 686px) 100vw, 686px" /></figure>



<p><strong>這是我是在【嘉立創】打樣製作的測試驗證板</strong></p>



<figure class="wp-block-video"><video controls src="https://html.luisimon.com/RDfan.mp4"></video></figure>



<p>製作這個紅外遙控板需要學習單片機編程和使用單片機資源</p>



<p>定時器</p>



<p>PWM功能</p>



<p>系統中斷</p>



<p>數碼管的控制（38譯碼器）</p>



<p>PWM方波驅動蜂鳴器</p>
]]></content:encoded>
					
		
		<enclosure url="https://html.luisimon.com/RDfan.mp4" length="3104120" type="video/mp4" />

			</item>
		<item>
		<title>士兰微SC7A20加速度传感（陀螺仪）器技术文档</title>
		<link>https://www.luisimon.com/2024/05/26/770/</link>
		
		<dc:creator><![CDATA[Simon]]></dc:creator>
		<pubDate>Sun, 26 May 2024 07:07:48 +0000</pubDate>
				<category><![CDATA[单片机]]></category>
		<guid isPermaLink="false">https://www.luisimon.com/?p=770</guid>

					<description><![CDATA[早前在制作一个T12电烙铁时，由于手柄的上架休眠功能需要用到加速度传感器，于是购买了最便宜的传感器【士兰微SC ... <a title="士兰微SC7A20加速度传感（陀螺仪）器技术文档" class="read-more" href="https://www.luisimon.com/2024/05/26/770/" aria-label="继续阅读士兰微SC7A20加速度传感（陀螺仪）器技术文档">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="132" src="https://www.luisimon.com/wp-content/uploads/2024/05/1716706056899-2-1024x132.jpg" alt="" class="wp-image-771" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/1716706056899-2-1024x132.jpg 1024w, https://www.luisimon.com/wp-content/uploads/2024/05/1716706056899-2-300x39.jpg 300w, https://www.luisimon.com/wp-content/uploads/2024/05/1716706056899-2-768x99.jpg 768w, https://www.luisimon.com/wp-content/uploads/2024/05/1716706056899-2.jpg 1209w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>早前在制作一个T12电烙铁时，由于手柄的上架休眠功能需要用到加速度传感器，于是购买了最便宜的传感器【士兰微SC7A20】。由于立创商城和官网所提供的这份颗芯片的文档没有给出数据的处理示例，导致走了一些弯路。下面提供一个更详细的士兰微的文档。</p>



<p class="has-medium-font-size"><strong>下载：</strong><a href="https://www.luisimon.com/goto/v57h" rel="nofollow"><strong>SC7660-SC7A30E-SC7A20内部功能应用说明书_0.2</strong></a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Arduino使用ISP烧写程序不擦除（保留）EEPROM（教程）</title>
		<link>https://www.luisimon.com/2024/05/01/736/</link>
		
		<dc:creator><![CDATA[Simon]]></dc:creator>
		<pubDate>Wed, 01 May 2024 09:14:20 +0000</pubDate>
				<category><![CDATA[单片机]]></category>
		<category><![CDATA[編程三兩事]]></category>
		<guid isPermaLink="false">https://www.luisimon.com/?p=736</guid>

					<description><![CDATA[复刻GitHub开源的基于Arduino的T12恒温电烙铁时，每次修改控制程序或者修复bug使用ISP重新升级 ... <a title="Arduino使用ISP烧写程序不擦除（保留）EEPROM（教程）" class="read-more" href="https://www.luisimon.com/2024/05/01/736/" aria-label="继续阅读Arduino使用ISP烧写程序不擦除（保留）EEPROM（教程）">阅读更多</a>]]></description>
										<content:encoded><![CDATA[
<p>复刻GitHub开源的基于Arduino的T12恒温电烙铁时，每次修改控制程序或者修复bug使用ISP重新升级程序时EEPROM的数据都会清空。导致每次都要重新录入烙铁的校准信息和配置烙铁，这样显得很麻烦。</p>



<p>其实，Arduino中有一个保险丝可以配置不擦除EEPROM。可以参考<a href="https://www.luisimon.com/goto/59lm" rel="nofollow">AVR® Fuse Calculator</a>对bootloder进行配置</p>



<p>我使用的是<strong>ATmega328P</strong>主控(MUC)</p>



<p>我们来分析一下配置</p>



<p><strong>修改前</strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="788" src="https://www.luisimon.com/wp-content/uploads/2024/05/image-1024x788.png" alt="" class="wp-image-737" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/image-1024x788.png 1024w, https://www.luisimon.com/wp-content/uploads/2024/05/image-300x231.png 300w, https://www.luisimon.com/wp-content/uploads/2024/05/image-768x591.png 768w, https://www.luisimon.com/wp-content/uploads/2024/05/image.png 1108w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>修改后</strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="721" src="https://www.luisimon.com/wp-content/uploads/2024/05/image-1-1024x721.png" alt="" class="wp-image-738" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/image-1-1024x721.png 1024w, https://www.luisimon.com/wp-content/uploads/2024/05/image-1-300x211.png 300w, https://www.luisimon.com/wp-content/uploads/2024/05/image-1-768x541.png 768w, https://www.luisimon.com/wp-content/uploads/2024/05/image-1.png 1129w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>由上面的两个图片红框的信息可以看出来，当勾选<strong>EESAVE</strong>（保留EEPROM数据）<strong>AVRDUDE<em> arguments</em></strong> 中<strong>hfuse</strong>的值由<strong>d9</strong>变成了<strong>d1</strong></p>



<p>我们来对比这两个值</p>



<p><strong>D9</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="455" height="110" src="https://www.luisimon.com/wp-content/uploads/2024/05/image-2.png" alt="" class="wp-image-739" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/image-2.png 455w, https://www.luisimon.com/wp-content/uploads/2024/05/image-2-300x73.png 300w" sizes="auto, (max-width: 455px) 100vw, 455px" /></figure>



<p><strong>D1</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="442" height="107" src="https://www.luisimon.com/wp-content/uploads/2024/05/image-4.png" alt="" class="wp-image-741" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/image-4.png 442w, https://www.luisimon.com/wp-content/uploads/2024/05/image-4-300x73.png 300w" sizes="auto, (max-width: 442px) 100vw, 442px" /></figure>



<p>可以看出，<strong>这个寄存器hfuse的第四位由1变成了0，可以确定第四位是用来配置是否保留EEPROM数据的</strong></p>



<p>那么我们在烧写bootloader的时候就可以配置这个寄存器的第四位为0则可实现烧写程序时保留EEPROM的数据。下面我们来看看怎么操作。</p>



<p>我使用Arduino UNO做ISP，按下图进行接线，但是需要<strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">注意RESET的接线</mark></strong>（请看下面的说明）不能使用Arduino UNO上的RESET，需要根据ISP程序的定义来接线。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="684" src="https://www.luisimon.com/wp-content/uploads/2024/05/1714551572660-2-1024x684.jpg" alt="" class="wp-image-742" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/1714551572660-2-1024x684.jpg 1024w, https://www.luisimon.com/wp-content/uploads/2024/05/1714551572660-2-300x201.jpg 300w, https://www.luisimon.com/wp-content/uploads/2024/05/1714551572660-2-768x513.jpg 768w, https://www.luisimon.com/wp-content/uploads/2024/05/1714551572660-2.jpg 1384w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>烧写ISP程序</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="496" height="511" src="https://www.luisimon.com/wp-content/uploads/2024/05/image-5.png" alt="" class="wp-image-744" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/image-5.png 496w, https://www.luisimon.com/wp-content/uploads/2024/05/image-5-291x300.png 291w" sizes="auto, (max-width: 496px) 100vw, 496px" /></figure>



<p>按上图在Arduino IDE的【文件】->【示例】->【ArduinoISP】->【ArduinoISP】打开ISP程序的代码</p>



<p>准备烧录ISP之前来说一下RESET的接线问题</p>



<p><strong>RSET的接线</strong></p>



<p>从ISP程序的代码注释可以看出来RESET控制被定义为Pin 10</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="810" height="305" src="https://www.luisimon.com/wp-content/uploads/2024/05/image-7.png" alt="" class="wp-image-746" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/image-7.png 810w, https://www.luisimon.com/wp-content/uploads/2024/05/image-7-300x113.png 300w, https://www.luisimon.com/wp-content/uploads/2024/05/image-7-768x289.png 768w" sizes="auto, (max-width: 810px) 100vw, 810px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="632" height="113" src="https://www.luisimon.com/wp-content/uploads/2024/05/image-8.png" alt="" class="wp-image-747" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/image-8.png 632w, https://www.luisimon.com/wp-content/uploads/2024/05/image-8-300x54.png 300w" sizes="auto, (max-width: 632px) 100vw, 632px" /></figure>



<p>也就是<strong>被烧写的芯片的RESET引脚要接到UNO的10号引脚</strong>，如下图</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="684" src="https://www.luisimon.com/wp-content/uploads/2024/05/1714552792151-2-1024x684.jpg" alt="" class="wp-image-748" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/1714552792151-2-1024x684.jpg 1024w, https://www.luisimon.com/wp-content/uploads/2024/05/1714552792151-2-300x201.jpg 300w, https://www.luisimon.com/wp-content/uploads/2024/05/1714552792151-2-768x513.jpg 768w, https://www.luisimon.com/wp-content/uploads/2024/05/1714552792151-2.jpg 1384w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>接好先之后我们直接点击【上传】即可将ISP程序烧录到UNO中。</p>



<p><strong>烧写Bootloader(引导程序)</strong></p>



<p><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">重新烧写Bootloader会导致EEPROM数据丢失</mark></strong></p>



<p><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">重新烧写Bootloader会导致EEPROM数据丢失</mark></strong></p>



<p><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">重新烧写Bootloader会导致EEPROM数据丢失</mark></strong></p>



<p>点击烧录Bootloader(引导程序)可以在输出窗口看到一下命令代码</p>



<p><strong>烧写bootloader命令</strong></p>



<pre class="wp-block-code"><code>"C:\Users\XXXX\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\XXXX\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -patmega328p -cstk500v1 -PCOM6 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m</code></pre>



<p>我们需要关注<strong>-Uhfuse:w:0xDE:m</strong>这个参数</p>



<p>前面说到<strong>hfuse</strong>的第四位需要改成0，我们可以直接用电脑计算器的程序员模式修改</p>



<p>如下图，先在计算器的16进制模式下输入DE，<strong>点击箭头所指的第四位数字将其改为0</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="475" height="535" src="https://www.luisimon.com/wp-content/uploads/2024/05/image-11.png" alt="" class="wp-image-751" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/image-11.png 475w, https://www.luisimon.com/wp-content/uploads/2024/05/image-11-266x300.png 266w" sizes="auto, (max-width: 475px) 100vw, 475px" /></figure>



<p>如下图，我们得到了配置值为16进制的<strong>D6</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="467" height="530" src="https://www.luisimon.com/wp-content/uploads/2024/05/image-12.png" alt="" class="wp-image-752" srcset="https://www.luisimon.com/wp-content/uploads/2024/05/image-12.png 467w, https://www.luisimon.com/wp-content/uploads/2024/05/image-12-264x300.png 264w" sizes="auto, (max-width: 467px) 100vw, 467px" /></figure>



<p>熟悉的位运算的小伙伴可以直接使用位运算亦可</p>



<p><strong>DE &amp; F7 = D6</strong></p>



<p>将<strong>烧写bootloader命令</strong>的<strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-red-color">-Uhfuse:w:0xDE:m</mark></strong>的<strong>DE</strong>改为<strong>D6</strong></p>



<pre class="wp-block-code"><code>
"C:\Users\XXXX\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude" "-CC:\Users\XXXX\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf" -v -patmega328p -cstk500v1 -PCOM6 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xD6:m -Ulfuse:w:0xFF:m</code></pre>



<p>执行上面的新的命令重新烧写bootloader即可。<strong>(可能会报错，需要先关闭Arduino IDE)</strong></p>



<p><strong>重要提示</strong>：<strong>烧写bootloader亦会擦除EEPROM的数据</strong></p>



<p>完结，下次使用ISP升级程序就不会清除EEPROM的数据了</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>51单片机，3相步进电机驱动代码</title>
		<link>https://www.luisimon.com/2023/01/27/690/</link>
		
		<dc:creator><![CDATA[Alan]]></dc:creator>
		<pubDate>Fri, 27 Jan 2023 12:35:39 +0000</pubDate>
				<category><![CDATA[单片机]]></category>
		<guid isPermaLink="false">https://www.luisimon.com/?p=690</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<pre class="wp-block-code"><code>void main(void)
{
	unsigned char Mot_Ctrl = 0x04;
	unsigned char i = 0;
	//通过 P3.2，P3.3，P3.4 IO口驱动，低电平驱动
	while(1)
	{
		Delay500ms();
		P3 |= 0x1C;
		P3 = ~Mot_Ctrl &amp; P3;
		Mot_Ctrl &lt;&lt;= 1;	
		Mot_Ctrl = Mot_Ctrl == 0x20 ? 0x04 : Mot_Ctrl;
	}
}
</code></pre>
</blockquote>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
