




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 模拟量输入与输出6.1 A/D转换的应用例6.1 A/D转换初始化程序/A/D转换初始化子程序voidadinitial( )ADCON0 = 0x51;/选择A/D通道为RA2,打开A/D转换器 /在工作状态,且使AD转换时钟为8toscADCON1 = 0X80;/转换结果右移,及ADRESH寄存器的高6位为"0" /且把RA2口设置为模拟量输入方式PIE1 = 0X00;PIE2 = 0X00;ADIE = 1;/A/D转换中断允许PEIE = 1;/外围中断允许TRISA2=1;/设置RA2为输入方式6.1.2 程序清单下面给出一个调试通过的例程,可作为读者
2、编制程序的参考。该程序中用共用体的方式把A/D转换的10位结果组合在一起。有关共用体的详细资料请参考本书相关章节。# include<pic.h>unionadresinty1;unsigned char adre2;adresult;/定义一个共用体,用于存放A/D转换的结果unsigned chari;unsigned intj;/系统各I/O口初始化子程序voidinitial()TRISD=0X00;/D口为输出i=0x00;/A/D转化初始化子程序void adinitial()ADCON0=0x51;/选择A/D通道为RA2,打开A/D转换器 /在工作状态,且使A/D转
3、换时钟为8toscADCON1=0X80;/转换结果右移,及ADRESH寄存器的高6位为"0" /且把RA2口设置为模拟量输入方式PIE1=0X00;PIE2=0X00;ADIE=1;/A/D转换中断允许PEIE=1;/外围中断允许TRISA2=1;/设置RA2为输入方式/延时子程序voiddelay()for(j=5535;-j;)continue;/报警子程序voidalarm()i=i0xFF;/通过异或方式每次把i的各位值取反PORTD=i;/D口输出i的值/中断服务程序voidinterruptadint(void)ADIF=0;/清除中断标志adresult.a
4、dre0=ADRESL;adresult.adre1=ADRESH;/读取并存储A/D转换结果,A/D转换的结果通过共/用体的形式放入了变量y1中 if(adresult.y1>0x200)alarm();/如果输入的模拟量大于2.5V(对应数字量/0X200h),则调用报警子程序delay();/调用延时子程序,使电压检测不要过于频繁elsePORTD=0XF0;/如果输入的模拟量小于2.5V,则与D口相连的/8个发光二极管的低4个发亮,表示系统正常ADGO=1;/启动下一次A/D转换 /主程序main()adinitial();/A/D转换初始化initial();/系统各I/O口初
5、始化ei();/总中断允许ADGO=1;/启动A/D转换while(1);/等待中断,在中断中循环检测外部电压6.2.2 I2C总线工作方式相关子程序1C语言编写的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中
6、断标志RA4=0;/关掉74HC165的移位时钟使能,以免74HC165移位/数据输出与I2C总线的数据线发生冲突(此操作与该/实验板的特殊结构有关,不是通用的)SSPEN=1;/SSP模块使能2C语言编写的I2C总线工作方式传输数据子程序需要发送的数据在寄存器j中。/I2C总线输出数据子程序i2cout()SEN=1;/产生I2C启动信号for(n=0x02;-n;)continue;/给予一定的延时,保证启动doRSEN=1;/产生I2C重启动信号while(SSPIF=0);/如果没能启动,则反复启动,直到启动为止SSPIF=0;/SSPIF标志清0SSPBUF=0X58;/I2C总线发
7、送地址字节do;while(SSPIF=0);/等待地址发送完毕SSPIF=0;/SSPIF标志清0SSPBUF=0X01;/I2C总线发送命令字节do;while(SSPIF=0);/等待命令发送完毕SSPIF=0;/SSPIF标志清0SSPBUF=j;/I2C总线发送数据字节do;while(SSPIF=0);/等待数据发送完毕SSPIF=0;/SSPIF标志清0PEN=1;/产生停止条件do ;while(SSPIF=0);/等待停止条件产生SSPIF=0;/SSPIF标志清06.2.4程序清单下面给一个例程。该程序利用MAX518进行D/A转换,且从D/A0引脚输出一个正弦波形。可作为
8、读者编制程序的参考。特别注意,在调试该程序时,把模板上的钮子开关S8拔向高电平,以免发生资源冲突。#include<pic.h>/本程序将通过PIC16F877的I2C方式驱动D/A转换器MAX518,使其D/A0通道输出/一个连续的正弦波形(注:本程序并没对正弦波的频率进行控制)const char table = 0X80,0X86,0X8D, 0X93,0X99,0X9F,0XA5,0XAB,0XB1,0XB7,0XBC,0XC2,0XC7,0XCC,0XD1,0XD6,0XDA,0XDF,0XE3,0XE7,0XEA,0XEE,0XF1,0XF4,0XF6,0XF8,0XF
9、A,0XFC,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFD,0XFB,0XF9,0XF7,0XF5,0XF2,0XEF,0XEC,0XE9,0XE5,0XE1,0XDD,0XD8,0XD4,0XCF,0XCA,0XC5,0XBF,0XBA,0XB4,0XAE,0XA8,0XA2,0X9C,0X96,0X90,0X89,0X83,0X80,0X79,0X72,0X6C,0X66,0X60,0X5A,0X55,0X4E,0X48,0X43,0X3D,0X38,0X33,0X2E,0X29,0X25,0X20,0X1C,0X18,0X15,0X11,0X0
10、E,0X0B,0X09,0X07,0X05,0X03,0X02,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X02,0X04,0X06,0X08,0X0A,0X0D,0X10,0X13,0X16,0X1A,0X1E,0X22,0X27,0X2B,0X30,0X35,0X3A,0X40,0X45,0X4C,0X51,0X57,0X5D,0X63,0X69,0X6F,0X76,0X7C;/以上的数组用于存放正弦表,在定义数组时,前面应该加上 const,/以使数组存放于ROM中,而不至于占用太多的RAMunsigned char i;unsigned char j;un
11、signed char n;/I2C初始化子程序voidi2cint()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模块使能/I2C总线输出数据子程
12、序voidi2cout()SEN=1;/产生I2C启动信号for(n=0x02;-n;)continue;/给予一定的延时,保证启动doRSEN=1;/产生I2C启动信号while(SSPIF=0);/如果没能启动,则反复启动,直到启动为止SSPIF=0;/SSPIF标志清0SSPBUF=0X58;/I2C总线发送地址字节do;while(SSPIF=0);/等待地址发送完毕SSPIF=0;/SSPIF标志清0SSPBUF=0X00;/I2C总线发送命令字节,D/A0通道输出do;while(SSPIF=0);/等待命令发送完毕SSPIF=0;/SSPIF标志清0SSPBUF=j;/I2C总线发送数据字节do;while(SSPIF=0);/等待数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环县公务接待管理办法
- 税费政策落实服务新质生产力
- 企业安全管理培训讲稿课件
- 出警现场安全意识培训课件
- 2025生殖实验室试题及答案
- 2025年一号文件题库及答案
- 出租车每月安全培训课件
- 导游基础模拟练习题+答案
- 2025年苏州市存量房买卖合同
- 2025商铺租赁合同律师拟定版本(律师拟定版本)
- 甲状腺手术甲状旁腺保护
- 2023年法律职业资格《主观题》真题及答案
- 施工项目部会议管理制度
- 2024-2025学年安徽省八年级语文上册第一次月考试卷04
- 欢迎一年级新生入学课件
- 译林版七年级上册英语阅读理解专项练习题100篇含答案
- 单位委托员工办理水表业务委托书
- 矿山生态修复监理工作资料编制内容和要求、施工监理主要工作程序框图、工程施工与监理表式
- 夫妻婚内财产协议书(2024版)
- 小菜园租赁合同范本
- DL-T1342-2014电气接地工程用材料及连接件
评论
0/150
提交评论