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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

數字選頻電路可編程工控開發板原理圖與單片機源程序等資料下載

[復制鏈接]
跳轉到指定樓層
樓主

【簡要說明】
一、 尺寸:長114mmX寬72mmX高18mm
二、 主要芯片:單片機,數碼管、穩壓器 、繼電器
三、 工作電壓:6V40V,功耗小于1W
四、  特點:1、具有穩壓電路,輸入電壓廣,具有電源指示燈。
            2、具有6位數碼管顯示。
            3、具有按鍵調節功能,設置參數帶記憶功能。
            4、最大檢測頻率100KHZ。
            5、雙路繼電器輸出。
            6、繼電器最大控制負載300W。         
            7、單片機編程,客戶可以自己更改,提供源代碼
            8、有無信號輸出,具有LED燈指示。
            9、端子采用螺旋壓接端子           
            10、工作溫度-40度至 +70度
            11、工作濕度 40%  ~ 80%RH
            12、具有電源防接反保護
            13、具有續流保護
            14、具有電磁抗干擾能力
            15、板子穩定工作可靠
            16、板子可安裝在DIN導軌上面

GYJ-0043_數字選頻工控開發板的電路原理圖:


pcb圖:


元件清單:


實物圖與接線圖等:


51單片機源程序如下:
  1. #include "demo.h"
  2. #include "eeprom.h"
  3. #define uchar unsigned char//宏定義無符號字符型
  4. #define uint unsigned int  //宏定義無符號整型

  5. uint tcnt1=0;//用于刷新數碼管
  6. uint qiannum1,bainum1,shinum1,genum1;
  7. uchar qiannum2,bainum2,shinum2,genum2;
  8. uchar qiannum3,bainum3,shinum3,genum3;
  9. code uchar seg7code[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //顯示段碼 數碼管字跟
  10. uchar wei1[3]={0XDf,0XBf,0X7f};//數碼管1的位的控制端
  11. uchar wei2[3]={0XFb,0XF7,0Xef};//數碼管2的位的控制端
  12. uchar abcf[4]={0x88,0x83,0xc6,0xbf};//abc-
  13. uchar abcf1,abcf2;//用于顯示特殊字符abc-

  14. uint dispcount=0;//獲取霍爾傳感器的數據用        獲取數據
  15. uint lck=0;//獲取霍爾傳感器的數據用    計時一秒用
  16. uint disp=0; //獲取霍爾傳感器的數據用   顯示到數碼管用
  17. void timer0_1init();//定時配置

  18. void displaynum();//將數字傳到數碼管上顯示
  19. static uchar presstime=0;//時間值按鍵用到的
  20. uint kf0=1;//按鍵用的標志位
  21. uint kt0=0;//按鍵用的標志位
  22. void keycan();//按鍵
  23. void keyflag();//按鍵結束調用,按鍵的建議使用,這樣可以減小code,但是觸發的不建議
  24. uint abc=0,abc1=0;//abc三種狀態
  25. uint keynum=0;//數碼管的位
  26. uint highnum=0,downnum=0;//最大數和最小數
  27. uchar highnum1=0,highnum2=0,downnum1=0,downnum2=0;//最大數和最小數
  28. bit flag_eeprom1=1;//掉電存儲的標志位
  29. void saveeepro();//掉電存儲
  30. void main(){
  31.         timer0_1init();
  32.         highnum1=Byte_Read(0x01);//掉電存儲用到  
  33.         highnum2=Byte_Read(0x02);//掉電存儲用到
  34.         downnum1=Byte_Read(0x03);//掉電存儲用到
  35.         downnum2=Byte_Read(0x04);//掉電存儲用到        
  36.         genum2=highnum1%10;//個位
  37.         shinum2=highnum1%100/10;//十位
  38.         bainum2=highnum2%10;//個位
  39.         qiannum2=highnum2%100/10;//十位
  40.         
  41.         genum3=downnum1%10;//個位
  42.         shinum3=downnum1%100/10;//十位
  43.         bainum3=downnum2%10;//個位
  44.         qiannum3=downnum2%100/10;//十位
  45.                
  46.         highnum=qiannum2*1000+bainum2*100+shinum2*10+genum2;
  47.         downnum=qiannum3*1000+bainum3*100+shinum3*10+genum3;
  48.         while(1){
  49.                 keycan();
  50.                 displaynum();
  51.         }
  52. }
  53. void saveeepro(){//掉電存儲
  54.                          highnum1=shinum2*10+genum2;
  55.                          highnum2=qiannum2*10+bainum2;
  56.                          downnum1=shinum3*10+genum3;
  57.                          downnum2=qiannum3*10+bainum3;
  58.                             Sector_Erase(0);           //擦除0x01地址中的數據          一定要先擦除再寫進  同一地址                                
  59.                       Byte_Program(0x01,highnum1);            //擦除完成就可以寫入了
  60.                           Byte_Program(0x02,highnum2);            //擦除完成就可以寫入了
  61.                       Byte_Program(0x03,downnum1);            //擦除完成就可以寫入了
  62.                           Byte_Program(0x04,downnum2);            //擦除完成就可以寫入了
  63. }
  64. void keycan(){//按鍵
  65.     if(key1==0){//當按鍵1按下
  66.                 if(kf0){//當標志位kf0=1的時候進行
  67.                         if(presstime>100){//當時間值大于一百的時候
  68.                                 kf0=0;//標志位kf0=0
  69.                                 kt0=1;//標志位kt0=0
  70.                                 presstime=0;//時間清零,重新進行
  71.                                 keynum=0;
  72.                                 abc1=0;
  73.                                 disp=0;
  74.                                 abc++;
  75.                         if(abc==3){//當位到3則置位0
  76.                                    abc=0;
  77.                                  }
  78.                         }
  79.                   }
  80.         }else{//當按鍵松開
  81.                 keyflag();
  82.         }//按鍵1結束
  83.         if(abc>0){
  84.             if(key2==0){if(kf0){if(presstime>100){kf0=0;kt0=1;presstime=0;flag_eeprom1=1;
  85.                                         keynum++;if(keynum==5){keynum=0;
  86.                 }}}}else{keyflag();        
  87.                         if((flag_eeprom1==1)){//加掉電存儲
  88.                                 flag_eeprom1=0;
  89.                                 saveeepro();//掉電存儲
  90.                         }
  91.                 }
  92.             if(key3==0){if(kf0){if(presstime>100){kf0=0;kt0=1;presstime=0;flag_eeprom1=1;
  93.                                 switch(keynum){
  94.                                         case 1:
  95.                                                 if(abc==1){
  96.                                                         genum2++;//數碼管一加加
  97.                                                         if(genum2>9){//當數碼管一加加到9時置為1
  98.                                                                 genum2=0;
  99.                                                         }
  100.                                                 }else if(abc==2){
  101.                                                         genum3++;//數碼管一加加
  102.                                                         if(genum3>9){//當數碼管一加加到9時置為1
  103.                                                                 genum3=0;
  104.                                                         }                                                
  105.                                                 }
  106.                                                 break;
  107.                                         case 2:if(abc==1){shinum2++;if(shinum2>9){shinum2=0;}
  108.                                          }else if(abc==2){shinum3++;if(shinum3>9){shinum3=0;}}
  109.                                                 break;
  110.                                         case 3:if(abc==1){bainum2++;if(bainum2>9){bainum2=0;}
  111.                                          }else if(abc==2){bainum3++;if(bainum3>9){bainum3=0;}}
  112.                                                 break;
  113.                                         case 4:if(abc==1){qiannum2++;if(qiannum2>9){qiannum2=0;}
  114.                                          }else if(abc==2){qiannum3++;if(qiannum3>9){qiannum3=0;}}
  115.                                                 break;

  116.                                         default:break;
  117.                                 }
  118.                 }}}else{keyflag();
  119.                         if((flag_eeprom1==1)){//加掉電存儲
  120.                                 flag_eeprom1=0;
  121.                                 saveeepro();//掉電存儲
  122.                         }
  123.                 }
  124.         }
  125. }

  126. void displaynum(){//將數字傳到數碼管上顯示
  127.         if(abc==0){
  128.                 abcf1=0;//a
  129.                 abcf2=3;//-
  130.                 genum1=disp%10;//個位
  131.                 shinum1=disp%100/10;//十位
  132.                 bainum1=disp%1000/100;//百位
  133.                 qiannum1=disp/1000;//千位
  134.                 if(abc1>2000){
  135.                         if(disp<downnum){
  136.                                 out1=0;
  137.                                 out2=1;
  138.                         }else if(disp>highnum){
  139.                                 out1=1;
  140.                                 out2=0;               
  141.                         }else{
  142.                                 out1=1;
  143.                                 out2=1;                                
  144.                         }
  145.                 }else{
  146.                                 out1=1;
  147.                                 out2=1;                                
  148.                         }
  149.         }else if(abc==1){
  150.                 abcf1=1;//b
  151.                 abcf2=3;//-        
  152.                 highnum=qiannum2*1000+bainum2*100+shinum2*10+genum2;
  153.                 genum1=genum2;//個位
  154.                 shinum1=shinum2;//十位
  155.                 bainum1=bainum2;//百位
  156.                 qiannum1=qiannum2;//千位

  157.         }else if(abc==2){
  158.                 abcf1=2;//c
  159.                 abcf2=3;//-        
  160.                 downnum=qiannum3*1000+bainum3*100+shinum3*10+genum3;
  161.                 genum1=genum3;//個位
  162.                 shinum1=shinum3;//十位
  163.                 bainum1=bainum3;//百位
  164.                 qiannum1=qiannum3;//千位
  165.         }
  166. }
  167. void timer0(void)interrupt 1  {         
  168.         TH0=0xe3;
  169.         TL0=0xc;        
  170.         tcnt1++;
  171.         presstime++;
  172.         if(abc==0){
  173.                 abc1++;
  174.                 lck++;        
  175.                 if(lck==1000){
  176.                         if(abc1>2000){
  177.                                 disp=dispcount;
  178.                         }
  179.                         lck=0;
  180.                         dispcount=0;               
  181.                 }
  182.         }
  183.         switch(tcnt1){
  184.            case 1: P2=0XFF; P0=abcf[abcf1];P2=wei1[2];break;
  185.           case 2: P2=0XFF; P0=abcf[abcf2];P2=wei1[1];break;
  186.           case 3: P2=0XFF; P0=seg7code[qiannum1];if(keynum==4 || keynum==0){P2=wei1[0];}break;
  187.            case 4: P2=0XFF; P0=seg7code[bainum1]; if(keynum==3 || keynum==0){P2=wei2[2];}break;
  188.           case 5: P2=0XFF; P0=seg7code[shinum1]; if(keynum==2 || keynum==0){P2=wei2[1];}break;
  189.           case 6: P2=0XFF; P0=seg7code[genum1];  if(keynum==1 || keynum==0){P2=wei2[0];}break;
  190.           default: tcnt1=0; P2=0XFF; break;
  191.          }
  192. }
  193. void timer0_1init(){//定時配置
  194.         TMOD=0x0;
  195.         TH0=0xe3;
  196.         TL0=0xc;
  197. //        IT0=1;     //INT0下降沿中斷
  198. //        EX0=1;     //允許INT1中斷         
  199.         IT1=1;     //INT1下降沿中斷
  200.         EX1=1;     //允許INT1中斷         
  201.         TR0=1;
  202.         ET0=1;
  203.         EA=1;
  204. }
  205. //void int0(void) interrupt 0{//P3^2//此處用于獲取霍爾傳感器的數據
  206. //        dispcount++; //每一次中斷,計數加一
  207. //}
  208. void int1(void) interrupt 2{//P3^3//此處用于獲取霍爾傳感器的數據
  209.         dispcount++; //每一次中斷,計數加一
  210. }
  211. void keyflag(){//按鍵結束調用,按鍵的建議使用,這樣可以減小code,但是觸發的不建議
  212.            if(kt0){//當標志位kt0=1的時候進行
  213.                    if(presstime>100){//當時間值大于一百的時候
  214.                         kf0=1;//標志位kf0=1
  215.                         kt0=0;//標志位kt0=0
  216. ……………………

  217. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
GYJ-0043_數字選頻電路發貨資料.rar (6.82 MB, 下載次數: 16)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一级久久久久 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 国产日韩欧美中文 | 黄色一级电影免费观看 | 91最新视频 | 日韩综合在线 | 日韩欧美一区二区三区免费看 | 九久久 | 在线观看视频福利 | 国产一级视频在线 | 懂色av一区二区三区在线播放 | 成人在线精品视频 | 天天搞天天操 | 欧美日韩在线视频观看 | 精品免费在线 | 免费黄视频网站 | 亚洲另类春色偷拍在线观看 | 欧美激情一区 | 午夜久久久久 | 成人在线中文字幕 | 国产目拍亚洲精品99久久精品 | 国产日韩精品视频 | 国产精品观看 | 精品亚洲一区二区 | 99热在线观看精品 | 精品熟人一区二区三区四区 | 草草草久久久 | 国产在线精品一区二区三区 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 国产午夜精品一区二区三区 | 亚洲成人三级 | 国产男女视频网站 | 天堂视频一区 | 精品久久久久久18免费网站 | 国产九九九九 | 成人一区二区视频 | 日韩精品成人免费观看视频 | 欧美激情综合五月色丁香小说 | 日日摸夜夜爽人人添av | 欧美国产精品一区二区三区 | 亚洲精品一区在线观看 |