- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机课程设计--单通道模拟量采集器
实验四 单通道模拟量采集器(A/D)
实验目的
在实践中加深理解PIC单片机片内ADC模块功能;
理解和掌握A/D转换的编程方法;
熟悉C语言中的算术运算符指令。
实验器材
一台PC机和一块万用表;
一套PIC仿真编程器教学系统(仿真编程器+开发板+数据线+9V电源+万用表)。
实验原理
硬件原理图
电路功能:
连接在RA0/AN0引脚上的1K微调电阻RP2充当模拟量提供者。当利用小改锥旋转其芯轴,可以提供一量值在VDD—VSS范围内的模拟电压。启动A/D转换过程,利用开发板上的6个数码管中的第1,2,3个数码管作为输出显示器件,把每次A/D转换产生的结果显示在这3个数码管上。详见电路图。
软件设计思路和程序清单:
本例的软件设计思路:
转换结果采用了左对齐方式。忽略了最低2位,将10位AD当做8位来用了,A/D转换的时钟源选用了系统周期的8倍,本例对于ADC的电压基准要求不高我们就选用了电源电压VDD和VSS作为基准电压,对于A/D转换过程是否完成也没有利用ADC模块的中断功能而是以软件方式查询其状态兼控制位GO/DONE是否被硬件自动清零。本例中选用的模拟通道为AN0。
参考程序清单如下:
/*********************************************************
* Copyright (c) 2007, Guangdong Vocational College of Industry and Commerce
* All rights reserved: RD Team
* 文件名称: PIC16F877--10BITAD.c
* 摘 要:
* 版 本: V1.0
* 作 者: Chunru_Xiong
* 完成日期: 2007年3月26日
**********************************************************/
#include pic.h
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//共阴极数码管0--9字符表
Const uchar led[10]=
{
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
};
uchar ADResult0;
void display();
void delay(uint);
void delayus();
//系统各I/O口初始化子程序
void initial()
{
PORTE=0x00; //E口输出0
PORTD=0x00; //D口输出0
TRISA=0X01; //A口RA0作为输入,其余作为输出
TRISD=0X00; // D口作为段码驱动,全部为输出
TRISE=0X00; // E口作为位选通,全部为输出
ADCON0=0x41; //选择A/D通道为RA0,打开A/D转换器
//在工作状态,且使A/D转换时钟源为FOSC/8
ADCON1=0X0E; //转换结果左对齐,只选1个A/D通道RA0/AN0
//选择VDD和VSS作参考源,(分辩率取8位)
}
//延时子程序
void delay(uint x)
{
uint j;
while(x--)
{
for(j=5535;--j;);
}
}
//延时子程序
void delayus()
{
uint j;
for(j=1000;--j;);
}
//显示初始化子程序
void initdis( )
{
PORTE=0x00; //选通数码管1
PORTD=0x3F;
PORTE=0x01; //选通数码管2
PORTD=0x3F;
PORTE=0x02; //选通数码管3
PORTD=0x3F;
}
//读AD值
void ADReadFunc()
{
ADCON0=0x41;
delayus();
ADGO=1;
while(ADGO);
ADResult0=ADRESH;
}
//显示子程序
void display()
{
uchar ADData1,ADData2,ADData3;
PORTE=0xFF;
PORTD=0XFF;
ADData1=ADResult0/100;
PORTD=led[ADData1];
PORTE=0x02; //选通数码管3
delayus();
ADData2=(ADResult0-ADData1*100)/10;
PORTD=led
您可能关注的文档
最近下载
- 【生物】神经调节课件2025-2026学年人教版生物八年级上册.pptx VIP
- 《冷轧知识培训》课件.ppt
- 2024年江苏省连云港市东海县牛山镇招聘社区工作者真题及参考答案详解一套.docx VIP
- 2025年国企竞聘面试题库及答案.doc VIP
- 4-6 风信子 少儿美术课件.pptx VIP
- 中文版儿童睡眠习惯问卷CSHQ 含评分维度.docx VIP
- 同济大学《数学(统计)》2023-2024学年第二学期期末试卷.doc VIP
- 水准路线平差案例工程测量74课件讲解.pptx VIP
- 作文指导:说明文写作课件.ppt VIP
- 全站仪中间法在精密三角高程测量中的应用分析.pdf VIP
文档评论(0)