PIC单片机项目(1)——基于PIC16F877A的电子秤设计

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

ADRESH:  AD转换结果的高位寄存器

ADRESL:  AD转换结果的低位寄存器

ADCON0:  AD转换模块的控制寄存器

ADCON1:AD转换模块的控制寄存器

ADCON0寄存器各个位的信息如下所示:

该寄存器的第6-7位和ADCON1的位一起,用于选择AD转换的时钟速率

第5-3位,用于选择AD转换的通道

第2位,AD转换的状态位。当手动将该位置1时,开启AD转换。AD转换结束后,硬件自动将该位置0。如果AD转换没有完成,那么该位一直为1.

第1位,保留,没有作用。

第0位,AD模块启用位。为1表示打开AD模块,启用AD。

ADCON1寄存器各个位的信息如下所示:

该寄存器第7位,控制AD转换结果的格式。1表示结果右对齐,左边空出来的位为0。0表示左对齐,右边空出的位为0.

该寄存器第6位,和上面的ADCPN0一起控制AD转换的时钟速率。

5-4位未实现,读为0.

3-0位,用于控制AD转换引脚的工作模式以及AD转换模块的参考电压。

基础知识铺垫完毕以后,就可以开始准备编写代码了。

首先是配置好PIC16F877A单片机的配置位

然后要包含一定的头文件:

其中,头文件“ee302lcd.h”里面包含的是和液晶屏LCD1602相关的函数。

然后定义一个全局字符串,用于存放测到的重量信息,也可以理解为测到的模拟电压值

再定义一个变量,用于保存AD转换值

接下来定义一个开启AD转换的函数

最后就是主函数了。主函数里面包含了AD转换的配置模式,以及LCD1602的初始化函数、显示函数等等。

全部main.c如下:

// CONFIG
#pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

#include <xc.h>
#include "ee302lcd.h"	// Include LCD header file
#include <stdio.h>	// Include Standard I/O header file


 unsigned char outString[5];	//character array for LCD string

 int adc_value;

void do_adc(void)
{
    __delay_us(30);					//Acqusition time delay set to 30us (>19.7us)
    GO_nDONE=1;						//Start ADC conversion
	while(GO_nDONE)continue;		//Wait until conversion finishes
    adc_value = ADRESH;					//Pass ADRESH value to adc_value variable
    


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/5b8ef06286c8664f2b34903d58be86be.png)
![img](https://img-blog.csdnimg.cn/img_convert/92bca557f5980d3247f2e66515f10850.png)

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

57)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值