精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

我用AT89C51來產生PWM……麻煩了,做不出來

我用AT89C51來產生PWM……麻煩了,做不出來

求助!!!!

謝謝
全部回復(40)
正序查看
倒序查看
grtang
LV.7
2
2005-04-05 13:37
頻率是多少?分辨率又是多少?
0
回復
2005-04-05 13:58
怎么會出不來?查詢和中斷方式都可以完成,頻率?分辨率?產生幾路?
0
回復
2005-04-07 20:36
@老化中的鎮流器
怎么會出不來?查詢和中斷方式都可以完成,頻率?分辨率?產生幾路?
假設頻率是1K,分辨率為一個機器周期,產生1路……
應該怎么實現呢?
0
回復
qihao
LV.4
5
2005-04-07 22:42
理論可以,不過標準51的話1us為最小指令周期-》1M,去掉中斷響應:至少一個周期吧第一個長跳轉:好像是3個周期?push   若干個查表(計算)若干個賦值若干個pop  XX   若干個最后中斷返回:1個還是兩個?如果還要求是中心對齊的PWM,能產生10K的PWM都勉強,像你說的:你有麻煩了,如果你再用C而不是匯編    ^_^  你有麻煩了.這還有分辨率的事沒說呢!此路不通!   有一次逼得我就在T2中斷入口后面直接寫-沒長跳轉,節省3個周期,不過是我錯了,因為是可以用常熟自動裝載的.用DSP吧,不過我現在還不會.2407大約就幾十K,所以現在出28XX了.數字電路的晶體頻率聽起來很嚇人,一算下來:我有麻煩了.
0
回復
qiuyy
LV.6
6
2005-04-08 13:27
這個應該是可以做的吧.你首先要定義兩個變量:一個是叫周期T,另一外一個占空比D.T的值要大于D,首先讓I/O口輸出高電平,讓T,D同進計數,當D已經到了預計值的時候,則I/0變為低,然后低電平一直延續到T的值.當T的值到的時候,I/O口拉高.改變D,T的時間可以控制頻率,改變D的值可以達到占空比的變化.這個思路很重要.這種算法要用到定時器,只要單片機時鐘頻率足夠高,可以任意改變PWM的頻率.
0
回復
2005-04-08 13:32
@qihao
理論可以,不過標準51的話1us為最小指令周期-》1M,去掉中斷響應:至少一個周期吧第一個長跳轉:好像是3個周期?push  若干個查表(計算)若干個賦值若干個pop  XX  若干個最后中斷返回:1個還是兩個?如果還要求是中心對齊的PWM,能產生10K的PWM都勉強,像你說的:你有麻煩了,如果你再用C而不是匯編    ^_^  你有麻煩了.這還有分辨率的事沒說呢!此路不通!  有一次逼得我就在T2中斷入口后面直接寫-沒長跳轉,節省3個周期,不過是我錯了,因為是可以用常熟自動裝載的.用DSP吧,不過我現在還不會.2407大約就幾十K,所以現在出28XX了.數字電路的晶體頻率聽起來很嚇人,一算下來:我有麻煩了.
聽到你說“此路不通”好傷心啊……
不過現在就是用標準51,匯編語言編程.
如果分辨率可調整的話,那你覺得要考慮哪些問題呢?
我現在是要它行的通……只是我還行不通
0
回復
2005-04-08 13:38
@qiuyy
這個應該是可以做的吧.你首先要定義兩個變量:一個是叫周期T,另一外一個占空比D.T的值要大于D,首先讓I/O口輸出高電平,讓T,D同進計數,當D已經到了預計值的時候,則I/0變為低,然后低電平一直延續到T的值.當T的值到的時候,I/O口拉高.改變D,T的時間可以控制頻率,改變D的值可以達到占空比的變化.這個思路很重要.這種算法要用到定時器,只要單片機時鐘頻率足夠高,可以任意改變PWM的頻率.
TO qinuyy: 現在我是要用MCS-5系列單片機,軟件編程實現脈寬調制PWM的正弦波,然后根據串行口的高、低電平產生頻移鍵控信號并發送,最終實現CPFSK的調制...
    如你所說,我必須選擇帶有AD轉換,PWM模塊的51系列芯片,要不沒有辦法檢測電壓電流……這里我有點不懂...請指教!!!
    謝謝!!!
