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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

51單片機(jī)計(jì)數(shù)器程序修改功能增加,求大神幫忙指導(dǎo)如何改動下

查看數(shù): 2503 | 評論數(shù): 5 | 收藏 1
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時(shí)間: 2022-12-7 23:32

正文摘要:

首先感謝ID:941754大佬提供的源程序,原文鏈接 其中為兩種模式(按模式按鍵切換),模式一: 1.計(jì)數(shù)模式,上面數(shù)碼管顯示”----“ 2.下面數(shù)碼管顯示計(jì)數(shù),其中光電開關(guān)動作一次,數(shù)碼管計(jì)數(shù)+1,直到9999 ...

回復(fù)

ID:480171 發(fā)表于 2022-12-11 19:19
wulin 發(fā)表于 2022-12-8 21:59
給你改寫了,只用兩個(gè)鍵,一個(gè)用于設(shè)置選項(xiàng),一個(gè)多功能鍵。用外部中斷計(jì)數(shù)。仿真正常,你自己完善其它硬件 ...

感謝幫忙修正,我修改成矩陣鍵盤輸入模式了,想請教下矩陣鍵盤怎樣實(shí)現(xiàn)長按功能呢
ID:480171 發(fā)表于 2022-12-11 19:12
yzwzfyz 發(fā)表于 2022-12-8 09:07
程序是自己寫的嗎?

不是的,是ID:941754發(fā)布的,我只是想在這個(gè)基礎(chǔ)上進(jìn)行修改,文頭已經(jīng)標(biāo)注原文鏈接
ID:213173 發(fā)表于 2022-12-8 21:59
給你改寫了,只用兩個(gè)鍵,一個(gè)用于設(shè)置選項(xiàng),一個(gè)多功能鍵。用外部中斷計(jì)數(shù)。仿真正常,你自己完善其它硬件。



  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int

  5. sbit K1=P2^4;
  6. sbit K2=P2^5;
  7. sbit OUT=P2^6;
  8. sbit buzzer=P2^7;

  9. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽LED段碼表
  10. uchar displayData[4];//顯示數(shù)據(jù)緩存
  11. uchar qian,bai,shi,ge;
  12. uchar Cnt5ms;
  13. uchar KeySec=0;
  14. uint num;
  15. int count;
  16. bit flashing=0;//閃爍標(biāo)志

  17. void Timer0Init(void)                //5毫秒@12.000MHz
  18. {
  19.         TMOD |= 0x01;                //設(shè)置定時(shí)器模式
  20.         TL0 = 0x78;                //設(shè)置定時(shí)初始值
  21.         TH0 = 0xEC;                //設(shè)置定時(shí)初始值
  22.         TF0 = 0;                //清除TF0標(biāo)志
  23.         TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
  24. }

  25. //按鍵掃描
  26. void keyscan()
  27. {
  28.         static unsigned int time=0;
  29.         static bit sign=0;
  30.         if(!K1||!K2)
  31.         {
  32.                 if(++time>=15 && sign==0)//短按消抖
  33.                 {
  34.                         sign=1;
  35.                         if(!K1)
  36.                         {
  37.                                 KeySec++;
  38.                                 if(KeySec>=5)
  39.                                 {
  40.                                         KeySec=0;
  41.                                         count=0;
  42.                                 }
  43.                         }

  44.                         if(!K2 && KeySec==0)
  45.                         {
  46.                                 if(count!=num)
  47.                                 {
  48.                                         EA = ~EA;//暫停/繼續(xù)
  49.                                         OUT=EA;
  50.                                 }
  51.                                 else
  52.                                 {
  53.                                         count=0;
  54.                                         EA = 1;        //開始
  55.                                         OUT= 1;
  56.                                         buzzer=1;//蜂鳴器復(fù)位
  57.                                 }
  58.                         }
  59.                         if(!K2 && KeySec!=0)
  60.                         {
  61.                                 if(KeySec)
  62.                                 {
  63.                                         switch(KeySec)
  64.                                         {
  65.                                                 case 1: qian= ++qian%10; break;
  66.                                                 case 2: bai = ++bai%10; break;
  67.                                                 case 3: shi = ++shi%10; break;
  68.                                                 case 4: ge  = ++ge%10; break;
  69.                                         }
  70.                                         num=(qian*1000)+(bai*100)+(shi*10)+ge;
  71.                                         //        num寫入EEPROM保存,下次上電直接調(diào)用
  72.                                 }       
  73.                         }
  74.                 }
  75.         }
  76.         else
  77.         {
  78.                 time=0;
  79.                 sign=0;
  80.         }
  81. }

  82. void display()//顯示
  83. {
  84.         static uchar i=0;
  85.         if(KeySec==0)
  86.         {//顯示計(jì)數(shù)值               
  87.                 displayData[0] = tab[count/1000%10];
  88.                 displayData[1] = tab[count/100%10];
  89.                 displayData[2] = tab[count/10%10];
  90.                 displayData[3] = tab[count%10];
  91.         }
  92.         if(KeySec!=0)
  93.         {//顯示設(shè)定值
  94.                 displayData[0] = tab[num/1000%10];
  95.                 displayData[1] = tab[num/100%10];
  96.                 displayData[2] = tab[num/10%10];
  97.                 displayData[3] = tab[num%10];
  98.         }
  99.         P2&=0xf0;//消隱
  100.         if(KeySec==1 && i==0 && flashing==0)
  101.                 P0=0xff;//千位閃爍
  102.         else if(KeySec==2 && i==1 && flashing==0)
  103.                 P0=0xff;//百位閃爍
  104.         else if(KeySec==3 && i==2 && flashing==0)
  105.                 P0=0xff;//十位閃爍
  106.         else if(KeySec==4 && i==3 && flashing==0)
  107.                 P0=0xff;//個(gè)位閃爍
  108.         else
  109.                 P0=displayData[i];
  110.         P2|=0x01<<i;
  111.         i++;i%=4;
  112. }

  113. void main()//主函數(shù)
  114. {
  115.         OUT=0;
  116.         Timer0Init();//初始化定時(shí)器
  117. //        num=讀取EEPROM
  118.         IT0 = 1;// 外部下降沿中斷
  119.         EX0 = 1;
  120. //        EA = 1;   
  121.         while(1)
  122.         {
  123.                 if(TF0)//查詢定時(shí)器中斷請求位
  124.                 {
  125.                         TF0=0;
  126.                         TL0 = 0x78;                //設(shè)置定時(shí)初始值
  127.                         TH0 = 0xEC;                //設(shè)置定時(shí)初始值
  128.                         Cnt5ms++;
  129.                         if(Cnt5ms==40)
  130.                         {
  131.                                 Cnt5ms=0;
  132.                                 flashing=~flashing;
  133.                         }
  134.                         keyscan();                        //按鍵掃描
  135.                         display();                        //數(shù)碼管顯示
  136.                 }
  137.         }
  138. }
  139. void exint0() interrupt 0
  140. {
  141.         count++;
  142.         if(count>=num)       
  143.         {
  144.                 buzzer=0;
  145.                 EA = 0;
  146.                 OUT= 0;
  147.         }
  148. }


