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

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

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)計(jì)算器程序+仿真文件+電路圖下載 采用1602液晶顯示

  [復(fù)制鏈接]
ID:70650 發(fā)表于 2014-12-18 00:33 | 顯示全部樓層 |閱讀模式
感謝51hei論壇提供這么好的交流平臺(tái),這是一個(gè)用51單片機(jī)做的計(jì)算機(jī)程序 帶仿真文件,大家可以下載本帖的附件。
181042qpvm5zmf3xd5pxx0.jpg.thumb.jpg

181043eypnnufbkue7kic3.jpg.thumb.jpg


181044jg6w6lnnkkvhye8y.jpg.thumb.jpg






初級(jí)計(jì)算器仿真文件.rar

19.49 KB, 下載次數(shù): 233, 下載積分: 黑幣 -5

初級(jí)計(jì)算器程序.zip

48.46 KB, 下載次數(shù): 321, 下載積分: 黑幣 -5

Last Loaded 初級(jí)計(jì)算器 電路圖.rar

19.5 KB, 下載次數(shù): 169, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 2黑幣 +9 收起 理由
小甜甜-L + 4 很給力!
jhhw + 5

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:70650 發(fā)表于 2014-12-18 00:34 | 顯示全部樓層
本帖最后由 jiujiu 于 2014-12-18 00:35 編輯

main.c文件:
  1. #include "keyscan.h"
  2. #include "LCD1602.h"
  3. #include<stdio.h>

  4. uchar dis_table0[16]="                ";  //第一行        a+b=
  5. uchar dis_table1[16]="                ";  //第二行         c
  6. uchar temp[8]="        ";//數(shù)據(jù)b輸入存儲(chǔ)
  7. uchar code Hello_0[]="   Yin Shilong  ";
  8. uchar code Hello_1[]="   2012-12-31   ";
  9. int a,b,c;//EG:a+b=c
  10. uchar num;   //按鍵值
  11. uchar dis,dis_temp;   //顯示索引
  12. uchar sign;  //符號(hào)記錄
  13. uchar first;
  14. uchar qing;

  15. int Dis_ab(int a,int b,uchar sign)
  16. {
  17.      int c;
  18.      if(sign=='+') c=a+b;
  19.      if(sign=='-') c=a-b;
  20.      if(sign=='x') c=a*b;
  21.      if(sign=='/') c=a/b;
  22.      return c;
  23. }

  24. void main()
  25. {
  26.         LCD_init();
  27.         showstring(0,0,Hello_0);
  28.         showstring(0,1,Hello_1);
  29.         delayms(500);
  30.           while(1)
  31.           {
  32.                     num=KeyPro();//鍵盤(pán)掃描
  33.           if(num!=0xff) //按鍵按下
  34.               {          
  35.                
  36.               if(('+'==num) || ('-'==num) || ('x'==num)|| ('/'==num) || ('='==num))//輸入數(shù)字最大值8,輸入符號(hào)表示輸入結(jié)束
  37.                       {    //符號(hào)鍵
  38.                    if(first==0)
  39.                    {  if((num=='+')||(num=='-')||(num=='x')||(num=='/')) first=1;//第一個(gè)數(shù)輸入結(jié)束
  40.                       if(num=='+')
  41.                        {   sign='+';  //記錄
  42.                            dis_table0[dis]='+'; //先顯示出來(lái)
  43.                            sscanf(dis_table0,"%d[^+]",&a); //把第一個(gè)數(shù)取出賦值給a,詳情參考本函數(shù)用法
  44.                         
  45.                        }
  46.                        if(num=='-')
  47.                        {   sign='-';
  48.                            dis_table0[dis]='-'; //顯示
  49.                            sscanf(dis_table0,"%d[^-]",&a);
  50.                        }
  51.                        if(num=='x')
  52.                        {   sign='x';
  53.                            dis_table0[dis]='x'; //顯示
  54.                            sscanf(dis_table0,"%d[^x]",&a);
  55.                        }
  56.                        if(num=='/')
  57.                        {   sign='/';
  58.                            dis_table0[dis]='/'; //顯示
  59.                            sscanf(dis_table0,"%d[^/]",&a);
  60.                        }
  61.                        dis++;dis%=16;
  62.          
  63.                    }

  64.                    if(first==1)
  65.                    {
  66.                         if(num=='=')
  67.                         {
  68.                             dis_table0[dis]='='; //顯示
  69.                             dis++;dis%=16;
  70.                             sscanf(temp,"%d",&b); //取b
  71.                             c=Dis_ab(a,b,sign);
  72.                             sprintf(dis_table1,"%d",c);
  73.                         }
  74.                    }
  75.                   
  76.                       }
  77.                       else
  78.                       {    //數(shù)字鍵
  79.                       
  80.                   if(num==10)   //清除鍵
  81.                   {
  82.                       first=0;sign=0; //清標(biāo)志
  83.                       dis=0;dis_temp=0;
  84.                       a=b=c=0;
  85.                       for(qing=0;qing<16;qing++)
  86.                       {
  87.                          dis_table0[qing]=' ';    //清顯示
  88.                          dis_table1[qing]=' ';
  89.                       }
  90.                   
  91.                   }
  92.                   else
  93.                   {
  94.                        dis_table0[dis]=num+'0';  //供顯示用
  95.                        dis++;dis%=16;         
  96.                        if(first==1)
  97.                        {
  98.                            temp[dis_temp]=num+'0';  //存下b的值
  99.                            dis_temp++;dis_temp%=8;
  100.                        }
  101.                   }


  102.                                              
  103.                       }
  104.               
  105.                 
  106.               
  107.           }

  108.           showstring(0,0,dis_table0);
  109.           showstring(0,1,dis_table1);


  110.           }


  111. }






















