PIC单片机实验6-AD的使用
单片机ad实验报告
单片机ad实验报告
单片机AD实验报告
实验目的:
本次实验旨在通过单片机的AD(模拟-数字)转换功能,将模拟信号转换为数字信号,并通过单片机进行处理和显示,以加深对单片机AD转换原理和应用的理解。
实验器材:
1. 单片机开发板
2. 模拟信号发生器
3. 示波器
4. 连接线
5. 电脑
实验步骤:
1. 连接模拟信号发生器和单片机开发板,设置模拟信号发生器输出一个正弦波信号。
2. 在单片机开发板上编写程序,配置AD转换功能,将模拟信号转换为数字信号。
3. 将数字信号通过串口传输到电脑上,并用示波器观察数字信号的波形。
4. 在电脑上编写程序,对接收到的数字信号进行处理和显示。
实验结果:
经过实验,成功将模拟信号转换为数字信号,并通过单片机进行处理和显示。
在示波器上观察到了数字信号的波形,验证了AD转换的准确性和稳定性。
在
电脑上也成功对接收到的数字信号进行了处理和显示,进一步验证了单片机AD 转换功能的有效性。
实验总结:
通过本次实验,深入了解了单片机AD转换的原理和应用。
AD转换是单片机重要的功能之一,对于模拟信号的采集和处理具有重要意义。
在实际应用中,可以通过单片机AD转换功能,实现各种类型的模拟信号的数字化处理,为各种电子设备的控制和监测提供了技术支持。
通过本次实验,对单片机AD转换功能有了更深入的理解和掌握,为今后的电子技术应用奠定了坚实的基础。
PIC24系列单片机原理与开发第6章AD转换器及编程
PIC24系列单片机原理与开发第6章AD转换器及编程AD转换器是一种用于将模拟信号转换为数字量的设备,它的主要用途是将模拟量转换为可用于数字控制系统的数字信号。
PIC24系列单片机内置了多路/低速模拟输入AD转换器,可以实现对模拟量的采集、处理和控制。
AD转换器的编程十分复杂,需要明确程序对模拟量的要求,包括采样率、量程、精度等,还需要根据PIC24系列单片机的资源情况,合理配置AD转换器的参数,以便实现模拟量的有效读取。
1)可以多路采样:多路采样可以提高采样精度,在故障时可以减少恢复时间,还可以提高采样率。
2)采样率:根据实际应用需要,调整单片机的时钟频率,来达到最佳的采样率。
3)精度范围:根据实际应用需要,调整AD转换器的精度范围,以保证采集到的数据和处理能力的均衡使用。
4)通道选择:根据实际应用,选择多路采样中的其中一路,来使用最佳的采样精度。
PIC单片机实验指导书
单片机原理与应用实验指导书(试用版)童亮编北京信息科技大学机电工程学院车辆工程实验室本实验指导书结合教材并围绕TPDEM1上的各个功能模块展开。
实验硬件环境包括实验板TPDEM1和MAPLAB-ICD2集成仿真开发系统组成,软件以MAPLAB IDE汇编语言为基础的软件开发系统。
实验DEMO程序提供传统的汇编单文件风格的代码以及说明文档,主要供教学使用并提供学生参考。
本实验制指导书的所有DEMO程序均以PIC16F877A芯片为例编写的,若是其他型号的芯片请自行移植代码。
TPDEM1开发实验板概述 (4)MAPLAB IDE基础 (6)芯排线连线说明 (7)使用ICD2作为调试器 (8)使用ICD2作为烧写器 (17)实验一I/O口流水灯功能实验 (18)实验二A/D转换热敏电阻实验 (21)实验三A/D转换光敏电阻实验 (24)实验四RS2332 串口通信实验 (27)实验五外部中断实验 (31)实验六CCP模块PWM实验 (33)实验七CCP模块输入捕捉实验 (36)实验报告模板 (40)TPDEM1开发实验板概述TPDEM1 (普通版见图1,I/O口接口是插针的形式;高校版见图2,I/O口接口是插孔的形式)开发实验板硬件采用模块化设计,便于用户灵活组成科研项目所需的硬件结构。
硬件有:1、RS232通信接口;2、2X16字符型LCD液晶显示器;3、2位应用74HC595串并转换的LED数码管;4、串行存储芯片24C01;5、用RA0即可实现9键输入的模拟键盘;6、V/F转换电路;7、8位LED发光二极管用于显示器件引脚高低电平或其它用途;8、8位拨码开关用于控制状态的输入;9、32.876Hz的时钟晶振电路;10、利用热敏电阻和光敏电阻构成的温度和光强检测电路;11、外部事件触发电路;12、单片机通用复位电路;13、DIP18- DIP20- DIP28-DIP40通用插座, 可放置8、14、18、20、28、40管脚的PIC芯片;14、ICSP接口;15、可用于添加硬件的试验区。
PIC单片机ADC程序
//实验目的:熟悉A/D转换//软件思路:选择RA0做为模拟输入通道;// 结果只取低8位// 连续转换5次再求平均值做为转换结果// 结果送数码管的高低3位显示//硬件要求:跳线J18接通// 拨码开关S6全部置ON,S5第4-6位置ON,第1-3位置OFF// 为不影响结果,其他拨码开关置OFF。
#include<pic.h> //包含单片机内部资源预定义__CONFIG(0x1832);//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90};//定义常数0-9的数据表格void DELAY(); //delay函数申明void init(); //I/O口初始化函数申明void display(int x); //显示函数申明//------------------------------------------------//主程序开始void main(){int result=0x00; //定义转换结果寄存器while(1) //死循环{int i; //定义循环次数控制寄存器result=0x00; //转换结果清0for(i=5;i>0;i--) //求5次转换结果的平均值{init(); //调用初始化函数ADGO=0X1; //开启转换过程while(ADGO); //等待转换完成result=result+ADRESL; //累计转换结果}result=result/5; //求5次结果的平均值display(result); //调用显示函数}}//-----------------------------------------------//初始化函数void init(){PORTA=0XFF;PORTD=0XFF; //熄灭所有显示TRISA=0X1; //设置RA0为输入,其他为输出TRISD=0X00; //设置D口全为输出ADCON1=0X8E; //转换结果左对齐,RA0做模拟输入口,其它做普通I/O ADCON0=0X41; //系统时钟Fosc/8,选择RA0通道,允许ADC工作DELAY(); //保证采样延时}//----------------------------------------------//延时程序void DELAY() //延时程序{int i; //定义整形变量for(i=0x100;i--;); //延时}//-----------------------------------------------//显示函数void display(int x){int bai,shi,ge,temp; //定义4个临时变量temp=x; //暂存AD转换的结果bai=temp/0x64; //求显示的百位shi=(temp%0x64)/0xa; //求显示的十位ge=(temp%0x64)%0xa; //求显示的个位PORTD=TABLE[bai]; //查表得百位显示的代码PORTA=0x1f; //RA3输出低电平,点亮百位显示DELAY(); //延时一定时间,保证显示亮度PORTD=TABLE[shi]; //查表得十位显示的代码PORTA=0x2F; //RA4输出低电平,点亮十位显示DELAY(); //延时一定时间,保证亮度PORTD=TABLE[ge]; //求个位显示的代码PORTA=0x37; //RA5输出低电平,点亮个位显示DELAY(); //延时一定时间,保证亮度}。
pic单片机实验报告
pic单片机实验报告
《pic单片机实验报告》
实验目的:通过对pic单片机的实验,掌握其基本原理和应用技能,提高对单
片机的理解和应用能力。
实验内容:
1. 初步了解pic单片机的基本结构和工作原理;
2. 学习pic单片机的编程语言和编程工具;
3. 进行简单的pic单片机实验,如LED灯控制、数码管显示等;
4. 分析实验结果,总结经验和教训。
实验步骤:
1. 阅读pic单片机的相关资料,了解其基本原理和应用领域;
2. 学习pic单片机的编程语言和编程工具,如C语言和MPLAB X IDE;
3. 进行LED灯控制实验,编写简单的程序控制LED的亮灭;
4. 进行数码管显示实验,编写程序实现数字的显示和滚动效果;
5. 分析实验结果,总结经验和教训,找出存在的问题并改进。
实验结果:
1. 成功掌握了pic单片机的基本原理和编程技能;
2. 实现了LED灯控制和数码管显示的实验,并取得了良好的效果;
3. 发现了一些问题,如程序逻辑错误和电路连接不良,及时改进并取得了成功。
实验总结:
通过本次实验,我对pic单片机有了更深入的了解,掌握了其基本原理和编程
技能,提高了对单片机的应用能力。
同时,也发现了一些问题并及时改进,取
得了良好的实验效果。
希望能在今后的学习和工作中,更好地应用pic单片机,为科研和工程项目做出更大的贡献。
PIC单片机实验
15
2、在上面程序基础上修改程序,要求: – 定时时间为1秒 – 根据不同的时间级别分别在LED上点灯,如: 第1个红灯表示1秒时间到 第2个红灯表示10秒时间到 第3个红灯表示100秒时间到 – 调试程序,在实验板运行
16
综合实验选题
17
一、2路抢答器
1、设计要求
• 单片机的18、23引脚为输入口,接抢答按键开关S6、S7
练习二:按键实验
① 要求能够读取连接在RE8端口的按键状态,判断按键是否按下, 如果按键按下,则点亮RE0相连的LED。 ② 修改程序,如果按键按下,点亮RE0-RE5相连的LED,使其按照二 进制显示按键按下的次数。
8
练习三:液晶显示器实验(选做)
① 查看原理图了解硬件连接方式,读懂程序构架 ② 调试运行程序,在LCD上显示
10
练习二:按键实验
#include "p30f4011.h” int main() { unsigned int led = 0x0000; unsigned long int i = 0; while(1) { TRISE = 0x0100; //将RE0-RE7配置为输出,RE8配置为输入 if ((PORTE&0x0100)==0x0000) //查询S8是否按下 { for (i=0;i<1000;i++){} //延时消抖 if ((PORTE&0x0100)==0x0000) //再次查询S8是否按下 led = led+1; } PORTE =led; } return 0; }
11
实验三、中断实验
一、实验目的
实验三的主要目的是进一步了解掌握PIC单片机的结构和中断功能,学习
PIC单片机手把手教你学
手把手教你学PIC单片机——先介绍一下我们所要使用的PIC单片机学习实验设备如果你想学习PIC单片机,请做好如下准备工作:一、需要准备的硬件设备有:计算机一台,仿真烧写调试器一台,单片机芯片一片,如PIC16F877A芯片(它PIC单片机家族中非常经典的一个型号,涵盖了PIC16F***子系列的所有功能,特别适合初学者使用,它在PIC家族中的地位类似51家族中的S51或者S52,不过内部包含了更多的功能,比如内部集成了AD等特殊单元),PIC实验板一块。
这样需要的硬件设备就齐了。
想学好单片机,肯定要多动手,多实践,当然也肯定是要适当的投入的。
二、对于PIC单片机学习和开发的软、硬件大致流程介绍1.1硬件部分上面我们已有介绍,您需要准备一台仿真烧写调试器和一块PIC学习板,我们推荐您看一下本站的“ICD2PIC仿真烧写器”和“增强型PIC实验板”,这样硬件部分可以很快搭建起来,插上相应的连接线即可,如果用户方案中有开发板所没有的特殊接口电路,或者说有其它特殊的应用,那么您可以通过实验板上扩展接口来实现外扩展,以实现自己的实际电路需求。
1.2软件部分(主要由5个步骤组成)1.用汇编语言或C语言编写源程序代码。
2.将源程序编译成目标代码(机器码),即HEX格式16进制文件。
3.用仿真烧写调试器完成软件的调试工作,解决程序中所存在的一些语法、语意问题,即排除所编程序中存在的各种错误。
4.用仿真烧写调试器将目标代码写入到单片机中,即我们平时所说的烧写芯片步骤。
5.单片机实验板上电,运行目标代码程序。
如果您能保证您所编写的程序绝对没有问题,也可以跳过第3步。
注意:“ICD2PIC仿真烧写器”既有仿真器的功能,又有编程器的功能,也就是说:一台机器同时拥有两种功能,因此也体现了它的性价比及实际使用的方便性。
下面我们先来看一看,在下面的学习过程中将要用到的硬件设备有哪些,它们分别是:“ICD2PIC仿真烧写器”和“增强型PIC实验板”,实物如图所示,你只需要有一台电脑就可以进行学习和开发了。
超经典!PIC单片机原理及应用实验(含代码)
《单片机原理及应用》实验指导书适用年级:08 物电信编制人:彭晓珊编制时间:2010.3实验室:嵌入式工程师实训室1《单片机原理及应用》第一次实验实验名:开发环境认识实验主要内容:认识MPLAB 开发软件,熟悉QL200B 实验箱目的要求:熟练掌握MPLAB 开发软件的开发流程,熟悉QL200B 实验箱的组成。
主要仪器:QL200B 实验箱+PC+万用表《单片机原理及应用》第二次实验实验名:跑马灯实验主要内容:进一步认识MPLAB 开发软件,熟悉QL200B 实验箱硬件,熟悉软件延时的设计。
目的要求:实现一个简单的流水灯程序,即轮流点亮 C 口的8 个灯(先点亮RC0,再熄灭RCO 点亮RC1……)。
硬件要求:拨码开关S11 全部置ON,其余全部为OFF。
主要仪器:QL200B 实验箱+PC参考程序如下:#include<p16f877A.inc> ;调用头文件__CONFIG_DEBUG_OFF&_CP_ALL&_WRT_HALF&_CPD_ON&_LVP_OFF&_BODEN_OFF&_PWRTE_ON&_ WDT_OFF&_HS_OSC;**********************用户寄存器定义********************count equ 20h ;移位次数寄存器2del_va1 equ 0ffh ;外层延时参数del_va2 equ 0afh ;内层延时参数org 00h ;程序人口地址;**********************主程序开始***********************mainnop ;ICD 所需要的一条空指令clrf PORTC ;先清楚C 口所有显示banksel TRISC ;选择I/O 口方向寄存器所在的体clrf TRISC ;设置C 口全为输出clrf STATUS ;返回体0movlw .8movwf count ;装载循环次数8(C 口共8 位)bsf STATUS,C ;置进位标志位为1,因循环移位是带进位循环的looprlf PORTC,1 ;C 口左移1 位call delay3call delayCALL delay ;调用三次延时程序(保证亮度,以及流水灯闪烁速度)bcf STATUS,C ;清0 进位标志位(永远只有一只LED 亮)DECFSZ count,1 ;判断是否一轮循环结束goto loop ;否,继续循环移位GOTO main ;是,程序重头开始;***********************延时程序*************************delaymovlw del_va1 ;延时程序外层参数movwf 30hmovlw del_va2 ;延时程序内层参数movwf 31hdecfsz 31h,1goto $-1decfsz 30h,1goto $-4return;********************程序结束****************************end4《单片机原理及应用》第三次实验实验名:LED 显示控制实验主要内容:进一步认识MPLAB 开发软件,熟悉QL200B 实验箱硬件,熟悉静态和动态显示LED 的设计。
pic单片机实验报告
pic单片机实验报告PIC单片机实验报告引言:PIC单片机是一种非常常见的嵌入式系统开发工具,被广泛应用于电子产品的设计与制造过程中。
本实验报告将介绍我对PIC单片机的实验研究,并分享实验过程中的收获和心得体会。
实验一:LED灯的控制在本实验中,我使用PIC单片机来控制一组LED灯的亮灭。
通过编程,我成功实现了按键控制LED灯的开关,以及通过定时器实现LED灯的闪烁效果。
这个实验让我初步了解了PIC单片机的编程方法和基本原理。
实验二:温度传感器的应用在这个实验中,我将PIC单片机与温度传感器连接,并通过编程实现了温度的实时监测和显示。
通过这个实验,我深入了解了模拟信号的采集和数字信号的处理过程,并学会了如何使用PIC单片机进行数据的读取和处理。
实验三:蜂鸣器的控制本实验中,我使用PIC单片机控制了一个蜂鸣器的发声。
通过编程,我实现了不同频率的声音输出,并且可以通过按键控制声音的开关。
这个实验让我了解了如何通过PIC单片机来控制外部设备,并且学会了如何利用定时器来产生不同频率的方波信号。
实验四:液晶显示屏的应用在这个实验中,我将PIC单片机与液晶显示屏连接,并通过编程实现了文字和图形的显示。
通过这个实验,我学会了如何使用PIC单片机来控制液晶显示屏,并且了解了液晶显示屏的基本原理和工作方式。
实验五:无线通信模块的应用在本实验中,我将PIC单片机与无线通信模块连接,并通过编程实现了两个PIC 单片机之间的无线数据传输。
通过这个实验,我了解了无线通信模块的基本原理和工作方式,并学会了如何使用PIC单片机进行无线通信的应用。
结论:通过对PIC单片机的实验研究,我深入了解了PIC单片机的工作原理和应用方法。
通过编程和实践,我成功实现了LED灯的控制、温度传感器的应用、蜂鸣器的控制、液晶显示屏的应用以及无线通信模块的应用。
这些实验不仅让我掌握了PIC单片机的基本编程技巧和应用方法,还培养了我对嵌入式系统开发的兴趣和能力。
pic单片机教程
pic单片机教程什么是pic单片机?PIC(Peripherally Integrated Circuit)单片机是一种微控制器,最初由美国的Microchip Technology Inc.公司开发。
它们是一种将CPU、内存和其他电子元件集成到一个芯片上的集成电路。
PIC单片机是非常受欢迎的,因为它们具有易于使用、低功耗和高性能的特点。
PIC单片机在很多应用中都有广泛的应用,比如电子产品、家电、汽车等等。
由于其灵活性和实用性,学习PIC单片机编程也成为许多电子爱好者和专业开发者的首选。
如何开始使用PIC单片机?准备硬件设备和开发工具要开始学习PIC单片机编程,首先你需要准备一些硬件设备和开发工具。
1.PIC单片机芯片:根据自己的需要选择合适的芯片型号。
常见的有PIC16系列、PIC18系列和PIC32系列。
你可以根据项目的需求选择不同型号的芯片。
2.开发板:开发板是用来容纳芯片的平台,它通常已经将一些基本的外设集成到了板上,比如按键、LED、LCD等。
你可以购买现成的开发板,也可以自己设计并制作一个。
3.烧录器:烧录器用于将编写好的程序下载到芯片中。
常见的烧录器有PICkit、ICD等。
根据你选择的芯片型号,选择对应的烧录器。
4.开发工具:Microchip公司提供了一套完整的开发工具,包括集成开发环境(IDE)和编译器。
你可以下载并安装它们来进行PIC单片机编程。
除此之外,也有一些第三方的开发工具可供选择。
学习PIC单片机编程基础知识学习PIC单片机编程之前,你需要先掌握一些基础知识。
1.C语言:PIC单片机可以使用C语言进行编程。
所以你需要学习C语言的基础知识,包括语法、数据类型、控制结构等。
2.电子电路基础:了解一些基本的电子电路知识也是必要的,比如电阻、电容、电感等等。
编写第一个PIC单片机程序一旦你具备了必要的硬件设备和基础知识,你就可以开始编写你的第一个PIC单片机程序了。
#include <pic.h>// 包含PIC单片机的头文件void main(){TRISB = 0; // 将PORTB设置为输出while(1){PORTB = 0xFF; // 将PORTB的所有引脚设置为高电平Delay_ms(1000); // 延时1秒PORTB = 0x00; // 将PORTB的所有引脚设置为低电平Delay_ms(1000); // 延时1秒}}以上是一个简单的PIC单片机程序,它会将PIC单片机的PORTB引脚设置为交替输出高低电平,间隔1秒。
PIC单片机引脚说明
引言:PIC单片机是一种广泛应用于嵌入式系统的微处理器,其引脚功能的正确使用对于系统的正常运行至关重要。
本文将详细介绍PIC单片机引脚的功能及使用方法,为使用者提供准确的信息和指导。
概述:一、模拟输入引脚:1.ADC引脚的功能和使用方法2.外部VREF+和VREF引脚的作用3.ADC模块的精度和分辨率4.模拟输入引脚的电平范围和电流要求5.模拟输入引脚与其他引脚的阻抗关系二、比较器引脚:1.比较器引脚的功能和工作原理2.比较器的输入引脚和输出引脚3.比较器的工作模式和使能控制4.外部参考电压的连接和配置方法5.比较器引脚的应用示例及常见问题解决方案三、计时器引脚:1.计时器引脚的分类和功能2.计时器引脚的配置和工作模式3.计时器的中断触发和中断服务程序编写4.计时器的计数范围和时钟源选择5.计时器引脚的应用实例及与其他模块的协同工作四、串口通信引脚:1.串口通信引脚的功能和工作原理2.串口的数据格式和波特率配置3.串口的发送和接收寄存器的使用方法4.串口通信的中断触发和中断服务程序编写5.串口通信引脚的常见问题解决方案和调试技巧五、特殊功能引脚:P引脚的功能和使用方式P模块的多种工作模式和参数配置P引脚的特殊功能和应用实例4.SSP引脚的功能和使用方法5.SSP模块的配置和操作方式详解总结:本文详细阐述了PIC单片机引脚的功能和使用方法,包括模拟输入引脚、比较器引脚、计时器引脚、串口通信引脚以及特殊功能引脚。
通过掌握这些知识,使用者可以更加准确地配置和操作PIC 单片机,提高系统的稳定性和性能。
希望本文能为广大PIC单片机使用者提供有用的参考和指导。
pic单片机多路ad切换程序介绍
pic 单片机多路ad 切换程序介绍
PIC 单片机(Peripheral Interface Controller)是一种用来开发和控制外围设备的集成电路(IC)。
一种具有分散作用(多任务)功能的CPU。
与人类
相比,大脑就是CPU,PIC 共享的部分相当于人的神经系统。
PIC 单片机是一个小的计算机。
PIC 单片机有计算功能和记忆内存像CPU 并由软件控制运行。
然而,处理能力般,存储器容量也很有限,这取决于PIC 的类型。
但是
它们的最高操作频率大约都在20MHz 左右,存储器容量用做写程序的大约
1K4K 字节。
时钟频率与扫描程序的时间和执行程序指令的时间有关系。
但
不能仅以时钟频率来判断程序处理能力,它还随处理装置的体系结构改变。
如果是同样的体系结构,时钟频率较高的处理能力会较强。
对AD 转换的理解
所谓模拟量很好理解就是模拟量是指变量在一定范围连续变化的量;也就
是在一定范围(定义域)内可以取任意值(在值域内)。
数字量是分立量,而
不是连续变化量,只能取几个分立值,如三位进制数字变量只能取7 个整数值0.1.2.3.4.5.6.7。
而不是经过AD 通道的话,经过的是普通的IO 口,那幺模拟信号只会在
引脚上出现两种数字结果,一个是1 一个是0,而不能比较准确的描述出模。
PIC16位单片机CAN(6)外部AD
PIC16位单片机CAN(6)外部AD外部AD 使用的是AD7170 具体的资料看datasheet。
简单说一下这个AD的注意事项。
AD7170 是一款低功耗ADC,片内集成精密12 位Σ-Δ调制器和数字滤波器,用于测量宽动态范围、低频信号。
该器件具有一个内部时钟和一路差分输入,输出数据速率为125 Hz,增益为1。
双线式接口可简化从AD7170 获取数据的过程。
简单一句话。
一个时钟输入,一个串行转换输出。
模拟输入为双极性输入。
时钟和串行数据输出就不多说了,看看时序就知道了。
重点看一下什么叫做双极性输入。
AD7170 支持双极性输入范围。
双极性输入范围不代表器件可以耐受相对于系统GND 的负电压。
AIN(+)输入端的信号以AIN(?)输入端的电压为基准。
例如,当使用2.5 V 基准电压时,如果AIN(?)为2.5 V,则AIN(+)输入的模拟输入范围为0 V 至5 V。
重点是数据输出编码!!!当ADC 的输入设为单极性输入时,ADC 的输出码是直接二进制形式。
以16 位ADC 为例,当输入为0V 时,输出码是0x0000;当输入是一半量程时,输出码为0x8000;当输入为满量程时,输出为0xFFFF。
如果ADC的输入是双极性的,那么ADC 的输出码为偏移二进制形式,以16 位ADC 为例,当输入为负的满量程,输出码为0x0000;当输入为0V,输出码为0x8000;当输入为正的满量程,输出为0xFFFF。
具体的编码输出可以看datasheet 说明。
提倡看英文版的,因为中文版的易出错!根据datasheet,我使用引脚电平变化中断来确定什么时候AD 转换完成。
void__attribute__((__interrupt__,no_auto_psv)) _CNInterrupt(void){IF=0;// 输入电平变化通知中断标志状态位IE=0;//输入电平变化通知中断允许位if(PORTAbits.RA1==1){Nop();}else{AD_Data=AD_ReadData()/2;}IE=1;//输入电平变化通知中断允许位}tips:感谢大家的阅读,本文由。
PIC单片机模拟量输入与输出
第6章模拟量输入与输出6.1 A/D转换的应用例6.1 A/D转换初始化程序//A/D转换初始化子程序void adinitial( ){ADCON0 = 0x51;//选择A/D通道为RA2,打开A/D转换器//在工作状态,且使AD转换时钟为8t osc ADCON1 = 0X80;//转换结果右移,及ADRESH寄存器的高6位为"0"//且把RA2口设置为模拟量输入方式PIE1 = 0X00;PIE2 = 0X00;ADIE = 1;//A/D转换中断允许PEIE = 1;//外围中断允许TRISA2=1;//设置RA2为输入方式}6.1.2 程序清单下面给出一个调试通过的例程,可作为读者编制程序的参考。
该程序中用共用体的方式把A/D转换的10位结果组合在一起。
有关共用体的详细资料请参考本书相关章节。
# include <pic.h>union adres{int y1;unsigned char adre[2];}adresult;//定义一个共用体,用于存放A/D转换的结果unsigned char i;unsigned int j;//系统各I/O口初始化子程序void initial(){TRISD=0X00;//D口为输出i=0x00;}//A/D转化初始化子程序void adinitial(){ADCON0=0x51;//选择A/D通道为RA2,打开A/D转换器//在工作状态,且使A/D转换时钟为8t osc117ADCON1=0X80;//转换结果右移,及ADRESH寄存器的高6位为"0"//且把RA2口设置为模拟量输入方式PIE1=0X00;PIE2=0X00;ADIE=1;//A/D转换中断允许PEIE=1;//外围中断允许TRISA2=1;//设置RA2为输入方式}//延时子程序void delay(){for(j=5535;--j;) continue;}//报警子程序void alarm(){i=i^0xFF;//通过异或方式每次把i的各位值取反PORTD=i;//D口输出i的值}//中断服务程序void interrupt adint(void){ADIF=0;//清除中断标志adresult.adre[0]=ADRESL;adresult.adre[1]=ADRESH; //读取并存储A/D转换结果,A/D转换的结果通过共//用体的形式放入了变量y1中if(adresult.y1>0x200){alarm();//如果输入的模拟量大于2.5V(对应数字量//0X200h),则调用报警子程序delay();//调用延时子程序,使电压检测不要过于频繁}else PORTD=0XF0 ;//如果输入的模拟量小于2.5V,则与D口相连的//8个发光二极管的低4个发亮,表示系统正常ADGO=1;//启动下一次A/D转换}//主程序main(){adinitial();//A/D转换初始化118initial();//系统各I/O口初始化ei();//总中断允许ADGO=1;//启动A/D转换while(1){;} //等待中断,在中断中循环检测外部电压}6.2.2 I2C总线工作方式相关子程序1.C语言编写的I2C总线工作方式的初始化子程序//I2C初始化子程序void i2cint(){SSPCON = 0X08;//初始化SSPCON寄存器TRISC3 =1;//设置SCL为输入口TRISC4 =1;//设置SDA为输入口TRISA4 = 0;SSPSTAT=0X80;//初始化SSPSTAT寄存器SSPADD=0X02;//设定I2C时钟频率SSPCON2=0X00;//初始化SSPCON2寄存器di();//关闭总中断SSPIF=0;//清SSP中断标志RA4=0;//关掉74HC165的移位时钟使能,以免74HC165移位//数据输出与I2C总线的数据线发生冲突(此操作与该//实验板的特殊结构有关,不是通用的)SSPEN=1;//SSP模块使能}2.C语言编写的I2C总线工作方式传输数据子程序需要发送的数据在寄存器j中。
PIC的ADC调试总结-20210625
PIC的ADC调试总结一、P IC的ADC配置1、初始化配置void bsp_pic(void){CMCON = 0X07; // 关比较器ANSEL = 0X13; // GP0,GP1设置为模拟输入,GP3 GP2设置位数字IOEN_DC = 1;EN_PFC = 0;EN_PY = 0;TRISIO = 0x03;INTF = 0; // 清中断标志位OPTION_REG = 0x0E; // GPIO上拉,TMR0时钟为内部将预分频器分配给WDT TMR0比率为1:128WPU = 0x34; // 弱上拉寄存器}2、ADC调用配置注意此处在做通道配置的时候,一定要注意ADC的通道切换一定需要加上100US以上的延时,而且必须在通道配置完成之后,启动ADC转换之前。
否则会导致通道内部的电容充电不完整,高电压的输入采样无法正确采集到。
/****************************************************************************函数名称:u16 Ad_Get(u8 num)**函数功能:AD采样**输入参数:无**返回值:无**函数备注:**************************************************************************/ unsigned int Ad_Get(unsigned char num){unsigned int ad;// 右对齐(bit7:1) A/D 控制寄存器选择AN3(bit3 bit2:11) A/D转换正在运行(bit0:1)if(0==num){ADCON0 = 0x81;}else if(1==num){ADCON0 = 0x85;}Delay_100us(3); // 等待通道切换完成//Delay_ms(1); // 等待通道切换完成GO_DONE = 1; // 启动ADC转换while(GO_DONE); // 等待转换完成ad = ADRESH;ad &= 0x03;ad <<= 8;ad += ADRESL;return ad;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
; ***************************************************************
LISTP=16f877
INCLUDE <p16f877.inc>
ADCON0EQU 1FH;定义变量ADCON0
gADResult EQU20H;定义变量gADResult
BSFADCON0,GO; A/D is runing
MOVWFINTCON;开启全局总中断
LOOPMOVFgADResult,0;转换结果送到D端口输出显示
MOVWFPORTD
GOTOLOOP
;*******************************************************************
姓名:
吴东铃
学号:
106032008176
学院:
物理与光电电信息科技学院
班级:
08电信四班
实验目的
学习片内A/D资源的使用方法
实验环境
MPLAB IDE v8.33,PIC实验板
内容与步骤
1根据题目要求画出相应的流程图,见过程分析图例
2根据流程图写出程序,并进行软件调试
3将调试好的程序下载到PIC实验板中进行硬件调试
MOVWFgADResult
BSFADCON0,GO; A/D is re-runing
RETFIE
;*************************************************************
startBSFSTATUS,RP0;选中Bank1
MOVLW01HMOVWFTRISA;设置RA0为中断输入
ORG0000H
nop
GOTOstart
;*********************************************************
ORG0004H
BTFSCPIR1,ADIF;A/D可用
ADIntBCFPIR1,ADIF;中断标志位清零
MOVFADRESH,0 ;选择AD转换高8位作为输出
END;程序结束
;*********************************************************************88
-------------------------以下内容为教师填写--------------------------
教师评阅:
成绩:
4按键按下,观察LED灯的亮灭情况
过程分析
结果力、速度等这些连续变化的模拟量都可以通过A/D转换器变为可处理可传递的信息。本实验,通过对输入模拟电压的转换,初步掌握了A/D终端的设置和使用。并在以后的应用中不断加深对它的了解。
附录
; ***************************************************************
MOVLW00H
MOVWFTRISD;设置RD为输出
MOVLWB'01000000'; ADIE=1
MOVWFPIE1
BCFSTATUS,RP0;选中Bank0
MOVLWB'11000001';选择RC振荡器,选择通道, Go=0, AD工作
MOVWFADCON0
MOVLWB'11000000'; GIE=PEIE=1