free性丰满hd毛多多,久久综合给合久久狠狠狠97色69 ,欧美成人乱码一区二区三区,国产美女久久久亚洲综合,7777久久亚洲中文字幕

0
問(wèn)答首頁(yè) 最新問(wèn)題 熱門(mén)問(wèn)題 等待回答標(biāo)簽廣場(chǎng)
我要提問(wèn)

利用STC12C5A60AD進(jìn)行電壓采集



想用STC12C5A60AD的P1口及其內(nèi)部的AD進(jìn)行電壓采集,看了關(guān)于STC12C5A60AD的AD轉(zhuǎn)換的資料,寫(xiě)了下面這樣的程序,調(diào)了兩三天,可是在液晶上顯示就是零,不知是怎么回事,各位幫忙指點(diǎn)一下,謝謝!
STC12c5a60ad.rar(3.46 KB, 下載次數(shù): 20)2011-12-12 10:49 上傳點(diǎn)擊文件名下載附件
#include
#define uchar unsigned char
#define uint unsigned int

#define? ? comm? ? 0
#define? ? dat? ?1

sfr16 DPTR=0x82;
sbit a=P1^3;
sbit b=P1^4;
sbit rs=P2^7;
sbit rw=P2^6;
sbit e=P2^5;

long v;
uchar bai,shi,ge;

void delay(uint z)
{
? ?? ?? ?uint x,y;

? ?? ?? ?for(x=z;x>0;x--)

? ?? ?? ?for(y=110;y>0;y--);
}


void wr_lcd (uchar dat_comm,uchar content);

void init_lcd (void)
{

? ?? ???wr_lcd (comm,0x30);? ?? ???/*30---基本指令動(dòng)作*/

? ?? ???wr_lcd (comm,0x01);? ?? ???/*清屏,地址指針指向00H*/

? ?? ???wr_lcd (comm,0x06);? ?? ???/*光標(biāo)的移動(dòng)方向*/

? ?? ???wr_lcd (comm,0x0c);? ?? ?? ?/*開(kāi)顯示,關(guān)游標(biāo)*/
}

void wr_lcd (uchar dat_comm,uchar content)? ?? ?//液晶時(shí)序
{
? ?? ?? ?if(dat_comm)
? ?? ?? ?{

? ?? ?? ?? ?? ? rs=1;? ?? ?? ?//data

? ?? ?? ?? ?? ? rw=0;? ?? ???//write

? ?? ?? ?}

? ?? ???else

? ?? ???{

? ?? ?? ?? ?? ???rs=0;? ?? ?? ?? ?? ???//command

? ?? ?? ?? ?? ? rw=0;? ?? ?? ?? ?? ?? ? //write

? ?? ?? ?}

? ?? ?? ?? ?P0=content;? ?? ?? ?? ?? ???//output data or comm

? ?? ?? ?? ?e=1;

? ?? ?? ?? ?delay(10);

? ?? ?? ?? ?e=0;
}

void wrs(uchar p,uchar ba,uchar sh,uchar gee)? ?? ?? ???//寫(xiě)液晶
{

? ?? ?? ?? ???wr_lcd(comm,0x30);

? ?? ?? ?? ???delay(10);

? ?? ?? ?? ???wr_lcd(comm,p);

? ?? ?? ?? ???delay(10);

? ?? ?? ?? ???wr_lcd(dat,0x30+ba);

? ?? ?? ?? ???delay(10);

? ?? ?? ?? ???wr_lcd(dat,0x30+sh);

? ?? ?? ?? ???delay(10);

? ?? ?? ?? ???wr_lcd(dat,0x30+gee);
}


