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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機簡易信號發(fā)生器仿真設(shè)計 含誤差分析+源碼+波形圖

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:191542 發(fā)表于 2019-1-9 21:22 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本人的課程設(shè)計,和大家分享分享,多謝大家的指導(dǎo)和建議!

后面的附件有完整的工程文件實習報告、仿真文件和部分誤差分析(完整的交給老師了,所有要求均滿足,誤差很小)
一、課程設(shè)計內(nèi)容及基本要求利用單片機IO口作輸出,通過定時器的周期性中斷輸出一個占空比可調(diào)、頻率可調(diào)的簡易方波信號發(fā)生器,具體要求如下:
1、完成頻率范圍為0.1Hz5KHz的方波發(fā)生器,要求如下:
1)占空比5%~95%連續(xù)可調(diào);
2)可鍵盤輸入信號發(fā)生的頻率。
2、可完成脈寬范圍為100μs1s的脈沖信號發(fā)生器,要求如下:
1)可鍵盤輸入發(fā)生脈沖寬度;
2)每按一次觸發(fā)鍵,可發(fā)出一個單脈沖。
3、根據(jù)已經(jīng)描述的C語言控制程序,運用Proteus畫出硬件連接圖,并將運用C語言描述的程序下載到Proteus虛擬單片機中,在Proteus中實現(xiàn)簡易方波信號發(fā)生器的各項功能。  

目錄
一、Proteus仿真
1、仿真電路圖
2、0.1HZ波形
3、5KHZ波形
4、10%占空比波形(10HZ)
5、90%占空比波形(10HZ)
6、工程文件框架
二、主程序部分
1、主函數(shù)
2、定時器初始化函數(shù)及中斷服務(wù)函數(shù)
三、頂層驅(qū)動文件
1、頂層驅(qū)動 .C 文件
2、頂層驅(qū)動 .H 文件
四、底層驅(qū)動文件
1、矩陣按鍵
1.1 矩陣按鍵 .C 文件
1.2 矩陣按鍵 .H 文件
2、四段數(shù)碼管
2.1 四段數(shù)碼管.C 文件
2.2 四段數(shù)碼管.H 文件


一、      Proteus仿真1、仿真電路圖
2、0.1HZ波形
3、5KHZ波形
4、10%占空比波形(10HZ)
5、90%占空比波形(10HZ)
6、工程文件框架

二、主要程序部分


主要是根據(jù)不同頻率段分不同的最小計數(shù)時長
/*******************************************************************************
* FunctionName  : Function_1_Serve
* Description    : 模式1服務(wù)函數(shù) 定時器0單位定時周期配置
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void Function_1_Serve(void)
{
        float temp = 0.0;
        temp = Calculate_Data();//計算方波頻率
        /*對應(yīng)不同頻率段 設(shè)置不同的單位定時器周期*/
        if(temp<=1)
                TIMEO = 10000;
        else if(temp<=10)
                TIMEO = 1000;
        else if(temp<=100)
                TIMEO = 100;
        else if(temp<=1000)
                TIMEO = 50;
        else if(temp<=10000)
                TIMEO = 20;
        switch(TIMEO)// 設(shè)置不同的單位定時器周期
        {        
                /*0.1hz-1hz*/
                case 10000:
                        TIMEO_H = 0xdc;TIMEO_L = 0x00;
                        time0_all_num=100/temp;time0_high_num=time0_low_num=time0_all_num/2;break;
                /*1hz-10hz*/
                case 1000:        
                        TIMEO_H = 0xfc;TIMEO_L = 0x75;
                        time0_all_num=1000/temp;time0_high_num=time0_low_num=time0_all_num/2;break;
               /*10hz-100hz*/
                case 100:        
                        TIMEO_H = 0xff;TIMEO_L = 0xb2;
                        time0_all_num=10000/temp;time0_high_num=time0_low_num=time0_all_num/2;break;
                /*100hz-1000hz*/
                case 50:        
                        TIMEO_H = 0xff;TIMEO_L = 0xdf;
                        time0_all_num=20000/temp;time0_high_num=time0_low_num=time0_all_num/2;break;
                /*1000hz-10khz*/
                case 20:        
                        TIMEO_H = 0xff;TIMEO_L = 0xff;
                        time0_all_num=23000/temp;time0_high_num=time0_low_num=time0_all_num/2;break;
                default:break;
        }
}
/*******************************************************************************
* FunctionName  : Function_3_Serve
* Description    : 模式3服務(wù)函數(shù)  定時器1單位定時周期配置
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void Function_3_Serve(void)
{
    float temp = 0.0;
    temp = Calculate_Data();
   
    time1_all_num = (uint)temp;
    TIME1_H = ((65536-80)/256);
    TIME1_L = ((65536-80)%256);
}
/*******************************************************************************
* FunctionName  : Time_Init
* Description    :系統(tǒng)定時器初始化
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
voidTime_Init(void)
{
    TMOD = 0X11;   
    TR0 = 0;            
    TR1 = 0;
    ET0 = 1;   
    ET1 = 1;
    EA = 1;
}
/*******************************************************************************
* FunctionName  : Time0(void) interrupt 1
* Description    :定時器0中斷服務(wù)函數(shù)
* Input          : None
* Output         : None
*******************************************************************************/
void Time0(void)interrupt 1
{   
    TH0 = TIMEO_H;
    TL0 = TIMEO_L;
    time0_num++;        //記錄一個周期進入定時器中斷的次數(shù)
    if(time0_num > time0_high_num)  //輸出口由高電平跳變?yōu)榈碗娖?/font>
        OUTPUT=0;   
    if(time0_num > time0_all_num)   //輸出口由低電平跳變?yōu)楦唠娖?/font>
    {
        OUTPUT=1;
        time0_num = 0;
    }
}
/*******************************************************************************
* FunctionName  : Time1(void) interrupt 3
* Description    : 定時器1中斷服務(wù)函數(shù)
* Input          : None
* Output         : None
*******************************************************************************/
void Time1(void)interrupt 3
{
    TH1 = TIME1_H;
    TL1 = TIME1_L;  
    time1_num++;        //記錄進入定時器中斷的次數(shù)
    if(time1_all_num>time1_num) //輸出口由高電平跳變?yōu)榈碗娖?/font>
        OUTPUT = 1;
    if(time1_all_num<time1_num) //輸出口由低電平跳變?yōu)楦唠娖?/font>
    {
        OUTPUT = 0;
        time1_num = 0;
        TR1 = 0;//高電平輸出結(jié)束 關(guān)閉定時器
    }
}




