欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4828|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

求大神幫調(diào)試51單片機(jī)簡(jiǎn)易計(jì)算器程序,功能基本正確,只有一個(gè)問題,求大神幫...

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:721062 發(fā)表于 2020-4-26 00:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
100黑幣
本帖最后由 一半借我做衣衫 于 2020-4-26 00:40 編輯

問題如下:
輸入被減數(shù)“321”按下“-”符號(hào)后,它顯示為“32-”
繼續(xù)輸入減數(shù)“36”后,它顯示為“32-36”
按下“=”鍵后,顯示為“32-36=29”
其問題在于,被減數(shù)個(gè)位上的數(shù)“1”被“-”覆蓋未顯示,且被減數(shù)和減數(shù)的最后一位都沒參加運(yùn)算,即我輸入 的是321-36,單片機(jī)實(shí)際計(jì)算的是32-3=28
下面是項(xiàng)目文件,C文件也在里面

改.zip

47.25 KB, 下載次數(shù): 17

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:462827 發(fā)表于 2020-4-26 02:15 | 只看該作者
你的按鍵處理和顯示處理都搞得很不好,框架比較差不易維護(hù)。

矩陣按鍵掃描做成一個(gè)函數(shù)就只返回鍵值就行了,用數(shù)組做個(gè)簡(jiǎn)單的鍵盤映射,用一條語(yǔ)句就能查表取得按鍵對(duì)應(yīng)的數(shù)字或功能了,不用搞一大堆的switch-case 。
回復(fù)

使用道具 舉報(bào)

板凳
ID:723156 發(fā)表于 2020-4-26 12:47 | 只看該作者
我覺得只是顯示的問題,分開顯示試一下。else if(xx!=0&&xf==1)xf=0,bei=0,LCDWriteCommand(0x01),LCDWriteData(xx);  //剛選擇完運(yùn)算符號(hào),被加減乘除的數(shù)已經(jīng)輸入完
                        else if(xx!=0&&xf==0)LCDWriteCommand(0x01),LCDWriteData(shu);         //        符號(hào)已選,正在輸入加減乘除的數(shù)
回復(fù)

使用道具 舉報(bào)

地板
ID:592807 發(fā)表于 2020-4-26 13:46 | 只看該作者
你這是顯示覆蓋問題,很好解決的,方法很多,舉例2種1 弄個(gè)全局變量標(biāo)記數(shù)字坐標(biāo),顯示完第一個(gè)數(shù)字(字符)后坐標(biāo)自
2弄個(gè)數(shù)組 比如 a[10],然后賦值 a[i++] = 輸入字符;最后從頭到尾顯示數(shù)組內(nèi)容
回復(fù)

使用道具 舉報(bào)

5#
ID:592807 發(fā)表于 2020-4-26 14:11 | 只看該作者
抱歉,我太年輕了,看了一下你的問題沒看全就會(huì)貼了,重看了一下你的代碼,發(fā)現(xiàn)是這樣的。1  switch函數(shù)沒有帶default語(yǔ)柄                         這問題不大

2  按鍵‘=’使用了四個(gè)if判斷加減乘除還用abcd指代,如果我按完 加號(hào)(a = 1)再按減號(hào)(b= 1)會(huì)怎么樣
           case(14):if(a==1)
                           {result=temp+result;a=0;key=0;}
                        if(b==1)
                           {result=temp-result;b=0;key=0;}
                        if(c==1)
                           {result=temp*result;c=0;key=0;}
                        if(d==1)
                           {
                              if(result==0) {error=1;result=0;d=0;key=0;}
                               else{result=temp/result;d=0;key=0;}
                           }


3  你在while(1)里面定義變量是認(rèn)真的嗎?看到這里可以十分肯定告訴你你的錯(cuò)誤99%出現(xiàn)在這
void main()
{
        LCD_Init();         
    while(1)
        {
             static long key=0,result=0,temp=0,a=0,b=0,c=0,d=0;  
             unsigned char i=0;



回復(fù)

使用道具 舉報(bào)

6#
ID:592807 發(fā)表于 2020-4-26 14:12 | 只看該作者
hantu 發(fā)表于 2020-4-26 02:15
你的按鍵處理和顯示處理都搞得很不好,框架比較差不易維護(hù)。

矩陣按鍵掃描做成一個(gè)函數(shù)就只返回鍵值就行 ...

void main()
{
        LCD_Init();            
    while(1)
        {
static long key=0,result=0,temp=0,a=0,b=0,c=0,d=0;   
unsigned char i=0;


看看他在while(1)里面做了啥,定義變量,
回復(fù)

使用道具 舉報(bào)

7#
ID:721062 發(fā)表于 2020-4-26 16:37 | 只看該作者
黃youhui 發(fā)表于 2020-4-26 14:11
抱歉,我太年輕了,看了一下你的問題沒看全就會(huì)貼了,重看了一下你的代碼,發(fā)現(xiàn)是這樣的。1  switch函數(shù)沒 ...

非常感謝你給我指出的問題 ,我是新手,你提出的3個(gè)問題,第1個(gè)我已加了default:break;,第2個(gè)我還沒想好怎么弄。第3個(gè)我把變量第一在了為了外面。可是現(xiàn)在問題更嚴(yán)重了...按一下1會(huì)出現(xiàn)一排1了,計(jì)算功能也紊亂了,大神能講一下解決辦法嗎,改了好幾天了,不是專業(yè)學(xué)這個(gè)的,知識(shí)有限,希望大神施以援手,小弟感激不盡
回復(fù)

使用道具 舉報(bào)

8#
ID:721062 發(fā)表于 2020-4-26 16:38 | 只看該作者
LiUCONG520 發(fā)表于 2020-4-26 12:47
我覺得只是顯示的問題,分開顯示試一下。else if(xx!=0&&xf==1)xf=0,bei=0,LCDWriteCommand(0x01),LCDWrite ...

您說的分開顯示是什么意思,在下菜鳥入門,沒明白大神的意思
回復(fù)

使用道具 舉報(bào)

9#
ID:592807 發(fā)表于 2020-4-26 20:52 | 只看該作者
想幫你改代碼,但是想想還是算了,世界上最難的兩件事之一就是把自己的思想放進(jìn)別人的大腦里,想法上的偏差可能讓我寫的代碼你看不懂,
再加上我不熟悉你這LCD不清楚指令 。


你說的第二種其實(shí)
加法 A = 1
減法A=2
乘法A=3
除法A=4
沒輸入A=0
就好了


至于第三種一直輸出1你是你的變量shu='1',這個(gè)標(biāo)志一直在沒清空所以一直打印1。
另外你輸入運(yùn)算符號(hào)后result清空了嗎
  for(i=i-1;i=>0;i--)
  {
    LCDWriteData(n[i]+48);
  }








回復(fù)

使用道具 舉報(bào)

10#
ID:723156 發(fā)表于 2020-4-27 09:59 | 只看該作者
一半借我做衣衫 發(fā)表于 2020-4-26 16:38
您說的分開顯示是什么意思,在下菜鳥入門,沒明白大神的意思

我的意思是 當(dāng)你輸入321再輸入‘-’ 時(shí), 把321清除  只顯示一個(gè) ‘-’,再輸入數(shù)字36時(shí),把‘-’也清除掉。就像一般的計(jì)算機(jī) 這樣就不會(huì)顯示覆蓋,如果你一定想把整個(gè)算式都顯示出來(lái),樓下的那個(gè)辦法可以。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表