void init()
{

? ?? ?? ?? ? /*ADC初始化*/

? ?? ?? ?? ?AUXR1=0x04;? ?? ?? ?? ???//十位ADC個(gè)人認(rèn)為為右對(duì)齊。

? ?? ?? ?? ?P1ASF=0x07;? ?? ?? ?? ?? ? //取P1口前三個(gè)口為模擬輸入端

? ?? ?? ?? ?ADC_CONTR=0x80;? ?? ???//此寄存器后需加四個(gè)CPU時(shí)鐘延時(shí)才能保證電源被打開(kāi)

? ?? ?? ?? ?delay(30);

? ?? ?? ?? ?EA=1;

? ?? ?? ?? ?EADC=1;

? ?? ?? ?? ?init_lcd ();

? ?? ?? ???a=0;

? ?? ?? ???b=0;

? ?? ?? ???bai=0;

? ?? ?? ???shi=0;

? ?? ?? ???ge=0;
? ?? ?
? ?? ?? ???ADC_CONTR=0x88;? ?? ?? ?? ???//啟動(dòng)AD轉(zhuǎn)換

? ?? ?? ???delay(1);

}
void main()
{

? ?? ?? ???init();

? ?? ?? ? while(1);
}
void adc() interrupt 5
{
? ?? ???DPH=ADC_RES;

? ?? ???DPL=ADC_RESL;? ?? ?? ?? ???//將ADC轉(zhuǎn)換的結(jié)果送給DPTR

? ?? ???v=DPTR;

? ?? ?? ?v=v/1024;

? ?? ?? ?v=v*5;? ?? ?? ?//轉(zhuǎn)換成十進(jìn)制數(shù)

? ?? ?? ?bai=v/100;

? ?? ?? ?shi=v%100/10;

? ?? ?? ?ge=v%10;

? ?? ?? ?ADC_CONTR=0x80;? ?? ?? ???///此處要加AD中斷標(biāo)志清零

? ?? ???delay(30);

? ?? ?? ?wrs(0x83,bai,shi,ge);? ?? ?? ???//將數(shù)據(jù)送到液晶顯示

? ?? ?? ?delay(10);

? ?? ?? ?ADC_CONTR=0x88;? ?? ?? ???//此寄存器后需加四個(gè)CPU時(shí)鐘延時(shí)才能保證參數(shù)被寫(xiě)入

? ?? ?? ?delay(1);

}
提問(wèn)者:Elva_chen 地點(diǎn):- 瀏覽次數(shù):7893 提問(wèn)時(shí)間:05-08 05:18
我有更好的答案
提 交
8條回答
dahairenlyy 05-16 03:35
你要發(fā)在程序的版面。
iecctv 05-10 15:52
誰(shuí)用過(guò)STC12C5A60AD中AD轉(zhuǎn)換器,幫忙看指點(diǎn)一下,謝謝!
riverdj 05-17 20:13
1、采集的電壓是3.6伏左右,用P1.0口做采集電壓做AD的輸入,P1ASF賦的值是0x07,AUXR1賦的值是0x04(ADRJ賦值為1,取十位AD轉(zhuǎn)換數(shù)據(jù))。
2、用的是中斷方式,總中斷和AD中斷都打開(kāi)了,先啟動(dòng)AD的電源,延時(shí)了一段時(shí)間再啟動(dòng)的AD轉(zhuǎn)換,通過(guò)幾天的程序調(diào)試感覺(jué)能進(jìn)入AD中斷,我在AD中斷函數(shù)中進(jìn)行數(shù)據(jù)處理,然后寫(xiě)到夜晶上面,可是液晶顯示就是零,不知是怎么樣回事。
xf20160629 05-09 23:30
粗看了一下,你主程序的循環(huán)里面,有啟動(dòng)ADC轉(zhuǎn)換的語(yǔ)句或信號(hào)嗎?
深圳市名晟電子 05-15 02:25
在主程序中調(diào)用了 init() 初始化程序,在初始化程序中有啟動(dòng)AD轉(zhuǎn)換的語(yǔ)句。
60user42 05-15 00:13
你要不停的循環(huán)觸發(fā)試試
哇哈哈1209 05-09 14:16
好,我試一下
jjdwe 05-15 13:16
問(wèn)題已經(jīng)弄懂了,計(jì)算電壓值時(shí),應(yīng)將ADC-RES中的值先乘以5再除以256(后來(lái)改用八位AD了),就能得到正確的值,如果將ADC-RES中的值先除以256,就會(huì)變成小數(shù)了,整數(shù)部分是零,再賦給uchar型的變量,那變量的值就是零了。
我就是先除以256,再賦給uchar型的變量,然后變量的整數(shù)部分就是零了,結(jié)果送出的值就是零,液晶顯示結(jié)果就是零。
撰寫(xiě)答案
提 交
1 / 3
1 / 3