STC12C5A60S2ADC查询法10位模式 1602显示.docx

上传人:b****5 文档编号:7210282 上传时间:2023-05-11 格式:DOCX 页数:6 大小:483.06KB
下载 相关 举报
STC12C5A60S2ADC查询法10位模式 1602显示.docx_第1页
第1页 / 共6页
STC12C5A60S2ADC查询法10位模式 1602显示.docx_第2页
第2页 / 共6页
STC12C5A60S2ADC查询法10位模式 1602显示.docx_第3页
第3页 / 共6页
STC12C5A60S2ADC查询法10位模式 1602显示.docx_第4页
第4页 / 共6页
STC12C5A60S2ADC查询法10位模式 1602显示.docx_第5页
第5页 / 共6页
STC12C5A60S2ADC查询法10位模式 1602显示.docx_第6页
第6页 / 共6页
亲,该文档总共6页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

STC12C5A60S2ADC查询法10位模式 1602显示.docx

《STC12C5A60S2ADC查询法10位模式 1602显示.docx》由会员分享,可在线阅读,更多相关《STC12C5A60S2ADC查询法10位模式 1602显示.docx(6页珍藏版)》请在冰点文库上搜索。

STC12C5A60S2ADC查询法10位模式 1602显示.docx

STC12C5A60S2ADC查询法10位模式1602显示

STC12C5A60S2(ADC查询法10位模式)+1602显示

通道0接单片机电源,通道1接地线。

源程序:

一共3个文件:

LCD1602display.h

#ifndef_LCD1602DISPLAY_H_

#define_LCD1602DISPLAY_H_

#defineucharunsignedchar

#defineuintunsignedint

//************************LCD引脚定义

sbitLCM_RS=P3^5;

sbitLCM_RW=P3^6;

sbitLCM_E=P3^7;

//**************************延时

voiddelay();

//**************************初始化

voidInitLCM();

//****************************读状态

ucharReadStatusLCM();

//******************************读数据

ucharResdDataLCM();

//***************************写指令

voidWriteCommandLCM(ucharWCLCM,Busy);

//***************************写数据

voidWriteDataLCM(ucharWDLCM);

//******************************显示1个字符

voidDisplayOneChar(ucharX,ucharY,ucharDData);

//******************************显示字符串

voidDisplayListChar(ucharX,ucharY,ucharcode*DData);

#endif

STC12(ADCflag).h

#ifndef_STC12_ADC_FLAG_H_

#define_STC12_ADC_FLAG_H_

#defineucharunsignedchar

#defineuintunsignedint

#defineFOSC11059200L

#defineBAUD9600

/********************************************************************

初始化设置

*********************************************************************/

sfrADC_CONTR=0xBC;//ADC控制寄存器

sfrADC_RES=0xBD;//ADC转换结果寄存器

sfrADC_RESL=0xBE;//ADC低2位结果寄存器

sfrP1ASF=0x9D;//P1口模拟功能控制寄存器

/********************************************************************

ADC数据转换函数

*********************************************************************/

#defineADC_POWER0x80//ADC电源控制位

#defineADC_FLAG0x10//ADC转换结束标志位

#defineADC_START0x08//ADC开始转换控制位

#defineADC_SPEEDLL0x00//540个时钟周期转换一次

#defineADC_SPEEDL0x20//360个时钟周期转换一次

#defineADC_SPEEDH0x40//180个时钟周期转换一次

#defineADC_SPEEDHH0x60//90个时钟周期转换一次

//**********************************延时函数

voidDelay1(uintn);

//******************************ADC初始化函数

voidInit_ADC();

//***********************************ADC数据转换函数

uintGet_ADC_Result(ucharch);

//************************************ADC数据计算函数

floatCount(ucharch);

#endif

LCD1602display.c

#include;

#include;

#include"LCD1602display.h"

//********************延时

voiddelay(ucharz)

{

uchari,j;

for(i=z;i>;0;i--)

for(j=110;j>;0;j--);

}

//**********************LCM初始化

voidInitLCM()

{

WriteCommandLCM(0x38,0);//三次显示模式设置,不检测忙信号

delay

(1);

WriteCommandLCM(0x38,0);

delay

(1);

WriteCommandLCM(0x38,0);

delay

(1);

WriteCommandLCM(0x38,1);//显示模式设置:

16×2显示,5×7点阵,8位数据接口

WriteCommandLCM(0x0c,1);//显示模式设置:

显示开,无光标

WriteCommandLCM(0x06,1);//显示模式设置:

光标右移,字符不移

WriteCommandLCM(0x01,1);//清屏幕指令,将以前的显示内容清除

}

