- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 
                        查看更多
                        
                    
                PAGE  
PAGE  189
第11章  交流电压测量
11.3.2  程序清单
该程序已在模板上调试通过,可作读者的参考。有关显示部分请读者参考本书相关章节,有关A/D转换的详细设置请参考前面章节。
#include		pic.h
#include 		math.h
#include 		stdio.h
//该程序用于测电网的交流电压有效值,最后的结果将在4个LED上显示,保留
//1位小数。
//为了保证调试时数据运算的精确性,需要将PICC的double型数据选成32位
union	adres
{
	int	y1;
	unsigned 	char	adre[2];
}adresult;					//定义一个共用体
bank3	int	re[40];			//定义存放A/D转换结果的数组,在bank3中
unsigned 	char	 k,data;		//定义几个通用寄存器
double	squ ,squad;			//平方寄存器和平方和寄存器,squ又通用为存储其
							//它数值
int	uo;
bank1	unsigned  char	s[4];	//此数组用于存储需要显示的字符的ASII码
const	  char	table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};
//不带小数点的显示段码表
const	  char  table0[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点的显示段码表
//A/D转换初始化子程序
void		adinitial()
{
	ADCON0=0x41;			//选择A/D通道为RA0,且打开A/D转换器
		      				//在工作状态,使A/D转换时钟为8Tosc
	ADCON1=0X8E;			//转换结果右移,及ADRESH寄存器的高6位为0
	                 		//把RA0口设置为模拟量输入方式
	ADIE=1;				//A/D转换中断允许
	PEIE=1;					//外围中断允许
	TRISA0=1;				//设置RA0为输入方式
}
//spi方式显示初始化子程序
void 			SPIINIT()
{
	PIR1=0;
	SSPCON=0x30;	
	SSPSTAT=0xC0;
//设置SPI的控制方式,允许SSP方式,并且时钟下降沿发送,与74HC595,当其
//SCLK从低到高跳变时,串行输入寄存器的特点相对应
	TRISC=0xD7;			//SDO引脚为输出,SCK引脚为输出
	TRISA5=0;				//RA5引脚设置为输出,以输出显示锁存信号
}
//系统其它初始化子程序
void	initial()
{
	CCP2IE=0;				//禁止CCP中断
	SSPIE=0;				//禁止SSP中断
	CCP2CON=0X0B;		//初始化CCP2CON,CCP2为特别事件触发方式
	CCPR2H=0X01;
	CCPR2L=0XF4;			//初始化CCPR2寄存器,设置采样间隔500 μs,
							//一个周期内电压采40个点
}
//中断服务程序
void		interrupt		adint(void)
{
	CCP2IF=0;
	ADIF=0;				//清除中断标志
	adresult.adre[0]=ADRESL;
	adresult.adre[1]=ADRESH;	//读取并存储A/D转换结果,A/D转换的结果
				  			//通过共用体的形式放入了变量y1中 
	re[k]=adresult.y1;			//1次A/D转换的结果存入数组
	k++;					//数组访问指针加1
}
//SPI传送数据子程序
void  	SPILED(data)
{
	SSPBUF=data;			//启动发送
	do{
	   ;
	}while(SSPIF==0);
	SSPIF=0;
}
//主程序
main( )
{
	adinitial();				//A/D转换初始化
	SPIINIT();				//spi方式显示初始化
	initial();					//系统其它初始化	
	while(1){
		k=0;				//数组访问指针赋初值	
		TMR1H=0X00	;
		TMR1L=0X00;		//定时器1清0
		ei();				//中断允许
		T1CON=0X01;		//打开定时器1	
		while(1){
			if(k==40)	break;	//A/D转换次数达到40,则终止
		}
		di
                您可能关注的文档
- jspsetProperty-国立交通大学资讯工程学系NCTUDepartmentof.ppt
 - GeneticAlgorithmas遗传演算法.doc
 - JY109控电器使用说明书IC卡控电器JY109使用说明书平顶山市境源.doc
 - gz1411004房屋建筑工程和市政基础设施.doc
 - k3V12.1粗能力需求计划.ppt.ppt
 - K3补丁安装方法.doc
 - ICD植入DFT测试是必须的.ppt
 - IE部分测试题解析.doc
 - IIRFilter初始化用于ColorDopplerwallfilter的研究.doc
 - JAVA程序员培训.ppt
 
- 新型萘四甲酰亚二胺类侧链功能化有机半导体的合成及其性能表征.pdf
 - 信息重组策略在即兴发言汉英交替传译中的应用分析——以《中国民居(第二季)》模拟口译实践为例.pdf
 - 叶兆言历史题材创作的互文性研究.pdf
 - 信息化背景下农村小学家校沟通现状的调查研究——以徐州市铜山区D镇小学为例.pdf
 - 循环加载环境下高温超导堆叠结构低温压缩及多场性能实验表征研究.pdf
 - 氧化钨_氧化锌复合纳米结构调控及其气敏传感特性研究.pdf
 - 厌氧好氧时间比对EBPR中好氧颗粒形成及除磷过程的影响研究.pdf
 - 氧空位对NbO2金属-绝缘转变的影响机理研究.pdf
 - 氧化物半导体的晶面改性及其光催化性能探究.pdf
 - 信息流模式下社交电商平台青年用户信息规避行为影响因素研究.pdf
 
原创力文档
                        
                                    

文档评论(0)