stc12C5A60S2内部AD应用Word格式.docx

上传人:b****5 文档编号:16025463 上传时间:2022-11-17 格式:DOCX 页数:15 大小:27.49KB
下载 相关 举报
stc12C5A60S2内部AD应用Word格式.docx_第1页
第1页 / 共15页
stc12C5A60S2内部AD应用Word格式.docx_第2页
第2页 / 共15页
stc12C5A60S2内部AD应用Word格式.docx_第3页
第3页 / 共15页
stc12C5A60S2内部AD应用Word格式.docx_第4页
第4页 / 共15页
stc12C5A60S2内部AD应用Word格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

stc12C5A60S2内部AD应用Word格式.docx

《stc12C5A60S2内部AD应用Word格式.docx》由会员分享,可在线阅读,更多相关《stc12C5A60S2内部AD应用Word格式.docx(15页珍藏版)》请在冰豆网上搜索。

stc12C5A60S2内部AD应用Word格式.docx

/*DeclareSFRassociatedwiththeADC*/

sfrADC_CONTR 

0xBC;

//ADCcontrolregister

sfrADC_RES 

0xBD;

//ADChigh8-bitresultregister

sfrADC_RESL 

0xBE;

//sfrADC_LOW2 

//ADClow2-bitresultregister

sfrP1ASF 

0x9D;

//P1secondaryfunctioncontrolregister 

/*DefineADCoperationconstforADC_CONTR*/

#defineADC_POWER 

0x80 

//ADCpowercontrolbit

#defineADC_FLAG 

0x10 

//ADCcompleteflag 

模数转换结束标志位

#defineADC_START 

0x08 

//ADCstartcontrolbit 

模数转换启动控制位

//转换速度控制位SPEED0和SPEED1,共四种状态,对应四种转换速度

#defineADC_SPEEDLL0x00 

//540clocks

#defineADC_SPEEDL 

0x20 

//360clocks

#defineADC_SPEEDH 

0x40 

//180clocks

#defineADC_SPEEDHH0x60 

//90clocks

uchartCount;

sbitRS=P0^4;

sbitRW=P0^5;

sbitEN=P0^6;

voidDelayMS(uintms)

{

uinti;

while(ms--)

for(i=0;

i<

120;

i++);

}

/*----------------------------

Softwaredelayfunction

----------------------------*/

voidDelay(uintn)

uintx;

while(n--)

{

x=5000;

while(x--);

}

InitialADCsfr

voidInitADC()

P1ASF=0x01;

//选择P1.0作为A/D输入通道

ADC_RES=0;

//清0

ADC_CONTR=ADC_POWER|ADC_SPEEDLL;

//0x10|0x00=0x10:

开电源和设置A/D转换速度

Delay

(2);

//ADCpower-onanddelay

GetADCresult

ucharGetADCResult(ucharch)

ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START;

//0x00|0x00|ch|0x08:

选择A/D输入通道,开始A/D转换

_nop_();

//Mustwaitbeforeinquiry,

//设置ADC_CONTR寄存器后需加4个CPU时钟周期的延时,才能保证值被写入ADC_CONTR寄存器

while(!

(ADC_CONTR&

ADC_FLAG));

//Waitcompleteflag

ADC_CONTR&

=~ADC_FLAG;

//CloseADC

Vo=ADC_RES*5*10/256;

//ReturnADCresult(为显示整数,这里将电压值扩大了十倍)

returnVo;

ucharRead_LCD_State()

ucharstate;

RS=0;

RW=1;

EN=1;

DelayMS

(1);

state=P2;

EN=0;

returnstate;

voidLCD_Busy_Wait()

while((Read_LCD_State()&

0x80)==0x80);

DelayMS(5);

voidWrite_LCD_Data(uchardat) 

//写数据到1602

LCD_Busy_Wait();

RS=1;

RW=0;

EN=0;

P2=dat;

voidWrite_LCD_Command(ucharcmd) 

//写命令

LCD_Busy_Wait();

P2=cmd;

voidInit_LCD() 

//1602 

初始化

Write_LCD_Command(0x38);

Write_LCD_Command(0x01);

//清屏

Write_LCD_Command(0x06);

//

Write_LCD_Command(0x0c);

voidSet_LCD_POS(ucharp)

Write_LCD_Command(p|0x80);

voidDisplay_LCD_String(ucharp,uchar*s)//1602显示

uchari;

Set_LCD_POS(p);

16;

i++)

Write_LCD_Data(s);

voidFormat_DateTime(uchard,uchar*a)

a[0]=d/10+'

0'

;

a[1]=d%10+'

//写入液晶第二行

voiddisplay(ucharadd,uchardate)

ucharshi,ge;

shi=date/10+'

ge=date%10+'

Write_LCD_Command(0x80+0x40+add);

Write_LCD_Data(shi);

Write_LCD_Data(ge);

//写入液晶第一行

voiddisplay1(ucharadd,uchardate)

shi=date/10;

ge=date%10;

Write_LCD_Command(0x80+add);

Write_LCD_Data(0x30+shi);

//0x30即48(十进制)对应的ASCAII码为字符‘0’

Write_LCD_Data(0x30+ge);

voidmain()

Init_LCD();

InitADC();

while

(1)

GetADCResult(0);

Display_LCD_String(0,"

dianya:

"

);

display1(7,Vo);

Display_LCD_String(9,"

DelayMS(1000);

程序二:

*文件名:

AD_CAIYANG.C

*功能:

使用AD采

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动物植物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1