当前位置:首页 > 单片机 > 单片机
[导读]简介电子产品是我的爱好。当我在大学的时候,我曾与微控制器的一些经验,我没有与Atmel的AT89C51的几个项目。最近,我已经长大了PIC单片机的利息,我想我应该开始用8针的微芯片。我挑的PIC12F683微芯片。该微控制器让

简介

电子产品是我的爱好。当我在大学的时候,我曾与微控制器的一些经验,我没有与Atmel的AT89C51的几个项目。最近,我已经长大了PIC单片机的利息,我想我应该开始用8针的微芯片。我挑的PIC12F683微芯片。该微控制器让我着迷了很多,因为我想看看我们能做些什么与8引脚微控制器(其中2个引脚的电源,所以实际上只是6针左侧的I / O)。所以我想这是我自己的学习板。在这个项目中,我首先要说明我的学习板,然后将演示几个实验。PIC12F683的一些功能: 工作电压范围宽(2.0 - 5.5V)

精确的内部振荡器(软件可选,8 MHz到125千赫)

6 I / O引脚电平变化中断功能。

4个10位A / D转换器

两个8位和16位定时器

一个捕捉,比较和PWM模块

在线串行编程

程序存储器- 2048字,以SRAM为128字节,电可擦除可编程只读存储器(EEPROM),256个字节

电路布局和设计

本学习板具有以下特点:

一个9V直流的开关电源输入插座

稳压+5 V电源使用7805芯片

3输出LED和LED电源1

2输入轻触开关

2电位器:一个模拟输入,并提供ADC的参考电压

基于晶体管的TTL - RS232电平转换器的串行通信。

一个一个晶体管驱动直流马达。

压电蜂鸣器

在黑板上的大多数这些功能是通过女性的针脚访问。6 - I / O引脚的PIC12F683的是硬连接到任何东西,他们通过针脚。的数字 显示PIC12F683的引脚,女性的头和跳线用于连接电路板上的类型,学习板的详细电路图。只有ISCP引脚是通过男性的针脚访问 。整个电路是建立在一个8 × 12厘米的一般原型板。

 

 

 

 

正如你看到的输出LED470Ω电流串联限流电阻,使一个PIC引脚可以安全驾驶。还通过一个串联电阻PIC引脚直接驱动压电式蜂鸣器。但是,直流电动机作为S8050晶体管的集电极负载所需的电流来驱动电机,不能由PIC端口提供连接。因此,PIC端口可以拉动其基高开关晶体管和晶体管集电极电流提供足够的电流来驱动电机。 TTL RS232电平转换,反之亦然实现两个晶体管和其他一些组件。 RS232电平所需的负电压是从一台PC本身的RS232端口被盗 。注意有没有硬件UART内部的PIC12F683,因此从微控制器的串行数据传输到PC将可能只有通过通过GP0任何软件UART,GP1,GP2的,GP4,GP5端口(GP3仅输入) 。微控制器端的发射机和接收机端口UTX和URX表示,而在PC端Tx和Rx,分别记为。线路图显示,轻触开关与两个电位器输出和所有8个PIC12F683的引脚的两个输入是通过女性的头访问。轻触开关低电平有效,也就是说,在正常情况下,轻触开关输出为高电平,当它被按下时,输出为低电平。有情侣的头做实验时,可能需要额外的VCC和GND端子。电源电路是7805稳压IC的标准电路。一个供电指示灯是与一个470Ω的系列电阻跨接在VCC和GND。在电路串行编程(ICSP)的PIC12F683的,可以用两个引脚:ICSPDAT(引脚7)和ICSPCLK(引脚6)。编程电压Vpp的,应提供引脚的PIC12F683编程时,4。所需的所有ISCP引脚通过一个男性头,所以可以通过任何ICSP PIC的程序员编程的PIC。确保程序员方和我们的学习板ISCP引脚顺序相匹配。重要事项:在ICSP引脚4,6,和PIC12F683的7应该不会被连接到任何东西,离开他们所以,不会有任何编程器和外部电路之间的电压冲突。
 

软件开发

在PIC12F683的汇编语言或高级语言,你可以写你的实验方案。但是,我要在这里展示的实验,我是用从MikroElektronica mikroC编译器的免费版本。它是一个C编译器的PIC微芯片,并免费版本限制输出程序的大小为2K。但我们并不需要为PIC12F683的不止于此。

PIC12F683的,我们将使用下面的配置位。mikroC,您可以在“编辑”项目“窗口中选择。

振荡器:内部RC,没有时钟

WDT关闭

主清除残疾人

对于所有的实验表明,使用4.0 MHz的内部时钟。

为PIC12F683的完成学习板

 

 

 

 

测试实验

