完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
网上的程序代码有很多,大多应用都是固定,在这里小结一下
如图2,就是该芯片的外部的连接图其中注意AIN系列管脚测得是那种类型的数据,如图2,就是AIN系列管脚对应的测量电路图。 其中AIN0管脚测得是电位器电压对应的com(寄存器)指令为0x94(后面程序要用) AIN1管脚测得是热敏电阻(NTC1)的电压对应的com(寄存器)指令为0x94 AIN2管脚测得是热敏电阻(GRI)的电压对应的com(寄存器)指令为0xD4 AIN3管脚测得是你接的电压对应的com(寄存器)指令为0xA4 对照时序图写程序 #include 和声明了3个函数 1.uint Read_AD_Data(uchar cmd);//读取命令函数 2.uint SPI_Read(void);//读取数据(处理后)函数 3.uint SPI_write(uchar dat);//写数据(未处理)函数 void SPI_Start(void)//初始化函数 { CLK = 0; CS = 1; DIN = 1; CLK = 1;//上升沿触发记录cs DIN数据,寄存器一般都是上升沿触发锁住数据(hcs和DIN)的先后在时序图中不一致,只要在CLK之前就好了 CS = 0; } void SPI_Write(uchar dat)//写入转换命令的函数 { uchar i; CLK = 0; for(i=0; i<8; i++) { DIN = dat >> 7; //循环取8位数据,从低位开始的 dat <<= 1; CLK = 0; //上升沿锁存数据 CLK = 1; } } uint SPI_Read(void)//读取模拟量(电压值) { uint i, dat=0; CLK = 0; for(i=0; i<12; i++) //接受12位数据 { dat <<= 1; CLK = 1; CLK = 0; dat |= DOUT;//得到不处理的数据(模拟量)有0~9系列 } return dat; } uint Read_AD_Data(uchar cmd) { uchar i; uint AD_Value; CLK = 0; CS = 0; SPI_Write(cmd); for(i=6; i>0; i--); //延时等待转换结果 CLK = 1; //锁住数据 _nop_(); _nop_(); CLK = 0; _nop_(); _nop_(); AD_Value=SPI_Read();//数值量(010101)类型 CS = 1; return AD_Value; } 评分 |
|
相关推荐
|
|
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
250 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
473 浏览 2 评论
571 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
260 浏览 0 评论
400 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11976 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 12:15 , Processed in 0.627960 second(s), Total 74, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号