復(fù)制代碼




ID:480171 發(fā)表于 2022-12-8 14:15
有沒有大佬指導(dǎo)下的
ID:123289 發(fā)表于 2022-12-8 09:07
程序是自己寫的嗎?

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 97色综合 | 免费午夜电影 | 国产精品久久久久不卡 | 一区二区三区四区在线 | 亚洲国产二区 | 一区二区三区在线 | 精品久久久久久久 | 久久爱一区 | 911网站大全在线观看 | 精品一级 | 色婷婷激情 | 91精品久久久久久久久久入口 | 日本精品视频在线 | 一区二区三区四区电影视频在线观看 | 亚洲免费一 | 在线中文字幕亚洲 | av一区二区在线观看 | 婷婷国产一区 | 日韩成人在线网址 | 国产综合久久 | 一区二区三区免费 | 亚洲国产精品一区二区三区 | 一区二区三区中文字幕 | 亚洲成av人片在线观看无码 | 久久久精品一区 | 免费国产网站 | 天天在线操 | 国产精品久久久久久久久久免费看 | 日韩视频专区 | 欧美又大粗又爽又黄大片视频 | a精品视频| 精品视频一区二区 | 午夜电影在线播放 | 高清亚洲 | 国产精品日韩一区二区 | 久久大陆 | 视频1区 | 日韩高清不卡 | 青青草在线视频免费观看 | 国产精品一区二区电影 | 91精品导航|