如何连接PIC单片机?


8

我是PIC微控制器和电气工程领域的新手,所以请放轻松:)

无论如何,我设法对PIC 16f627进行了编程,以便在按下按钮(触发按钮)时打开三个LED,并在另一个按钮被按下时启动关闭序列(基本上每个LED彼此之间以5秒钟的延迟关断)。按下(重置按钮)。我已经在Velleman的K8048 PIC编程器/实验板上进行了测试。引脚RA0和RA2分别是触发按钮和复位按钮的输入,而引脚RB0,RB1和RB2分别是LED的输出引脚。

使用实验板很棒,但是我想将其移至实际电路。问题是我不知道从哪里开始。我已经购买了3个LED(每个3.3伏),一些按钮和电线,并构造了以下电路:

电路图

(对不起的原理图很抱歉)

在我构建的电路中,我首先进行测试以查看LED是否可以使用3个1.5伏AA电池,并且它们可以正常工作,因此我认为不需要电阻器。

但是,这不起作用,我完全迷失了。供参考,这是我的PIC代码。它使用MikroC用C编写。它可以在实验板上使用,所以我认为这不是问题

void main() {
    TRISB.RB0 = 0;
    TRISB.RB1 = 0;
    TRISB.RB2 = 0;
    PORTB.RB0 = 0;
    PORTB.RB1 = 0;
    PORTB.RB2 = 0;
    CMCON = 0x07;
    TRISA = 255;

    for(;;){
            if(PORTA.RA0 == 1 && PORTB.RB0 == 1 && PORTB.RB1 == 1 && PORTB.RB2 == 1){
                         delay_ms(5000);
                         PORTB.RB0 = 0;
                         delay_ms(5000);
                         PORTB.RB1 = 0;
                         delay_ms(5000);
                         PORTB.RB2 = 0;
            }
            if(PORTA.RA2 == 1){
                         PORTB.RB0 = 1;
                         PORTB.RB1 = 1;
                         PORTB.RB2 = 1;
            }
    }
}

任何帮助将不胜感激。谢谢!


3
请请使用Fritzing。它是免费的,做90%的工作适合你,帮助你的示意图,更容易阅读..
伊格纳西奥巴斯克斯-艾布拉姆斯


7
我认为开户10天,这是Shahmeer的第一个问题,是“向我们倾倒这样的废话”的借口。当然,伊格纳西奥善于询问的方法比指责新人更容易获得积极的回应……除非您的目标是防止新人留下来。
ajs410 2012年

5
@ ajs410-我们都知道这是奥林的宠儿,尽管我并不总是同意他的措辞,但我同意他的原则。OP对可怕的(用他自己的话)“示意性”表示歉意,这意味着他很清楚这是不对的。那他为什么还发布这个东西?对我来说,它不一定是EDA创建的,我想我宁愿看到一个便签本绘图。
stevenvh 2012年

2
他是新来的,就像这里的许多其他新成员一样(包括我自己)。休息一下 Shahmeer,尝试Fritzing。它很好并且易于使用,将帮助您更好地解释您的问题。另一方面,我强烈反对伊格纳西奥的措词选择。
capcom

Answers:


11
  1. 首先,从电压源(例如电池,直流电源等)驱动时,您始终需要与LED串联的电阻器,
    这是因为LED具有非线性IV曲线,该曲线看起来像是高阻抗,直至达到阈值电压为止。然后,LED会急剧上升,这意味着电压变化很小时,电流就会发生很大变化,从而几乎不可能以这种方式将电流设置为稳定值。
    通过使用正确值的串联电阻,可以确保电流不会上升到足以损坏LED的程度。
    要计算电阻值,您需要知道LED正向电压(Vf),然后从电源电压中减去Vf,然后除以所需的电流,例如对于5V电源,2V Vf和15mA:

    (5V-2V)/ 0.020A =200Ω(标准值为220Ω-如果您没有此值,则针对20mA至5mA范围内的150Ω至600Ω之间的任何值)
    这是假设典型的5mm或3mm LED最大工作电流为20mA。

  2. 尽管在原理图中显示为“ 3 x 1.5V串联电池”,但电池看起来实际上可能是并联的。确认,电池需要端对端连接,如该图的底部图所示:

    并联和串联

  3. 您需要在微控制器Vdd与地之间存在去耦电容。我不会详细介绍(在这里进行搜索,这个问题上有很多不错的答案),但是它们基本上是为微控制器提供低阻抗的本地能量储备,以满足高频电流需求,而电源无法快速响应足够。
    理想情况下,应在电源和接地引脚之间放置一个(100nF或1uF陶瓷是很标准的),并尽可能靠近引脚。

  4. 如果没有晶体,请确保使用内部振荡器。您的代码未显示配置位设置,如果省略了它们,则需要添加它们以确保微控制器正确设置。CCS手册应告诉您如何执行此操作。同样在配置位中,确保将看门狗定时器设置为关闭,否则您的微型控制器将不断复位(除非您定期调用WDT clear命令)

  5. 确保正确安装LED。

  6. 确保将MCLR引脚连接到高电平,否则PIC将保持复位状态(除非您在配置位中将MCLR关闭)。这通常是通过一个电阻Vdd来实现的,电阻值约为10kΩ。数据表将在复位部分提供一个示例。(感谢ajs410提到这一点)


