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

標(biāo)題: STC15單片機(jī)計(jì)數(shù)器制作 附源程序 [打印本頁]

作者: bxyyhan    時(shí)間: 2021-12-23 12:15
標(biāo)題: STC15單片機(jī)計(jì)數(shù)器制作 附源程序
在做一個(gè)調(diào)速電路的時(shí)候,需要使用計(jì)數(shù)器來統(tǒng)計(jì)機(jī)械往返運(yùn)動(dòng)的次數(shù),所以設(shè)計(jì)這個(gè)。使用15W408單片機(jī),直接驅(qū)動(dòng)數(shù)碼管顯示,電路非常簡單。傳感器使用的是磁力開關(guān),需要重新計(jì)數(shù)的時(shí)候只要按一下復(fù)位鍵即可。使用了一個(gè)多月,效果很好。

制作出來的實(shí)物圖如下:


電路原理圖如下:


單片機(jī)源程序如下:
  1. #include <STC15.h>

  2. #define uchar unsigned char
  3. #define uint unsigned int


  4. sbit FMQ=P3^4;//蜂鳴器

  5. sbit K1=P3^2; //按鍵加
  6. sbit K2=P3^5; //按鍵減
  7. sbit K3=P3^2; //復(fù)位

  8. bit flag_KEY=0; //按鍵松開標(biāo)志位

  9. sbit DS1=P1^3;//數(shù)碼管第1位
  10. sbit DS2=P1^1;//數(shù)碼管第2位
  11. sbit DS3=P1^0;//數(shù)碼管第3位
  12. sbit DS4=P1^2;//數(shù)碼管第4位

  13. unsigned char ScanTime=1;

  14. unsigned int Num=0;


  15. //共陰數(shù)碼管段碼表,段接P2.0-2.7,位接P1.0-1.3
  16. unsigned char code SEG_Tab[]={      
  17.         0x3F,/*0*/
  18.         0x06,/*1*/
  19.         0x5B,/*2*/
  20.         0x4F,/*3*/
  21.         0x66,/*4*/
  22.         0x6D,/*5*/
  23.         0x7D,/*6*/
  24.         0x07,/*7*/
  25.         0x7F,/*8*/
  26.         0x6F,/*9*/
  27. };

  28. /*---------------------數(shù)碼管顯示---------------------------------------*/        
  29. void display()
  30. {        //數(shù)碼管初始化
  31.         P2=0x00;//P2=00000000
  32.         P1=0xFF;//P1=11111111

  33.   switch(ScanTime)
  34.         {
  35.           //----------數(shù)碼管第1位--------------               
  36.                 case 1:
  37.                         if(Num==0)
  38.                         {
  39.                                 P2=0x40;
  40.                         }
  41.                         else
  42.                         {
  43.                                 P2=SEG_Tab[Num/1000];
  44.                         }
  45.                                 
  46.                                 DS1=0;

  47.                 break;

  48.           //-----------數(shù)碼管第2位-------------               
  49.                 case 2:
  50.                         if(Num==0)
  51.                         {
  52.                                 P2=0x40;
  53.                         }
  54.                         else
  55.                         {
  56.                                 P2=SEG_Tab[Num/100%10];
  57.                         }                        
  58.                                 
  59.                         DS2=0;
  60.                                 
  61.                 break;

  62.                 //-----------數(shù)碼管第3位-------------               
  63.                 case 3:  
  64.                         if(Num==0)
  65.                         {
  66.                                 P2=0x40;
  67.                         }
  68.                         else
  69.                         {
  70.                                 P2=SEG_Tab[Num/10%10];
  71.                         }                        
  72.                         
  73.                
  74.                           DS3=0;                        
  75.                 break;

  76.                 //-----------數(shù)碼管第4位-------------               
  77.                 case 4:  
  78.                         if(Num==0)
  79.                         {
  80.                                 P2=0x40;
  81.                         }
  82.                         else
  83.                         {
  84.                                 P2=SEG_Tab[Num%10];
  85.                         }                        
  86.                         
  87.                         DS4=0;               
  88.                 break;

  89.          //------------------default---------------        
  90.                 default: break;        
  91.         }
  92.         
  93.         //-----數(shù)碼管循環(huán)------        
  94.         ScanTime++;
  95.         if(ScanTime>4)
  96.         {
  97.                 ScanTime=1;//循環(huán)掃描        
  98.         }
  99. }

  100. /*-------------------------------------
  101.                             按鍵掃描
  102. ---------------------------------------*/        
  103. void keyscan()
  104. {
  105.         if(K1==0)
  106.         {
  107.                 if(flag_KEY==1)//按鍵只響應(yīng)1次
  108.                 {
  109.                         flag_KEY=0;
  110.                         
  111.                         if(Num<999)
  112.                         {
  113.                                 Num++;
  114.                         }
  115.                 }
  116.         }


  117.         else if(K2==0)
  118.         {
  119.                 if(flag_KEY==1)//按鍵只響應(yīng)1次
  120.                 {
  121.                         flag_KEY=0;
  122.                         
  123.                         if(Num>0)
  124.                         {
  125.                                 Num--;
  126.                         }
  127.                 }
  128.         }


  129.                 else if(K3==0)
  130.         {
  131.                 if(flag_KEY==1)//按鍵只響應(yīng)1次
  132.                 {
  133.                         flag_KEY=0;
  134.                         
  135.                         if(Num>0)
  136.                         {
  137.                                 Num=0;
  138.                         }
  139.                 }
  140.         }

  141.   else//按鍵松開
  142.   {        
  143.           flag_KEY=1;
  144.   }
  145. }







  146. void delay_ms(unsigned int ms)// 延時(shí)子程序
  147. {   
  148.   unsigned int a,b;
  149.   for(a=ms;a>0;a--)
  150.   for(b=123;b>0;b--);
  151. }
  152. /*-------------------------------------
  153.                             主函數(shù)
  154. ---------------------------------------*/        
  155. void main()
  156. {
  157.         P1M1 = 0x00; P1M0 = 0xFF; //P1口推挽模式
  158.         P2M1 = 0x00; P2M0 = 0xFF; //P2口推挽模式
  159.    
  160.         while(1)
  161.         {
  162.                 display();
  163.                 keyscan();
  164.                 delay_ms(10);
  165.                 if(Num>=100)
  166.                 {
  167.                         FMQ=0;
  168.                 }
  169.                 else
  170.                 {
  171.                         FMQ=1;
  172.                 }
  173.         }
  174. }
