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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機(jī)累加累減程序與Proteus仿真圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:921535 發(fā)表于 2021-5-29 12:18 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
累加累減程序最大數(shù)值十999。
按加建KEY1數(shù)值加1并顯示;
按減建KEY1數(shù)值減1并顯示;
按歸零鍵數(shù)值歸零并顯示;
附件包含完整程序和仿真設(shè)計

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define DB P1
  5. /*************** 物理連接
  6. P2^0對應(yīng) LCD_RS;
  7. P2^1對應(yīng)LCD_RW;
  8. P2^2對應(yīng)LCD_E;
  9. P1對應(yīng)LCD_DB;
  10. P3^0對應(yīng)KEY1加鍵;
  11. P3^1對應(yīng)KEY2減鍵;
  12. P3^2對應(yīng)KEY3清零鍵;
  13. ******************/
  14. void LCD_init();                                         //1602初始函數(shù)
  15. void LCD_write_command(uchar dat);         //1602寫命令函數(shù)
  16. void LCD_write_dat(uchar dat);                 //1602寫數(shù)據(jù)函數(shù)
  17. void delay40us(uint n);                                //延時函數(shù),單次40US
  18. void display(uint tt);                                //顯示函數(shù)
  19. uint KEY_scan(uint num);
  20. sbit LCD_RS=P2^0;
  21. sbit LCD_RW=P2^1;
  22. sbit LCD_E=P2^2;
  23. sbit KEY1=P3^0;
  24. sbit KEY2=P3^1;
  25. sbit KEY3=P3^2;
  26. uint num,key;                                                        //全局變量
  27. uchar table[]="The num is";



  28. //**************延時函數(shù),單次約40US************
  29. void delay40us(uint n)
  30. { uint i;
  31. uchar j;
  32. for(i=n;i>0;i--)
  33. for(j=0;j<2;j++); //在這個延時循環(huán)函數(shù)中我只做了2次循環(huán),
  34. } //實踐證明我的LCD1602 上普
  35. //通的指令只需1次循環(huán)就能可靠完成




  36. //*************LCD初始化函數(shù)***************
  37. void LCD_init()
  38. {
  39. LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7
  40. LCD_write_command(0x0c);//整體顯示,關(guān)光標(biāo),不閃爍
  41. LCD_write_command(0x06);//設(shè)定輸入方式,增量不移位--------------
  42. LCD_write_command(0x01);//清除屏幕顯示----------------
  43. delay40us(100);       //實踐證明,我的LCD1602上,用for 循環(huán)200 次就能可靠完成清屏指令
  44. }






  45. //*****************1602寫命令函數(shù)************
  46. void LCD_write_command(uchar dat)
  47. {
  48. DB=dat;
  49. LCD_RS=0;                         //寫命令
  50. LCD_RW=0;                         //寫容許
  51. LCD_E=1;                         //LCD_E下降沿觸發(fā)寫
  52. LCD_E=0;
  53. delay40us(1);         //延時確保寫成功
  54. }



  55. //*************1602寫數(shù)據(jù)函數(shù)*************
  56. void LCD_write_dat(uchar dat)
  57. {
  58. DB=dat;
  59. LCD_RS=1;                         //寫數(shù)據(jù)
  60. LCD_RW=0;                         //寫容許
  61. LCD_E=1;                         //LCD_E下降沿觸發(fā)寫
  62. LCD_E=0;
  63. delay40us(1);         //延時確保寫成功
  64. }



  65. //****************讀鍵盤***************
  66. uint KEY_scan(uint num )
  67. {
  68. if(KEY1==0)                                  //加鍵按下
  69. delay40us(25);                          //延遲1MS
  70. if(KEY1==0)                                  //確認(rèn)加鍵按下
  71. {
  72. if(num==1000)
  73. num=0;
  74. ++num;                                         //顯示當(dāng)前數(shù)值
  75. display(num);
  76. while(!KEY1);                        //等待加鍵松開
  77. }
  78. if(KEY2==0)
  79. delay40us(25);
  80. if(KEY2==0)
  81. {
  82. if(num==0)
  83. num=1000;
  84. --num;
  85. display(num);
  86. while(!KEY2);
  87. }
  88. if(KEY3==0)
  89. delay40us(25);
  90. if(KEY3==0)
  91. {
  92. num=0;
  93. display(num);
  94. while(!KEY3);
  95. }
  96. return num;
  97. }


  98. //********************顯示當(dāng)前數(shù)值***********
  99. void display(uint tt)
  100. {
  101.   LCD_write_command(0x80+68);
  102.   LCD_write_dat(0x30+tt/100);
  103.   delay40us(15);
  104.   LCD_write_dat(0x30+tt/10%10);
  105.   delay40us(15);
  106.   LCD_write_dat(0x30+tt%10);
  107.   delay40us(15);
  108. }





  109. //************主函數(shù)************
  110. main()
  111. {
  112. uchar k;
  113. P3=0xff;
  114. num=0;
  115. LCD_init();
  116. LCD_write_command(0x80);
  117. for(k=0;k<12;++k)
  118. {
  119.   LCD_write_dat(table[k]);
  120.   delay40us(1500);
  121. }
  122. while(1)
  123. {
  124.    num= KEY_scan(num);
  125. }
  126. }
復(fù)制代碼

所有資料51hei提供下載:
累加累減程序.zip (62.77 KB, 下載次數(shù): 13)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久久 | 久久久久久久国产精品 | 成人国产一区二区三区精品麻豆 | 国产自产21区 | 国产四区| 精品免费国产视频 | 天天操夜夜操 | 一级免费看| 国产区在线免费观看 | 国产成人精品一区二区三区在线 | 国产91在线 | 亚洲 | 久久97精品 | 国产做a爱片久久毛片 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 国产99久久精品一区二区永久免费 | av在线播放国产 | 国产精品视频观看 | 91麻豆精品一区二区三区 | 91精品国产91久久久久久密臀 | 亚洲精品在线视频 | 国产在线高清 | 成人1区2区 | 欧美精品在线一区 | 国产精品久久国产精品久久 | 亚洲午夜精品一区二区三区他趣 | 亚洲一区二区免费 | 久久精品国产免费一区二区三区 | 国产清纯白嫩初高生视频在线观看 | 久久蜜桃资源一区二区老牛 | 久久成人免费 | 亚洲美女一区二区三区 | 亚洲国产二区 | 成人免费看电影 | 在线观看中文字幕 | 国产视频1 | 午夜精品一区二区三区在线视频 | 国产三级精品视频 | 精品国产乱码久久久久久老虎 | 亚洲一区二区在线免费观看 | 人人看人人干 | 精品国产一区二区三区观看不卡 |