找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

定時器做可調(diào)頻方波,為何頻率調(diào)整速度變慢???

[復(fù)制鏈接]
ID:61390 發(fā)表于 2016-7-7 13:34 | 顯示全部樓層 |閱讀模式
//程序名:方波發(fā)生器,LCD1602顯示
//T0用于方波輸出,T1用于脈沖調(diào)整
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#include<stdio.h>
#include"1602.h"         //液晶顯示器頭文件
#include"delay.h"
sbit out=P0^1;           //方波輸出端口
sbit KEY_ADD=P3^0;            //頻率增加按鍵
sbit KEY_DEC=P3^1;          //頻率減小按鍵
#define uchar unsigned char
#define uint unsigned int
unsigned int a=1250;   //時鐘周期數(shù)量

//定時器初始化
void InitTimer0(){
     TMOD|=0x01;                  //定時器方式1
     TH0=0xfb;   //定時器初值1.25ms,頻率400HZ
     TL0=0x1e;
     TR0=1;                      //啟動T0  
     ET0=1;                     //允許T0中斷
     EA=1;                      //開總中斷

}

//定時器0中斷
void Time0Int() interrupt 1{
    TH0=(65536-a)/256;   //定時器初值1.25MS
    TL0=(65536-a)%256;
    out=~out;
}


//主函數(shù)
void main()
{  
   char temp[14];
   uint b;
   InitTimer0();  
   LCD_Init();         //初始化液晶屏
   LCD_Clear();        //清屏
   LCD_Write_String(0,0,"VOLT: 5.000    V");//寫入第一行信息,主循環(huán)中不再更改此信息,所以在while之前寫入
   LCD_Write_String(0,1,"FREQ:         HZ");

   while(1)
    {

      if(!KEY_ADD)  //如果檢測到低電平,說明按鍵按下
        {
               DelayMs(10); //延時去抖,一般10-20ms
           if(!KEY_ADD)     //再次確認按鍵是否按下,沒有按下則退出
               {
                   a++;
                                 
                }
             }

       else  if(!KEY_DEC)  //如果檢測到低電平,說明按鍵按下
                {
                   DelayMs(10); //延時去抖,一般10-20ms
                    if(!KEY_DEC)     //再次確認按鍵是否按下,沒有按下則退出
                     {
                        a--;   
                      }
                 }                                      
         b=500000/a;
        sprintf(temp,"%05.0f",(float)b);
        LCD_Write_String(6,1,temp);//顯示到液晶第二行
     }
}

//b值變到620以上后,一致變化都很慢。
如果減至600以下,變化速度又變正常。
如果程序的初始值b為620時,速度也很慢顯示也很慢!

請各位大仙分析一下是什么原因????

相關(guān)帖子

回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2016-7-7 21:49 | 顯示全部樓層
本帖最后由 zl2168 于 2016-7-7 21:51 編輯

實例69  輸出周期脈沖方波(示波器顯示)


Proteus仿真一下,確認有效。
實例69 輸出周期脈沖方波.rar (34.2 KB, 下載次數(shù): 10)
輸出周期脈沖方波.jpg





以上摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版


書中電路和程序設(shè)計有詳細說明,程序語句條條有注解。


回復(fù)

使用道具 舉報

ID:111634 發(fā)表于 2016-7-7 21:51 | 顯示全部樓層
實例70  輸出矩形脈沖波(示波器顯示)


Proteus仿真一下,確認有效。

實例70 輸出矩形脈沖波.rar (34.07 KB, 下載次數(shù): 6)
矩形脈沖波.jpg


以上摘自張志良編著《單片機實驗實訓100例》 ISBN 978-7-5124-1603-1,北航社出版


書中電路和程序設(shè)計有詳細說明,程序語句條條有注解。




回復(fù)

使用道具 舉報

ID:61390 發(fā)表于 2016-7-23 06:31 來自手機 | 顯示全部樓層
找到原因了,中斷中加了運算呀導致的原因,加②個中間變量就解決了
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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