PIC16F877A的特殊功能配置
- 格式:pdf
- 大小:94.00 KB
- 文档页数:2
一、系统主要功能1)基本要求1.硬件设计要求:(1)CPU使用PIC16F877A。
(2)用4x4矩阵键盘作为操作信息输入。
(3)用LCD1602或六位数码管作为信息输出。
(建议使用LCD1602)(4)用蜂鸣器及发光二极管作为错误报警及状态显示。
2.系统功能要求:(1)输入密码功能。
输入密码时用“*”号或“-”显示。
在输入密码时,具有清除前一位密码功能(用CLR键)。
密码输入完毕,按(ENTER键)确认并生效。
(2)上锁功能。
在锁开状态下,通过(LOCK键)上锁。
(3)在锁合的状态下,通过密码开锁功能。
开锁时,直接在键盘上输入六位密码,按(ENTER键)确认,如果密码正确,转入锁开状态。
(4)在锁开状态下,修改密码功能。
在键盘上输入六位新的密码,按(ENTER键)确认,代替旧密码,并保存在RAM中。
(4)在开锁时,如果输入密码三次错误,产生声、光报警功能。
(5)0~9为密码键数字键,E为ENTER键,C为清除键CLR键,D作为上锁键LOCK键,如果用到其他键时,可自行定义。
2)进阶要求密码保存在PIC16F877A内部的EEPROM中,以防断电密码丢失。
(不使用外挂的EEPROM,如:AT24C02等)二、系统设计要求1)根据系统的功能和目标,画出系统功能框图。
2)根据系统功能框图用Proteus画出仿真电路图。
3)根据系统的功能要求,画出程序流程图。
4)根据程序流程图,用PIC C语言编写系统源程序。
5)进行编译、调试建立目标代码。
6)在Proteus环境下进行仿真。
三、设计报告报告内容包括系统设计思路、方案选择、器件选择及电路元器件明细表、系统功能框图、程序流程图、源程序清单、系统工作原理和设计心得等。
四、评分标准:1、完成《基本要求》者,得分80~89分;2、完成《基本要求》及《进阶要求》者,得分90~100分;五、设计时间安排十九周的星期一至星期五(2011年6月27日至7月1日)1)周一:布置任务,进行方案选择、器件选择。
pic16f877a编程实例pic16f877a是一款常用的单片机,被广泛应用于嵌入式系统中。
它具有多种功能和强大的性能,可以实现各种应用需求。
本文将以pic16f877a编程实例为主题,介绍其基本特性和常见应用。
pic16f877a是一款8位单片机,采用哈佛架构,具有高性能和低功耗的特点。
它内置了8KB的程序存储器,368字节的数据存储器,以及35个I/O引脚,可以满足大多数嵌入式系统的需求。
我们来看一个简单的实例,通过pic16f877a控制LED灯的开关。
```c#include <pic16f877a.h>void main() {TRISB0 = 0; // 设置RB0为输出引脚while(1) {RB0 = 1; // 将RB0引脚电平设置为高,LED灯亮__delay_ms(1000); // 延时1秒RB0 = 0; // 将RB0引脚电平设置为低,LED灯灭__delay_ms(1000); // 延时1秒}}```在上面的程序中,我们首先将RB0引脚设置为输出引脚,然后进入一个无限循环。
在循环中,我们将RB0引脚电平设置为高,LED灯亮起,然后延时1秒;然后将RB0引脚电平设置为低,LED灯熄灭,再次延时1秒。
通过不断重复这个过程,我们可以实现LED灯的闪烁效果。
除了控制LED灯,pic16f877a还可以用来控制其他外设,如蜂鸣器、液晶显示屏等。
下面是一个使用pic16f877a控制蜂鸣器的实例。
```c#include <pic16f877a.h>void main() {TRISB0 = 0; // 设置RB0为输出引脚while(1) {RB0 = 1; // 将RB0引脚电平设置为高,蜂鸣器鸣叫__delay_ms(1000); // 延时1秒RB0 = 0; // 将RB0引脚电平设置为低,蜂鸣器停止鸣叫__delay_ms(1000); // 延时1秒}}```在上面的程序中,我们同样将RB0引脚设置为输出引脚,并进入一个无限循环。
#ifndef _HTC_H_#warning Header file pic168xa.h included directly. Use #include <htc.h> instead. #endif/** Microchip单片机的头文件* PIC 16F873A chip* PIC 16F874A chip* PIC 16F876A chip* PIC 16F877A chip* 中档单片机*/#if defined(_16F874A) || defined(_16F877A)#define __PINS_40#endifvolatile unsigned char INDF @ 0x00;//间接寻址寄存器volatile unsigned char TMR0 @ 0x01;//定时器0volatile unsigned char PCL @ 0x02;//低8位程序计数器volatile unsigned char STATUS @ 0x03;//程序状态寄存器volatile unsigned char FSR @ 0x04;//特殊功能寄存器volatile unsigned char PORTA @ 0x05;//端口A寄存器volatile unsigned char PORTB @ 0x06;//端口B寄存器volatile unsigned char PORTC @ 0x07;//端口C寄存器#ifdef __PINS_40volatile unsigned char PORTD @ 0x08;//端口D寄存器volatile unsigned char PORTE @ 0x09;//端口E寄存器#endifvolatile unsigned char PCLATH @ 0x0A;//高5位程序计数器volatile unsigned char INTCON @ 0x0B;//中断控制寄存器volatile unsigned char PIR1 @ 0x0C;//中断标志寄存器PIR1volatile unsigned char PIR2 @ 0x0D;//中断标志寄存器PIR2volatile unsigned char TMR1L @ 0x0E;//T1低字节计数寄存器volatile unsigned char TMR1H @ 0x0F;//T1高字节计数寄存器volatile unsigned char T1CON @ 0x10;//TMR1控制寄存器volatile unsigned char TMR2 @ 0x11;//定时/计数器TMR2volatile unsigned char T2CON @ 0x12;//TMR2控制寄存器volatile unsigned char SSPBUF @ 0x13;//收/发数据缓冲器volatile unsigned char SSPCON @ 0x14;/*同步串口控制寄存器,对MSSP模块的功能和指标进行设置和定义*/volatile unsigned char CCPR1L @ 0x15;//捕获/比较/PWM寄存器低字节volatile unsigned char CCPR1H @ 0x16;//捕获/比较/PWM寄存器低字节volatile unsigned char CCP1CON @ 0x17;//CCP1CON寄存器volatile unsigned char RCSTA @ 0x18;//USART接收控制兼状态寄存器volatile unsigned char TXREG @ 0x19;//USART发生缓冲器volatile unsigned char RCREG @ 0x1A;//USART接收缓冲器volatile unsigned char CCPR2L @ 0x1B;//捕获/比较/PWM寄存器低字节volatile unsigned char CCPR2H @ 0x1C;//捕获/比较/PWM寄存器低字节volatile unsigned char CCP2CON @ 0x1D;//CCP2CON寄存器volatile unsigned char ADRESH @ 0x1E;//ADC转换结果寄存器高字节volatile unsigned char ADCON0 @ 0x1F;//A/D转换器开关位/* bank 1 registers */volatile unsigned char OPTION @ 0x81;/*/选择寄存器,用于配置TMR0/WDT预分频系数、外部INT中断、TMR0和端口B的弱上拉。
PIC16F877A之定时TMR0编写下面的实验程序实现的功能是让RC 口所带的8 个LED 一个接一个的全亮起来,最后达到全亮后再一个一个的灭下去,这样反复循环,使用定时器查询方式控制延时,而不使用定时器的中断。
中断程序会在以后陆续写到上面来tmr0 equ 01hpcl equ 02hstatus equ 03hoption_reg equ 81hintcon equ 0bhportc equ 07htrisc equ 87htmr0data equ 15hcount equ 20hrp0 equ 5horg 0000hnopgoto mainorg 0005hmain nopbsf status,rp0movlw 00hmovwf triscmovlw 07hmovwf option_regbcf status,rp0clrf countloop1movf count,0call readmovwf portcincf count,1movlw 0fhandwf count,1call delaycall delaycall delaycall delaycall delaycall delaycall delaygoto loop1delaybcf intcon,2movlw tmr0datamovwf tmr0delay1btfss intcon,2goto delay1returnread addwf pcl,1retlw b’10000000’retlw b’11000000’retlw b’11100000’retlw b’11110000’retlw b’11111000’retlw b’11111100’retlw b’11111110’retlw b’11111111’retlw b’11111110’retlw b’11111100’retlw b’11111000’retlw b’11110000’retlw b’11100000’retlw b’11000000’retlw b’10000000’retlw b’00000000’end本程序利用的16F877A 的TMR0,具体如何设置请查找16F877C 中的INTCON、OPTION_REG 、TMR0 等相关特殊工作寄存器的功能说明。
目录第1章前言 (1)1.1 选题的背景和意义 (1)1.2 国内外电子秤发展及成果 (2)1.3 研究现状 (3)1.3.1 影响因素 (3)1.3.2 产品质量 (3)1.3.3 发展方向 (4)1.3.4 电子秤的智能化 (4)1.4 电子秤设计的任务及要求 (4)第2章系统方案设计与论证 (6)2.1 系统方案的设计思路 (6)2.2 系统方案设计 (6)2.3 系统方案比较与论证 (6)2.3.1 单片机的选型 (6)2.3.2 称重传感器选型 (10)2.3.3 放大部分选型 (14)2.3.4 A/D转换器选型 (14)2.3.5 显示模块选型 (16)2.3.6 键盘输入选型 (18)2.3.7 语音芯片选型 (19)第3章系统硬件设计 (20)3.1 基于PIC16F877A的主控电路 (20)3.1.1 PIC16F877A简介 (20)3.1.2 PIC16F877A引脚介绍 (20)3.1.3 主控电路设计 (21)3.2 称重部分 (22)3.2.1 GF-7桥型称重器简介 (22)3.2.2 工作原理 (23)3.2.3 硬件电路 (23)3.3 测身高部分 (24)3.3.1 超声波测距原理 (24)3.3.2 测身高硬件电路设计 (24)3.4 显示部分 (26)3.5 语音播报部分 (27)3.6 键盘部分 (28)3.7 报警电路 (28)3.8 电源电路 (29)3.9 硬件低功耗设计 (29)3.9.1 低功耗元器件选择 (29)3.9.2 低功耗电路设计 (30)第4章软件设计 (31)4.1 称重部分软件设计 (31)4.2 测身高部分软件设计 (32)第5章结论 (36)致谢 (37)参考文献 (38)第1章前言目前,随着社会的发展、生活水平不断提高,人们越来越关注自己的身体健康。
许多人由于工作的压力和不良的饮食习惯,使得身体健康每况愈下,疾病也随之而来,而在这些人群中,患有肥胖和营养不良的病人居多。
PIC16F877A的特殊功能配置CPU的特殊功能
BIT13CP:闪存程序存储器代码保护位
0:所有程序存储器代码保护
1:关闭代码保护
BIT12Unimplemented:读时为结果为1
BIT11DEBUG:在电路调试模式位
0:在电路调试功能有效,RB6和RB7专用于调试器
1:在电路调试功能失效,RB6和RB7用于本身的IO或其它功能BIT10-9WRT1-0:闪存程序存储器写使能位
WRT1WRT0说明
11写保护关闭,所有程序存储器由EECON控制写
100000h到00ffh写保护;0100h到1fffh由EECON控制写010000h到07ffh写保护;0800h到1fffh由EECON控制写000000h到0fffh写保护;1000h到1fffh由EECON控制写BIT8CPD:数据EEPROM存储器代码保护位
0:数据EEPROM存储器代码保护开启
1:数据EEPROM存储器代码保护关闭
BIT7LVP:低电压(单电源)的在线串行编程使能位
0:RB3/PGM是普通IO口功能,编程时MCLR管脚必须是高电压1:RB3/PGM是PGM功能,低电压编程使能
BIT6BOREN:欠压复位使能位
0:欠压复位失效
1:欠压复位使能
BIT5-4Unimplemented:读时结果为1
BIT3PWRTEN:上电延时定时器使能位
0:上电延时定时器使能
1:上电延时定时器失效
BIT2WDTEN:看门狗定时器使能位
0:看门狗失效
1:看门狗使能
BIT1-0:Fosc1:Fosc0:时钟源选择位
Fosc1Fosc0时钟源11RC振荡器
10外部石英高频晶振HS【频率范围见下表】01外部石英晶振XT【频率范围见下表】
00外部低频石英晶振LP【频率范围见下表】。