Microchip 系列:PIC18 系列_(17).硬件设计与开发.docx

Microchip 系列:PIC18 系列_(17).硬件设计与开发.docx

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE1

PAGE1

硬件设计与开发

在上一节中,我们讨论了PIC18系列单片机的基本架构和特性。接下来,我们将深入探讨硬件设计与开发的相关内容。硬件设计是构建嵌入式系统的基础,它包括了电路设计、电源管理、时钟配置、外设接口等多个方面。本节将详细介绍这些内容,并提供具体的实例和代码示例,帮助读者更好地理解和应用。

电路设计

1.基本电路设计

PIC18系列单片机的基本电路设计包括了最小系统电路、电源电路、复位电路和时钟电路。以下是这些电路的设计要点:

1.1最小系统电路

最小系统电路是单片机能够正常运行的最基本电路。它包括了电源、复位、时钟和编程接口。

//示例:最小系统电路的初始化代码

voidsetup_minimal_system(){

//配置引脚为输入或输出

TRISA=0x00;//将PORTA配置为输出

TRISB=0xFF;//将PORTB配置为输入

//配置输出引脚的初始状态

PORTA=0x00;//将PORTA所有引脚设置为低电平

PORTB=0x00;//将PORTB所有引脚设置为低电平

//配置复位

RCON=0x00;//复位控制寄存器

//配置时钟

OSCCON=0x70;//设置内部振荡器为4MHz

}

1.2电源电路

电源电路是确保单片机稳定工作的关键部分。PIC18系列单片机通常使用3.3V或5V供电。设计时需要注意电源滤波和稳压。

//示例:电源管理代码

voidsetup_power_management(){

//配置低电压检测

LVDCON=0x00;//关闭低电压检测

//配置看门狗定时器

WDTCON=0x00;//关闭看门狗定时器

}

1.3复位电路

复位电路用于在系统启动或异常情况下使单片机恢复正常工作。复位电路通常包括复位按钮和电容滤波。

//示例:复位配置代码

voidsetup_reset(){

//配置复位引脚

RCON=0x00;//复位控制寄存器

//配置复位原因

if(RCONbitsPOR){

//上电复位

}elseif(RCONbitsBOR){

//欠压复位

}elseif(RCONbitsIDLE){

//空闲复位

}elseif(RCONbitsSLEEP){

//睡眠复位

}elseif(RCONbitsWDT){

//看门狗复位

}elseif(RCONbitsSWDTEN){

//软件看门狗复位

}

}

1.4时钟电路

时钟电路为单片机提供时钟信号。PIC18系列单片机支持多种时钟源,包括内部振荡器和外部晶振。

//示例:配置外部晶振

voidsetup_external_clock(){

//配置外部晶振

OSCCON=0x00;//设置振荡器控制寄存器

OSCTUNE=0x00;//设置振荡器调谐寄存器

OSCSTAT=0x00;//设置振荡器状态寄存器

//选择外部晶振作为时钟源

OSCTUNEbitsPLLEN=1;//使能PLL

OSCTUNEbitsTUN=0x00;//调谐值为0

//等待外部时钟源稳定

while(!OSCSTATbitsHFIOF){

//等待外部时钟源稳定

}

}

电源管理

2.电源管理技术

电源管理是嵌入式系统中非常重要的一环,它关系到系统的稳定性和功耗。PIC18系列单片机提供了多种电源管理功能,包括低功耗模式、电压检测和brown-outreset(BOR)。

2.1低功耗模式

PIC18系列单片机支持多种低功耗模式,包括空闲模式和睡眠模式。这些模式可以显著降低功耗,延长电池寿命。

//示例:配置低功耗模式

voidsetup_low_power_mode(){

//配置空闲模式

SLEEP();//进入空闲模式

//配置睡眠模式

SLEEP();//进入睡眠

文档评论(0)

找工业软件教程找老陈 + 关注
实名认证
服务提供商

寻找教程;翻译教程;题库提供;教程发布;计算机技术答疑;行业分析报告提供;

1亿VIP精品文档

相关文档