欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

原創(chuàng)的單片機(jī)+UA741放大整形1~10K頻率計(jì)Proteus仿真與實(shí)物設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
設(shè)計(jì)要求
(1)可測(cè)正弦波、方波信號(hào)的頻率,頻率范圍:1 Hz~10 kHz。
(2)信號(hào)Vpp為0.1 ~3 V。
(3)測(cè)試結(jié)果顯示于液晶。
1.2設(shè)計(jì)總體方案
用一個(gè)定時(shí)器來(lái)定時(shí)1秒,用一個(gè)計(jì)數(shù)器來(lái)數(shù)在定時(shí)1秒內(nèi)有多少次外部中斷,定時(shí)器和計(jì)數(shù)器定時(shí)工作在方式1,即16位定時(shí)器/計(jì)數(shù)器。然后定時(shí)1S結(jié)束后,把計(jì)數(shù)器里面的高8位和低8位的數(shù)值取出來(lái),換算成10進(jìn)制數(shù)賦值給頻率,剛好數(shù)值變化多少,頻率就是多少Hz.

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


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



1.3系統(tǒng)結(jié)構(gòu)框圖
2系統(tǒng)硬件電路設(shè)計(jì)
    2.1總體電路圖
圖2、總體電路圖
2.2各單元模塊功能
①STC89C52RC:
具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM, 32 位I/O 口線,看門(mén)狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,3個(gè)16 位定時(shí)器/計(jì)數(shù)器,4個(gè)外部中斷,一個(gè)7向量4級(jí)中斷結(jié)構(gòu)(兼容傳統(tǒng)51的5向量2級(jí)中斷結(jié)構(gòu)),全雙工串行口。另外 STC89C52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz,6T/12T可選。
圖3、STC89C52RC引腳圖
②LCD1602液晶顯示屏:
1602采用標(biāo)準(zhǔn)的16腳接口,其中:
第1腳:VSS為電源地
第2腳:VCC接5V電源正極
第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì) 產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度)。
第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。
第5腳:RW為讀寫(xiě)信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫(xiě)操作。
第6腳:E(或EN)端為使能(enable)端,高電平(1)時(shí)讀取信息,負(fù)跳變時(shí)執(zhí)行指令。
第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。
第15~16腳:空腳或背燈電源。15腳背光正極,16腳背光負(fù)極。
主要功能:用來(lái)顯示頻率
③LM393比較器:
  lm393引腳圖
      
圖4、 LM393內(nèi)部結(jié)構(gòu)圖
  
LM393主要功能
  輸出負(fù)載電阻能銜接在可允許電源電壓范圍內(nèi)的任何電源電壓上,不受 Vcc端電壓值的限制,輸出部分的陷電流被可能得到的驅(qū)動(dòng)和器件的β值所限制。當(dāng)達(dá)到極限電流(16mA)時(shí),輸出晶體管將退出而且輸出電壓將很快上升。輸出飽和電壓被輸出晶體管大約60ohm 的γSAT限制。當(dāng)負(fù)載電流很小時(shí),輸出晶體管的低失調(diào)電壓(約1.0mV)允許 輸出箝位在零電平。
