咱們的ADC0809電壓表
///////通道編號(hào)的數(shù)碼管顯示函數(shù)///////
void disp_in(uchar a)
{
ADD_A = 0;
ADD_B = 0;
ADD_C = 0;
P0 = numtable[a];
delay(3);
}
///////通道1的AD轉(zhuǎn)換函數(shù)///////
void ADC_1()
{
STA_ALE = 0;
STA_ALE = 1;
ADD_A = 1;
ADD_B = 0;
ADD_C = 1;
ADC_B = 0;
ADC_A = 0;
STA_ALE = 0;
}
///////通道2的AD轉(zhuǎn)換函數(shù)///////
void ADC_2()
{
STA_ALE = 0; STA_ALE = 1;
ADD_A = 1;
ADD_B = 0;
ADD_C = 1;
ADC_B = 0;
ADC_A = 1;
STA_ALE = 0;
}
///////判別是哪條通道AD轉(zhuǎn)換函數(shù)///////
void ADC(uchar ad_dat)
{
if (1 == keynum)
{
ADC_1();
disp();
disp_in(1);
}
else if (2 == keynum)
{
ADC_2();
disp();
disp_in(2);
}
else if (3 == keynum)
{
TR1 = 1;
if (!shift)
{
ADC_1();
disp();
disp_in(1);
}
if (shift)
{
ADC_2();
disp();
disp_in(2);
}
}
else if (16 == keynum)
{
ADC_2();
disp();
disp_in(2);
}
while ( 0 == OE_EOC )
{
keyscan();
if (1 == keynum)
{
disp();
disp_in(1);
}
else if (2 == keynum)
{
disp();
disp_in(2);
}
else if (3 == keynum)
{
TR1 = 1;
if (!shift)
{
disp();
disp_in(1);
}
if (shift)
{
disp();
disp_in(2);
}
}
}
temp = ad_dat*0.0196078;
val_int = (uchar) temp;
val_decimal = (uchar) ((temp - val_int)*100);
}
///////定時(shí)器初始化函數(shù)//////
void timer_init()
{
IE = 0x8a; TMOD = 0x12;
TH0 = 0x14;
TL0 = 0x00;
TR0 = 1;
TH1 = -50000/256;
TL1 = -50000%6;
}
///////主函數(shù)//////
int main ()
{
timer_init();//初始化定時(shí)器
while(1)
{
keyscan();//矩陣鍵盤掃描賦值
if (1 == keynum || 2 == keynum || 3== keynum) //當(dāng)有鍵按下時(shí),啟動(dòng)ADC轉(zhuǎn)換
ADC(P2);
else //否則顯示四個(gè)0
{
disp();
disp_in(0);
}
}
return 0;
}
///////1S顯示切換的定時(shí)中斷函數(shù)(T1)//////
void TIMER(void) interrupt 3
{
static uchar timer;
timer++;
if (20 == timer)
{
timer = 0;
shift = !shift;//用于兩位的1S顯示切換
}
}
///////提供給ADC芯片CLOCK的定時(shí)函數(shù)(T0)//////
void OTHER_CLOCK(void) interrupt 1
{
CLK = !CLK;
}
說說主要遇到的問題和學(xué)到的東西:一個(gè)是因?yàn)橛昧说却樵兎绞絹碜x取ADC0809的AD轉(zhuǎn)換結(jié)果,加上矩陣鍵盤和38譯碼器選址,導(dǎo)致兩個(gè)問題:
1.各個(gè)功能的邏輯關(guān)系混亂。雖然只有幾個(gè)功能模塊,但是也思考了一番才有了新的程序架構(gòu)。還有就是始終沒能適應(yīng)自頂向下的編程思維,比如會(huì)習(xí)慣先編出ADC的START信號(hào)或者選址函數(shù),再去想用在哪里。而不是先直接構(gòu)造一個(gè)ADC處理的框架,再去想細(xì)節(jié)的實(shí)現(xiàn)。
2.還有數(shù)碼管動(dòng)態(tài)顯示不停閃爍。調(diào)試的時(shí)候,也老想著,應(yīng)該就是這樣了吧,改不了了吧,呵呵,可是解決之后再次覺得天無絕人之路啊,
ADD_A = 1;
ADD_B = 0; 這段語句起初P0 = numtable_DE[val_int];是放在首位的,結(jié)果想想是不是因?yàn)橛?8
ADD_C = 0; 譯碼器控制位選擾亂了下一位的段選,移一下位就搞定了……真是奇妙
P0 = numtable_DE[val_int];
delay(1);
看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人
(function(){
var bp = document.createElement('script');
var curProtocol = window.location.protocol.split(':')[0];
if (curProtocol === 'https') {
bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';
}
else {
bp.src = 'http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
團(tuán)隊(duì)合作的效率這次體現(xiàn)得很明顯,特別是繁瑣的畫圖,可是因?yàn)榇蠹覍?shí)踐比較少,結(jié)果很不幸犯了很基礎(chǔ)的錯(cuò)誤,導(dǎo)致成品沒有成功。不知道以后還有機(jī)會(huì)合作不
關(guān)鍵詞:
ADC0809電壓
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評論