完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本人在做个设计,单片机通过ad采集电压值,液晶显示,3个按键调节电压上下限,其中2个按键控制加跟减,第三个键是开始采集键,想请教下,ad采集程序,放在第三个键功能下面吗?还是放main下,放在第三个键下面的while(1)的话,就跳不出这个循环了,我后面放在main下
void main() { delay(10); //延时 lcd_init(); //液晶初始化 begindisplay();//开机显示界面 while(1) { keyscan(); //按键扫描 ad_start(); //开启ad采集 } } 我在keyscan()里是有设置界面显示的,跟上面一样写的话,开机显示界面的文字就被后面界面文字覆盖了,不明白问题在哪里了 |
|
相关推荐
13个回答
|
|
第三按键判断改成这样,增加一个全局变量,unsigned char key_3_on = 0,
if(key_ok==0) //确认调节 { delay(5); if(key_ok==0) { while(key_ok!=0); //释放按键 flag=0; //设置键按键次数清零 key_3_on = 1; } } 主程序改成这样, void main() { delay(10); //延时 lcd_init(); //液晶初始化 begindisplay();//开机显示界面 while(1) { keyscan(); //按键扫描 if(key_3_on == 1)ad_start(); //开启ad采集 } } 这样试试吧
最佳答案
|
|
|
|
根据你的操作流程,ad采集程序应该放在按键扫描函数的后面,但是应该增加一个是否是第三个键按下的判断,是则启动ad采集程序
|
|
|
|
第三个键按下的判断有的哦 if(key_ok==0) //确认调节 { delay(5); if(key_ok==0) { while(key_ok!=0); //释放按键 flag=0; //设置键按键次数清零 // lcd_wcmd(0x0c); //取消光标闪烁 while(1) { start_ad(); } } } 这样一个while里,按了这个键,其他键就没反应了。比如已经才采集了,再想改上下限,按其他键没用了,这要怎么办?请指教 |
|
|
|
程序不完整,不知道你的第三个键按下的判断在哪个程序里,另外这个
while(1) { start_ad(); } 执行后就是死循环了,只会不停的执行start_ad(); ,你的思路和程序结构有问题,while不能随便用,特别是while(1) |
|
|
|
第三个键按下的判断程序应该跟加减键的keyscan()程序分开吗?可不可以私聊你,给我个联系方式哈! |
|
|
|
我知道有问题,就是这里想不出问题在哪里,麻烦指导我一下 |
|
|
|
我知道有问题,就是这里想不出问题在哪里,麻烦指导我一下 |
|
|
|
我知道有问题,就是这里想不出问题在哪里,麻烦指导我一下 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
怎么写判断采集到的压力值与压力设置的上下限阈值比较的程序,我的如下,就是运行不出来,急救~ #include #include #include #define uint unsigned int #define uchar unsigned char uint bai,shi,ge,fen,pbai,pshi,pge,pfen; uint flag; uchar i; uchar break1=1;//全局变量,开始键按下后,置-1 uint p; uint p1,p2; //用于判断压力高低用,p1上限,p2下限 ***it lcdrs=P3^5; ***it lcdrw=P3^6; ***it lcden=P3^4; uchar code dis1[] = {"欢迎使用"}; uchar code dis2[] = {"压力系统"}; uchar code dis3[] = {"设置"}; uchar code dis4[] = {"开始"}; uchar code dis5[] ={"设置压力范围"}; uchar code dis6[]={"当前压力"}; uchar code dis7[]={"压力高,放气中.."}; uchar code dis8[]={"压力低,充气中.."}; //uchar code dis9[]={"v"}; //uchar code dis10[]={"cmH2O"}; uchar code dis9[]={"压力正常"}; uchar code dis10[]={"设置完成"}; uchar code dis11[]={"设置中.."}; uchar code pressure[]={"0123456789"}; uchar tab1[] ={"H:35cmH2O"}; //上域 uchar tab2[] ={"L:25cmH2O"}; //下域 uchar tab3[11] ={"电压:0.000v"}; //当前电压值 uchar tab4[14] ={"压力:0000cmH2O"}; //当前压力值 uint yuzhi[3]={35,25,00};//存放阈值数组 void main() { delay(10); //延时 wela=0; //屏蔽数码管位选 dula=0; //屏蔽数码管段选 lcd_init(); begin(); while(1) { keyscan(); //按键扫描 if (break1==-1) { display(); p1=10*tab1[2]+tab1[3]; p2=10*tab2[2]+tab2[3]; if(p2 { lcd_pos(3,0); i = 0; while(dis9 != ' |