A. 基於單片機的信號發生器在設計師如何實現頻率步進可調
這要看你具體信號發生器方案了
1.利用單片機內部定時器或PWM來做信號發生器,只需改變定時值或占空比即可調節頻率
2.單片機清森鄭外加專用的信號發生器晶元(比如DDS),晶元是有相關答頌的寄存器,單片機對外擴春凳展晶元發送對應指令和頻率值即可改變
B. 我是電子信息工程專業的,馬上就要選畢業設計的題目了,不知道選什麼好。來大神幫我參考參考啊
要看你對自己如何要求。
不過建議盡量選設計類的,因為如果要求要實物實現會比較麻煩,比如
基於RFID車輛管理系統實現。
雖然硬體的設計可能看上去很簡單,但真的去做了會出現很多意想不到的麻煩。實驗階段的硬體是極其不可靠的。而如果購買比較成熟的硬體產品,相對而言你能做的可擴展的東西如改就很少,倒答辯的時候又會被質疑你自己設計的東西到底有多少。
另外,設計類中,也不要太理論的東西,比如
信道編碼(線性分組碼等)模擬研究
信道編碼(交織編碼等)模擬研究
這個需要一段時間渣毀判的理論學習,而且必須學到位。其中可能會有瓶頸。
所以我還是建議樓主選擇偏應用的設計,比如
基於RFID的車輛管理系統設計
RFID技術可以說非常簡單,稍微理解一下,再考慮好這個題目所給的環境條件,就可以發揮自己的想像力去設計,當然最後要在理論上完善它,證明是可行的並且是能帶來改進的設余陸計。
最後,在以上前提下,應該根據樓主自己的興趣,喜歡哪方面的東西,就會有興趣去找資料。所以樓主好好加油吧。
C. 基於單片機的多功能信號發生器可以模擬嗎
單片機多功能信號發生器可以實侍喊現簡單老知野的信號模擬,但是其模擬能力可能會受到一些限制。具體而猛首言,如果單片機的處理能力和輸出能力不足以滿足所需模擬的頻率和精度,那麼信號的質量和准確度可能會受到影響。
此外,如果要進行更加復雜的信號模擬,還需要考慮單片機的輸入輸出電路、時鍾精度、模擬信號幅度、波形變換等因素。因此,對於一些對模擬質量有較高要求的場景,可能需要使用專業的信號發生器,以確保模擬的准確性和可靠性。
D. 基於單片機的波形發生器和基於單片機的函數信號發生器有什麼區別
函數發生器就是可以產姿陸生正弦波、方波、三角波、鋸譽仿齒波這類基本慶冊纖函數波形的電路或儀器,和波形發生器沒有嚴格意義上的什麼區別
E. 如何運用單片機原理製作智能信號發生器,要求產生方波、矩形波、三角波、鋸齒波和正弦波。
#include<reg51.h>
#include<absacc.h>
#include<MAX72191.h>
#defineDAC XBYTE[0x7fff] //P2.7接CS
sbitkey0 = P3^2;// 增減切換鍵
sbitkey1 = P3^3;//個位,十位,百位,千位的控制切換
sbitkey2 = P3^4;// 調整位
sbitkey3 = P3^5;// 波形選擇正弦、三角、矩形波,鋸齒波
unsignedchar i,j;
unsignedint counter,step,flag;
typedefunsigned int uint;
//定時器0初始化
voidInit_Timer0(void)
{
TMOD = (TMOD & 0XF0) | 0X01;//設置工作方式和定時初始值
TH0 = 0xff;
TL0 = 0x00;
TR0 =1; //啟動定時器
ET0 =1;
}
//定義輸出波形的代碼
unsignedchar code type[4][256]={
{ //正弦波代碼
0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x1, 0x1, 0x2, 0x3, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8,
0x9, 0xb,0xc, 0xd, 0xf, 0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x39,0x3b,0x3e,0x41,0x43,0x46,0x49,0x4c,
0x4f,0x52,0x55,0x58,0x5b,0x5e,0x61,0x64,0x67,0x6a,0x6d,0x70,0x73,0x76,0x7a,0x7d,
0x80,0x83,0x86,0x89,0x8c,0x8f,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb1,0xb4,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xeb,0xed,0xef,0xf0,0xf1,0xf3,0xf4,
0xf5,0xf6,0xf8,0xf9,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfd,0xfe,0xfe,0xfe,0xfe,0xfe,
0xfe,0xfe,0xfe,0xfe,0xfe,0xfd,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf9,0xf8,0xf6,0xf5,
0xf4,0xf3,0xf1,0xf0,0xef,0xed,0xeb,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,0xda,
0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,
0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x93,0x8f,0x8c,0x89,0x86,0x83,0x80,
0x7d,0x7a,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,
0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,0x25,
0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0xf,0xd, 0xc, 0xb, 0x9,
0x8,0x7, 0x6, 0x5, 0x4, 0x3, 0x3, 0x2, 0x1, 0x1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
},
{ //三角波代碼
0x2,0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10,0x12,0x14, 0x16, 0x18, 0x1a,0x1c, 0x1e, 0x20,
0x22,0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30,0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, 0x40,
0x42,0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50,0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, 0x60,
0x62,0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70,0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, 0x80,
0x82,0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90,0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0,
0xa2,0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0,0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc,0xbe, 0xc0,
0xc2,0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0,0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc,0xde, 0xe0,
0xe2,0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0,0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc,0xfe, 0xff,
0xfe,0xfc, 0xfa, 0xf8, 0xf6, 0xf4, 0xf2, 0xf0,0xee, 0xec, 0xea, 0xe8, 0xe6, 0xe4,0xe2, 0xe0,
0xde,0xdc, 0xda, 0xd8, 0xd6, 0xd4, 0xd2, 0xd0,0xce, 0xcc, 0xca, 0xc8, 0xc6, 0xc4,0xc2, 0xc0,
0xbe,0xbc, 0xba, 0xb8, 0xb6, 0xb4, 0xb2, 0xb0,0xae, 0xac, 0xaa, 0xa8, 0xa6, 0xa4,0xa2, 0xa0,
0x9e, 0x9c, 0x9a, 0x98, 0x96, 0x94, 0x92, 0x90,0x8e, 0x8c, 0x8a, 0x88, 0x86, 0x84, 0x82, 0x80,
0x7e, 0x7c, 0x7a, 0x78, 0x76, 0x74, 0x72, 0x70,0x6e, 0x6c, 0x6a, 0x68, 0x66, 0x64, 0x62, 0x60,
0x5e, 0x5c, 0x5a, 0x58, 0x56, 0x54, 0x52, 0x50,0x4e, 0x4c, 0x4a, 0x48, 0x46, 0x44, 0x42, 0x40,
0x3e, 0x3c, 0x3a, 0x38, 0x36, 0x34, 0x32, 0x30,0x2e, 0x2c, 0x2a, 0x28, 0x26, 0x24, 0x22, 0x20,
0x1e, 0x1c, 0x1a, 0x18, 0x16, 0x14, 0x12, 0x10,0xe, 0xc,0xa, 0x8, 0x6,0x4, 0x2, 0x00
},
{// 矩形脈沖波代碼
0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,
0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,
0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,
0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,
0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,
0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,
0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,
0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff,
0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,
0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,
0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,
0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,
0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,
0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,
0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,
0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00,0x00, 0x00,
},
{//鋸齒波代碼
0x00,0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,0x08,0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10,0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,0x18,0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
0x20,0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,0x28,0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
0x30,0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,0x38,0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0x40,0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,0x48,0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
0x50,0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,0x58,0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
0x60,0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,0x68,0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
0x70,0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,0x78,0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
0x80,0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,0x88,0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
0x90,0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,0x98,0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
0xa0,0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,0xa8,0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
0xb0,0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,0xb8,0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
0xc0,0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,0xc8,0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
0xd0,0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,0xd8,0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
0xe0,0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,0xe8,0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
0xf0,0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,0xf8,0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}
};
//顯示子函數
Disp7219(unsignedlong dat)
{
unsigned char i;
unsigned char led[8];
led[7]=dat%10;
led[6]=dat/10%10;
led[5]=dat/100%10;
led[4]=dat/1000%10;
led[3]=dat/10000%10;
led[2]=dat/100000%10;
led[1]=dat/1000000%10;
led[0]=dat/10000000%10;
for(i=0;i<8;i++)
{
max_7219(i+1, led[i]);
}
}
//延時約1m秒
voiddelay_ms(uint n)
{
uchar j;
while(n--)
for(j=0;j<120;j++);
}
//主函數
main()
{
unsigned int f,n,j;
delay_ms(500);
Init_Max7219();//初始化7219
Disp7219(000);
Init_Timer0();
step=18;
EA = 1;
while(1)
{
if(key0 == 0) n=n+1;
if(n==2)n=0;
if(key1==0) j=j+1;
if(j==4) j=0;
if(n==0 && j == 0 &&key2 == 0) if(step<180) step+=18; //個位增
if(n==1 && j == 0 &&key2 == 0) if(step>18) step-=18; //個位減
if(n==0 && j == 1 &&key2 == 0) if(step<1800) step+=180;//十位增
if(n==1 && j == 1 &&key2 == 0) if(step>180) step-=180; //十位減
if(n==0 && j == 2 &&key2 == 0) if(step<18000) step+=1800;//百位增
if(n==1 && j == 2 &&key2 == 0) if(step>1800) step-=1800;//百位減
if(n==0 && j == 3 &&key2 == 0) if(step<54000) step+=18000;//千位增
if(n==1 && j == 3 &&key2 == 0) if(step>18000) step-=18000;//千位減
if(key3==0)flag=flag+1;if(flag==4)flag=0;
while((!key0)||(!key1)||(!key2)||(!key3));
f=step/18;
Disp7219(f);}//顯示頻率
}
// 定時中斷服務
voidTimer0(void) interrupt 1 using 2
{
TH0 = 0xff;
TL0 = 0x00;
counter = counter + step;
DAC=type[flag][(unsignedint)counter>>8];
}
F. 怎麼用單片機做一個信號發生器
如果要求頻率不是很高,可以採用PWM方式,優點是無需另外加DA,且輸出解析度可靈活調整。考慮到單片機的運算能力不強,你可以用EXCEL編制一個正弦信號在一個周期內的等間隔幅值表,比如說,將一個周期的正弦信號分為64個點,信號的峰值為1000,初始相位為0°,那麼,這個表格的第一個點是0,第n點為1000*sin(2πn/64),用EXCEL將64個點的幅值計算完畢,按照需要的格式編制為編程語言能夠接受的表格。利用單片機的一個定時器,定時器的溢出值設置為1000,溢出時,某個IO口輸出低電平,再用一個寄存器存儲輸出點序號,序號為n時,根據輸出點序號通過查表獲取1000*sin(2πn/64)的數值,將定時器的計數值與1000*sin(2πn/64)比較,相等時,IO口輸出高電平。不斷循環執行上述程序,IO將輸出占空比與正弦信號幅值成正比的方波信號,這就是常說的正弦調制PWM信號。設計一個增益可調的有源低通濾波器,PWM信號經過低通濾波器後,輸出就是正弦波,調節低通濾波器的增益,即可改變正弦信號的幅值。當然,在設置PWM占空比時,將查表結果先乘以一個設定數值(一般是0~1的小數),也可以調節輸出幅值。為了簡化運算,可以是先乘以一個整數M,再除以N(N為128、256等2的冪的數值),M取值范圍為0~N,因為這種除法可通過移位進行,程序簡單,且運算速度快。
G. 加急求助!!!!要用Labview設計一個信號發生器,波形至少有正弦,方波,階躍信號,斜坡信號,要求與能夠
LabVIEW範例有很斗態多,除了階躍信號外都有,LabVIEW安裝目錄下labview\examples\express,是一個正弦波的例子,雙擊程序面板上的「模擬信號.vi」可選擇想要的波形褲磨。(另一種打開方法,程序面板——函數——Express——輸入——模擬信號,然後看幫助就可以了)
(即時胡銷斗幫助在菜單欄——幫助——顯示即時幫助)
在前面板用一個枚舉變數,配合條件結構就可以完成你的功能。
多看範例。
H. 基於單片機的信號發生器的設計,輸出方波,正弦波,三角波,鋸齒波,頻率可調。原理是如何噠怎麼取點
51單片機硬體有PCA模塊的,或者是PWM發生器的型號,也有沒有的,你採用的晶元有沒有這些硬體?
正弦波:
如果有,以PCA模塊為例,可以作為DA使用,使用前根據datasheet配置好PCA。在51頭文件中有math.h,裡面有sin(X)函數,可以在程序中直接使用,使用前在主函數重要包含math.H這個文件。然後每個點采樣輸出即可,頻率可調可以通過不同方法實現,如果是要做信號發生器,推薦使用一個電位器,通過AD採集電壓,將採集值作為你輸出函數的系數即可,亦可以通過串口發送指令等方式實現,前提要在使用前將AD或者串口配置好。
如果沒有硬體模塊,也可以用普通IO口模擬,思路如下,經過y=sinx函數求得的結果,經過演算法轉化成二進制(主要是將小數轉化成二進制的演算法),推薦轉化成8的整數倍位,比如8位二進制或者16位二進制。轉化結束後將結果給IO口輸出即可,頻率也可採取上述方法設定。
三角波:
如果有DA,將DA的輸入值按一定時間自增,到達峰值後按一定時間自減。前文中的「一定時間」設定的足夠小,可以近似認為是三角波。三角波輸出頻率就是周期,在具體到操作層面時,可以將輸出函數前加上一個時間系數,還是通過調節正弦波的頻率的方式調節。
木有DA···還是和正弦波類似,通過演算法將輸出值轉化成二進制,然後送給IO口
方波:
這個最簡單,將IO口定時切換高低電平即可,你定的時間就將成為你輸出的頻率。
如果有PCA模塊,可配置成定時翻轉模式,比較方便~
鋸齒波是不是和方波類似啊?
I. 51單片機信號發生器原理
基於單片機的的信號發生器大概有兩種形式,1、全部波形信號由單片機軟體產生,再經由D/A轉換輸出;
2、單片機+專用信號發生系晶元,這種方式單片機僅扮演主控角色,信號由晶元硬體產生;
J. 基於單片機的信號發生器怎麼實現調幅
一般情況下單片機模擬信號告帶發生器緩鉛時需要用到數模轉換模塊,即將數字信號轉換為模擬信號。在得到原始載波信號後你可以將需要裝載的信號通過一襪哪蘆個三極體之類的器件載入到信號中,如圖所示,這樣即可以可以將信號發送出去了。