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

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

QQ登錄

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

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

51單片機(jī)簡(jiǎn)易信號(hào)發(fā)生器仿真設(shè)計(jì) 含誤差分析+源碼+波形圖

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

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

目錄
一、Proteus仿真
1、仿真電路圖
2、0.1HZ波形
3、5KHZ波形
4、10%占空比波形(10HZ)
5、90%占空比波形(10HZ)
6、工程文件框架
二、主程序部分
1、主函數(shù)
2、定時(shí)器初始化函數(shù)及中斷服務(wù)函數(shù)
三、頂層驅(qū)動(dòng)文件
1、頂層驅(qū)動(dòng) .C 文件
2、頂層驅(qū)動(dòng) .H 文件
四、底層驅(qū)動(dòng)文件
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ù)不同頻率段分不同的最小計(jì)數(shù)時(shí)長(zhǎng)
/*******************************************************************************
* FunctionName  : Function_1_Serve
* Description    : 模式1服務(wù)函數(shù) 定時(shí)器0單位定時(shí)周期配置
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void Function_1_Serve(void)
{
        float temp = 0.0;
        temp = Calculate_Data();//計(jì)算方波頻率
        /*對(duì)應(yīng)不同頻率段 設(shè)置不同的單位定時(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è)置不同的單位定時(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ù)  定時(shí)器1單位定時(shí)周期配置
* 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)定時(shí)器初始化
* 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    :定時(shí)器0中斷服務(wù)函數(shù)
* Input          : None
* Output         : None
*******************************************************************************/
void Time0(void)interrupt 1
{   
    TH0 = TIMEO_H;
    TL0 = TIMEO_L;
    time0_num++;        //記錄一個(gè)周期進(jìn)入定時(shí)器中斷的次數(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    : 定時(shí)器1中斷服務(wù)函數(shù)
* Input          : None
* Output         : None
*******************************************************************************/
void Time1(void)interrupt 3
{
    TH1 = TIME1_H;
    TL1 = TIME1_L;  
    time1_num++;        //記錄進(jìn)入定時(shí)器中斷的次數(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)閉定時(shí)器
    }
}


0.png

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

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:191542 發(fā)表于 2020-5-30 15:22 | 顯示全部樓層
這個(gè)系統(tǒng)的使用講解網(wǎng)站   https://b23.tv/Bxez2n
回復(fù)

使用道具 舉報(bào)

ID:191542 發(fā)表于 2019-1-10 14:57 | 顯示全部樓層
本帖最后由 總是離人淚 于 2019-1-11 21:48 編輯

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

使用道具 舉報(bào)

ID:191542 發(fā)表于 2019-3-16 15:26 | 顯示全部樓層
在reg52.h頭文件中添加這兩句代碼#define uint unsigned int
#define uchar unsigned char
回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:191542 發(fā)表于 2020-7-10 16:29 | 顯示全部樓層
尷尬 發(fā)表于 2020-6-4 11:46
可以調(diào)節(jié)頻率嗎

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:191542 發(fā)表于 2020-7-18 08:42 | 顯示全部樓層
郎中 發(fā)表于 2020-7-10 18:16
可以調(diào)節(jié)頻率嗎

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

使用道具 舉報(bào)

ID:821033 發(fā)表于 2020-10-29 23:06 來(lái)自手機(jī) | 顯示全部樓層
好文章謝謝分享
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

ID:859787 發(fā)表于 2020-12-23 11:21 來(lái)自手機(jī) | 顯示全部樓層
好文章
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区不卡 | 欧美日韩福利视频 | 国产精品爱久久久久久久 | 免费黄色大片 | 久久久一区二区 | 亚洲精品不卡 | 懂色av一区二区三区在线播放 | 久久久久久亚洲国产精品 | 国产一区视频在线 | 亚洲网址在线观看 | 男女深夜网站 | 99精品视频在线 | 欧美一级免费 | 日韩精品免费视频 | 一区二区三区视频在线免费观看 | 亚洲一二三区在线观看 | 99re在线播放 | 国产三级精品三级在线观看四季网 | 久久精品日产第一区二区三区 | av在线播放国产 | 国产成人精品一区二 | 国产精品久久久久久久久久久久 | 黄网站免费在线观看 | 精品免费国产一区二区三区 | 91手机精品视频 | 国产高清在线精品 | 国产精品久久视频 | 久久久久亚洲国产| 国产成人精品久久二区二区 | 欧美一区二区三区视频 | 日韩三级在线观看 | 天天干夜夜| 日韩欧美亚洲 | 国产高清视频在线 | 一级特黄在线 | 亚洲精品免费观看 | 在线成人 | 在线看日韩av| 午夜影院免费体验区 | 国产乱码精品1区2区3区 | 三级成人在线 |