1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
關(guān)于單片機AD轉(zhuǎn)換中按鍵控制的問題
[打印本頁]
作者:
機電小生
時間:
2020-5-18 12:37
標題:
關(guān)于單片機AD轉(zhuǎn)換中按鍵控制的問題
這個程序不加按鍵可以正常顯示,加上按鍵之后按鍵不起作用,按鍵功能是按一下采集一個數(shù),想問一下怎么解決?
程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code zixingma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code weixuan[]={0x10,0x20,0x40,0x80};
sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit ALE=P3^3;
sbit P07=P0^7;
sbit key=P3^5;
void key_scan(void);
void caiji(void);
void delay5ms(void)
{
unsigned char i,j;
for(i=10;i>0;i--)
for(j=248;j>0;j--);
}
uchar flag;
void delay(uchar t)
{
while(t--);
}
void disp(uint num)
{
uchar i,zheng,dian1,dian2,dian3;
zheng=num/1000;
dian1=num%1000/100;
dian2=num%100/10;
dian3=num%100%10;
for(i=0;i<4;i++)
{
P1=0xff;
switch(i)
{
case 0:P2=weixuan[ i];P0=zixingma[zheng];P07=0;break;
case 1:P2=weixuan[ i];P0=zixingma[dian1];break;
case 2:P2=weixuan[ i];P0=zixingma[dian2];break;
case 3:P2=weixuan[ i];P0=zixingma[dian3];break;
}
delay(200);
}
}
uint ADC0809(void)
{
uint n;
OE=0;
ST=0;
ALE=0;
ST=1;
ALE=1;
ST=0;
ALE=0;
delay(10);
while(!EOC);
OE=1;
n=P1;
OE=0;
return n;
}
void main()
{
while(1)
{
key_scan();
switch(flag)
{
case 0:caiji(); disp(ADC0809()*19.6078);break;
}
}
}
void key_scan()
{
if(key==0)
{
delay5ms();
if(key==0)
{
flag=0;
while(key==1)
delay5ms();
}
}
}
void caiji()
{
uint ADC0809(void);
}
X7NV7PFTL(O3DV)U9((IGOU.png
(39.93 KB, 下載次數(shù): 95)
下載附件
2020-5-18 12:37 上傳
作者:
211212
時間:
2020-5-18 14:57
寫消抖程序
作者:
szps84
時間:
2020-5-18 15:18
根據(jù)以上的代碼,可以發(fā)現(xiàn),按鍵理應沒有作用。
因為你定義了一個變量flag,沒有進行初始化,所以編譯器會默認為0,此時按鍵根據(jù)程序會執(zhí)行caiji(); disp(ADC0809()*19.6078);break;
運行后,按下按鍵時,flag也會置0,此時仍然會執(zhí)行caiji(); 文中缺少了flag =1 ;的語句!
建議,在按鍵中,添加Flag置1的語句或者在執(zhí)行完caiji()后對flag進行置1操作。以實現(xiàn)按鍵沒有按下時,不執(zhí)行ADC轉(zhuǎn)換函數(shù)。
以上希望對你有所幫助。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1