亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11069|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

基于Proteus的數(shù)字頻率計設(shè)計資料(PCB+仿真+單片機源碼+電路圖)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:323670 發(fā)表于 2018-5-6 19:18 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
分享分享
數(shù)字頻率計電路原理圖如下:


Altium Designer畫的數(shù)字頻率計原理圖和PCB圖如下:(51hei附件中可下載工程文件)


仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


論文目錄:
目錄
前  言    1
第一章  總體設(shè)計方案    2
1.1 總設(shè)計框圖    2
1.2 硬件設(shè)計分析    2
1.2.1 電源的設(shè)計    2
(4):LCD1602的指令說明及時序    10
(5): LCD1602的RAM地址映射及標準字庫表    13
第二章  軟件設(shè)計與分析    15
2.1 軟件設(shè)計的組成    15
2.2  各部分軟件分析    15
2.2.1  定時器0中斷子函數(shù)    15
2.2.2  定時器1中斷子函數(shù)    15
2.2.3  主函數(shù)    16
2.3  總源程序    18
第三章  軟件介紹    28
3.1 PROTEUS簡介    28
3.2 PROTEL 99 SE簡介    29
3.2.1 電路工程設(shè)計部分    29
3.2.2 電路仿真與PLD部分    30
3.3 Protel 99 SE的功能特性    30
3.4 Protel99SE快捷鍵大全    30
3.6仿真圖    36
3.7原理圖    37
第四章  減小誤差措施及擴展方面    39
4.1減小誤差措施    39
4.2擴展方面    39
(1)預(yù)處理電路部分    39
(2)增加電源部分    39
4.3 功能上的完善    40
4.3.1 增加鍵盤控制    40
4.3.2 實現(xiàn)自動量程轉(zhuǎn)換    40
4.3.3 液晶顯示器(LCD)進行數(shù)據(jù)的顯示    41
總結(jié)    42
致謝詞    43
參考文獻    44

