標(biāo)題:
STC12C5A60S2片內(nèi)AD4路模擬輸入循環(huán)顯示程序
[打印本頁]
作者:
騰飛的龍
時間:
2015-11-16 14:48
標(biāo)題:
STC12C5A60S2片內(nèi)AD4路模擬輸入循環(huán)顯示程序
效果圖詳見:
http://www.torrancerestoration.com/bbs/dpj-40455-1.html
/**********************************************************
功能 :STC12C5A60S2片內(nèi)4路AD循環(huán)檢測并數(shù)碼管顯示
大數(shù)碼管實驗板 約2秒循環(huán)顯示一次。P1^0-P1^3口
模擬輸入的值
單片機(jī):STC12C5A60S2
晶振 :11.0592M
作者 :蘇義江
時間 ;2015-11-16
********************************************************/
#include<stc12c5a60s2.h>
#include<intrins.h>
#define uint8 unsigned char
#define uint16 unsigned int
//帶小數(shù)點的共陽段碼
uint8 code tab_d[]={0x40,0x79,0x24,0x30,0x19,0x12,
0x02,0x78,0x00,0x10}; //帶點共陽段驅(qū)動
//不帶小數(shù)點的共陽段碼
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轉(zhuǎn)換電源,540個周期轉(zhuǎn)換一次,初始化ADC標(biāo)志位為0,AD轉(zhuǎn)換控制位初始化為0,選擇P1.0作為AD輸入來用。
ADC_RES =0;
ADC_RESL =0;
}
void ADC_Init1(void)
{
ADC_CONTR=0X81;//打開ADC轉(zhuǎn)換電源,540個周期轉(zhuǎn)換一次,初始化ADC標(biāo)志位為0,AD轉(zhuǎn)換控制位初始化為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; //調(diào)節(jié)/后面的數(shù)值調(diào)節(jié)精度
// 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轉(zhuǎn)換電源,540個周期轉(zhuǎn)換一次,初始化ADC標(biāo)志位為0,AD開始轉(zhuǎn)換,選擇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轉(zhuǎn)換電源,540個周期轉(zhuǎn)換一次,初始化ADC標(biāo)志位為0,AD開始轉(zhuǎn)換,選擇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;
}
}
復(fù)制代碼
作者:
22131
時間:
2018-1-24 18:34
#include<stc12c5a60s2.h> 這個文件在哪里找到?怎么添加?
作者:
啦啦啦1234
時間:
2018-1-25 16:36
22131 發(fā)表于 2018-1-24 18:34
#include 這個文件在哪里找到?怎么添加?
去STC官網(wǎng),下載新版isp軟件,里面有頭文件的,輸出.h文件后放入stc安裝文件放頭文件的文件夾里。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1