打印
[AVR单片机]

按键自加1问题,求大神指导

[复制链接]
828|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qazq123|  楼主 | 2015-8-26 09:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 qazq123 于 2015-8-26 09:11 编辑
void  processK1_add(void) //目标:实现按键自加1   但是只能实现 1和8.如果把i用全局变量取代,就会变成双数正确,单数乱码。
{
uchar i;
i = led_buff_CT[3-scan] + 1;  //led_buff_CT[]初始化是{1,0,0,0}存放CT变比,(3-scan)相当于闪烁位
                                  取闪烁位的值加1 赋值给i
if(i==10)
{
i = 0;
}
led_buff_CT[3-scan] = duan[i];//duan[i]是存放0--9数值的数组,i为几,相当于duan[i]为几。
                                闪烁位的值存放在相应的CT变比数组

led_buff[3-scan] = duan[i]; //led_buff[]为显示的数组,相当于闪烁位数字自加1后显示在数码管上。
display();                // 显示函数,替代延时函数
display();
display();
}

相关帖子

沙发
qazq123|  楼主 | 2015-8-26 09:37 | 只看该作者
问题在i = led_buff_CT[3-scan] 中,  这个数组的值读取不出来 。有人知道吗

使用特权

评论回复
板凳
xiang1029| | 2015-8-30 20:56 | 只看该作者
小白看不懂,路过顶

使用特权

评论回复
地板
小强强12138| | 2015-9-2 18:25 | 只看该作者
实在无法理解你这个是干嘛用的//led_buff_CT[3-scan]
如果只是单纯的一个数码管,用数组干嘛?还有,scan是什么?
如果你这个是表示4个数码管,那你只给其中一个赋值了。

按照我对你这段代码的理解
duan[]={0,1,2,3,…,9};
led_buff[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
至于led_buff_CT[]。。。。我们暂且不看它可好,如果你能说明白它干嘛用的,我可以帮你。
还有,你按键加个消抖吧,不知道你有没有加。。。
希望你能看懂,如果不懂附上全代码,我可以帮你改。
void processK1_add(void) 
{
        uchar i;
        i ++;//按键自增
        i = i%10;//只显示0~9
        led_buff[3-scan] = duan[i];
        display();//希望你这个函数里面是显示led_buff[];
        display();
        display();
}

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
qazq123 + 1 淡定
5
qazq123|  楼主 | 2015-9-17 15:07 | 只看该作者
小强强12138 发表于 2015-9-2 18:25
实在无法理解你这个是干嘛用的//led_buff_CT[3-scan]
如果只是单纯的一个数码管,用数组干嘛?还有,scan是 ...

已经解决了。 那个数组是用来存储一个变量值,可让以后要用的时候直接调用。

使用特权

评论回复
6
qazq123|  楼主 | 2015-9-17 15:09 | 只看该作者
qazq123 发表于 2015-9-17 15:07
已经解决了。 那个数组是用来存储一个变量值,可让以后要用的时候直接调用。 ...

谢谢了,最近在忙另外一个问题。没注意看回复。  我在做一个交流的三相电压表,现在校验这块实在不懂,能问下你会吗?求教一教~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

163

帖子

0

粉丝