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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6489|回復: 0
打印 上一主題 下一主題
收起左側

單片機中斷掃描數碼管顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:224465 發表于 2017-8-5 15:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. /*
  2. 按下S2數碼管數值加1,按下S3數碼管數值減1
  3. 且長按數字會累加或累減
  4. 與軟件延時方式去做數碼管動態掃描的區別:
  5. 軟件延時掃描,當按下按鍵時數碼管只會顯示1位數
  6. 中斷方式掃描,當按下按鍵時不影響數碼管應顯示的位數
  7. */
  8. #include <reg52.h>


  9. #define uchar unsigned char
  10. #define uint  unsigned int


  11. sbit we = P2^7;        //位定義數碼管位選鎖存器接口
  12. sbit du = P2^6;         //位定義數碼管位選鎖存器接口
  13. sbit key_s2 = P3^0;//S2按鍵位定義
  14. sbit key_s3 = P3^1;//S3按鍵位定義


  15. uchar i;//數碼管顯示位選變量
  16. uchar num[] = {0, 0, 0, 0}; //百十個位,總數暫存數組
  17. //數碼管0~9段選表
  18. uchar code leddata[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
  19. //數碼管1~3位選表
  20. uchar code DPY[]={0xfe, 0xfd, 0xfb};


  21. //毫秒級延時函數
  22. void delay(uint z)
  23. {
  24.         uint x,y;
  25.         for(x = z; x > 0; x--)
  26.                 for(y = 114; y > 0 ; y--);
  27. }
  28. //中斷服務特殊功能寄存器配置
  29. void init()
  30. {
  31.         
  32.         TMOD = 0x01;  //定時器16為計數工作模式
  33.         TH0 =0xED;
  34.         TL0 =0xFF; //5ms
  35.         ET0 = 1; //開定時器0中斷
  36.         TR0 = 1;//啟動定時器0
  37.         EA = 1;        //開總中斷
  38. }


  39. void main()
  40. {
  41.         init();//初始化定時器0
  42.         while(1)
  43.         {
  44.                 if(key_s2 == 0)//判斷S2是否按鍵
  45.                 {
  46.                         delay(5);//軟件延時
  47.                         if(key_s2 == 0)
  48.                         {
  49.                                 if(num[3] == 999)num[3]=0;//當等于255時不再加1
  50.                                 delay(300);//軟件延時
  51.                                 num[3]++; //加1
  52.                         }
  53.                 //        while(!key_s2);        //松手檢測
  54.                 }
  55.                 if(key_s3 == 0)//判斷S3是否按鍵
  56.                 {
  57.                         delay(5);//軟件延時
  58.                         if(key_s3 == 0)
  59.                         {
  60.                                 if(num[3] != 0)        //當等于0時,不再減1
  61.                      delay(300);//軟件延時
  62.                                 num[3]--; //減1
  63.                         }
  64.                         //while(!key_s3);        //松手檢測
  65.                 }
  66.         }
  67. }


  68. //定時器0中斷服務程序  做數碼管動態掃描,不用軟件延時
  69. void timer0() interrupt 1
  70. {
  71.         TH0 =0xED;
  72.         TL0 =0xFF; //5ms  模式1非自動重裝需要手動重裝


  73.          if(i < 3)
  74.         {
  75.                 num[0] = num[3] / 100; //計算百位
  76.                 num[1] = num[3] % 100 / 10;        //計算十位
  77.                 num[2] = num[3] % 10;//計算個位
  78.                 P0 = 0xff; //清除斷碼
  79.                 we = 1;//打開位選
  80.                 P0 = DPY[ i];                we = 0;        //關閉位選                        P0 = 0xff; //清除斷碼                du = 1;        //打開段選                P0 = leddata[num[ i]];                du = 0;        //關閉段選                i++;//顯示下一位        }        else        {                i = 0;        }

  81. }
復制代碼


評分

參與人數 1黑幣 +1 收起 理由
心中 + 1 贊一個!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩精品影院 | 在线一区观看 | 国产美女自拍视频 | 国产1区 | av黄在线观看| 精品久久久久久亚洲国产800 | 久久久久久久久久久久一区二区 | 日日干夜夜操天天操 | 欧美性大战久久久久久久蜜臀 | 欧美激情区 | 最近免费日本视频在线 | 91久久精品日日躁夜夜躁国产 | 在线国产一区二区 | 蜜桃视频在线观看免费视频网站www | 午夜激情在线视频 | 91免费观看在线 | 中文字幕国产精品 | 99资源| 一区二区精品电影 | 97超碰人人 | 99久久国产免费 | a毛片| 国产在线第一页 | 免费看黄视频网站 | 911影院| 欧美一级片中文字幕 | 精品综合久久久 | 成人在线视频免费看 | 欧美在线一区二区三区 | 宅女噜噜66国产精品观看免费 | 欧美激情久久久 | 精久久久 | 婷婷久| 成人欧美一区二区三区黑人孕妇 | 国外成人在线视频 | 国产精品免费一区二区三区四区 | www国产成人免费观看视频,深夜成人网 | 91国产精品 | 久久国产欧美日韩精品 | 91在线精品秘密一区二区 | 激情国产视频 |