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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2530|回復: 1
打印 上一主題 下一主題
收起左側(cè)

單片機計數(shù)器 寫一個循環(huán)程序,求思路

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:932820 發(fā)表于 2021-6-16 12:04 來自觸屏版 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
計數(shù)器模擬。

要求: (1)計數(shù)器有3個控制按鈕1號、2號、3號,1個計數(shù)按鈕A。

(2)按完1號按鈕,再按A鈕,計數(shù)暑進入加計數(shù)狀態(tài),最大計到(5+組號) 2, 時間間隔為0.5s。

按完2號按鈕后,再按A按鈕,計數(shù)器進入減計數(shù)狀態(tài),從(5+組號) 2開始減計數(shù),時間、間隔為0.5s.

按完3號按鈕后,再按A按鈕,計數(shù)器保持顯示“Pp”字樣。



另外 :要求按下任意一個按鈕時,都會從頭計數(shù)

問一下各位大神怎么寫循環(huán)程序?
  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit P10=P1^0;
  5. sbit P11=P1^1;
  6. sbit P12=P1^2;
  7. sbit P13=P1^3;
  8. uchar segcode[]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};   
  9. uchar bitcode[]={0x01,0x02};

  10. uchar keycode1,keycode2;
  11. unsigned char Num[2];   
  12. void delayms(uint m)      
  13. {
  14. unsigned int n;
  15.         while(m--)
  16.         {
  17.                 for(n=0;n<113;n++);
  18.         }
  19. }
  20. void numobuf(int i)
  21. {
  22.          Num[1]=i/10;
  23.          Num[0]=i%10;
  24. }
  25. void display(void)
  26. {
  27.         unsigned int i;
  28.         for(i=0;i<2;i++)
  29.                 {
  30.                         P2=bitcode[i];
  31.                         P0=segcode[Num[i]];
  32.                         delayms(1);
  33.                 }
  34.         
  35. }
  36. void display2(void)
  37. {
  38.         unsigned int i;
  39.         for(i=0;i<2;i++)
  40.                 {
  41.                         P2=bitcode[i];
  42.                         P0=0x73;
  43.                         delayms(1);
  44.                 }
  45.         
  46. }




  47. uchar keyscan1(void)
  48. {
  49.         keycode1=0;
  50.         if(P10==0)
  51.         {
  52.                 delayms(10);
  53.                 if(P10==0)
  54.                 {
  55.                         while(P10==0);
  56.                         keycode1=1;
  57.                 }
  58.         }
  59.         if(P11==0)
  60.         {
  61.                 delayms(10);
  62.                 if(P11==0)
  63.                 {
  64.                         while(P11==0);
  65.                         keycode1=2;
  66.                 }
  67.         }
  68.         if(P12==0)
  69.         {
  70.                 delayms(10);
  71.                 if(P12==0)
  72.                 {
  73.                         while(P12==0);
  74.                         keycode1=3;
  75.                 }
  76.         }
  77.         return keycode1;
  78. }
  79. uchar keyscan2(void)
  80. {
  81.         keycode2=0;
  82.         if(P13==0)
  83.         {
  84.                 delayms(10);
  85.                 if(P13==0)
  86.                 {
  87.                         while(P13==0);
  88.                         keycode2=1;
  89.                 }
  90.         }

  91.         return keycode2;
  92. }

  93. main()
  94. {
  95.         int a=0;
  96.         int i=0;
  97.         int j=0;
  98.         while(1)
  99.         {
  100.                 P0=segcode[0];
  101.                 keycode1=0;
  102.                 keycode2=0;
  103.                 a=keyscan1();
  104.                 if(a==1)
  105.                 {
  106.                         
  107.                         while(keyscan2()==0);
  108.                         for(i=0;i<36;i++)
  109.                         {
  110.                                 for(j=0;j<25;j++)
  111.                                 {        
  112.                                         numobuf(i);
  113.                                         display();
  114.                                         delayms(10);
  115.                                 }
  116.                         }
  117.                         
  118.                 }
  119.                 if(a==2)
  120.                 {
  121.                         while(keyscan2()==0);
  122.                         for(i=36;i>0;i--)
  123.                         {
  124.                                 for(j=0;j<25;j++)
  125.                                 {        
  126.                                 numobuf(i);
  127.                                 display();
  128.                                 delayms(10);
  129.                                 }
  130.                         }
  131.                         
  132.                 }
  133.                 if(a==3)
  134.                 {
  135.                         while(keyscan2()==0);
  136.                         while(1)
  137.                         {
  138.             
  139.                                 display2();
  140.                                 delayms(1);
  141.                         }        
  142.                 }
  143.         
  144.         }

  145. }
復制代碼

7072FAB6-A754-4038-A710-8ED1A3A946C2.jpeg (1.16 MB, 下載次數(shù): 51)

7072FAB6-A754-4038-A710-8ED1A3A946C2.jpeg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:839835 發(fā)表于 2021-6-17 16:05 | 只看該作者
給你一個思路,定義三個標志位,分別對應計數(shù)1,2,3.比如按下按鍵1,再按下按鍵a,flag1 =1;
在主循環(huán)判斷
if(flag1==1)
{
     數(shù)據(jù)清零;
     開始計數(shù)
}
if(flag2==1)
{
     數(shù)據(jù)清零;
     開始計數(shù)
}
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩电影一区 | 中文精品一区二区 | 亚洲精品在线免费观看视频 | 一级欧美一级日韩片免费观看 | 国产97在线 | 日韩 | 日韩av免费看 | 999久久精品 | 一区二区三区观看视频 | a久久 | 国产精品夜夜春夜夜爽久久电影 | 国产精品久久久久无码av | 午夜精品福利视频 | 久久人| 一本久久a久久精品亚洲 | 国产三级精品视频 | 亚洲成人精品一区二区 | 精品国产一区久久 | 在线精品亚洲欧美日韩国产 | 美国a级毛片免费视频 | 日韩在线精品 | 中文字幕在线视频精品 | 男人天堂视频在线观看 | 久久久久久久91 | 天天操天天插 | 亚洲精品一区中文字幕乱码 | 久久不射电影网 | 亚洲免费一区二区 | 国产成人精品综合 | 高清视频一区 | 天天干 夜夜操 | 精品一区欧美 | 天天躁人人躁人人躁狂躁 | 免费毛片网 | 性色av一区二区三区 | 日韩图区 | 国产欧美一区二区三区在线看 | 日韩精品一区二区三区视频播放 | 性色网站| 久久国产秒 | 亚洲中午字幕 | 亚洲一区不卡在线 |