wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7204|回復: 3
收起左側

51單片機簡易計算器源碼與說明 LCD1602顯示

[復制鏈接]
ID:332157 發表于 2018-5-17 15:22 | 顯示全部樓層 |閱讀模式
最初接觸就是單片機,今天就突然想寫一則這樣的帖子試試看。
通過矩陣按鍵輸入運算數字和符號進行運算,
1矩陣按鍵掃描
鍵盤檢測原理為非編碼鍵盤檢測,參考:
https://blog.csdn.net/mr_bean_1031/article/details/75925118
2液晶模塊
http://www.izizhuan.cn/bbs/dpj-83245-1.html

說明:
進行本實驗前需要先完成《17_LCD1602基本顯示程序》實驗。
接上1602液晶,燒錄程序后按鍵對應數值表
S6     --     1
S10    --     2
S14     --     3
S18     --     4
S7     --     5
S11     --     6
S15     --      7
S19     --     8
S8     --     9
S12     --     0
S16     --      .
S20     --   =
S9     --   +
S13     --   -
S17     --   *
S21     --   /


單片機源碼:
  1. #include<reg52.h>        //聲明包含51頭文件
  2. #include<stdio.h>  //聲明包含輸入輸出函數
  3. #include<intrins.h>         //聲明包含位移函數
  4. #define uchar  unsigned char  //  宏定義
  5. #define uint  unsigned int                // 宏定義
  6. #define CHECK_BUSY
  7. sbit RS = P3^5;        //液晶引腳定義
  8. sbit RW = P3^6;
  9. sbit EN = P3^4;void DelayMs(int z)// 1ms延時函數
  10. {
  11. int x,y;
  12. for (x=z;x>0;x--)
  13.    for(y=110;y>0;y--);
  14. }
  15. /***********LED判忙函數***********/
  16. bit LCD_Check_Busy()
  17. {
  18. #ifdef CHECK_BUSY
  19. P0= 0xFF;
  20. RS=0;
  21. RW=1;
  22. EN=0;
  23. _nop_();
  24. EN=1;
  25. return (bit)(P0 & 0x80);
  26. #else
  27. return 0;
  28. #endif
  29. }
  30. /***********LED寫入命令函數***********/
  31. void write_com(uchar com)
  32. {
  33. while(LCD_Check_Busy()); //忙則等待
  34. RS=0;
  35. RW=0;
  36. EN=1;
  37. P0= com;
  38. _nop_();
  39. EN=0;
  40. }
  41. /**********LED寫入數據函數**********/
  42. void write_dat(uchar dat)
  43. {
  44. while(LCD_Check_Busy()); //忙則等待
  45. RS=1;
  46. RW=0;
  47. EN=1;
  48. P0= dat;
  49. _nop_();
  50. EN=0;
  51. }
  52. /*******LED寫入字符函數***********/
  53. void LCD_Write_Char(uchar x,uchar y,uchar dat)
  54. {   
  55. if (y == 0)
  56.   {   
  57.   write_com(0x80 + x);   
  58.   }   
  59. else
  60.   {   
  61.   write_com(0xC0 + x);   
  62.   }      
  63. write_dat( dat);
  64. }
  65. /******寫入字符串函數***********/
  66. void Write_String(uchar x,uchar y,uchar *s)
  67. {   

  68. while (*s)
  69.   {   
  70.   LCD_Write_Char(x,y,*s);   
  71.   s++;
  72.   x++;   
  73.   }
  74. }
  75. /*****LED初始化函數******/
  76. void LCD_Init()
  77. {
  78.            RW=0;
  79.         dula=0;         //關閉數碼管顯示
  80.         wela=0;         //關閉數碼管顯示
  81.    write_com(0x38); /*顯示模式設置*/
  82.    DelayMs(5);
  83.    write_com(0x06);/*顯示光標移動設置*/
  84.    DelayMs(5);
  85.    write_com(0x0C); /*顯示開及光標設置*/
  86.    write_com(0x01);  /*顯示清屏*/
  87.    }

  88. /*按鍵掃描函數,返回掃描鍵值*/
  89. uchar KeyScan()  //鍵盤掃描函數,使用行列反轉掃描法
  90. {
  91. unsigned char cord_h,cord_l;//行列值中間變量
  92. P3=0x0f;            //行線輸出全為0
  93. cord_h=P3&0x0f;     //讀入列線值
  94. if(cord_h!=0x0f)    //先檢測有無按鍵按下
  95. {
  96.   DelayMs(10);        //去抖
  97.   if((P3&0x0f)!=0x0f)
  98.   {
  99.     cord_h=P3&0x0f;  //讀入列線值
  100.     P3=cord_h|0xf0;  //輸出當前列線值
  101.     cord_l=P3&0xf0;  //讀入行線值
  102.     while((P3&0xf0)!=0xf0);//等待松開并輸出
  103.     return(cord_h+cord_l);//鍵盤最后組合碼值
  104.    }
  105.   }
  106.   return(0xff);  //返回該值
  107. }

  108. unsigned char KeyPro()
  109. {
  110. switch(KeyScan())
  111. {
  112.   case 0xee:return '1';break;//0 按下相應的鍵顯示相對應的碼值
  113.   case 0xed:return '2';break;//1
  114.   case 0xeb:return '3';break;//2
  115.   case 0x7e:return '+';break;//3
  116.   case 0xe7:return '4';break;//4
  117.   case 0xde:return '5';break;//5
  118.   case 0xdd:return '6';break;//6
  119.   case 0x7d:return '-';break;//7
  120.   case 0xdb:return '7';break;//8
  121.   case 0xd7:return '8';break;//9
  122.   case 0xbe:return '9';break;//a
  123.   case 0x7b:return 'x';break;//b
  124.   case 0xbd:return '0';break;//c
  125.   case 0xbb:return '.';break;//d
  126.   case 0xb7:return '=';break;//e
  127.   case 0x77:return '/';break;//f
  128.   default:return 0xff;break;
  129. }
  130. }
  131. void main()
  132. {
  133. unsigned char num,i,sign;                 
  134. unsigned char temp[16];   //最大輸入16個
  135. bit firstflag;
  136. float a=0,b=0;
  137. unsigned char s;
  138. LCD_Init(); //初始化液晶屏
  139. DelayMs(10);//延時用于穩定,可以去掉
  140. write_com(0x01); //清屏
  141. Write_String(0,0,"I LIKE MCU");    //寫入第一行信息,主循環中不再更改此信息,所以在while之前寫入
  142. Write_String(0,1,"QXMCU");    //寫入第二行信息,提示輸入密碼
  143. for(s=0;s<25;s++)//延時5s
  144.     DelayMs(200);
  145. write_com(0x01);
  146. while (1)         //主循環
  147.   {

  148. num=KeyPro();  //掃描鍵盤
  149. if(num!=0xff)  //如果掃描是按鍵有效值則進行處理
  150.    {
  151.     if(i==0)    //輸入是第一個字符的時候需要把改行清空,方便觀看
  152.    write_com(0x01);
  153. if(('+'==num)|| (i==16) || ('-'==num) || ('x'==num)|| ('/'==num) || ('='==num))//輸入數字最大值16,輸入符號表示輸入結束
  154.    {
  155.    i=0;  //計數器復位
  156.   if(firstflag==0)  //如果是輸入的第一個數據,賦值給a,并把標志位置1,到下一個數據輸入時可以跳轉賦值給b
  157.       {
  158.       sscanf(temp,"%f",&a);
  159.          firstflag=1;
  160.    }
  161.    else
  162.       sscanf(temp,"%f",&b);
  163.    for(s=0;s<16;s++) //賦值完成后把緩沖區清零,防止下次輸入影響結果
  164.       temp[s]=0;
  165.       LCD_Write_Char(0,1,num);
  166.    ///////////////////////
  167.    if(num!='=')      //判斷當前符號位并做相應處理
  168.       sign=num;      //如果不是等號記下標志位
  169.    else
  170.       {
  171.    firstflag=0;   //檢測到輸入=號,判斷上次讀入的符合
  172.          switch(sign)
  173.         {
  174.       case '+':a=a+b;
  175.    break;
  176.    case '-':a=a-b;
  177.    break;
  178.    case 'x':a=a*b;
  179.    break;
  180.    case '/':a=a/b;
  181.    break;
  182.    default:break;
  183.      }
  184.    sprintf(temp,"%g",a);    //輸出浮點型,無用的0不輸出
  185.          Write_String(1,1,temp);//顯示到液晶屏
  186.    sign=0;a=b=0;            //用完后所有數據清零
  187.    for(s=0;s<16;s++)
  188.       temp[s]=0;
  189.    }
  190.    }
  191.   else if(i<16)
  192.    {
  193.     if((1==i)&& (temp[0]=='0') )//如果第一個字符是0,判讀第二個字符
  194.       {
  195.     if(num=='.')  //如果是小數點則正常輸入,光標位置加1
  196.       {
  197.       temp[1]='.';
  198.    LCD_Write_Char(1,0,num);//輸出數據
  199.    i++;
  200.             } //這里沒有判斷連續按小數點,如0.0.0
  201.    else
  202.     {
  203.      temp[0]=num; //如果是1-9數字,說明0沒有用,則直接替換第一位0
  204.      LCD_Write_Char(0,0,num);//輸出數據
  205.      }
  206.    }
  207.     else
  208.       {
  209.          temp[i]=num;
  210.          LCD_Write_Char(i,0,num);//輸出數據
  211.       i++;   //輸入數值累加
  212.    }
  213.     }

  214.     }
  215.   }
  216. }
