以前,做而論道寫過一篇關於 dac0832 的博文,**鏈結是:
當時,為了直觀的說明 dac0832 的基本功能,就使用了撥動開關來輸入數字量。
其實,用微控制器輸出數字量,還真是很簡單方便的。
電路,也不用像課本裡面畫的那麼複雜,用任意乙個微控制器的並行口連線到 dac0832 的資料輸入口即可。
用 p1 口,驅動 0832 的電路如下:
按照這個電路,寫入、
執行下列的小
程式,可以看到輸出的鋸齒波電壓的波形圖如下所示:
org 0000h
jmp start
start:
mov r2, #0
loop:
mov p1, r2 ;輸出
call delay ;延時
inc r2
sjmp loop
delay: ;延時子程式
mov r6, #2;1;127
del1:
mov r7, #200
del2:
djnz r7, del2 ;內迴圈200遍
djnz r6, del1 ;外迴圈127遍
看波形,還是稍微有些失真呵。
同樣還是這個電路,執行下列的程式,看看,會出現什麼波形?
org 0000h
jmp start
start:
;------------------------------------------
sine:
mov r1, #00h
mov dptr, #sintab
loop:
mov a, r1
movc a, @a + dptr ;取資料
mov p1, a ;輸出,d/a 轉換
inc r1
call delay ;延時
sjmp loop
;---------------
sintab: ;正弦波資料表
db 07fh, 083h, 086h, 089h, 08ch, 08fh, 092h, 095h
db 098h, 09bh, 09eh, 0a1h, 0a4h, 0a7h, 0aah, 0adh
db 0b0h, 0b3h, 0b6h, 0b9h, 0bbh, 0beh, 0c1h, 0c3h
db 0c6h, 0c9h, 0cbh, 0ceh, 0d0h, 0d2h, 0d5h, 0d7h
db 0d9h, 0dbh, 0deh, 0e0h, 0e2h, 0e4h, 0e5h, 0e7h
db 0e9h, 0ebh, 0ech, 0eeh, 0efh, 0f1h, 0f2h, 0f4h
db 0f5h, 0f6h, 0f7h, 0f8h, 0f9h, 0fah, 0fbh, 0fbh
db 0fch, 0fdh, 0fdh, 0fdh, 0feh, 0feh, 0feh, 0feh
db 0ffh, 0feh, 0feh, 0feh, 0feh, 0fdh, 0fdh, 0fdh
db 0fch, 0fbh, 0fbh, 0fah, 0f9h, 0f8h, 0f7h, 0f6h
db 0f5h, 0f4h, 0f2h, 0f1h, 0efh, 0eeh, 0ech, 0ebh
db 0e9h, 0e7h, 0e5h, 0e4h, 0e2h, 0e0h, 0deh, 0dbh
db 0d9h, 0d7h, 0d5h, 0d2h, 0d0h, 0ceh, 0cbh, 0c9h
db 0c6h, 0c3h, 0c1h, 0beh, 0bbh, 0b9h, 0b6h, 0b3h
db 0b0h, 0adh, 0aah, 0a7h, 0a4h, 0a1h, 09eh, 09bh
db 098h, 095h, 092h, 08fh, 08ch, 089h, 086h, 083h
db 7fh, 7ch, 79h, 76h, 73h, 70h, 6dh, 6ah
db 67h, 64h, 61h, 5eh, 5bh, 58h, 55h, 52h
db 4fh, 4ch, 49h, 46h, 44h, 41h, 3eh, 3bh
db 39h, 36h, 34h, 31h, 2fh, 2ch, 2ah, 28h
db 26h, 23h, 21h, 1fh, 1dh, 1bh, 19h, 18h
db 16h, 14h, 12h, 11h, 0fh, 0eh, 0dh, 0bh
db 0ah, 09h, 08h, 07h, 06h, 05h, 04h, 03h
db 03h, 02h, 02h, 01h, 01h, 01h, 01h, 00h
db 00h, 00h, 01h, 01h, 01h, 01h, 02h, 02h
db 03h, 03h, 04h, 05h, 06h, 07h, 08h, 09h
db 0ah, 0bh, 0dh, 0eh, 0fh, 11h, 12h, 14h
db 16h, 18h, 19h, 1bh, 1dh, 1fh, 21h, 23h
db 26h, 28h, 2ah, 2ch, 2fh, 31h, 34h, 36h
db 39h, 3bh, 3eh, 41h, 44h, 46h, 49h, 4ch
db 4fh, 52h, 55h, 58h, 5bh, 5eh, 61h, 64h
db 67h, 6ah, 6dh, 70h, 73h, 76h, 79h, 7ch
;---------------
delay: ;延時子程式
mov r6, #1;127
del1:
mov r7, #200
del2:
djnz r7, del2 ;內迴圈200遍
djnz r6, del1 ;外迴圈127遍
確實是個正弦波。
想要改變波形的形狀,修改程式中的資料表內容即可。
想要改變波形的週期,修改程式中的延時子程式即可。
利用異或求解 N N 0 N 0 N
1題 1 1000放在含有1001個元素的陣列中,只有唯一的乙個元素值重複,其它均只出現 一次。每個陣列元素只能訪問一次,設計乙個演算法,將它找 出來 不用輔助儲存空 間,能否設計乙個演算法實現?顯然已經有人提出了乙個比較精彩的解法,將所有數加起來,減去1 2 1000的和。這個演算法已經足夠完美了...
利用微控制器DAC和C語言產生正弦波資料
以下為適用於各類微控制器 改變微控制器的dac輸出電壓,可以得到需要的電壓波形輸出,下面介紹正弦波所需的dac資料是如何計算的。首先既然是正弦波,那麼就要確定輸出乙個週期正弦波的取樣點數point,即由多少點組成了一週期的正弦波,還要知道微控制器輸出dac的數字值maxnum是多少,比如8位dac,...
msf利用0DAY漏洞獲取shell
安裝cve 2018 8174 exp 然後發現沒轉殖下來,所以這裡我直接用xshell上傳了zip包並解壓在本目錄 進入我們的檔案目錄 cd cve 2018 8174 exp master 生成惡意html檔案 將檔案移動到apache根目錄 mv exploit.html var www ht...