復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

ID:70650 發(fā)表于 2014-12-18 00:36 | 顯示全部樓層
keyscan.c文件:
  1.    /*-----------------------------------------------
  2.   名稱:矩陣鍵盤(pán)
  3.   編寫(xiě):殷士龍
  4.   日期:2012.12.31
  5. ------------------------------------------------*/
  6. //#include <reg52.h> //包含頭文件,一般情況不需要改動(dòng),頭文件包含特殊功能寄存器的定義
  7. #include "keyscan.h"
  8. #include "LCD1602.h"

  9. //#define KeyPort P1

  10. /*------------------------------------------------
  11. 按鍵掃描函數(shù),返回掃描鍵值
  12. ------------------------------------------------*/
  13. unsigned char KeyScan(void)  //鍵盤(pán)掃描函數(shù),使用行列反轉(zhuǎn)掃描法
  14. {
  15. unsigned char cord_h,cord_l;//行列值中間變量
  16. KeyPort=0x0f;            //行線輸出全為1
  17. cord_h=KeyPort&0x0f;     //讀入行線值
  18. if(cord_h!=0x0f)    //先檢測(cè)有無(wú)按鍵按下
  19. {
  20.    delayms(10);        //去抖
  21.    if((KeyPort&0x0f)!=0x0f)
  22.    {
  23.     cord_h=KeyPort&0x0f;  //讀入行線值
  24.     KeyPort=cord_h|0xf0;  //輸出當(dāng)前列線值
  25.     cord_l=KeyPort&0xf0;  //讀入列線值

  26.     while((KeyPort&0xf0)!=0xf0);//等待松開(kāi)并輸出

  27.     return(cord_h+cord_l);//鍵盤(pán)最后組合碼值
  28.    }
  29.   }
  30.   return(0xff);     //返回該值
  31. }
  32. /*------------------------------------------------
  33.           按鍵值處理函數(shù),返回掃鍵值
  34.            可以根據(jù)需要改變返回值

  35.                           | 7 | 8 | 9 | / |  
  36.                           | 4 | 5 | 6 | X |  
  37.                           | 1 | 2 | 3 | - |  
  38.                           | C | 0 | = | + |
  39. ------------------------------------------------*/
  40. unsigned char KeyPro(void)
  41. {
  42. switch(KeyScan())
  43. {
  44.   case 0xee:return 7  ;break;//0 按下相應(yīng)的鍵顯示相對(duì)應(yīng)的碼值
  45.   case 0xde:return 8  ;break;//1
  46.   case 0xbe:return 9  ;break;//2
  47.   case 0x7e:return '/';break;//3

  48.   case 0xed:return 4  ;break;//4
  49.   case 0xdd:return 5  ;break;//5
  50.   case 0xbd:return 6  ;break;//6
  51.   case 0x7d:return 'x';break;//7

  52.   case 0xeb:return 1  ;break;//8
  53.   case 0xdb:return 2  ;break;//9
  54.   case 0xbb:return 3  ;break;//a
  55.   case 0x7b:return '-';break;//b

  56.   case 0xe7:return 10 ;break;//c         清除鍵
  57.   case 0xd7:return 0  ;break;//d
  58.   case 0xb7:return '=';break;//e
  59.   case 0x77:return '+';break;//f
  60.   default:return 0xff;break;
  61. }
  62. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:70614 發(fā)表于 2014-12-19 10:10 | 顯示全部樓層
我也要制作一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:71725 發(fā)表于 2015-1-6 16:25 | 顯示全部樓層
多謝啦
回復(fù)

使用道具 舉報(bào)

ID:83915 發(fā)表于 2015-6-27 14:18 | 顯示全部樓層
為什么我下載到 單片機(jī)上 結(jié)果后面會(huì)顯示一個(gè)奇怪的符號(hào)
回復(fù)

使用道具 舉報(bào)

ID:150573 發(fā)表于 2016-12-6 21:03 | 顯示全部樓層
我想學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

ID:152867 發(fā)表于 2016-12-7 12:43 | 顯示全部樓層
感謝分享啊
回復(fù)

使用道具 舉報(bào)

ID:158779 發(fā)表于 2016-12-30 15:36 | 顯示全部樓層
hao aaaaaaaaaaaaaaaaaaaaaaaaaa
回復(fù)

使用道具 舉報(bào)

ID:161466 發(fā)表于 2017-1-12 14:39 | 顯示全部樓層
哎喲,感覺(jué)不錯(cuò),學(xué)習(xí)學(xué)習(xí),
回復(fù)

使用道具 舉報(bào)

ID:162997 發(fā)表于 2017-1-27 03:05 | 顯示全部樓層
這個(gè)可以實(shí)現(xiàn)小數(shù)嗎?
回復(fù)

使用道具 舉報(bào)

ID:122366 發(fā)表于 2017-3-31 21:01 | 顯示全部樓層

感謝分享
回復(fù)

使用道具 舉報(bào)

ID:118238 發(fā)表于 2017-6-27 13:24 | 顯示全部樓層
謝謝樓主的分享
回復(fù)

使用道具 舉報(bào)

ID:118238 發(fā)表于 2017-6-27 13:37 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:263260 發(fā)表于 2017-12-18 18:11 | 顯示全部樓層
。。。。。大佬們  厲害了
回復(fù)

使用道具 舉報(bào)

ID:316073 發(fā)表于 2018-6-28 19:01 | 顯示全部樓層
謝謝你,正準(zhǔn)備做這個(gè)
回復(fù)

使用道具 舉報(bào)

ID:414974 發(fā)表于 2018-10-24 23:12 | 顯示全部樓層
大佬,好像要剩下的代碼
回復(fù)

使用道具 舉報(bào)

ID:440997 發(fā)表于 2018-12-7 15:20 | 顯示全部樓層
可以實(shí)現(xiàn)連續(xù)運(yùn)算嘛
回復(fù)

使用道具 舉報(bào)

ID:428761 發(fā)表于 2018-12-7 18:00 | 顯示全部樓層
大佬們,為什么我改了串口還是沒(méi)用呀。。。
回復(fù)

使用道具 舉報(bào)

ID:471463 發(fā)表于 2019-2-20 22:23 | 顯示全部樓層
為什么我按符號(hào)鍵沒(méi)有反應(yīng),哭遼
回復(fù)

使用道具 舉報(bào)

ID:492496 發(fā)表于 2019-3-24 17:58 | 顯示全部樓層
樓主,你這個(gè)D0到D7怎么仿真時(shí)出現(xiàn)了問(wèn)題啊,你做的時(shí)候仿真成功了嗎?
回復(fù)

使用道具 舉報(bào)

ID:503014 發(fā)表于 2019-4-2 10:17 | 顯示全部樓層
對(duì)我有用謝謝啦
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品91| 丁香婷婷在线视频 | 网站黄色在线免费观看 | 久久国产欧美一区二区三区精品 | 中文字幕一区在线观看视频 | 国产精品视屏 | 精品国产一区二区三区在线观看 | 成人在线观看欧美 | 免费黄色在线 | 在线日韩av电影 | 91福利在线导航 | 日韩视频中文字幕 | 久久免费视频在线 | 日本在线免费视频 | 久久国产精品视频 | 成人在线免费视频观看 | 美女久久 | 日韩精品一区二区三区中文字幕 | 国产一级片 | 日本不卡一区二区三区 | 亚洲日日夜夜 | 久久久国产一区二区 | 超碰综合 | 国产精品日日做人人爱 | 国产精品99久久久久久久久久久久 | 久久综合久久综合久久 | 国产成人福利在线观看 | 久久国产精品免费一区二区三区 | 欧美成人二区 | 免费一级黄 | 日韩二三区 | 国产欧美在线 | 99re视频这里只有精品 | 精品欧美一区二区中文字幕视频 | 免费在线观看黄视频 | 亚洲性网 | 亚洲欧美中文日韩在线v日本 | 欧美日韩免费视频 | 青青草在线播放 | 中文字幕一区二区三区精彩视频 | 视频在线一区二区 |