復制代碼

全部資料51hei下載地址:
28、簡易計算器1602顯示.zip (43.92 KB, 下載次數: 74)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:142770 發表于 2018-9-21 10:54 | 顯示全部樓層
感謝分享!!!
回復

使用道具 舉報

ID:429519 發表于 2018-11-23 15:42 來自觸屏版 | 顯示全部樓層
謝謝樓主
回復

使用道具 舉報

ID:560987 發表于 2020-6-4 01:08 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
青草av在线| 国产网红主播福利一区二区| 亚洲精品aaaa精品| 大地资源高清在线视频观看| 免费看的黄色大片| 国产免费一区二区三区| 麻豆精品视频在线观看免费| 日本一区二区电影| 成人精品一区| 春意影院免费入口| 综合免费一区二区三区| 五月天婷婷导航| 蜜桃精品一区二区| 亚洲少妇久久久| 视频在线99re| 91九色在线观看| 97国产真实伦对白精彩视频8| 337p日本欧洲亚洲大胆色噜噜| 亚洲综合色视频| 99久久综合色| 蜜臀91精品一区二区三区| 久久亚洲专区| 久久久亚洲欧洲日产| 欧美片第1页| 国产盗摄在线观看| 天堂在线免费av| 99re6在线视频| 国产精品偷乱一区二区三区| 蜜臀av在线观看| 99久久久无码国产精品免费蜜柚| 蜜桃久久精品成人无码av| 尤物网站在线看| 成人在线观看你懂的| 亚洲精品二区| 国产亚洲精品美女久久久m| 青青青国产精品一区二区| 亚洲深夜福利在线| 日韩视频免费观看高清完整版在线观看 | 三级国产在线观看| 激情小说激情视频| 看全色黄大色黄大片免责看的| 中国视频免男男gay| 99国产精品99| 波多野结衣在线观看一区| 九九九免费视频| 国产福利在线导航| 最近中文字幕免费视频| 亚洲精品乱码久久久久久蜜桃欧美| 无码少妇一区二区三区芒果| 欧美视频在线观看网站| 一区二区精品在线| 欧美一区二区三区在线免费观看| 日韩欧美国产视频| 欧美午夜一区| 91成人超碰| 99精品视频在线| 日韩国产综合| 欧美国产美女| 99久久激情| 久久久久电影| 亚洲成人精品| 午夜欧美视频| 一区二区91| 国产亚洲精品自拍| 可以看av的网站久久看| 另类亚洲自拍| 蜜臀a∨国产成人精品| 日韩中文字幕av电影| 日韩成人一区二区三区在线观看| 午夜亚洲性色福利视频| 最近国产精品视频| 亚洲va久久| 在线成人动漫av| 精品免费视频| 国产一区激情| 日本成人在线不卡视频| 激情图区综合网| 成人爱爱电影网址| 国产视频视频一区| 亚洲午夜激情网站| 在线观看国产精品网站| 欧美一区二区三区影视| 精品国产成人系列| 国产亚洲欧洲黄色| 久久久久久国产三级电影| 欧美一区二粉嫩精品国产一线天| 日本乱人伦a精品| 日韩在线视频网| 欧美成人精品在线播放| 日韩av在线看| 日韩中文在线中文网三级| 久久天天躁狠狠躁夜夜躁| 欧美激情a在线| 国产精品视频xxx| 久久av免费观看| 黄色污污在线观看| 在线观看免费成人av| 亚洲 欧美 日韩在线| 免费在线观看黄色小视频| xxxx.国产| 成人av手机在线| 国内精品久久久久久影院老狼 | 黄页在线免费观看| 色偷偷福利视频| 中文字幕在线永久在线视频| 超碰电影在线播放| 亚洲男男av| 欧美人与性动交α欧美精品济南到| 国产99在线观看| 91综合久久爱com| 欧美黄色大片网站| 国产一区二区三区久久久| 久久精品人人做人人爽人人| 欧美日韩免费在线观看| 亚洲精品久久在线| 欧美一级高清免费| 欧美日韩一区二| 久久美女福利视频| 一区二区精品免费| 亚洲熟妇无码久久精品| 精品入口麻豆传煤| 在线观看视频污| 婷婷激情一区| 99热国内精品| 成人国产一区二区三区精品| 亚洲妇女屁股眼交7| 婷婷开心激情综合| 亚洲国产成人久久综合| 国内精品久久久久影院优| 高清视频一区二区三区| 毛片在线播放a| 丰满白嫩尤物一区二区| 欧美亚洲免费在线| 97在线资源在| 欧美电影三区| 亚洲91精品在线| 影音先锋中文字幕在线观看| 国产一区二区三区免费看| 亚洲av无码国产精品久久不卡| 99精品在线视频观看| 国产精品久久久久久久牛牛| 亚洲日本一区二区三区在线观看| 欧美电影h版| 久久国产电影| 99re这里只有精品6| 欧美手机在线视频| 精品久久久久久久久久ntr影视| 亚洲高清一区二| 国产精品久久久久久久久久ktv| 亚洲美女搞黄| 自拍视频一区二区| 私库av在线播放| 免费的毛片视频| 精品国内自产拍在线视频| 日韩午夜影院| 99re8这里有精品热视频免费| 男人的天堂成人在线| 中文字幕在线一区| 亚洲大胆人体在线| 91免费在线观看网站| 成年人小视频网站| 精品人妻一区二区三区视频| 91成品人影院| 91免费日韩| 欧美不卡高清一区二区三区| 亚洲美洲欧洲综合国产一区| 亚洲欧美日韩电影| 深夜福利91大全| 天天久久人人| 成年人在线免费看片| 欧美黑人又粗又大又爽免费| 国产午夜精品久久久久久久久| 精品一区在线观看视频| 日本久久网站| 日本暖暖在线视频| 欧美成人自拍| 亚洲欧洲在线观看av| 亚洲日韩中文字幕| 四虎一区二区| 天天爽天天爽天天爽| 亚洲精品手机在线| 日本精品一区二区三区在线播放| sdde在线播放一区二区| 国产日韩欧美不卡在线| 亚洲午夜色婷婷在线| 日韩欧美亚洲日产国| 亚洲ⅴ国产v天堂a无码二区| 另类欧美视频| 综合毛片免费视频| 青草av.久久免费一区| 91精品国产色综合久久| 国产成人精品福利一区二区三区| 蜜臀av粉嫩av懂色av| 全国男人的天堂天堂网| 秋霞在线午夜| 蜜臀av性久久久久av蜜臀妖精| 欧美二区三区的天堂| 操人视频欧美| 熟女俱乐部一区二区| 欧美videos另类| a欧美人片人妖| 精品一区二区三区影院在线午夜| 日韩精品一区二区三区swag | 欧美美女日韩| 国产精品中文字幕日韩精品 | 国产精品国产馆在线真实露脸 | 日韩一区国产二区欧美三区| 国产专区一区二区| 99热6这里只有精品| 狠狠干夜夜爽| 国产欧美自拍一区| 亚洲欧美日韩中文播放 | 深夜黄色小视频| 亚洲AV无码成人片在线观看 | 日韩久久不卡| 久久久久久久九九九九| jizzjizz视频| 大桥未久女教师av一区二区| 国产午夜精品理论片a级大结局| 国产亚洲一区精品| 337p粉嫩大胆噜噜噜鲁| 亚洲图片另类小说| xxxxx欧美| 国产69精品久久久久9999人| 一区二区三区成人精品| 欧美日韩日日夜夜| 性金发美女69hd大尺寸| 免费黄色一级网站| 日本精品一区二区在线观看| 超碰资源在线| av不卡一区二区三区| 久久久国产精品视频| 中文字幕在线观看第三页| 亚洲AV无码精品自拍| а_天堂中文在线| 九九久久精品视频| 亚洲欧洲在线播放| 伊人成色综合网| 欧美一区二区公司| 亚洲色图官网| 成人精品视频一区二区三区| 亚洲第一区第二区| a天堂资源在线观看| 99在线精品视频免费观看20| 特级毛片在线| 国产成人精品免费在线| 久久影视免费观看| 欧美性猛交xx| 国产剧情久久久| av2020不卡| 久久国产日韩| 中文字幕欧美视频在线| 日韩欧美视频第二区| 无码人妻丰满熟妇区五十路| 91最新在线| 国产一区在线视频| 久久亚洲成人精品| 久久人妻一区二区| 羞羞网站在线观看入口免费| 日韩成人综合| 91精品国产综合久久香蕉麻豆 | 欧美特黄色片| 亚洲精品乱码久久久久久日本蜜臀| 91久久久一线二线三线品牌| 三级视频在线观看| 免费看男女www网站入口在线| 中文字幕+乱码+中文字幕一区| 99国产视频在线| 中文字幕人妻一区二区在线视频 | 免费拍拍拍网站| www.四虎.com| 精品国产一区二区三区小蝌蚪 | 亚洲乱码国产乱码精品精98午夜| 国产伦精品一区二区三区视频孕妇 | 国产经典第一页| 国产精品日本欧美一区二区三区| 日本aⅴ免费视频一区二区三区| 欧美大片在线看免费观看| 极品人妻videosss人妻| 亚洲日本一区二区三区在线观看| 捆绑调教美女网站视频一区| 人九九综合九九宗合| 日本中文字幕免费观看| 亚洲激情欧美色图| 亚欧美无遮挡hd高清在线视频| 亚洲午夜国产成人av电影男同| 久久午夜夜伦鲁鲁片| fc2在线中文字幕| 中文字幕的久久| 亚洲高清123| 九九视频精品在线| 亚洲成人中文| 欧美在线视频你懂得| 欧美极品少妇无套实战| 国产一级免费| 在线中文字幕亚洲| 欧美裸体xxxx极品少妇| 亚洲精品色午夜无码专区日韩| 亚洲网友自拍| 久久久无码精品亚洲日韩按摩| 欧美成人dvd在线视频| 日本黄大片一区二区三区| 在线观看成人影院| 国产精品综合久久| 国产免费高清一区| 热99精品视频| 欧美xnxx| 欧美无人高清视频在线观看| 国产一区二区视频免费在线观看| 蜜桃视频中文字幕| www.欧美.com| 久久久婷婷一区二区三区不卡| 无码国产精品一区二区免费16 | 欧美二区在线看| t66y永久入口地址| 亚洲毛片av| 国产精品成人v| 国产一区二区三区视频免费观看| 女同久久另类99精品国产| 中国日韩欧美久久久久久久久| 国产18无套直看片| 成人免费影院| 欧美一区二区三区啪啪| 欧美精品色视频| 黄色网址在线免费播放| 久久久久久久久久久久久女国产乱| 欧美精品成人一区二区在线观看| 国产剧情在线一区| 国产一区欧美日韩| 欧美日韩在线精品一区二区三区| 免费男女羞羞的视频网站中文字幕妖精视频 | 国产在线播放一区三区四| 国产主播一区二区三区四区| 国产麻豆麻豆| 国产精品资源在线| 亚洲最新在线| 裸体av在线| 中文字幕色av一区二区三区| 成人综合视频在线| 国产在线日本| 欧美视频一区二区三区…| 亚洲美女精品视频| 在线观看爽视频| 日韩电影大全免费观看2023年上 | 亚洲综合图片区| 免费黄频在线观看| 国产精品186在线观看在线播放| 欧美日韩精品欧美日韩精品一| 国产特级黄色录像| 亚洲精品伊人| 欧美成人精品xxx| 性欧美18一19性猛交| 国产亚洲高清视频| 日本高清久久一区二区三区| 成年人黄色电影| 亚洲猫色日本管| 91视频在线免费| 亚洲国产91视频| 欧美黑人狂野猛交老妇| 神马久久久久久久久久| 综合色就爱涩涩涩综合婷婷| 午夜精品久久久久久99热| 色欲久久久天天天综合网| 免费一级欧美片在线观看| 中文字幕久久综合| 免费av观看网站| 成人午夜av影视| 少妇av一区二区三区无码| 麻豆传媒在线观看| 精品国产凹凸成av人网站| 日本一本高清视频| 亚洲第一天堂| 欧美凹凸一区二区三区视频| 国产美女免费观看| 精品久久久久久国产91| 国产精品久久久久久久av| 日韩动漫一区| 亚洲japanese制服美女| 中文字幕高清20页| 欧美色xxxx| 美女福利视频在线观看| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 国产伦精品一区二区三区免费迷 | 一区二区三区四区五区在线| 欧美午夜精品理论片a级大开眼界| 国产免费视频| 黑丝美女久久久| 久草视频在线免费看| 狠狠88综合久久久久综合网| 亚洲va韩国va欧美va精四季| 国产精品久久久久一区二区国产 | 精品婷婷伊人一区三区三| 亚洲色图100p| 91综合久久一区二区| 欧美婷婷久久| 日本中文在线观看| 亚洲欧美日韩久久久久久| 成人精品在线播放| 国产亚洲毛片在线| 成人在线视频一区二区三区|