0
回復
qihao
LV.4
9
2005-04-08 14:08
@清泉石上流
TOqinuyy:現在我是要用MCS-5系列單片機,軟件編程實現脈寬調制PWM的正弦波,然后根據串行口的高、低電平產生頻移鍵控信號并發送,最終實現CPFSK的調制...    如你所說,我必須選擇帶有AD轉換,PWM模塊的51系列芯片,要不沒有辦法檢測電壓電流……這里我有點不懂...請指教!!!    謝謝!!!
"頻移鍵控信號" 是什么樣的信號,說來聽聽,我也感興趣,大家來評估一下實現方法.如果不是用來做開關電源,也許行,我以為你是說做開關電源呢
0
回復
2005-04-08 16:58
@qihao
"頻移鍵控信號"是什么樣的信號,說來聽聽,我也感興趣,大家來評估一下實現方法.如果不是用來做開關電源,也許行,我以為你是說做開關電源呢
二進制數字頻率調制(2FSK)是利用二進制數字基帶信號控制載波的頻率進行頻譜變換的過程.在發送端,產生不同頻率的載波振蕩來傳輸數字信息“1”或“0”,在接收端,不不同頻率的載波振蕩還原成響應的數字基帶信號.FSK有相位連續(CPFSK)和相位不連續(DPFSK)之分.
    在這里所說的CPFSK,就是相位連續的頻移鍵控調制.
    現在就是計劃用MCS51系列單片機來產生一路PWM信號(或者兩路),不是用來做開關電源的..
    請問有什么可行的辦法?
    我還沒有做出來..
    謝謝!