再次阅读,然后再继续以上的软件开发部分。

************************************************** *******************************

实验1号:3位二进制计数器

本次实验的目的是建立一个3位二进制上升计数器,每个计数之间的延迟1秒计数从000到111。到111后,它重置为000,并再次开始计数。计数值将显示在三个LED。

安装: 连接GP0,GP1和GP2(PIC的引脚7,6和5)LED 3,2和1。

 

 

/ *

PIC12F683的实验局

Experimen号1:3位计数器

“指示灯1,2和3是连接到GPIO2,GPIO1和GPIO0,

分别为“

* / 短我; 无效的主要(){ CMCON0 = 7; / /禁用比较 TRISIO = 8 / / GPIO0 - GPIO2输出和GP3是默认输入 的ANSEL = 0;/ /没有ADC GPIO = 0; delay_ms(500) I = 0; { GPIO = I; delay_ms(1000); I = 1; (我== 8)I = 0; }(1);}

在mikroC编译这个程序,负载??内的PIC12F683与任何ICSP编程。输出:

 

 

在LED上显示的3位计数器实验第2号:轻触开关输入和电机控制。本次实验的目的是两个轻触开关来控制电机。当按下一个开关,电机就会开启,其他关闭。安装: 将SW1和SW2引脚(引脚7)GP0和GP1的PIC12F683(引脚6)。还可以连接电机驱动器的引脚GP2的(引脚5 )。因此,GP0和GP1均为输入和GP2输出。请记住,当按下开关时,相应的SW引脚被拉低 。在正常情况下,SW1和SW2拉高。

软件

/* Motor ON/OFF control with tact switches

Rajendra Bhatt, Sep 3, 2010

PIC12F683, MCLR OFF, Internal Oscillator @ 4.00MHz

*/

sbit Start_Button at GP0_bit;

sbit Stop_Button at GP1_bit;

sbit Motor at GP2_bit;

void main() {

CMCON0 = 7; // Disable Comparators

TRISIO = 0x03; // 0000 0011 GPIO 0, 1, Inputs; Rest are O/Ps

ANSEL = 0x00;

Motor = 0;

do {

if (!Start_Button) { /* When a tact switch is pressed, Logic I/P is 0*/

Delay_ms(100);

Motor = 1; // Turn Motor ON

}

if (!Stop_Button) {

Delay_ms(100);

Motor = 0; // Turn Motor ON

}

} while(1);

}

输出:当SW1按下时,电机将开启,并按下SW2时,它会熄灭。

 

 

实验3: 软件UART测试。

本次实验的目的是发送一个字符串到PC使用的软件UART例程。该字符串将被转移到PC上的超级终端窗口显示时,按下SW1开关。字符串将被按下开关

安装:
 

微控制器端:

连接UTX和SW1引脚GP0(引脚7)和GP1端口分别。

PC端:

连接RX(2),TX(3)和GND(5)针板相应的PC机的RS232端口引脚。此外,在PC上定义以下设置一个新的连接的超级终端窗口。

BPS = 9600,数据位= 8;校验=无,停止位= 1; =硬件流量控制

 

 

软件

/*

PIC12F683 Experiment Board

Experimen No. 3 : Read analog voltage from AN0 and diplay

on Hyperterminal window on PC using Software UART.

Date: 06/25/2010

*/

char Message1[] = "Digital Value= ";

unsigned int adc_value, backup=0 ;

char *temp = "0000", error;

int i;

void main() {

CMCON0 = 7;

TRISIO = 11; // GPIO 0, 1, 3 Inputs; Rest are O/Ps

ANSEL = 0;

GPIO = 0;

// Define GPIO.3 as UART Rx, and 5 as Tx

error = Soft_UART_Init(&GPIO,3, 5, 9600, 0 );

Delay_ms(100);

do {

adc_value = ADC_Read(0);

if(adc_value != backup) {

if (adc_value/1000)

temp[0] = adc_value/1000 + 48;

else

temp[0] = '0';

temp[1] = (adc_value/100)%10 + 48;

temp[2] = (adc_value/10)%10 + 48;

temp[3] = adc_value%10 + 48;

for (i=0; i<= 13; i++) {

Soft_UART_Write(Message1[i]);

Delay_ms(50);

}

for (i=0; i<= 3; i++) {

Soft_UART_Write(temp[i]);

Delay_ms(50);

}

Soft_UART_Write(10); // Line Feed

Soft_UART_Write(13); // Carriage Return

backup = adc_value;

}

delay_ms(100);

} while(1);

}

输出

相应的模拟输入数字号码将显示在超级终端窗口。您可以改变电位器和数字同等数量也将发生变化。请记住,ADC是10位,让您在屏幕上看到的数量将会从0000到1023。

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