④UA741集成運(yùn)放:
UA741的2腳是反相輸入端,3腳是同相輸入端,6腳是輸出端,7腳接正電源,4腳接負(fù)電源(雙電源工作時(shí)或地(單電源工作時(shí)),1腳和5腳是失調(diào)電壓調(diào)零端,8腳是空腳內(nèi)部沒(méi)有任何連接。如下圖——
     
圖5、 UA741引腳圖
主要功能:把信號(hào)放大,得到所需要的電壓幅值。
⑤11.0592Mhz晶振:
晶體振蕩器,能產(chǎn)生振蕩,其特點(diǎn)是固有頻率十分穩(wěn)定,而且震動(dòng)具有多諧性,除了奇頻震動(dòng)外還有奇次諧波泛音震動(dòng).性能上,晶振的品質(zhì)因素Q和特性阻抗都非常高,而且接入系數(shù)很小,因此具有很高的頻率穩(wěn)定度,提供單片機(jī)工作時(shí)鐘
2.3模塊電路設(shè)計(jì)
電路的關(guān)鍵部分還是放大整形電路,下面是放大整形電路的設(shè)計(jì)模塊
總體電路:
圖6 、放大整形總體電路圖
放大器部分:
         
圖7、 放大部分電路圖
根據(jù)實(shí)際器件的設(shè)計(jì),我們放大器放大倍數(shù)為Au=101倍
具體算法如下
      假定放大器同向輸入端電壓為Ui,放大器放大輸出電壓端電壓Uo,則回路近似有以下關(guān)系
                               (公式1)
則放大倍數(shù)為:                             (公式2)
比較器部分:
            
圖8、 比較電路設(shè)計(jì)圖
我們給比較器反向輸入端的基準(zhǔn)電壓為2.5v,輸出端接一個(gè)上拉電阻增強(qiáng)輸出引腳的驅(qū)動(dòng)能力。當(dāng)同向輸入端電壓大于反向輸入端電壓(2.5V)時(shí),比較器輸出高電平,當(dāng)同向輸入端電壓低于反向輸入端電壓(2.5V)時(shí),比較器輸出低電平。
因此,以2.5V為界,當(dāng)輸入電壓變化時(shí),輸出端反映出兩種狀態(tài),高電位和低電位。
  3系統(tǒng)軟件設(shè)計(jì)
     3.1程序流程圖
      
     3.2程序主要模塊
程序包括,定時(shí)模塊,計(jì)數(shù)模塊,顯示模塊
定時(shí)模塊是用來(lái)定時(shí)1秒給計(jì)數(shù)器,計(jì)數(shù)器在這1秒數(shù)了多少個(gè)數(shù),再把數(shù)了多少個(gè)數(shù)拿去給顯示模塊顯示。
  4系統(tǒng)仿真及調(diào)試
   4.1Proteus仿真
  
圖10、 Proteus仿真圖一
圖11、 Proteus仿真圖二
4.2實(shí)物研制及調(diào)試
4.2.1方波頻率測(cè)試
結(jié)論

         實(shí)訓(xùn)過(guò)程中遇到了很多問(wèn)題,這個(gè)題目不僅關(guān)于如何寫(xiě)單片機(jī)的程序,還要理清放大整形電路的設(shè)計(jì)思路,一剛開(kāi)始,我們也不知道怎么設(shè)計(jì)放大整形電路。然后去百度借鑒別人的設(shè)計(jì)思路,設(shè)計(jì)過(guò)程也很懊惱,各種器件的取值怎么選取,由于實(shí)驗(yàn)室的器材種類(lèi)有限,我們還得根據(jù)實(shí)際出發(fā),選擇合適的器件。放大整形電路設(shè)計(jì)完成后,我們就根據(jù)電路來(lái)搭個(gè)原理圖。我是第一次使用Altium Designer來(lái)畫(huà)PCB的,使用操作有點(diǎn)陌生,我就根據(jù)老師的演示和課后看課本慢慢熟悉Altium Designer畫(huà)PCB的過(guò)程,最后完成了自己的PCB電路。后面就是打印PCB焊接電路的過(guò)程了,實(shí)物做出來(lái)后,和仿真的還是有很大差別,特別是放大器部分,單電源無(wú)法工作,這就給我們的電路造成一個(gè)很大的錯(cuò)誤,最后我們改成了雙電源工作,電路其他部分因?yàn)殡p電源工作的影響,我們也改了一下。最終完成了我們的頻率計(jì)的設(shè)計(jì),頻率也能測(cè)得出來(lái)了。總之實(shí)訓(xùn)過(guò)程很有趣和考驗(yàn)我們的設(shè)計(jì)能力,在實(shí)訓(xùn)中體會(huì)學(xué)習(xí)的快樂(lè)。


附錄一:實(shí)物圖
圖12、實(shí)物圖一
圖13、實(shí)物圖二