全部資料51hei下載地址:
單片機課程設(shè)計.rar (2.1 MB, 下載次數(shù): 169)


評分

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

查看全部評分

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

使用道具 舉報

來自 6#
ID:191542 發(fā)表于 2020-5-30 15:22 | 只看該作者
這個系統(tǒng)的使用講解網(wǎng)站   https://b23.tv/Bxez2n
回復(fù)

使用道具 舉報

沙發(fā)
ID:191542 發(fā)表于 2019-1-10 14:57 | 只看該作者
本帖最后由 總是離人淚 于 2019-1-11 21:48 編輯

晶振是11.0592Mhz的 ,實物運行的誤差補償已經(jīng)調(diào)整好了(仿真的誤差需要自己補償)
回復(fù)

使用道具 舉報

板凳
ID:191542 發(fā)表于 2019-3-16 15:26 | 只看該作者
在reg52.h頭文件中添加這兩句代碼#define uint unsigned int
#define uchar unsigned char
回復(fù)

使用道具 舉報

地板
ID:284667 發(fā)表于 2019-3-30 11:59
為什么不能用呢

5#
ID:191542 發(fā)表于 2019-5-6 22:29 | 只看該作者
您好,您遇到什么問題了?可以找我的,我給您解決。
回復(fù)

使用道具 舉報

7#
ID:745905 發(fā)表于 2020-6-4 11:46 | 只看該作者
可以調(diào)節(jié)頻率嗎
回復(fù)

使用道具 舉報

8#
ID:191542 發(fā)表于 2020-7-10 16:29 | 只看該作者
尷尬 發(fā)表于 2020-6-4 11:46
可以調(diào)節(jié)頻率嗎

頻率可調(diào),占空比可調(diào),脈寬可調(diào)。全部均可通過矩陣按鍵實現(xiàn)
回復(fù)

使用道具 舉報

9#
ID:801177 發(fā)表于 2020-7-10 18:16 | 只看該作者
可以調(diào)節(jié)頻率嗎
回復(fù)

使用道具 舉報

10#
ID:191542 發(fā)表于 2020-7-18 08:42 | 只看該作者
郎中 發(fā)表于 2020-7-10 18:16
可以調(diào)節(jié)頻率嗎

頻率可調(diào),占空比可調(diào),脈寬可調(diào)。全部均可通過矩陣按鍵實現(xiàn)
回復(fù)

使用道具 舉報

11#
ID:821033 發(fā)表于 2020-10-29 23:06 來自觸屏版 | 只看該作者
好文章謝謝分享
回復(fù)

使用道具 舉報

12#
ID:88606 發(fā)表于 2020-10-31 16:27 | 只看該作者
這個有料!看看能不能在實際中應(yīng)用到!
回復(fù)

使用道具 舉報

13#
ID:859787 發(fā)表于 2020-12-23 11:21 來自觸屏版 | 只看該作者
好文章
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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