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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6391|回復: 12
打印 上一主題 下一主題
收起左側(cè)

STC89單片機 定時器做PWM程序

  [復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:390416 發(fā)表于 2020-12-31 11:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 人人學會單片機 于 2020-12-31 15:10 編輯

很多小白不明白PWM怎么回事。只能說明你們看的教程沒講。我們?nèi)巳藢W會單片機教程就講過。其實很簡單的。特分享CPU定時器模擬PWM輸出給你們
#include "STC89.H"                                        //頭文件包含
#include <intrins.h>                                //頭文件包含
typedef unsigned char u8;                        //重新定義數(shù)據(jù)類型名
typedef unsigned short u16;                        //重新定義數(shù)據(jù)類型名
typedef unsigned long u32;                        //重新定義數(shù)據(jù)類型名
sbit PWM_OUT=P2^1;        
u8 idata PWM_Write_Byte[3]=0;

//****************************祁緒電子 2020年5月***
// 定時器0初始化  晶振11059200,12T,輸出50Hz的PWM,占空比0~255
// 定時器初值為:256-(11059200÷12÷50Hz÷256) = 184 = 0xB8
void PWM_Init(void)
{
        TMOD &= 0xF0;                                        //配置定時器工作模式
        TMOD |= 0x02;                                        //配置定時器工作模式 8位自動重裝模式
    TL0 = 0xB8;;                    //定時器初值
    TH0 = 0xB8;                                //定時器重裝初值
    TR0 = 1;                        //啟動定時器0
    ET0=1;                                                         //允許定時器0申請中斷
        EA=1;                                                        //中斷總閘閉合
}
//****************************祁緒電子 2020年5月***
//定時器0的CPU處理函數(shù),位置任意寫都行
void PWM_Display_timer0() interrupt 1
{
        
        static u8 pwm_t=0;                                 //局部變量,不丟失數(shù)據(jù)
        if(pwm_t<PWM_Write_Byte[0])
        {
                PWM_OUT=1;                                 
        }
        else PWM_OUT=0;
        pwm_t++;
}

//***************************祁緒電子 2020年5月***
// PWM 數(shù)模變換數(shù)據(jù)分配
void PWM_Allot()                                          
{
        static u8 kkk=0;        
        static u8 count=0;
        count++;
        if(count>100)
        {
                count=0;
                kkk++;
                PWM_Write_Byte[0]=kkk;        //kkk為占空比自動增加
                PWM_Write_Byte[1]=10;        
                PWM_Write_Byte[2]=10;
        }
}


void main()                                                        //主函數(shù)
{
        PWM_Init();
        while(1)                                                //主函數(shù)大循環(huán)
        {
                PWM_Allot();        
        }
}


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

使用道具 舉報

沙發(fā)
ID:607312 發(fā)表于 2021-1-5 17:42 | 只看該作者
學習了。很好
回復

使用道具 舉報

板凳
ID:796670 發(fā)表于 2021-1-24 09:52 | 只看該作者
請問PWM_Write_Byte[3]的作用是什么啊?為什么要進行數(shù)模轉(zhuǎn)換呢?
回復

使用道具 舉報

地板
ID:390416 發(fā)表于 2021-1-24 10:16 | 只看該作者
明日香 發(fā)表于 2021-1-24 09:52
請問PWM_Write_Byte[3]的作用是什么啊?為什么要進行數(shù)模轉(zhuǎn)換呢?

你居然能問這種問題,你家的燈,你不開它你又看不見,開它吧你又覺得太亮,太浪費電。而有時候必須最亮工作。你說怎么辦?
回復

使用道具 舉報

5#
ID:582255 發(fā)表于 2021-1-24 14:17 | 只看該作者
這貌似是一個比較復雜的PWM
回復

使用道具 舉報

6#
ID:878420 發(fā)表于 2021-1-25 15:38 來自手機 | 只看該作者
學習啦!用到哪里學習到哪里,知識慢慢地積累
回復

使用道具 舉報

7#
ID:444215 發(fā)表于 2021-1-29 09:51 | 只看該作者
學習啦!用到哪里學習到哪里,知識慢慢地積累
回復

使用道具 舉報

8#
ID:594968 發(fā)表于 2021-1-29 15:37 | 只看該作者
程序看的很清楚,真是用心啊
回復

使用道具 舉報

9#
ID:444215 發(fā)表于 2023-9-13 16:03 | 只看該作者
需要這樣才能產(chǎn)生準確的50HZ的PWM。
void PWM_Init(void)
{
    TMOD &= 0xF0;                   //配置定時器工作模式
    TMOD |= 0x02;                   //配置定時器工作模式 8位自動重裝模式
    TL0 = 0xB8;;                    //定時器初值
    TH0 = 0xB8;                     //定時器重裝初值
    TR0 = 1;                        //啟動定時器0
    ET0=1;                          //允許定時器0申請中斷
    EA=1;                           //中斷總閘閉合
}
void PWM_Display_timer0() interrupt 1
{
        static u8 pwm_t=0;                                 //局部變量,不丟失數(shù)據(jù)
                TR0 = 0;
        if(pwm_t<PWM_Write_Byte[0])
        {
            PWM_OUT=1;                                 
        }
        else PWM_OUT=0;
        pwm_t++;
                TR0 = 1;
}
回復

使用道具 舉報

10#
ID:628588 發(fā)表于 2023-10-6 19:50 | 只看該作者
249449417@qq.co 發(fā)表于 2023-9-13 16:03
需要這樣才能產(chǎn)生準確的50HZ的PWM。
void PWM_Init(void)
{

pwm_t 都沒有清零,
回復

使用道具 舉報

11#
ID:675799 發(fā)表于 2023-10-12 10:49 | 只看該作者
oiui1 發(fā)表于 2023-10-6 19:50
pwm_t 都沒有清零,

if(pwm_t >255)
pwm_t =0;
回復

使用道具 舉報

12#
ID:675799 發(fā)表于 2023-10-12 10:56 | 只看該作者
oiui1 發(fā)表于 2023-10-6 19:50
pwm_t 都沒有清零,

if(pwm_t >100) pwm_t =0;
回復

使用道具 舉報

13#
ID:149799 發(fā)表于 2024-6-22 15:43 | 只看該作者
多謝樓主分享,51黑有你更精彩。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久草成人 | 欧美激情在线播放 | 亚洲国产一区二区三区 | 欧美精品久久久久久久久老牛影院 | 国产免费一区 | 亚洲 日本 欧美 中文幕 | 久色网| 欧美无乱码久久久免费午夜一区 | 国产农村一级国产农村 | 欧美国产日韩精品 | 国产a视频 | 夜夜爆操 | 成人午夜黄色 | 精品欧美一区二区三区久久久小说 | 一区精品国产欧美在线 | 日韩欧美一区二区三区免费观看 | 精品免费国产视频 | 欧美高清视频一区 | 久久88| 九九视频网 | 日韩在线不卡 | 一区二区av | 日韩另类视频 | www.中文字幕| 久久久性色精品国产免费观看 | 国产二区在线播放 | 福利网址 | 国产99视频精品免视看9 | 黄色在线免费观看视频网站 | 午夜免费网站 | 国产精产国品一二三产区视频 | 久久久久精 | 久久久久久久久久久久久9999 | 亚洲成人一区 | 国产精品久久 | 美女久久久久 | 欧美一区二区三区 | 网色| 欧美日韩亚洲三区 | av网站在线看 | 国产日韩精品一区二区 |