#include"reg51.h"
#define uint unsigned int
#define uchar unsigned char
#define DATAPORT P2
sbit RS=P3^2;
sbit RW=P3^6;
sbit E=P3^7;
sbit fangbo1=P3^0;//提供10Hz左右的自檢信號(hào)
sbit fangbo2=P3^1;//提供1Hz左右的自檢信號(hào)
uchar num;
uint f=0;//頻率f
uchar code table[]="0123456789.";
uchar code table1[]="=sHZFT: ero!";
void init(void);            //初始化函數(shù)聲明
void writeCOM(uchar i);     //寫(xiě)命令函數(shù)聲明
void writeData(uchar j);    //寫(xiě)數(shù)據(jù)函數(shù)聲明
void fbusy(void);                   //檢查忙函數(shù)聲明
void display();                        //寫(xiě)顯示函數(shù)
void delay(uint mux)
{                              
  uint i,j;

  for(i=mux;i>0;i--)
    for(j=120;j>0;j--);

}

void main()
{
  TMOD=0x51;//定時(shí)器·0工作在方式1,計(jì)數(shù)器1工作在方式1,晶振11.0592M,機(jī)器周期為12/f.
  TL0=(65536-46080)%256; //定時(shí)50ms初值為  T(定時(shí)時(shí)間,秒)*F(晶振頻率 HZ)/12,   46080、45872
  TH0=(65536-46080)/256;
  TL1=0;
  TH1=0;
  ET0=1;
  EA=1;
  init();
   while(1)
    {
            TR0=1;//打開(kāi)定時(shí)器
                TR1=1;//打開(kāi)計(jì)數(shù)器
                  while(num==20)
                {
                 num=0;//定時(shí)計(jì)算清
                 TR0=0;//關(guān)閉定時(shí)器
                 TR1=0; //關(guān)閉計(jì)數(shù)器
                 f=(TH1*256)+TL1;//計(jì)算頻率
                 delay(10);
                  TH1=0;//計(jì)數(shù)清0
                 TL1=0;//計(jì)數(shù)清0
                  }
                   display();//顯示結(jié)果
        
        
        }
               
}
//定時(shí)1S溢出
void interr_zd2()interrupt 1
{
   TL0=(65536-46080)%256;
   TH0=(65536-46080)/256;
   num++;
   fangbo1=~fangbo1;  //產(chǎn)生個(gè)10Hz左右的方波
   if(num==10){fangbo2=~fangbo2;}//產(chǎn)生個(gè)1Hz左右的方波
}
//顯示屏數(shù)據(jù)
void display()
{
        writeCOM(0x80);                    
        writeData(table1[4]);  //顯示F:
            writeData(table1[6]);
                writeCOM(0x8c);         
                writeData(table1[2]);  // 顯示HZ
            writeData(table1[3]);
                writeCOM(0xc0);                    
        writeData(table1[5]); // 顯示T:
            writeData(table1[6]);
                writeCOM(0xcd);                    
            writeData(table1[1]);  // 顯示S
                if(f<10) //頻率1位數(shù)
                {
                  writeCOM(0x85);
                  writeData(table1[7]);         
                  writeData(table1[7]);         
                  writeData(table1[7]);         
                  writeData(table1[7]);         
                  writeData(table1[7]);
                  writeData(table[f]);
                  
                }
                if((f>=10)&(f<100))//頻率2位數(shù)
                {
                  writeCOM(0x85);
                  writeData(table1[7]);         
                  writeData(table1[7]);         
                  writeData(table1[7]);         
                  writeData(table1[7]);         
                  writeData(table[f/10]);
                  writeData(table[f%10]);
                  
                 
                }
           if((f>=100)&(f<1000))//頻率3位數(shù)
                {
                  writeCOM(0x85);
                  writeData(table1[7]);         
                  writeData(table1[7]);         
                  writeData(table1[7]);         
                  writeData(table[f/100]);
                  writeData(table[f%100/10]);
                  writeData(table[f%10]);
               
                }
                if((f>=1000)&(f<10000))//頻率4位數(shù)
                {
                  writeCOM(0x85);
                  writeData(table1[7]);         
                  writeData(table1[7]);         
                  writeData(table[f/1000]);
                  writeData(table[f%1000/100]);
                  writeData(table[f%100/10]);
                  writeData(table[f%10]);
                 
                }
                if((f>=10000)&(f<=50000))//頻率5位數(shù)
                {
                  writeCOM(0x85);
                  writeData(table1[7]);         
                  writeData(table[f/10000]);
                  writeData(table[f%10000/1000]);
                  writeData(table[f%1000/100]);
                  writeData(table[f%100/10]);
                  writeData(table[f%10]);
               
                }
                if(f>50000)        //超出50khz提示錯(cuò)誤
                {
                  writeCOM(0x84);
                  writeData(table1[7]);        
                  writeData(table1[8]);         
                  writeData(table1[9]);         
                  writeData(table1[9]);        
                  writeData(table1[10]);         
                  writeData(table1[9]);
                  writeData(table1[11]);                     
                  writeCOM(0xc3);
                  writeData(table1[7]);
                  writeData(table1[7]);
                  writeData(table1[7]);        
                  writeData(table1[8]);         
                  writeData(table1[9]);         
                  writeData(table1[9]);        
                  writeData(table1[10]);         
                  writeData(table1[9]);
                  writeData(table1[11]);
                  
                  
                }
                if((0<f)&(f<=50000)) //計(jì)算周期,顯示
                {        
              writeCOM(0xc3);
                  writeData(table[1000000/f/1000000]);
                  writeData(table[10]);        
                  writeData(table[1000000/f%1000000/100000]);
                  writeData(table[1000000/f%100000/10000]);
                  writeData(table[1000000/f%10000/1000]);
                  writeData(table1[7]);         
                  writeData(table[1000000/f%1000/100]);
                  writeData(table[1000000/f%100/10]);
                  writeData(table[1000000/f%10]);
                }
            if(f==0) //顯示周期、頻率為0時(shí)算周期比較特殊
                {        
              writeCOM(0xc3);
                  writeData(table[0]);
                  writeData(table[10]);        
                  writeData(table[0]);
                  writeData(table[0]);
                  writeData(table[0]);
                  writeData(table1[7]);         
                  writeData(table[0]);
                  writeData(table[0]);
                  writeData(table[0]);
                }
}
//初始化函數(shù)
void init()
{
        writeCOM(0x01);                    //清屏
    writeCOM(0x38);                    //讀8位數(shù)據(jù),顯示兩行,使用5*7的字型
        writeCOM(0x0c);                    //顯示器開(kāi),光標(biāo)關(guān),字符不閃爍
        writeCOM(0x06);                    //字符不動(dòng),光標(biāo)自動(dòng)右移一位
}
//檢查忙函數(shù)
void fbusy()
{
        DATAPORT=0xff;       //讀之前向端口寫(xiě)1,確保讀數(shù)正確
        RS=0;RW=1;
        E=0;E=1;                   //正脈沖讀
        while(DATAPORT&0x80)           //忙,等待
        {E=0;E=1;}
}
//寫(xiě)命令函數(shù)
void writeCOM(uchar i)
{
        fbusy();
        RS=0;RW=0;
        E=1;
        DATAPORT=i;
        E=0;       //負(fù)脈沖寫(xiě)               
}
//寫(xiě)數(shù)據(jù)函數(shù)
void writeData(uchar j)
{
        fbusy();
        RS=1;RW=0;
        E=1;
        DATAPORT=j;
        E=0;       //負(fù)脈沖寫(xiě)               
}


全部資料51hei下載地址:
頻率計(jì)(1~10KHz).zip (251.61 KB, 下載次數(shù): 71)
實(shí)訓(xùn)文檔.docx (511.62 KB, 下載次數(shù): 24)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:855588 發(fā)表于 2020-12-6 20:27 | 只看該作者
你好,請(qǐng)問(wèn)有ad原理圖和封裝源文件嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:855588 發(fā)表于 2020-12-6 20:32 | 只看該作者
你好,有ad的原理圖和pcb圖嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:734289 發(fā)表于 2020-12-11 17:47 | 只看該作者
你好,請(qǐng)問(wèn)如果我還想測(cè)交流信號(hào)的電壓并在液晶屏上顯示該怎么做?
回復(fù)

使用道具 舉報(bào)

5#
ID:734289 發(fā)表于 2020-12-11 17:49 | 只看該作者
你好,如果我還想測(cè)正弦波的峰峰值并顯示該怎么做
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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