0
回復
qiuyy
LV.6
11
2005-04-08 18:00
@清泉石上流
二進制數字頻率調制(2FSK)是利用二進制數字基帶信號控制載波的頻率進行頻譜變換的過程.在發送端,產生不同頻率的載波振蕩來傳輸數字信息“1”或“0”,在接收端,不不同頻率的載波振蕩還原成響應的數字基帶信號.FSK有相位連續(CPFSK)和相位不連續(DPFSK)之分.    在這里所說的CPFSK,就是相位連續的頻移鍵控調制.    現在就是計劃用MCS51系列單片機來產生一路PWM信號(或者兩路),不是用來做開關電源的..    請問有什么可行的辦法?    我還沒有做出來..    謝謝!
俺講得這么詳細,還是做不出來??
0
回復
tase
LV.5
12
2005-04-08 18:17
@清泉石上流
二進制數字頻率調制(2FSK)是利用二進制數字基帶信號控制載波的頻率進行頻譜變換的過程.在發送端,產生不同頻率的載波振蕩來傳輸數字信息“1”或“0”,在接收端,不不同頻率的載波振蕩還原成響應的數字基帶信號.FSK有相位連續(CPFSK)和相位不連續(DPFSK)之分.    在這里所說的CPFSK,就是相位連續的頻移鍵控調制.    現在就是計劃用MCS51系列單片機來產生一路PWM信號(或者兩路),不是用來做開關電源的..    請問有什么可行的辦法?    我還沒有做出來..    謝謝!
用LPC900系列的單片機,本身就帶PWM
0
回復
qihao
LV.4
13
2005-04-08 18:25
@清泉石上流
二進制數字頻率調制(2FSK)是利用二進制數字基帶信號控制載波的頻率進行頻譜變換的過程.在發送端,產生不同頻率的載波振蕩來傳輸數字信息“1”或“0”,在接收端,不不同頻率的載波振蕩還原成響應的數字基帶信號.FSK有相位連續(CPFSK)和相位不連續(DPFSK)之分.    在這里所說的CPFSK,就是相位連續的頻移鍵控調制.    現在就是計劃用MCS51系列單片機來產生一路PWM信號(或者兩路),不是用來做開關電源的..    請問有什么可行的辦法?    我還沒有做出來..    謝謝!
是不是就是調頻信號:一個頻率表示1,一個表示0?  
哪就是可以用常數自動裝載,AT的T2可以的,這個時atmel擴展的標準51功能,以前我用來發生紅外調制基波,估計能是你說的那樣.記住:常數自動裝載,CPU設定一次后無需再干預
不過解調呢?   測脈寬來解調?忘了當時咋做的
0
回復
qihao
LV.4
14
2005-04-08 18:31
@清泉石上流
TOqinuyy:現在我是要用MCS-5系列單片機,軟件編程實現脈寬調制PWM的正弦波,然后根據串行口的高、低電平產生頻移鍵控信號并發送,最終實現CPFSK的調制...    如你所說,我必須選擇帶有AD轉換,PWM模塊的51系列芯片,要不沒有辦法檢測電壓電流……這里我有點不懂...請指教!!!    謝謝!!!
其實搭兩個方波振蕩,用串口數據直接控制一個電子開關呢?發送CPU就免干預了,只要做解調工作
0
回復
grtang
LV.7
15
2005-04-08 21:54
@qiuyy
這個應該是可以做的吧.你首先要定義兩個變量:一個是叫周期T,另一外一個占空比D.T的值要大于D,首先讓I/O口輸出高電平,讓T,D同進計數,當D已經到了預計值的時候,則I/0變為低,然后低電平一直延續到T的值.當T的值到的時候,I/O口拉高.改變D,T的時間可以控制頻率,改變D的值可以達到占空比的變化.這個思路很重要.這種算法要用到定時器,只要單片機時鐘頻率足夠高,可以任意改變PWM的頻率.
看來你是高手.我從來沒有做個單片機電源.想請教一個問題.
有一個輸出電壓信號,轉換成數字信號后,怎么控制占空比D?
0
回復
2005-04-08 22:03
@qihao
其實搭兩個方波振蕩,用串口數據直接控制一個電子開關呢?發送CPU就免干預了,只要做解調工作
TO  qiuyy:
    如你所說,就是用中斷的方式來實現吧.如果是采用查表的方式的實現,會不會很麻煩?

    500) {this.resized=true; this.width=500; this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/28/1112967578.gif');}" onmousewheel="return imgzoom(this);">
    
    正弦波PWM調制就是使調制出的波形盡可能接近正弦波.象上圖的那樣,在調制過程中使每個時段內上下圖對應的陰影部分面積相等.由于正弦波是對稱的,那就要求時段的分割數是偶數.如果采取這種方式的話,那是不是要用查詢的方式來完成?這樣的話,那不是要占用大量的內存來存放數據嗎?就假設單片機的時鐘頻率為12MHz,調制時段數分到52的話……
    
    能說說各自的出發點所在嗎?
    謝謝!
0
回復
qiuyy
LV.6
17
2005-04-09 09:55
@清泉石上流
TO  qiuyy:    如你所說,就是用中斷的方式來實現吧.如果是采用查表的方式的實現,會不會很麻煩?    [圖片]500){this.resized=true;this.width=500;this.alt='這是一張縮略圖,點擊可放大。\n按住CTRL,滾動鼠標滾輪可自由縮放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/28/1112967578.gif');}"onmousewheel="returnimgzoom(this);">        正弦波PWM調制就是使調制出的波形盡可能接近正弦波.象上圖的那樣,在調制過程中使每個時段內上下圖對應的陰影部分面積相等.由于正弦波是對稱的,那就要求時段的分割數是偶數.如果采取這種方式的話,那是不是要用查詢的方式來完成?這樣的話,那不是要占用大量的內存來存放數據嗎?就假設單片機的時鐘頻率為12MHz,調制時段數分到52的話……        能說說各自的出發點所在嗎?    謝謝!
你把要調制的數據變成表格也可以的.首先你要明白什么是PWM,好好地分析D(占空比)和T(周期)的關系.再構思一下.這個算法也是我以前想出來的.當然如果你要用程序做成正弦的話,你可以選用DA轉換,這也個也不難做.
0
回復
qiuyy
LV.6
18
2005-04-09 10:04
@grtang
看來你是高手.我從來沒有做個單片機電源.想請教一個問題.有一個輸出電壓信號,轉換成數字信號后,怎么控制占空比D?
0延遲
1讀電壓AD值.
2如果讀到的電壓在額定范圍內,SJMP EXIT
3進行判斷,如果大于額定電壓,則PWM-DEC,否則INC
4 SJMP 0
5 EXIT
6 SJMP 0
這僅僅是一個思路.
0
回復
kangjl668
LV.4
19
2005-04-09 10:18
@qiuyy
你把要調制的數據變成表格也可以的.首先你要明白什么是PWM,好好地分析D(占空比)和T(周期)的關系.再構思一下.這個算法也是我以前想出來的.當然如果你要用程序做成正弦的話,你可以選用DA轉換,這也個也不難做.
能傳個程序上來看看嗎?
0
回復
qiuyy
LV.6
20
2005-04-09 10:29
@kangjl668
能傳個程序上來看看嗎?
D=100,
T=1000;     \\duty=1/10;

INT_TIM0:
D++;
t++;
if (T=100) {P1^1=0;}
if (D=1000) {P1^1=1;
            D=0;
            T=0;}
;exit
;----end----------

用到定時器,定時器按你的頻率來賦值,上述程序是一個思路,我信手寫的.再不明白要打屁股了.
0
回復
grtang
LV.7
21
2005-04-09 10:42
@qiuyy
0延遲1讀電壓AD值.2如果讀到的電壓在額定范圍內,SJMPEXIT3進行判斷,如果大于額定電壓,則PWM-DEC,否則INC4SJMP05EXIT6SJMP0這僅僅是一個思路.
對于第3步調整D值,是不是對計數器重新置數?
0
回復
qiuyy
LV.6
22
2005-04-09 10:44
@grtang
對于第3步調整D值,是不是對計數器重新置數?
try and experience it by yourslef ,pls
0
回復
grtang
LV.7
23
2005-04-09 13:04
@qiuyy
tryandexperienceitbyyourslef,pls
thank your help.
0
回復
kangjl668
LV.4
24
2005-04-09 16:35
@qiuyy
D=100,T=1000;    \\duty=1/10;INT_TIM0:D++;t++;if(T=100){P1^1=0;}if(D=1000){P1^1=1;            D=0;            T=0;};exit;----end----------用到定時器,定時器按你的頻率來賦值,上述程序是一個思路,我信手寫的.再不明白要打屁股了.
3ks!
0
回復
2005-04-09 23:38
@grtang
thankyourhelp.
TO qiuyy:
    謝謝您!我明白您的意思.
    假設MCS51的串行數據速率I(由軟件設置,硬件自動產生MOV SCON ****),數據電平“1”的調制頻率為f1,數據電平“0”的調制頻率為f0,通過軟件檢測MCS51的串行數據輸出端口TXD對數據進行調制.
    首先讓I/O口(如P1.3)輸出高電平,然后檢測TXD.當TXD輸出為“1”時,進行頻率為f1的調制;當TXD輸出為“0”時,進行頻率為f0的調制.接著讓I/O口(如P1.3)輸出低電平,并檢測TXD,重復上面的步驟.這樣的話,要實現PWM輸出,還是用中斷來實現嗎?
    你所說的占空比和數據電平的調制頻率f0、f1有什么必然的聯系?
    PWM輸出后經穩壓、濾波,就可得到經過調制的相位連續正弦波.
