久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開始

搜索
查看: 4400|回復(fù): 9
收起左側(cè)

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

[復(fù)制鏈接]
ID:721062 發(fā)表于 2020-4-26 00:26 | 顯示全部樓層 |閱讀模式
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

回復(fù)

使用道具 舉報(bào)

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

矩陣按鍵掃描做成一個(gè)函數(shù)就只返回鍵值就行了,用數(shù)組做個(gè)簡(jiǎn)單的鍵盤映射,用一條語句就能查表取得按鍵對(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)

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

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)

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)

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)

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)

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)

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è)算式都顯示出來,樓下的那個(gè)辦法可以。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 免费看91| av网站在线免费观看 | 日韩中文字幕在线观看 | 91在线视频免费观看 | 久久夜视频 | 伊人网影院 | 久久久久91| 久久r精品 | 中文字幕在线剧情 | 夜夜爽99久久国产综合精品女不卡 | 久久国产精品-国产精品 | 欧美日韩国产高清 | 999久久 | 亚洲成人久久久 | 中文字幕日韩一区 | 色网站在线 | 女同av亚洲女人天堂 | 美女逼网站| 国产免费一区二区三区 | 成人国产毛片 | 永久av| 久久精品a级毛片 | 国产精品日韩在线 | 色黄视频在线 | 黄色一级视频 | 国产一区二区影院 | 日本成年免费网站 | 99久久精品一区二区毛片吞精 | 精品三级在线观看 | 亚洲精选一区 | 日日干日日 | 二区亚洲| 黄色av一区| 日韩一级黄色毛片 | 国产69精品久久久久777 | 黄a免费看 | 国产一区二区三区在线观看免费 | 午夜视频在线播放 | 亚洲精品免费在线 | 九九热免费视频在线观看 | 日韩在线精品 |