單片機數(shù)字頻率計源程序如下:
  1. #include<reg51.h>
  2. #include<stdio.h>
  3. #include<intrins.h>
  4. typedef unsigned char uchar;
  5. typedef unsigned int  uint;
  6. sbit RS=P2^5;
  7. sbit RW=P2^6;
  8. sbit E=P2^7;
  9. sbit CLK=P2^0;
  10. sbit DO=P2^1;
  11. sbit DI=P2^1;
  12. sbit CS=P2^2;
  13. sbit CLR=P3^0;
  14. sbit GATE=P3^1;
  15. sbit K1=P3^7;
  16. uint  num=0;
  17. uint  c=0;
  18. float d=0;
  19. uchar e=1,f=1;
  20. unsigned long int aaa=0,bbb=0;
  21. uchar LCD_wait()//LCD1602內(nèi)部等待函數(shù)
  22. {
  23.         RS=0;
  24.         RW=1;       
  25.         _nop_();
  26.         E=1;
  27.         _nop_();
  28.         E=0;
  29.         return P0;               
  30. }
  31. void LCD_write(bit aa,uchar bb)//向LCD寫入命令或數(shù)據(jù)
  32. {
  33.         E=0;
  34.         RS=aa;
  35.         RW=0;               
  36.         _nop_();
  37.         P0=bb;       
  38.         _nop_();//注意順序
  39.         E=1;               
  40.         _nop_();//注意順序
  41.         E=0;               
  42.         _nop_();
  43.         LCD_wait();//LCD1602內(nèi)部等待函數(shù)       
  44. }
  45. void LCD_display(uchar temp)
  46. {
  47.         LCD_write(0,0x08|temp);       
  48. }
  49. void LCD_input(uchar cc)
  50. {
  51.         LCD_write(0,0x04|cc);
  52. }
  53. void LCD_init()//初始化LCD
  54. {
  55.         //RW=0;
  56.         LCD_write(0,0x38);//8位數(shù)據(jù)端口,2行顯示,5*7點陣
  57.         LCD_write(0,0x38);
  58.        
  59.         LCD_write(0,0x0C);//開啟顯示, 無光標
  60.         LCD_write(0,0x01);//清屏
  61.         LCD_write(0,0x0C);//AC遞增,畫面不動
  62.        
  63. }
  64. void LCD_sfj1(uchar x,uchar y)
  65. {
  66.         if(y==0)
  67.                 LCD_write(0,0x80|x);
  68.         if(y==1)
  69.                 LCD_write(0,0x80|(x-0x40));
  70. }
  71. void LCD_print(uchar *p)
  72. {
  73.         while(*p!='\0')
  74.         {
  75.                 LCD_write(1,*p);
  76.                 p++;
  77.         }
  78. }
  79. void delay1(uchar x)//ms延時子函數(shù)
  80. {                   
  81.     uchar i;
  82.     for(i=0;i<x;i++); //延時,脈沖一位持續(xù)的時間
  83. }
  84. uchar start(bit temp) //把模擬電壓值轉(zhuǎn)換成8位二進制數(shù)并返回,dat為通道選擇。
  85. {          
  86.         uchar i,aa=0;
  87.     CS=0;
  88.     DO=0;//片選,DO為高阻態(tài)
  89.     delay1(10);
  90.     CLK=0;
  91.     delay1(2);
  92.     DI=1;         
  93.     CLK=1;         
  94.     delay1(2);//第一個脈沖,起始位
  95.     CLK=0;                                          
  96.     delay1(2);                                          
  97.     DI=1;                                          
  98.     CLK=1;                                          
  99.     delay1(2);//第二個脈沖,DI=1表示雙通道單極性輸入         
  100.     CLK=0;                                                                                 
  101.     delay1(2);                                                                                 
  102.     DI=temp;        /*******************************/                                                                                         
  103.     CLK=1;
  104.     delay1(2);//第三個脈沖,DI=1表示選擇通道1(CH2)          
  105.     DI=0;                                                                                  
  106.     DO=1;//DI轉(zhuǎn)為高阻態(tài),DO脫離高阻態(tài)為輸出數(shù)據(jù)作準備
  107.     CLK=1;                                                                                                                                                                                    
  108.     delay1(2);                                                                          
  109.     CLK=0;                                                                          
  110.     delay1(2);//經(jīng)實驗,這里加一個脈沖AD便能正確讀出數(shù)據(jù),
  111.         //不加的話讀出的數(shù)據(jù)少一位(最低位d0讀不出)                  
  112.         for(i=0;i<8;i++)                                                                          
  113.     {
  114.             CLK=1;
  115.                delay1(2);
  116.                CLK=0;
  117.                delay1(2);
  118.                aa=(aa<<1)|DO;//在每個脈沖的下降沿DO輸出一位數(shù)據(jù),最終ch為8位二進制數(shù)
  119.         }
  120.     CS=1;//取消片選,一個轉(zhuǎn)換周期結(jié)束
  121.     return(aa);//把轉(zhuǎn)換結(jié)果返回
  122. }
  123. uint fenjie(bit cc)
  124. {
  125.         uchar dd;
  126.         uint  ee;
  127.         dd=start(cc);
  128.         ee=(uint)dd*100/51; //51是由5/255的倒數(shù)得來的,5是5V,255是8位AD。
  129.         return(ee);
  130. }       
  131. void delay2(uint z)//按鍵消抖
  132. {
  133.         uint x;
  134.         uchar y;
  135.         for(x=0;x<z;x++)
  136.                 for(y=0;y<110;y++);
  137. }
  138. void delay3()//1s延時子函數(shù)            
  139. {
  140.         uchar h,i,j,k;
  141.         for(h=5;h>0;h--)
  142.                 for(i=4;i>0;i--)
  143.                         for(j=116;j>0;j--)
  144.                                 for(k=214;k>0;k--);
  145. }
  146. //定時計數(shù)初始化
  147. void init()             
  148. {
  149.         TMOD=0x25;                                // T0計數(shù),T1定時
  150.         TH0=0x00;       
  151.         TL0=0x00;
  152.         TH1=0x06;
  153.         TL1=0x06;
  154.         CLR=1;
  155.         CLR=0;
  156.         GATE=0;
  157.         GATE=1;
  158.         ET0=1;
  159.         ET1=1;
  160.         EA=1;
  161.         TR0=1;
  162.         TR1=1;
  163. }
  164. void main()//主函數(shù)
  165. {         
  166.         unsigned long a=0;
  167.         bit b=0;
  168.         uchar tab[10];
  169.         uint temp=0;
  170.         LCD_init();
  171.         init();
  172.         LCD_sfj1(0,0);
  173.         LCD_print("Welcome to use ");
  174.         LCD_sfj1(0,1);
  175.         LCD_print("Please Wating...");
  176.         delay3();
  177.         LCD_write(0,0x01);
  178.         while(1)
  179.         {
  180.                 if(K1==0)
  181.                 {       
  182.                         delay2(10);
  183.                         if(K1==0)       
  184.                         {
  185.                                 while(K1==0);
  186.                                 b=~b;
  187.                                 LCD_write(0,0x01);
  188.                         }
  189.                 }
  190.                 temp=fenjie(0);
  191.                 if(temp>c)
  192.                 c=temp;
  193.                 if(temp>c>>3&&temp<c>>1)
  194.                         f=0;
  195.                 if(b==0)
  196.                 {
  197.                         a=(aaa*256)+bbb;
  198.                         if(a==0)
  199.                         {
  200.                                 LCD_sfj1(0,0);
  201.                                 LCD_print("F= 0000000000 Hz");       
  202.                                 LCD_sfj1(0,1);
  203.                                 LCD_print("F= 0000000000 Hz");        
  204.                         }
  205.                         else
  206.                         {               
  207.                                 LCD_sfj1(0,0);
  208.                                 LCD_print("F=            Hz");
  209.                                 sprintf(tab,"%ld",a);
  210.                                 LCD_sfj1(2,0);
  211.                                 LCD_print(tab);
  212.                                 LCD_sfj1(0,1);
  213.                                 LCD_print("P=            ms");
  214.                                 sprintf(tab,"%0.6f",1000.0/a);
  215.                                 LCD_sfj1(2,1);
  216.                                 LCD_print(tab);       
  217.                         }
  218.                 }
  219.                 else
  220.                 {   
  221.                         sprintf(tab,"%bd",e);
  222.                         LCD_sfj1(0,0);
  223.                         LCD_print(tab);
  224.                         sprintf(tab,"Upp=%0.3fV",d);
  225.                         LCD_sfj1(0,1);
  226.                         LCD_print(tab);
  227.                 }
  228.         }
  229. }
  230. void t0() interrupt 1 using 1
  231. {

  232. }
  233. void t1() interrupt 3 using 3//定時器T1中斷服務(wù)程序
  234. {          
  235.         if(num==3999)
  236.         {
  237.                 GATE=0;
  238.                 TR0=0;
  239.                 TR1=0;
  240.                 aaa=TH0*256+TL0;
  241.                 bbb=P1;
  242.                 d=c/100.0;
  243.                 c=0;
  244.                 e=f;
  245.                 f=1;
  246.                 CLR=1;
  247.                 CLR=0;
  248. ……………………

  249. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼


所有資料51hei提供下載:
數(shù)字頻率計.zip (984.6 KB, 下載次數(shù): 222)


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

使用道具 舉報

沙發(fā)
ID:361699 發(fā)表于 2018-7-4 21:40 | 只看該作者
大佬,你的程序在keil里打開時候顯示有兩處警告,仿真運行不了啊
回復(fù)

使用道具 舉報

板凳
ID:370518 發(fā)表于 2018-7-14 16:39 | 只看該作者
仿真里只有一種波形可以識別,什么情況?
回復(fù)

使用道具 舉報

地板
ID:613683 發(fā)表于 2019-9-19 17:01 | 只看該作者
值得學(xué)習借鑒
回復(fù)

使用道具 舉報

5#
ID:612180 發(fā)表于 2019-9-20 10:43 | 只看該作者
不過現(xiàn)在protell不常用了,現(xiàn)在都是用AD了
回復(fù)

使用道具 舉報

6#
ID:656668 發(fā)表于 2019-12-22 21:58 來自觸屏版 | 只看該作者
這個測量范圍是多大
回復(fù)

使用道具 舉報

7#
ID:782711 發(fā)表于 2020-6-18 00:57 | 只看該作者
值得學(xué)習借鑒
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表