//*********************读状态

ucharReadStatusLCM()

{

P0=0x80;

LCM_RS=0;

LCM_RW=1;

LCM_E=1;

while(P0&0x80);//检测忙信号

return(0);

}

//***********************读数据

/*ucharResdDataLCM()

{

LCM_RS=1;

LCM_RW=1;

LCM_E=1;

}*/

//**********************写指令

voidWriteCommandLCM(ucharWCLCM,Busy)

{

if(Busy)ReadStatusLCM();

P0=WCLCM;

LCM_RS=0;

LCM_RW=0;

LCM_E=0;

LCM_E=1;

}

//***********************写数据

voidWriteDataLCM(ucharWDLCM)

{

ReadStatusLCM();

P0=WDLCM;

LCM_RS=1;

LCM_RW=0;

LCM_E=0;

LCM_E=1;

}

//*************************显示字符

voidDisplayOneChar(ucharX,ucharY,ucharDData)

{

if(Y)X|=0X40;//Y=1显示第二行,Y=0显示第一行

X|=0X80;

WriteCommandLCM(X,1);//X用来选择哪一位,1是用来忙检测

WriteDataLCM(DData);//DData用来写数据

}

//**************************显示字符串

voidDisplayListChar(ucharX,ucharY,ucharcode*DData)

{

ucharListLength;

ListLength=0;

while(DData[ListLength]!

='\0')

{

if(X;

#include"intrins.h"

#include"STC12(ADCflag).h"

floattemp;

//**********************************延时函数(n=1:

1T8.65ms,12T59.9ms)

voidDelay1(uintn)

{

uintx;

while(n--)

{

x=5000;

while(x--);

}

}

//******************************ADC初始化函数

voidInit_ADC()

{

P1ASF=0xff;//设置P1口为开漏模式,使用AD功能

ADC_RES=0;//AD数据寄存器高8位清空

ADC_RESL=0;//AD数据寄存器低2位清空

ADC_CONTR=ADC_POWER|ADC_SPEEDLL;//打开AD电源,转换周期540

Delay1

(2);//延时

}

//***********************************ADC数据转换函数

uintGet_ADC_Result(ucharch)

{

ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;//开始转换

_nop_();//延时一个机器周期

_nop_();//延时一个机器周期

_nop_();//延时一个机器周期

_nop_();//延时一个机器周期

while(!

(ADC_CONTR&ADC_FLAG));//等待转换结束(ADC_FLAG=0时一直等待,直到变为1跳出)

ADC_CONTR&=~ADC_FLAG;//关闭AD转换

return(ADC_RES*4+ADC_RESL);//返回数据(10位AD值,ADC_RES高8位+ADC_RESL低2位)

}

//************************************ADC数据计算函数

floatCount(ucharch)

{

temp=(float)Get_ADC_Result(ch)*4.60/1024;//4.85为参考电压,1024个“门”,10位AD

returntemp;

}

main.c

//***********************(ma)STC12C5A60S2(ADC查询法10位模式)+1602显示*************************************************************

//马熔

//2012-12-17

//***************************************************************************************************

#include;

#include"intrins.h"

#include"STC12(ADCflag).h"

#include"LCD1602display.h"

#defineucharunsignedchar

#defineuintunsignedint

externfloattemp;

ucharcodestring1[]={"Thevoltageis:

"};

ucharge,shifen;

//*****************************显示函数

voidshow()

{

DisplayListChar(0,0,string1);

DisplayOneChar(1,1,(int)Count(0)+0x30);//个位

DisplayOneChar(2,1,'.');

DisplayOneChar(3,1,(int)(Count(0)*100)%100/10+0x30);//十分位

DisplayOneChar(4,1,(int)(Count(0)*100)%100%10+0x30);//百分位

DisplayOneChar(5,1,'V');

DisplayOneChar(8,1,(int)Count

(1)+0x30);//个位

DisplayOneChar(9,1,'.');

DisplayOneChar(10,1,(int)(Count

(1)*100)%100/10+0x30);//十分位

DisplayOneChar(11,1,(int)(Count

(1)*100)%100%10+0x30);//百分位

DisplayOneChar(12,1,'V');

}

//*******************************主函数

voidmain()

{

InitLCM();//液晶初始化

Init_ADC();//AD转换初始化

while

(1)

{

show();

}

}

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2