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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2675|回復: 0
收起左側

單片機累加累減程序與Proteus仿真圖

[復制鏈接]
ID:921535 發表于 2021-5-29 12:18 | 顯示全部樓層 |閱讀模式
累加累減程序最大數值十999。
按加建KEY1數值加1并顯示;
按減建KEY1數值減1并顯示;
按歸零鍵數值歸零并顯示;
附件包含完整程序和仿真設計

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

單片機源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define DB P1
  5. /*************** 物理連接
  6. P2^0對應 LCD_RS;
  7. P2^1對應LCD_RW;
  8. P2^2對應LCD_E;
  9. P1對應LCD_DB;
  10. P3^0對應KEY1加鍵;
  11. P3^1對應KEY2減鍵;
  12. P3^2對應KEY3清零鍵;
  13. ******************/
  14. void LCD_init();                                         //1602初始函數
  15. void LCD_write_command(uchar dat);         //1602寫命令函數
  16. void LCD_write_dat(uchar dat);                 //1602寫數據函數
  17. void delay40us(uint n);                                //延時函數,單次40US
  18. void display(uint tt);                                //顯示函數
  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. //**************延時函數,單次約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++); //在這個延時循環函數中我只做了2次循環,
  34. } //實踐證明我的LCD1602 上普
  35. //通的指令只需1次循環就能可靠完成




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






  45. //*****************1602寫命令函數************
  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下降沿觸發寫
  52. LCD_E=0;
  53. delay40us(1);         //延時確保寫成功
  54. }



  55. //*************1602寫數據函數*************
  56. void LCD_write_dat(uchar dat)
  57. {
  58. DB=dat;
  59. LCD_RS=1;                         //寫數據
  60. LCD_RW=0;                         //寫容許
  61. LCD_E=1;                         //LCD_E下降沿觸發寫
  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)                                  //確認加鍵按下
  71. {
  72. if(num==1000)
  73. num=0;
  74. ++num;                                         //顯示當前數值
  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. //********************顯示當前數值***********
  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. //************主函數************
  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. }
復制代碼

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


評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表