非常感谢您的评论,他们真的很有帮助。但是,除了所有这些以外,我是否应该以其他任何方式连接PIC,或者您列出的所有附件是我所需要的?
Shahmeer Navid

2
另一件事是您可能需要在按钮引脚上使用下拉电阻,以确保在未按下按钮时该引脚处于逻辑低电平(除非您具有内部下拉功能,但我认为PIC仅具有上拉功能)。很难确定原理图的样子(例如,非标准符号,没有引脚号/名称等),我将掌握一些PCB /示意图捕获软件(例如,Eagle [流行/免费用于非商业用途],Kicad [流行/免费],Diptrace [廉价],Altium [££££]等),并在将来使用。
奥利·格拉泽

1
6.不要忘记MCLR引脚上的上拉电阻。或设置使用内部上拉的配置位(如果有)。
ajs410 2012年

2

我强烈推荐John Catsoulis撰写的O'Reilly系列丛书“ Designing Embedded Systems”(设计嵌入式系统)供您所处的位置使用。有一个“电子101”一章,它将使您很快地提高功能速度,以及其他有关实际构造的知识。


2
  1. 请勿超过5V,否则PIC可能会在5V以上的电压电平下烧毁。您可以使用9V电池或带有线性稳压器(如LM7805)的AC / DC适配器为电路产生5V电压。接线方法:

    http://stuff.nekhbet.ro/2006/06/18/how-to-build-a-5v-regulator-using-78l05-7805.html

  2. 就像大多数人所说的那样:不要忘记为MCLR引脚提供一个串行电阻。您可以使用上拉配置来重置PIC。这是架构的链接:http : //www.mcuexamples.com/push-buttons-and-switch-debouncing-with-PIC.php

  3. 始终在LED之前使用串行电阻。这样可以避免LED烧毁并降低功耗。对于3.3V的LED,220或330欧姆是可以的。


2

按钮功能简单。当我们按下按钮时,两个触点将连接在一起并建立连接。尽管如此,这还不是那么简单。问题在于电压作为电气尺寸的性质,以及机械触点的缺陷。就是说,在接触或切断之前,有很短的时间会因机械接触不均匀或按动按钮的速度不同而产生振动(振荡)(这取决于按下按钮的人)。赋予这种现象的术语称为开关(接触)反跳。如果在编写程序时忽略了这一点,则可能会发生错误,或者单按一次按钮,程序可能会产生多个输出脉冲。为了避免这种情况,我们可以在检测到触点闭合时引入一个小的延迟。这样可以确保将按钮的按下解释为单个脉冲。防抖延迟是由软件产生的,延迟的长度取决于按钮以及按钮的用途。通过在按钮上添加电容器可以部分解决该问题,但是设计良好的程序是一个更好的答案。可以调整程序,直到完全消除错误检测为止。下图显示了按下按钮时实际发生的情况。可以调整程序,直到完全消除错误检测为止。下图显示了按下按钮时实际发生的情况。可以调整程序,直到完全消除错误检测为止。下图显示了按下按钮时实际发生的情况。

了解更多:http : //romux.com/tutorials/pic-tutorial/push-buttons#ixzz43cAbVcWR


1

除了其他人写的以外:不要分配给单独的PIC输出引脚,例如“ PORTB.RB0 = 1;”。而是在字节大小的变量中进行位更改,然后将该变量写入端口。

你可以

  • 相信我,
  • 阅读有关“读取-修改-写入”问题的信息,或者
  • 承受后果
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.