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。