[AVR单片机] 按键自加1问题,求大神指导

[复制链接]
1045|5
 楼主| qazq123 发表于 2015-8-26 09:04 | 显示全部楼层 |阅读模式
本帖最后由 qazq123 于 2015-8-26 09:11 编辑
  1. void  processK1_add(void) //目标:实现按键自加1   但是只能实现 1和8.如果把i用全局变量取代,就会变成双数正确,单数乱码。
  2. {
  3. uchar i;
  4. i = led_buff_CT[3-scan] + 1;  //led_buff_CT[]初始化是{1,0,0,0}存放CT变比,(3-scan)相当于闪烁位
  5.                                   取闪烁位的值加1 赋值给i
  6. if(i==10)
  7. {
  8. i = 0;
  9. }
  10. led_buff_CT[3-scan] = duan[i];//duan[i]是存放0--9数值的数组,i为几,相当于duan[i]为几。
  11.                                 闪烁位的值存放在相应的CT变比数组

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

 楼主| 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[]。。。。我们暂且不看它可好,如果你能说明白它干嘛用的,我可以帮你。
还有,你按键加个消抖吧,不知道你有没有加。。。
希望你能看懂,如果不懂附上全代码,我可以帮你改。
  1. void processK1_add(void)
  2. {
  3.         uchar i;
  4.         i ++;//按键自增
  5.         i = i%10;//只显示0~9
  6.         led_buff[3-scan] = duan[i];
  7.         display();//希望你这个函数里面是显示led_buff[];
  8.         display();
  9.         display();
  10. }

评分

参与人数 1威望 +1 收起 理由
qazq123 + 1 淡定

查看全部评分

 楼主| qazq123 发表于 2015-9-17 15:07 | 显示全部楼层
小强强12138 发表于 2015-9-2 18:25
实在无法理解你这个是干嘛用的//led_buff_CT[3-scan]
如果只是单纯的一个数码管,用数组干嘛?还有,scan是 ...

已经解决了。 那个数组是用来存储一个变量值,可让以后要用的时候直接调用。
 楼主| qazq123 发表于 2015-9-17 15:09 | 显示全部楼层
qazq123 发表于 2015-9-17 15:07
已经解决了。 那个数组是用来存储一个变量值,可让以后要用的时候直接调用。 ...

谢谢了,最近在忙另外一个问题。没注意看回复。  我在做一个交流的三相电压表,现在校验这块实在不懂,能问下你会吗?求教一教~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

163

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部