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

QQ登錄

只需一步,快速開始

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

單片機(jī)pwm按鍵調(diào)光不起作用,是哪里有錯(cuò)誤啊?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

#include <REG51.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char
//******************adc0832****************************//
sbit CLK=        P2^2;//時(shí)鐘,初始狀態(tài)為0
sbit DI=        P2^3;//數(shù)據(jù)輸入
sbit DO=        P2^1; // 數(shù)據(jù)輸出
sbit CS=        P2^0;
//******************按鈕****************************//
sbit start =P2^4;
sbit end=P2^5;
sbit led=P3^5;
sbit down = P3^0;
sbit up = P3^1;

uchar start_flag;//開始標(biāo)志
//延時(shí)
void delay(uchar i)
{
        while(i--)
        {
                if(!end)                         //end按鈕按下
                        start_flag=0;
        }
}
/*******************亮燈函數(shù)***************/
void led_red(uchar i)//占空比i/13
{
        led=0;
        delay(i/10);
        if(i/10<12)
        {
                led=1;
                delay(12-i/10);
        }
}
/*********************************************
讀取ADC
**********************************************/
uchar ADC()//通道ch0
{
        uchar temp0,temp1,i;
        CS=0;
        temp0=0;
        temp1=0;
        _nop_();
        _nop_();
        DI=1;//開始位
        _nop_();
        _nop_();
        CLK=1;
        _nop_();
        _nop_();
        CLK=0;
        _nop_();
        _nop_();
        DI=0;
        _nop_();
        _nop_();
//選擇通道0
                DI=1;
                _nop_();
                CLK=1;//上升沿DI=1
                _nop_();
                CLK=0;//1個(gè)下降沿DI=1
                _nop_();
                DI=0;
                _nop_();
                CLK=1;
                _nop_();
                CLK=0;//第3個(gè)上升沿DI=0
                _nop_();
                   DI=1;
//********通道選擇結(jié)束開始讀取轉(zhuǎn)換后的二進(jìn)制數(shù)****
//下降沿讀數(shù),一下進(jìn)行判斷和處理,共8次
for(i=0;i<8;i++)
   {
        temp0=temp0<<1;
        CLK=1;
    if(DO)
           temp0++;
           _nop_();
           CLK=0;
   }
for(i=0;i<8;i++)
   {
        temp1=temp1>>1;
        CLK=1;
    if(DO)
           temp1=temp1 +0x80;
           _nop_();
           CLK=0;
   }
         CS=1;
   return temp0;
}
//*********************************************
void main()
{
        uchar num,i,t;
        CLK=0;//ADC時(shí)鐘初始化
        start_flag=0;
while(1)
        {
//按鍵檢測(cè)
        if(!start)                         //start按鈕按下
                {
                start_flag=1;
                }
        if(!end)                         //end按鈕按下
                {
                start_flag=0;
                }
               
        if(start_flag)
        {
     if(!up)
                         {
                                if(t<i)
                                        {
                                          t++;
                                        }
                                
                                delay(100);
                        }
                 if(!down)
                         {
                                if(t>0)
                                        {
                                          t--;
                                        }
                                
                        delay(100);
                        }

                num=ADC();
                P1=num;
                for(i=0;i<100;i++)
                        led_red(num);
        }
        }
}



pwm調(diào)光.zip

46.75 KB, 下載次數(shù): 7

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

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2020-4-5 06:58 | 只看該作者
仿真軟件無法觀察到PWM驅(qū)動(dòng)LED調(diào)光效果。只能通過虛擬示波器觀察占空比來確認(rèn)。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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