标题:
STC12C5A60S2片内AD4路模拟输入循环显示程序
[打印本页]
作者:
腾飞的龙
时间:
2015-11-16 14:48
标题:
STC12C5A60S2片内AD4路模拟输入循环显示程序
效果图详见:
http://www.51hei.com/bbs/dpj-40455-1.html
/**********************************************************
功能 :STC12C5A60S2片内4路AD循环检测并数码管显示
大数码管实验板 约2秒循环显示一次。P1^0-P1^3口
模拟输入的值
单片机:STC12C5A60S2
晶振 :11.0592M
作者 :苏义江
时间 ;2015-11-16
********************************************************/
#include<stc12c5a60s2.h>
#include<intrins.h>
#define uint8 unsigned char
#define uint16 unsigned int
//带小数点的共阳段码
uint8 code tab_d[]={0x40,0x79,0x24,0x30,0x19,0x12,
0x02,0x78,0x00,0x10}; //带点共阳段驱动
//不带小数点的共阳段码
uint8 code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
//sfr P1ASF=0x9d;
//sfr ADC_CONTR=0xbc;
//sfr ADC_RES =0xbd;
//sfr ADC_RESL =0xbe;
sbit wei=P0^6;
sbit duan=P0^7;
uint8 datah0=0;
uint8 datah1=0;
uint8 datah2=0;
uint8 datah3=0;
uint8 tab[4];
void delayms(uint16 z)
{
uint16 x,y;
for(x=z;x>0;x--)
for(y=620;y>0;y--);
}
void ADC_Init0(void)
{
P1ASF=0x0F;//P1.0,P1.1,P1.2,P1.3口作为模拟功能AD使用。
ADC_CONTR=0X80;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD转换控制位初始化为0,选择P1.0作为AD输入来用。
ADC_RES =0;
ADC_RESL =0;
}
void ADC_Init1(void)
{
ADC_CONTR=0X81;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD转换控制位初始化为0,选择P1.1作为AD输入来用。
}
void ADC_Init2(void)
{
ADC_CONTR=0X82;
}
void ADC_Init3(void)
{
ADC_CONTR=0X83;
}
void display(uint8 num)
{
uint8 hundred,ten,one;
float a;
int b;
a=ADC_RES;
a=(ADC_RES+0.05)/55; //调节/后面的数值调节精度
// a=(num+0.005)/51;
a=a*100;
b=a;
hundred=b/100;
ten=b%100/10;
one=b%10;
wei=1;
P2=0XFE;
wei=0;
duan=1;
P2=tab_d[hundred];
duan=0;
delayms(10);
P2=0xff;
wei=1;
P2=0XFd;
wei=0;
duan=1;
P2=table[ten];
duan=0;
delayms(10);
P2=0xff;
wei=1;
P2=0XFb;
wei=0;
duan=1;
P2=table[one];
duan=0;
delayms(10);
P2=0xff;
}
void main()
{
uint8 i;
ADC_Init0();
ADC_Init1();
ADC_Init2();
ADC_Init3();
while(1)
{
ADC_CONTR=0X80;
_nop_();
_nop_();
_nop_();
_nop_();
datah0=ADC_RES;
/***************************/
ADC_CONTR=0X81;
_nop_();
_nop_();
_nop_();
_nop_();
datah1=ADC_RES;
ADC_CONTR=0X82;
_nop_();
_nop_();
_nop_();
_nop_();
datah2=ADC_RES;
ADC_CONTR=0X83;
_nop_();
_nop_();
_nop_();
_nop_();
datah3=ADC_RES;
ADC_CONTR=0X88;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD开始转换,选择P1.0作为AD输入来用。
_nop_();
_nop_();
_nop_();
_nop_();/*以上是四个时钟延时*/
for(i=0;i<50;i++)
{
display(table[datah0]);
delayms(5);
}
delayms(2000);
// R_S_Byte(datah0);
tab[0]=datah0;
ADC_CONTR=0X89;//打开ADC转换电源,540个周期转换一次,初始化ADC标志位为0,AD开始转换,选择P1.1作为AD输入来用。
_nop_();
_nop_();
_nop_();
_nop_();
/*以上是四个时钟延时*/
for(i=0;i<50;i++)
{
display(table[datah1]);
delayms(5);
}
delayms(2000);
// R_S_Byte(datah1);
tab[1]=datah1;
ADC_CONTR=0X8A;
_nop_();
_nop_();
_nop_();
_nop_();
for(i=0;i<50;i++)
{
display(table[datah2]);
delayms(5);
}
delayms(2000);
// R_S_Byte(datah2);
tab[2]=datah2;
ADC_CONTR=0X8B;
_nop_();
_nop_();
_nop_();
_nop_();
for(i=0;i<50;i++)
{
display(table[datah3]);
delayms(5);
}
delayms(2000);
// R_S_Byte(datah3);
tab[3]=datah3;
}
}
复制代码
作者:
22131
时间:
2018-1-24 18:34
#include<stc12c5a60s2.h> 这个文件在哪里找到?怎么添加?
作者:
啦啦啦1234
时间:
2018-1-25 16:36
22131 发表于 2018-1-24 18:34
#include 这个文件在哪里找到?怎么添加?
去STC官网,下载新版isp软件,里面有头文件的,输出.h文件后放入stc安装文件放头文件的文件夹里。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1