77范文网 - 专业文章范例文档资料分享平台

第七组--信号波形合成实验电路(4)

来源:网络收集 时间:2018-11-26 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

uchar Data2[16]={%uchar link[10]={\

uchar Bit[8]={0,0,0,0,0,0,0,0}; //数码管各位显示的数字

uint max=0; uint max1=0; uint max2=0; ulong maxget=0; ulong maxget1=0; ulong maxget2=0;

uint ADCBuf[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//保存采集到的数据

uint ADCBuf1[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//保存采集到的数据

uint ADCBuf2[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//保存采集到的数据

//20个数据的和 ulong Sum=0;

ulong VBuf=0;//电压扩大10000000的值 uchar Count=0; uchar num=0;

//延时子程序

DelayMS(uint ms){ uint i;

while(ms--){

for(i=0; i<800;i++); } }

// 测试LCD忙碌状态 void LcdBusy(){ RS_LOW; RW_HIGH; E_HIGH;

_NOP();_NOP(); BUSY_IN;

while(BUSY_DATA); BUSY_OUT; E_LOW; }

//写入指令到LCD

WriteCommand(uchar Command){ LcdBusy(); RS_LOW;

16

RW_LOW; E_HIGH;

_NOP();_NOP(); P2OUT=Command; _NOP();_NOP(); E_LOW; }

//写入字符数据到LCD WriteData(uchar Data){ LcdBusy(); RS_HIGH; RW_LOW; E_HIGH;

_NOP();_NOP(); P2OUT=Data; _NOP();_NOP(); E_LOW; }

//LCD初始化设定 LcdInit(){

WriteCommand(0x38);//8位数据端口,2行显示,5*7点阵 DelayMS(5);

WriteCommand(0x0c);//开启显示, 无光标 DelayMS(5);

WriteCommand(0x06);//AC递增, 画面不动 DelayMS(5);

WriteCommand(0x01);//清屏 DelayMS(5); }

//时钟初始化函数

void InitClock(void){

BCSCTL1=RSEL2+RSEL1+RSEL0;//XT2开启 LFXT1工作在低频模式 ACLK不分频 最高的标称频率

DCOCTL=DCO2+DCO1+DCO0;//DCO为最高频率 do{

IFG1&=~OFIFG;//清除振荡器失效标志 for(uint i=255;i>0;i--);

}while(IFG1&OFIFG);//判断XT2是否起振

BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频 }

//端口初始化函数 void InitPort(void){

17

P2SEL=0x00;//P2口所有引脚设置为一般的IO口 P4SEL=0x00;//P4口所有引脚设置为一般的IO口 P2DIR=0xFF;//P2口所有引脚设置为输出方向 P4DIR=0xFF;//P4口所有引脚设置为输出方向 }

//ms级延时子程序

void DelayMs(uint ms){ while(ms--){

for(uint i=0;i<800;i++); } }

//ADC12初始化

void InitADC12(void){

P6SEL=0x07;//P6.0为模拟输入

ADC12CTL0&=~ENC;//ENC设置为0从而修改ADC12寄存器

ADC12MCTL0=INCH_0+SREF_2;//参考电压为VeREF+和AVss 输入通道A0 ADC12MCTL1=INCH_1+SREF_2;//通道A1 ADC12MCTL2=INCH_2+SREF_2+EOS;

ADC12CTL1=CSTARTADD_0+SHP+CONSEQ_3+ADC12SSEL_0+ADC12DIV_0;//起始地址ADCMEM0,采样脉冲由采样定时器产生,单通道多次转换,内部时钟源不分频 ADC12CTL0=MSC+ADC12ON;//采样信号由SHI仅首次触发,打开ADC12模块 }

//计算电压值

void GetV(void){ int a=0;int b=0;

maxget=max*((2.5*10000000)/4095.0); maxget1=max1*((2.5*10000000)/4095.0); maxget2=max2*((2.5*10000000)/4095.0); a=maxget/10000000;

b=maxget000000/1000000; Data1[3]=link[2*a+(2*b)/10]; Data1[5]=link[(2*b)];

Data1[12]=link[maxget1/10000000];

Data1[14]=link[maxget1000000/1000000];

Data2[3]=link[maxget2/10000000];

Data2[5]=link[maxget2000000/1000000]; Data2[6]=link[maxget200000/100000]; }

18

//定时器A初始化

void InitTimerA(void){

TACTL=TASSEL1+ID1+ID0+MC0+TACLR;//选择1/8SMCLK 增计数 清除TAR CCTL0=CCIE;//CCR0中断允许 CCR0=20000;//时间间隔20ms }

//定时器A中断

#pragma vector=TIMERA0_VECTOR

__interrupt void TimerAINT(void){

ADC12CTL0&=~ENC;

ADCBuf[Count]=ADC12MEM0; ADCBuf1[Count]=ADC12MEM1; ADCBuf2[Count]=ADC12MEM2;

if( ADCBuf[Count]>=max)max= ADCBuf[Count];

if( ADCBuf1[Count]>=max1)max1= ADCBuf1[Count]; if( ADCBuf2[Count]>=max2)max2= ADCBuf2[Count]; Count++;

if(Count==20){ GetV(); Count=0; max=0; max1=0; max2=0; }

ADC12CTL0|=ENC+ADC12SC;//使能ADC转换 }

void main(){ uchar i;

WDTCTL=WDTPW+WDTHOLD;//关闭看门狗 InitClock(); InitPort(); InitTimerA();

LcdInit();//Lcd初始化 InitADC12();

_EINT();//打开中断 while(1){

WriteCommand(0x80);//定位在第一行第一个位置 for(i=0;i<16;i++) WriteData(Data1[i]);

WriteCommand(0x80|0x40);//定位在第二行第一个位置 for(i=0;i<16;i++) WriteData(Data2[i]); } }

19

20

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库第七组--信号波形合成实验电路(4)在线全文阅读。

第七组--信号波形合成实验电路(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/310990.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: