概述
學了兩年單片機了,初三一年的電路基礎知識,發現越來越不夠用了,但又感覺看那些全是公式的大學的電路基礎又有點傻x,看半天,沒一個講的明白的,估計只有寫書的那人,能看明白,真正買書的看的明白的,估計也不多。于是乎,我想出了一個更高科技的辦法——試驗唄 毛主席說過實踐是檢驗真理的唯一標準,所以放下那些晦澀難懂的書本,拿起面包板,萬用表,示波器做試驗,應該是我這樣只有初三一年電路知識的人唯一的出路 所以,說干就干。目前來說,手上有的就那么點東西,能做啥試驗,就做啥試驗。以后隨著買新器件或產品,再做新器件的試驗。日志也會隨著更新。
試驗設備
器件:電阻電容若干,三極管,二極管,也有一些,場效應管不多,洞洞板,當然是必備的,剩下的就是1種電感,兩三種運放,和555。目前來說就這些玩意。
試驗板:at89s52試驗板 1塊,STM8試驗板 1塊,STM32F103ZE試驗板 1塊,STM32F103VE試驗板 1塊。自制STM32F103RB試驗板 1塊
設備:優利得萬用表 1塊,普元示波器 1臺,廣州黃花電烙鐵 1把,焊錫絲若干。
如果這些算我的資產的話,那我現在的身價也近萬了
關于試驗
試驗目的,試驗使用器件,試驗電路圖,波形圖,結論。反正越詳細越好,能多寫就多寫,寫不出來就編 寫的出來就寫。但盡量以事實為準,堅決不弄虛假的東西糊弄領導,其實也沒有領導讓我干這些
試驗方面,電阻電容電感對電壓波形影響,數字電路方面,驅動電路方面,開關電源方面,如果能力達到的話,可以初探一下無線,嘿嘿。
試驗1
目的:單片機io翻轉速度與波形樣式對比
設備:所有試驗板,示波器。
方法:在主函數中針對一組IO口,置高置低,中間不加任何延時
或取反
電路圖:沒有直接將示波器探頭接入管腳。
編譯環境:keil3為at89s52,iar為stm8和stm32,
上圖可見at89S52在12M晶振運行的情況下,程序使用c寫的
內容為
void main()
{
P1=0xff;
while(1)
{
P1=0x00;
P1=0xff;
}
}
以下為匯編程序
org 0000h
ajmp main
org 0080h
main:
loop: mov p1,#0ffh ;全不亮
mov P1,#000h
jmp loop
end
ajmp main
org 0080h
main:
loop: mov p1,#0ffh ;全不亮
mov P1,#000h
jmp loop
end
后來我又將c語言改成
void main()
{
P1=0xff;
while(1)
{
P1=0xff;
P1=0;
}
}
編譯后運行,結果和匯編編寫的一樣了,
這說明,循環程序執行到最后一句話以后會重新跳回第一句話,這個jmp loop也占一條語句的時間,所以才有了以上的兩種結果
上圖是我又把程序變為
void main()
{
P1=0xff;
while(1)
{
P1=0xff;
P1=0;
P1=0xff;
P1=0;
P1=0xff;
P1=0;//。。。。。。。
//好多個p1=0,p1=0xff
}
}
這個時候,頻率變成了333.3kHZ了,說明這已經是最快的速度了,但問題是,占空比還是33.3%,不解中。理論上來說,應該是50%的占空比才對,也許是芯片內部,下降保持的速度大于上升時保持的速度吧。
于是我又將程序改為
void main()
{
P1=0xff;
while(1)
{
P1=~P1;
P1=~P1;
P1=~P1;//。。。。。。。
//好多個 P1=~P1;
}
}
這回又有變化了,以下是截圖
這是LED與電阻中間的波形,還挺好看,但原因還不知道,先不分析,以后解決。
下面是STM32F103VE的管腳
這個是72M的可比那快多了
從上面的波形猜測,頻率接近18Mhz,是不是因為管腳速度太快,由于管腳的分布電容電阻引起的波形變化。
已經快接近正弦波了。
經過驗證:芯片的IO翻轉速度低于芯片頻率的一半,其原因可能是因為編譯器翻譯出的語句問題。