




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Stc12c5a60s2系列单片机的A/d数模转换模块实验摘要:与时间成连续函数的物理量,一般都称之为模拟量。人们在工业生产及科研过程中遇到 的被测量绝大部分是模拟量。例如:电压,电流,温度,压力,位移,速度等。计算机技术是测量与控制自动化与智能化的关键,是现代测控技术的核心技术之一。现 代计算机是数字计算机,它无法直接处理模拟信号,因此欲实现基于计算机的测量与控制, 必须具备将连续变化的模拟信号转变成计算机能够识别及处理的数字信号的手段。为此模/ 数转换技术应运而成,并成为现代测控技术中的重要组成部分。将模拟量转换为一定码制 的数字量称为模/数转换。Stcl2c5a60s2系列单片机作为微型
2、控制芯片的一种,其自身自带a/d装换口:Pl(pl.0-pl.7),可实现数模转换功能。实验目的:以Stc12c5a60s2单片机以及1602液晶显示屏做一个简易的”电压测量器“,测量线性 稳压电源提供的直流电压,精度O.Olv,通过调节电位器,将输入的电压转换为数字量实时 显示在1602lcd上。实现过程:理论学习:在掌握1602lcd工作原理及使用方法的基础上,查阅Stcl2c5a60s2单片机数模转换模 块应用介绍,弄清楚a/d转换器的结构,了解a/d转换器是如何工作的。理解与a/d转换器相关的寄存器的设置,会根据实际需要设置相关的寄存器。了解如何配置a/d转换口,如何取出转换结果。以十
3、位结果为例,计算公式如下:IC-bitAD ComerEifln Resnlt:CADC_ItES 7:0, .WC_RSL1:0j) = 1024 x 导VccVcc即单片机实际工作电压,我们用单片机工作电压做模拟参考电压,则输出的实际电 压vin二result (结果寄存器中的值)Xvcc(单片机工作电压5v)/1024。需注意的问题:Stc12c5a60s2单片机的参考电压源是输入的工作电压vcc,所以一般不用外接参考电 压源,如果单片机是采用电池供电,电池电压会在一定范围内漂移,所以vcc就不固定,这 时候就需要在8路a/d转换的一个通道外接一个稳定的参考电压源,来计算此时的工作电压
4、vcc,再计算出其他几路a/d转换通道的电压。我们选择十位a/d转换结果的方式,高2位放在ADC_RES中,低8位放在ADC_RESL 中,所以在程序中要注意如何拼接这十位转换结果。数模转换完成后,adc_flag=0,要由软件清零。我们的电路连接如下:只需调节可调电位器即可实现输入电压的变换,只不过我们配 置的是P1.1:3.程序实现:(1)流程分析:匸吕吕匸吕吕口昌 2JITQ $2.e卫i 3.-f54JK23.程序实现:(1)流程分析:匸吕吕匸吕吕口昌 2JITQ $2.e卫i 3.-f54JK2X瓷+P2迁SKEPb旧BD 7 fi 5 J 2 1- D or s 7 fi 52 2
5、 2 2 2 i 2 1 2 11 111PL.fiCfiPl.iMCSPl.AKBPLZABQPldClPl.fl-.4K047阴既上TXTTMD转换在Pl口. Pl. 0 - Pi. Y其8路初始化led,初始化ADC相关寄存器Flag=l,打开a/d转换, 得到 result, falg=0处理转换结果,并由Led 显示 result(2)实验程序:.16O2头文件在.C.16O2头文件在.C文件下方自定义byte及word类型的数据类型#include1602.h#define FOSC 24000000L#define BAUD 4800 typedef unsigned char
6、BYTE; typedef unsigned int WORD;#define ADC_FLAG 0 x10#define ADC_POWER 0 x80#define ADC START 0 x08/#define ADC_SPEEDLL 0 x00/#define ADC_SPEEDL 0 x20/#define ADC_SPEEDH 0 x40/#define ADC_SPEEDHH 0 x60void Delay(WORD n);void InitADC();void Get_Result(void); void disp_result(void);void Delay(WORD n)
7、;void InitADC();void Get_Result(void); void disp_result(void);WORD result=0;uint j=0;void main(void)L1602_init();InitADC();while(1)Get_Result();disp_result();/delay program初始化adc寄存器/得到转换结果/显示转换结果/主函数void InitADC()设置pl.l 设置pl.l 口为模拟量输入口/初始化高位结果寄存器/初始化地位结果寄存器ADC_RES=0;ADC_RESL=0;ADC_CONTR=0 xfl;/llll0
8、00l:POWER|SPEEDl|SPEED0|FLAG/|START|CHS2|CHSl|CHS0打开adc电源,设置转换所需的时间模式,flag=1,start=0,配置pl.0 口为ad转换口。 /AUXRl=0 xa2Delay(2); void Get_Result(void)ADC_CONTRI=0 xf9;/start=1,打开 ad 转换开关,开始 ad 转换。 result=ADC_RESv2; 高位左移两位result|=ADC_RESL&0 x03;/高位数据按位与地位数据,得到十位转换结果 ADC_CONTR=0 xe9;/flag=0;/start=0,关闭 ad 转
9、换电源,flag 清零/以下为数据处理过程:if(5*result%l024)l0)j=(5*result%1024)*1000;if(5*result%1024)10)j=(5*result%1024)*100;if(5*result%1024)100)j=(5*result%1024)*10;if(5*result%1024)1000)j=(5*result%1024);void disp_result(void)L1602_char(l,l,5*result/1024+0 x30);各 位数据显示L1602_char(l,2,.); 小数点L1602_char(1,3,j/1000+0
10、x30);十 分位显示L1602_char(1,4,j/100%10+0 x30); 百分位显示L1602_char(1,5,v);显示电压符号 ” v”void Delay(WORD n)WORD x;while(n-)x=5000;while(x-);1602头文件如下,具体语句不作赘述!#includestc12c5a60s2.h#includeintrins.h#define uchar unsigned char#define uint unsigned intsbit E=P2A7;sbit RW=P2A6;sbit RS=P2A5;void delay()uchar i=12;
11、while(i-)_nop_();_nop_();_nop_();_nop_();_nop_();bit Busy(void)bit busy_flag = 0;RS = 0;RW = 1;E = 1;delay();busy_flag = (bit)(P0 & 0 x80);E = 0;return busy_flag;void wcmd(uchar del)while(Busy();RS = 0;RW = 0;E = 0;delay();P0 = del;delay();E = 1;delay();E = 0; void wdata(uchar del) while(Busy();RS =
12、 1;RW = 0;E = 0; delay();P0 = del; delay();E = 1;delay();E = 0;void L1602_init(void)wcmd(0 x38); wcmd(0 x0c); wcmd(0 x06);wcmd(0 x01);void L1602_char(uchar hang,uchar lie,char sign) uchar a;if(hang = 1) a = 0 x80;if(hang = 2) a = 0 xc0;a = a + lie - 1; wcmd(a); wdata(sign);void L1602_string(uchar hang,uchar lie,uchar *p) uchar a,b=0;if(hang = 1) a = 0 x80;if(hang = 2) a = 0 xc0;a = a + lie - 1; while(1) wcmd(a+); b+;if(*p = 0)|(b=16)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- TY/T 3501.1-2024高山滑雪板性能测定第1部分:弹性
- 智能电网立项课题申报书
- 共建公司合同范本
- 减负教学课题研究申报书
- 课题申报书封面对不齐
- 旅游管理课题申报书
- 教改课题申报书文库
- 护理课题申报书是什么
- 员工合同范本快递
- 课题申报书文献参考
- 2024年度智慧城市建设综合解决方案投标书实例3篇
- 《劳动工具的改进设计》六年级综合实践课件
- TDT1055-2019第三次全国国土调查技术规程
- 2021年河南公务员行测考试真题及答案
- 广告安装施工及方案
- 单晶炉车间安全培训
- 英语演讲技巧与实训学习通超星期末考试答案章节答案2024年
- 2024年海南省公务员录用考试《行测》试题及答案解析
- 九年级化学人教版跨学科实践3水质检测及自制净水器教学设计
- 【医院药品管理系统探析与设计(论文)10000字】
- 螺旋体病梅毒课件
评论
0/150
提交评论