復(fù)制代碼

作者: wl20020807    時(shí)間: 2022-5-20 16:43
版主你好,請(qǐng)問下載時(shí)單片機(jī)的晶振頻率設(shè)置多少?
作者: wl20020807    時(shí)間: 2022-5-22 19:00
版主,照電路搭建數(shù)碼管沒有顯示
作者: gpdt3209    時(shí)間: 2024-1-29 16:12
數(shù)碼管不要限流電阻嗎
作者: wl20020807    時(shí)間: 2024-8-21 15:32
沒有任何顯示
作者: wl20020807    時(shí)間: 2024-9-13 17:36
ID95809樓主你好,我仿制你的計(jì)數(shù)器程序計(jì)數(shù)沒反應(yīng),把K3復(fù)位按鈕那段程序刪了才可以計(jì)數(shù)不知道是什么原因




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 97在线观看免费视频 | 国精产品一区二区 | 精品精品 | 四虎永久在线 | 亚洲成人一区 | 亚洲激情偷拍 | 不卡日本 | avxxxxx| 久久久久久久国产精品 | 男女裸体无遮挡做爰 | 一级片在线观看视频 | 91av在线看| 久久久不卡 | 国产高清一区二区 | 黄色一级大片 | 日韩视频免费大全中文字幕 | 国产九九热 | 国产精品一区二区视频 | 亚洲精品国产一区 | 国产成人精品视频 | av永久免费 | 日本不卡一区 | 在线观看视频一区二区 | 日韩中文在线观看 | 日本丰满少妇裸体自慰 | 激情综合久久 | www.久草.com | 91成人精品一区在线播放 | 欧美视频二区 | 中文字幕日韩在线观看 | 日本成人小视频 | 婷婷中文网 | 黄色免费网站视频 | 亚洲国产成人精品女人久久久 | 精品欧美日韩 | 天天爽夜夜爽夜夜爽 | 在线中文av| 日韩精品视频免费在线观看 | 三级久久久 | 99精品视频免费观看 | 高潮毛片又色又爽免费 |