0
回復
2005-04-10 06:29
@清泉石上流
TOqiuyy:    謝謝您!我明白您的意思.    假設MCS51的串行數據速率I(由軟件設置,硬件自動產生MOVSCON****),數據電平“1”的調制頻率為f1,數據電平“0”的調制頻率為f0,通過軟件檢測MCS51的串行數據輸出端口TXD對數據進行調制.    首先讓I/O口(如P1.3)輸出高電平,然后檢測TXD.當TXD輸出為“1”時,進行頻率為f1的調制;當TXD輸出為“0”時,進行頻率為f0的調制.接著讓I/O口(如P1.3)輸出低電平,并檢測TXD,重復上面的步驟.這樣的話,要實現PWM輸出,還是用中斷來實現嗎?    你所說的占空比和數據電平的調制頻率f0、f1有什么必然的聯系?    PWM輸出后經穩壓、濾波,就可得到經過調制的相位連續正弦波.
的確有水平!
0
回復
qiuyy
LV.6
27
2005-04-10 19:58
@清泉石上流
TOqiuyy:    謝謝您!我明白您的意思.    假設MCS51的串行數據速率I(由軟件設置,硬件自動產生MOVSCON****),數據電平“1”的調制頻率為f1,數據電平“0”的調制頻率為f0,通過軟件檢測MCS51的串行數據輸出端口TXD對數據進行調制.    首先讓I/O口(如P1.3)輸出高電平,然后檢測TXD.當TXD輸出為“1”時,進行頻率為f1的調制;當TXD輸出為“0”時,進行頻率為f0的調制.接著讓I/O口(如P1.3)輸出低電平,并檢測TXD,重復上面的步驟.這樣的話,要實現PWM輸出,還是用中斷來實現嗎?    你所說的占空比和數據電平的調制頻率f0、f1有什么必然的聯系?    PWM輸出后經穩壓、濾波,就可得到經過調制的相位連續正弦波.
it's also a good wayt to produce the PLUS Of PWM.But the F is limited!
0
回復
kexingong
LV.5
28
2005-04-10 20:26
@qihao
理論可以,不過標準51的話1us為最小指令周期-》1M,去掉中斷響應:至少一個周期吧第一個長跳轉:好像是3個周期?push  若干個查表(計算)若干個賦值若干個pop  XX  若干個最后中斷返回:1個還是兩個?如果還要求是中心對齊的PWM,能產生10K的PWM都勉強,像你說的:你有麻煩了,如果你再用C而不是匯編    ^_^  你有麻煩了.這還有分辨率的事沒說呢!此路不通!  有一次逼得我就在T2中斷入口后面直接寫-沒長跳轉,節省3個周期,不過是我錯了,因為是可以用常熟自動裝載的.用DSP吧,不過我現在還不會.2407大約就幾十K,所以現在出28XX了.數字電路的晶體頻率聽起來很嚇人,一算下來:我有麻煩了.
用P4,大概就沒問題吧?
0
回復
2005-04-10 20:49
@qiuyy
it'salsoagoodwayttoproducethePLUSOfPWM.ButtheFislimited!
limited?  How to  increase the F ? by using another one-chip ?
0
回復
2005-04-12 11:40
@清泉石上流
limited?  Howto  increasetheF?byusinganotherone-chip?
TO qiuyy:您好!非常感謝您提供的思路!
    
●●可變脈寬PWM輸出
  用T0定時器控制PWM的占空比,T1定時器控制脈寬(最大65536μs.)
  T0、T1定時器設置成16位定時器.

  程序清單:(12MHz)

  PwmData0    ;T0定時t1的初值(字)
  PwmData1    ;T1定時T的初值(字)
;***************************
     setb tro  ;啟動T0
   setb tr1
    ……
T0Int:Clr  tr0     ;T0中斷服務程序
         setb  p1.0  ;PWM輸出腳
       reti
T1Int:Clr  p1.0   ;T1中斷服務程序
       Clr tr0
       Clr tr1
      Mov TH0,High(PwmData0)
      Mov TL0,Low(PwmData0)
      Mov TH1,High(PwmData1)
       Mov TL1,Low(PwmData1)
      Setb tr1
       Setb tr0
            reti
  說明:在主程序中計算PwmData0、PwmData1的值.

    我有一個疑問:利用單片機MCS51實現可變脈寬PWM輸出時,在主程序中計算PwmData0、PwmData1的值過程中,是采用查表的方式,還是動態計算呢?因為在每一次T1產生中斷后,T1所裝載的值都會改變,這樣,假如:
    1)采用查表的方式,那么就必須在T1INT程序段中加入讀表、裝載指令.那么大量的數據表就會占用了大量的存儲單元,并且煩瑣容易弄錯.
    2)采用動態計算,則需要在主程序中進行算術運算,并實現二進制向十六進制的轉換,然后再裝載進T1中,也很煩瑣……
    而且這樣的話,會不會有時間上的延時問題?
    
    另外還問一個弱弱的問題:單片機的串行輸出口TXD能不能自動產生一系列的不規則的數字信號?應該如何實現呢??

    請指點!!!
