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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8351|回復(fù): 11
收起左側(cè)

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

  [復(fù)制鏈接]
ID:191542 發(fā)表于 2019-1-9 21:22 | 顯示全部樓層 |閱讀模式
本人的課程設(shè)計,和大家分享分享,多謝大家的指導(dǎo)和建議!

后面的附件有完整的工程文件實習(xí)報告、仿真文件和部分誤差分析(完整的交給老師了,所有要求均滿足,誤差很小)
一、課程設(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)閉定時器
    }
}


0.png

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


評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:191542 發(fā)表于 2020-5-30 15:22 | 顯示全部樓層
這個系統(tǒng)的使用講解網(wǎng)站   https://b23.tv/Bxez2n
回復(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
為什么不能用呢

ID:191542 發(fā)表于 2019-5-6 22:29 | 顯示全部樓層
您好,您遇到什么問題了?可以找我的,我給您解決。
回復(fù)

使用道具 舉報

ID:745905 發(fā)表于 2020-6-4 11:46 | 顯示全部樓層
可以調(diào)節(jié)頻率嗎
回復(fù)

使用道具 舉報

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ù)

使用道具 舉報

ID:801177 發(fā)表于 2020-7-10 18:16 | 顯示全部樓層
可以調(diào)節(jié)頻率嗎
回復(fù)

使用道具 舉報

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ù)

使用道具 舉報

ID:821033 發(fā)表于 2020-10-29 23:06 來自觸屏版 | 顯示全部樓層
好文章謝謝分享
回復(fù)

使用道具 舉報

ID:88606 發(fā)表于 2020-10-31 16:27 | 顯示全部樓層
這個有料!看看能不能在實際中應(yīng)用到!
回復(fù)

使用道具 舉報

ID:859787 發(fā)表于 2020-12-23 11:21 來自觸屏版 | 顯示全部樓層
好文章
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久久久久 | 九色视频网 | 久久精品亚洲国产 | 精品久久久久久亚洲综合网站 | 色天堂影院 | 性精品 | 成人精品久久日伦片大全免费 | 亚州成人| 国产一区| 国产成年人视频 | 免费观看一级黄色录像 | 亚洲欧美在线视频 | 中文字幕在线看人 | 欧美日韩亚洲在线 | 欧美日韩在线免费观看 | 91九色婷婷 | 成人啊啊啊 | 午夜天堂精品久久久久 | 国产在线网址 | 久久精品一区二区三区四区 | 日韩精品一区二区三区中文字幕 | 中文字幕精品一区久久久久 | 亚洲午夜一区二区 | 久久视频精品 | 亚洲精品日韩精品 | 国产精品久久久久久 | 日韩免费视频 | 国产午夜精品一区二区三区四区 | 精品国产视频 | 欧美国产日韩一区二区三区 | 人人操日日干 | 欧美中文视频 | 四虎成人免费电影 | 99免费| 特级做a爰片毛片免费看108 | 亚洲欧美在线视频 | 亚洲第1页 | 亚洲aⅴ| 国产日韩欧美另类 | 久久精品国产一区二区三区 | 特a毛片 |