这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 按键加数的问题!大家帮忙看看哪里写的不对?

共6条 1/1 1 跳转至

按键加数的问题!大家帮忙看看哪里写的不对?

助工
2012-03-01 10:21:01     打赏

大家帮忙看看
在每按一次按键加一时,都是按照10进制的数显示出来了,可是里面的数字还是按照16进制算啊、也就是说我按键加到9,进位变成10了,再往上加,加到15了,然后再加个位就又开始从0开始了,一直这样循环,请大家帮忙看看哪有错!


if(s2==0)
 delay(10);
 if(s2==0)
   {
   delay(10);
   if(key1==1)
    {
    while(s2==0);   //按键按一次加一;
       nian++;
    hang_lcd(1,10);
    jis_1302(nian);
       } 

void jis_1302(unchar heti)
{
  map1=heti;
    date2=map1/16
  date3=map1%16
   if(date3>9)
   {
   date1=(date3+6)>>4;//BCD码转10进制
   date2=date1+date2;
   date3=(date3+6)<<4;
   date3=date3>>=4;
      }
    wiret_1602date(date2+0x30);
  wiret_1602date(date3+0x30); 



关键词: 按键     加数     问题     大家     帮忙     看看     哪里     写的         

专家
2012-03-01 10:44:21     打赏
2楼
 date2=map1/16
  date3=map1%16
你好像是按照16进制的哦

院士
2012-03-01 12:31:35     打赏
3楼
楼主啊~~说实话对楼主的需求不是很明确。
子函数肯定是错的。例如当heti值为16时,data2为1,data3为0,则不进入if语句,无法进行BCD转换了。因此出现了问题,小于16时,显示正常,但是到16后,又从10开始了。

直接保存成十进制数,进行显示?为什么没有采取这种方案啊~~

助工
2012-03-01 13:20:58     打赏
4楼


1、在不操作按键的时候让LCD显示时间;
2、在有按键按下时,我是想把读出来的时间显示出来并在这个基础上实现加一或者减一的操作!

楼上说的直接保存成10进制的话,那修改参数是否也要按照10进制了?
如果那样的话,得把BCD码转换成10进制的了?


助工
2012-03-03 21:55:46     打赏
5楼
?????????????????????????

高工
2012-03-04 13:12:44     打赏
6楼
呵呵,是十六进制啊

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]