实验八AD实验

上传人:仙*** 文档编号:136991485 上传时间:2022-08-17 格式:DOC 页数:9 大小:958KB
返回 下载 相关 举报
实验八AD实验_第1页
第1页 / 共9页
实验八AD实验_第2页
第2页 / 共9页
实验八AD实验_第3页
第3页 / 共9页
点击查看更多>>
资源描述
实验八 AD实验学号:2013301510068 姓名:曾琼颖 班级:2013级微电班【1】 实验目的:理解单片机AD转换的相关概念,掌握使用XPT2046进行AD转换的C语言编程方法。【2】 实验要求:利用数码管或液晶屏显示电位器、光敏电阻、热敏电阻的AD值。【3】 实验原理:单片机应用的重要领域是自动控制。在自动控制的应用中,除数字量之外还会遇到另一种物理量,即模拟量。例如,温度、速度、电压、电流、压力等,它们都是连续变化的物理量。由于计算机只能处理数字量,因此计算机系统中凡是遇到有模拟量的地方,就要进行模拟量向数字量的转换,也就出现了单片机的数模AD转换的问题。这里使用的是XPT2046进行AD转换。XPT2046的相关资料如下:1.原理框图:2.极限参数:3.引脚排列:4.引脚功能介绍:实验原理图:【4】实验步骤:打开Keil编译器,创建新的project,选择芯片类型,这里选择ATMEL-AT89C52这个芯片,把C文件添加到我们的工程文件,编辑代码,编译通过之后,输出hex文件,利用STC-ISP将编写好的程序烧写进单片机中。试验相关模块电路JP10J12按如下图连接:【5】 实验代码:#include#include/-重定义关键词-/#define uchar unsigned char#define uint unsigned int#define ulong unsigned long/-定义使用的IO口-/#define LCD_DB P0sbit CLK = P10; /时钟 sbit CS = P11; /片选sbit DIN = P12; /输入sbit DOUT = P13; /输出sbit LCD_RS=P26;sbit LCD_RW=P25;sbit LCD_E=P27;uint Read_AD_Data(uchar cmd);uint SPI_Read(void);void SPI_Write(uchar dat);void LCD_init(void);void LCD_check_busy(void);void LCD_write_command(uchar command);void LCD_write_data(uchar dat);/*定义各函数声明*/uint temp,light,voltage;/*主函数部分*/void delay (unsigned int k)/延时子程序/ while(k-) unsigned int j; for(j=0;j120;j+) ; /*函数名:TSPI_Start*输 入:无*输 出:无*功 能:初始化触摸SPI*/void SPI_Start(void)CLK = 0;CS = 1;DIN = 1;CLK = 1;CS = 0;/*函数名:SPI_Write*输 入:dat:写入数据*输 出:无*功 能:使用SPI写入数据*/void SPI_Write(uchar dat)uchar i;CLK = 0;for(i=0; i 7; /放置最高位dat = 1;CLK = 0;/上升沿放置数据CLK = 1;/*函数名:SPI_Read*输 入:无*输 出:dat:读取 到的数据*功 能:使用SPI读取数据*/uint SPI_Read(void)uint i, dat=0;CLK = 0;for(i=0; i12; i+)/接收12位数据dat 0; i-); /延时等待转换结果CLK = 1; /发送一个时钟周期,清除BUSY_nop_();_nop_();CLK = 0;_nop_();_nop_();AD_Value=SPI_Read();CS = 1;return AD_Value;void LCD_init(void)/LCD的初始化函数 LCD_write_command(0x38); LCD_write_command(0x0c); LCD_write_command(0x06); LCD_write_command(0x01);void LCD_check_busy(void) /LCD的忙检查函数 unsigned char sta; LCD_DB = 0xff; LCD_RS = 0; LCD_RW = 1; do LCD_E= 1; sta = LCD_DB; LCD_E= 0; while(sta & 0x80);void LCD_write_command(uchar dat)/LCD的写命令函数 LCD_check_busy(); LCD_DB=dat; LCD_RS=0; LCD_RW=0; LCD_E=1; LCD_E=0; delay(1);void LCD_write_data(uchar dat)/LCD的写数据函数 LCD_check_busy(); LCD_DB=dat; LCD_RS=1; LCD_RW=0; LCD_E=1; LCD_E=0; delay(1);void LCD_show_var(char y,char z, char v1) uchar j, address ;if(y=1) j=0x80; else j=0xc0;address=z+j;LCD_write_command(address);LCD_write_data(v1);void main() LCD_init(); while(1) temp=Read_AD_Data(0x94); LCD_show_var(1,0,t); LCD_show_var(1,1,:); LCD_show_var(1,2,temp/1000+0x30); LCD_show_var(1,3,temp%1000/100+0x30); LCD_show_var(1,4,temp%100/10+0x30); LCD_show_var(1,5,temp%10+0x30); light=Read_AD_Data(0xd4); LCD_show_var(1,7,l); LCD_show_var(1,8,:); LCD_show_var(1,9,light/1000+0x30); LCD_show_var(1,10,light%1000/100+0x30); LCD_show_var(1,11,light%100/10+0x30); LCD_show_var(1,12,light%10+0x30); voltage=Read_AD_Data(0xa4); LCD_show_var(2,0,v); LCD_show_var(2,1,:); LCD_show_var(2,2,voltage/1000+0x30); LCD_show_var(2,3,voltage%1000/100+0x30); LCD_show_var(2,4,voltage%100/10+0x30); LCD_show_var(2,5,voltage%10+0x30); delay(1000); 【6】 实验现象:在LCD显示屏的第一行将出现热敏电阻和光敏电阻的AD值,显示为:“t:xxxx l:xxxx”,第二行将出现电位器的AD值,显示为:“v:xxxx”。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!