0
回復
qiuyy
LV.6
31
2005-04-12 13:34
@清泉石上流
TOqiuyy:您好!非常感謝您提供的思路!    ●●可變脈寬PWM輸出  用T0定時器控制PWM的占空比,T1定時器控制脈寬(最大65536μs.)  T0、T1定時器設置成16位定時器.  程序清單:(12MHz)  PwmData0    ;T0定時t1的初值(字)  PwmData1    ;T1定時T的初值(字);***************************    setbtro  ;啟動T0  setbtr1    ……T0Int:Clr  tr0    ;T0中斷服務程序        setb  p1.0  ;PWM輸出腳      retiT1Int:Clr  p1.0  ;T1中斷服務程序      Clrtr0      Clrtr1      MovTH0,High(PwmData0)      MovTL0,Low(PwmData0)      MovTH1,High(PwmData1)      MovTL1,Low(PwmData1)      Setbtr1      Setbtr0            reti  說明:在主程序中計算PwmData0、PwmData1的值.    我有一個疑問:利用單片機MCS51實現可變脈寬PWM輸出時,在主程序中計算PwmData0、PwmData1的值過程中,是采用查表的方式,還是動態計算呢?因為在每一次T1產生中斷后,T1所裝載的值都會改變,這樣,假如:    1)采用查表的方式,那么就必須在T1INT程序段中加入讀表、裝載指令.那么大量的數據表就會占用了大量的存儲單元,并且煩瑣容易弄錯.    2)采用動態計算,則需要在主程序中進行算術運算,并實現二進制向十六進制的轉換,然后再裝載進T1中,也很煩瑣……    而且這樣的話,會不會有時間上的延時問題?        另外還問一個弱弱的問題:單片機的串行輸出口TXD能不能自動產生一系列的不規則的數字信號?應該如何實現呢??    請指點!!!
我想你用串口實現的話是可以實現一系列不規則的數字的.比如你裝載不同的數據的時候.另外用查表和動態度計算的優點,要試試才知道.
0
回復
主站蜘蛛池模板: 欧洲精品一区二区三区 | 亚洲欧美日韩另类一区二区 | 国产91香蕉| 亚洲黄色片一级 | 嗯脱我内衣吸我奶小内裤的应用 | 久久公开视频 | 少妇一级淫片免费放播放 | 国产乱人乱精一区二区视频 | 亚洲性免费 | 在线视频你懂 | 日本aa级毛片免费观看 | 精品成人免费一区二区在线播放 | 精品国产91| 久久本道综合久久伊人 | 一二三区免费视频 | 国产日韩精品一区二区 | 无码中文字幕AV带剧情 | 日本六九视频 | 感官之火在线观看 | 999精品嫩草久久久久久99 | 国产一级做a爰片久久真人片男 | 亚洲呻吟 | 精品无码AV一区二区三区不卡 | 高潮喷水的网站 | 久久久久久久毛片 | 亚洲综合av一区 | 久久国产精品免费观看 | 每日更新av| 国产免费一区二区三区四在线播放 | porno18老师高清 | 蜜桃av亚洲精品一区二区 | 成人免费国产视频 | 在线观看免费va | 国产成人av综合 | 国产精品国产自线拍免费软件 | 亚洲精品中文字幕99999 | 黄色毛片免费观看 | 小舞被吸乳羞羞网站视频 | 成视频免费在线看 | 免费观看一区二区三区毛片软件 | 亚洲精品18日本一区app |