版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ADCON1 = 0X80 ;/选择 A/D 通道为 RA2 ,打开 A/D 转换器/ 在工作状态,且使 AD 转换时钟为 8tosc/转换结果右移,及 ADRESH 寄存器的高 6位为 "0"/ 且把 RA2 口设置为模拟量输入方式第 6 章 模拟量输入与输出6.1 A/D 转换的应用 例 6.1 A/D 转换初始化程序 /A/D 转换初始化子程序 void adinitial( )ADCON0 = 0x51 ;PIE1 = 0X00 ;PIE2 = 0X00 ; ADIE = 1 ; PEIE = 1 ; TRISA2=1 ;/A/D 转换中断允许/外围中断允许/ 设置
2、 RA2 为输入方式程序清单下面给出一个调试通过的例程,可作为读者编制程序的参考。该程序中用共用体的方式把 A/D 转换的 10 位结果组合在一起。有关共用体的详细资料请参考本书相关章节。# include<pic.h>unionadresinty1;unsignedcharadre2 ;adresult ;unsignedchari;unsignedintj;/系统各I/O 口初始化子程序voidinitial()/ 定义一个共用体,用于存放 A/D 转换的结果TRISD=0X00 ; i=0x00 ;/A/D 转化初始化子程序 void adinitial()/D 口为输出/选
3、择 A/D 通道为 RA2 ,打开 A/D 转换器 / 在工作状态,且使 A/D 转换时钟为 8toscADCON0=0x51 ;ADCON1=0X80 ;/转换结果右移,及 ADRESH 寄存器的高 6位为 "0" / 且把 RA2 口设置为模拟量输入方式/A/D 转换中断允许/外围中断允许/ 设置 RA2 为输入方式PIE1=0X00 ;PIE2=0X00 ; ADIE=1 ; PEIE=1; TRISA2=1 ; /延时子程序voiddelay()for(j=5535 ; -j ;) continue ;/报警子程序 void alarm() iWOxFF ;PORT
4、D=i ; /中断服务程序/ 通过异或方式每次把i 的各位值取反/D 口输出 i 的值void interrupt adint(void)ADIF=0 ;/清除中断标志adresult.adre0=ADRESL ;adresult.adre1=ADRESH ;if(adresult.y1>0x200)alarm() ;delay() ;else PORTD=0XF0 ;ADGO=1 ;/主程序main()/ 读取并存储 A/D 转换结果, A/D 转换的结果通过共 / 用体的形式放入了变量 y1 中/如果输入的模拟量大于 2.5V( 对应数字量/0X200h) ,则调用报警子程序 /调用
5、延时子程序,使电压检测不要过于频繁/如果输入的模拟量小于 2.5V ,则与 D 口相连的/8 个发光二极管的低 4 个发亮,表示系统正常 / 启动下一次 A/D 转换adinitial() ;/A/D 转换初始化initial() ; ei(); ADGO=1 ;/系统各 I/O 口初始化/总中断允许/启动 A/D 转换while(1);/等待中断,在中断中循环检测外部电压622 I 2C总线工作方式相关子程序1. C语言编写的I2C总线工作方式的初始化子程序/I2C 初始化子程序void i2cint()SSPCON = 0X08 ;TRISC3 =1;TRISC4 =1;TRISA4 =
6、0;SSPSTAT=0X80;SSPADD=0X02 ;SSPCON2=0X00;di();SSPIF=0;RA4=0;/初始化 SSPCON 寄存器/设置 SCL 为输入口/设置 SDA 为输入口/初始化 SSPSTAT 寄存器/设定I2C时钟频率/初始化 SSPCON2 寄存器/关闭总中断/清 SSP 中断标志/关掉 74HC165 的移位时钟使能,以免 74HC165 移位 /数据输出与 I2C 总线的数据线发生冲突(此操作与该/实验板的特殊结构有关,不是通用的)SSPEN=1;/SSP 模块使能2. C语言编写的I2C总线工作方式传输数据子程序 需要发送的数据在寄存器 j 中。/I2C
7、 总线输出数据子程序i2cout()SEN=1 ;/产生I2C启动信号for(n=0x02 ; -n; ) continue ; /给予一定的延时,保证启动do RSEN=1;while(SSPIF=0) ;SSPIF=0;/产生I2C重启动信号/如果没能启动,则反复启动,直到启动为止/SSPIF 标志清 0doSSPBUF=0X58 ; /I2C 总线发送地址字节;while(SSPIF=0) ;/等待地址发送完毕SSPIF=0;/SSPIF 标志清 0SSPBUF=0X01 ;/I2C 总线发送命令字节do;while(SSPIF=0) ;/等待命令发送完毕SSPIF=0;/SSPIF 标
8、志清 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 引脚输出一个正 弦波形。可作为读者编制程序的参考。特别注意,在调试该程序时,把模板上的钮子开 关 S8 拔向高电平,以免发生资源冲突。#include <pic.h>/ 本程序将通过 PIC16F877 的 I2C
9、方式驱动 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 ,0XFA ,0XFC,0XFD ,0XFF ,0XFF ,0XFF,0XFF,0XFF,0XFF,0XFE,0XFD,0XFB ,0XF9,0XF
10、7,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,0X0E,0X0B ,0X09,0X07,0X05,0X03,0X02,0X00,0X00,0X00,0X00,0X00,
11、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 中,而不至于占用太多的 RAM unsigned char i ;unsigned charj ;unsigned charn; /I2C 初始化子程序void i2cint()SSPCON
12、= 0X08 ;TRISC3 =1 ;TRISC4 =1 ;TRISA4 = 0 ;SSPSTAT=0X80;SSPADD=0X02 ;SSPCON2=0X00 ; di();SSPIF=0;RA4=0 ;SSPEN=1;/I2C 总线输出数据子程序/ 初始化 SSPCON 寄存器/ 设置 SCL 为输入口/ 设置 SDA 为输入口/初始化 SSPSTAT 寄存器/设定 I2C 时钟频率/ 初始化 SSPCON2 寄存器/关闭总中断/清 SSP 中断标志/ 关掉 74HC165 的移位时钟使能,以免 74HC165 /移位数据输出与 I2C 总线的数据线发生冲突 /SSP 模块使能void i
13、2cout()SEN=1;/产生 I2C 启动信号for(n=0x02 ;-n;) continue ; /给予一定的延时,保证启动do RSEN=1 ; while(SSPIF=0) ; SSPIF=0; SSPBUF=0X58 ; do /产生 I2C 启动信号 /如果没能启动,则反复启动,直到启动为止 /SSPIF 标志清 0/I2C 总线发送地址字节while(SSPIF=0) ;SSPIF=0;SSPBUF=0X01 ; do ;while(SSPIF=0) ;SSPIF=0;/等待地址发送完毕/SSPIF 标志清 0/I2C 总线发送命令字节/等待命令发送完毕/SSPIF 标志清 0SSPBUF=j ;do ; while(SSPIF=0) ; SSPIF=0; PEN=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中浙教版第3章 人的健康第 5 节 人的运动系统和保健教案
- 2026年县乡教师选调考试《教育学》题库高频难、易错点100题模拟试题及答案详解(名师系列)
- 2026年八大特殊作业安全练习题库附完整答案详解(考点梳理)
- 2026年量上岗考核复习试题附参考答案详解【研优卷】
- 2026年检验士技术题库高频重点提升及完整答案详解【历年真题】
- 2026年县乡教师选调考试《教育学》题库试题附答案详解(综合卷)
- 2026年资产评估师之资产评估基础测试卷(考点梳理)附答案详解
- 2026年专项信息技术能力提升B卷题库附参考答案详解【突破训练】
- 2025年县乡教师选调考试《教育学》题库高频重点提升(共100题)带答案详解(夺分金卷)
- 2025年北京市《保密知识竞赛必刷100题》考试题库附答案详解【轻巧夺冠】
- 2026年北京市丰台区高三一模语文试卷(含答案详解)
- 2026江西省信用融资担保集团股份有限公司社会招聘1人备考题库有答案详解
- 清明假期安全教育课件
- 数字时代下哔哩哔哩数据资产价值评估的理论与实践
- 湖北省2026年高三二模高考数学模拟试卷试题(含答案详解)
- 江西省重点中学盟校2026届高三下学期第一次质量检测英语试卷
- 2026浙江宁波能源集团股份有限公司第一批招聘20人备考题库及一套参考答案详解
- 宁德时代SHL测评答案
- 机电工程创优指南
- 绿色设计管理制度
- 园长幼儿园考核制度
评论
0/150
提交评论