24線循環移位器 |
缺席
|
ingchih
一般會員 發表:5 回覆:8 積分:2 註冊:2004-03-25 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
CMOS 4515 應該是如下連結的 IC 吧
http://www.xs4all.nl/~ganswijk/chipdir/giicm/4515.txt
引言:如果使用解碼 IC 會出現雜訊,一種可能是您的 S0,S1,S2,S3 的選擇訊號在切換時不夠快,導致 4515 會在切換的時會改變準位,而在 Sx 訊號穩定後,又改變一次,使得您看到雜訊。 您可以試試,利用 /EN 來控制,在 Sx 訊號穩定後,再給 /EN 訊號,就不會有因 Sx 的短暫改變,而使 4515 誤判,產生雜訊。 如果您要使用單晶片來完成,那只要有內建 Timer 又可以直接控制 DIO PIN OUT 的如 8051,就可以由 Timer 直接控制 Dout 作到您要的時序圖。 沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....4515, 744515 1-of-16 inverting decoder/demultiplexer with address latches. ---------- LE |1 -- 24| VCC S0 |2 23| /EN S1 |3 22| S3 /Y7 |4 21| S2 /Y6 |5 20| /Y10 /Y5 |6 19| /Y11 /Y4 |7 4515 18| /Y8 /Y3 |8 17| /Y9 /Y2 |9 16| /Y15 /Y1 |10 15| /Y14 /Y0 |11 14| /Y13 GND |12 13| /Y12 ---------- [This information is part of the GIICM]
------
http://www.ViewMove.com |
ingchih
一般會員 發表:5 回覆:8 積分:2 註冊:2004-03-25 發送簡訊給我 |
|
bum_bum
一般會員 發表:6 回覆:16 積分:4 註冊:2004-02-14 發送簡訊給我 |
如果使用解碼 IC 會出現雜訊,令一種可能是您的 S0,S1,S2,S3 的選擇訊號在切換時不夠明確,例於1011,和1100間變化時上一個byte的bit 和下一個byte 的bit間變化時時間差,也就是Tr,Tf所產生的,也有可能你給s0,..s3的來源信號tr,tf無法被4514認同所造成.
我建議你用cpld來完成
你可以到altera網站抓學生版邏輯程式開發軟體,利用vhdl來寫,其內部還有模擬器不用先弄硬體,也有一般TTL只要將TTL一貼就可模擬,不用示波器
你可以到下訴網址填資料索取.
https://mysupport.altera.com/login/signin.asp
或到書店看看,有關VHDL的書有些書就有附送,(Programmable logic development software)光碟.請不要買到附送的是範例光碟書
|
bum_bum
一般會員 發表:6 回覆:16 積分:4 註冊:2004-02-14 發送簡訊給我 |
|
Eigen
初階會員 發表:19 回覆:36 積分:26 註冊:2002-12-05 發送簡訊給我 |
找有24io的pic
二十二行就能做出你要的東西
至於18V,自行加個buffer吧 bsf portb,0
clrc
loop
rlf portb ;1
rlf portc ;1
rlf portd ;1
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto $-.1 ;2
goto loop ;33
|
ingchih
一般會員 發表:5 回覆:8 積分:2 註冊:2004-03-25 發送簡訊給我 |
|
mymj
版主 發表:132 回覆:486 積分:608 註冊:2002-10-25 發送簡訊給我 |
關於你的問題綜合回答如下希望其他使用麵包板作實驗的同好也參考參考:
1.麵包板上用 CMOS 4515 製作過,有移位作用,但用示波器觀察卻出現雜訊,努力了幾個月無法克服. I.麵包板作實驗因為插線很長,很容易產生雜訊(很多的雜散電容,電感)
II.麵包板作實驗時在板下墊一片同等或大一點的金屬板,並將此板和你的電路的"GND"連接,以降低干擾
III.麵包板作實驗其電源(在板上)沒有旁路電容(這是許多人都沒注意到的問題)還有電原連接不好 2.從Altera下載Max+Plus Student Edition 軟體,功能蠻多的,進入一個新領域,一下子無法上手 這種元件教作"CPLD",你可以自行規劃數出輸入及功能,好用,不過新手要下一點工夫 3.貼上8051電路希望有所幫助
程式規劃方法如下
1.使用Timer0以中斷的方式來做輸出移位時間
2.程式以24位元旋轉的方式來執行你要的功能
|
bum_bum
一般會員 發表:6 回覆:16 積分:4 註冊:2004-02-14 發送簡訊給我 |
[quote]
我想設計一個24 Line 循環移位器,〈其作用如循環移動的跑馬燈〉但頻率要求達到15k〈圖一〉,曾在麵包板上用 CMOS 4515 製作過,有移位作用,但用示波器觀察卻出現〈如圖二〉雜訊,努力了幾個月無法克服,請教諸位先進有無其它解決方案?或有無適合的單晶片? 謝謝
你也可以用8051來完成;程式內容如下,此程式只是單純單一方向,不考慮D1,D2,D3,D4有亂數發生時的情況
org 00h
inti
mov p0,#00h ;將輸出PORT歸0
mov p1,#00h
mov p2,#00h
MOV P3,#00H
start
jb p0.7, loop2 ;如果P0.7=1 跳到LOOP2
mov a,#01h ;將累積器初始化
loop0
mov p0,a ;將累積器的值移到P0
acall delay ;呼叫副程式
jb p0.7,loop1 ;if p0.7=1 jumploop1
rl a ;累積器左旋1位元
ajmp loop0 ;回LOOP0
loop1
mov p0,#00h ;把P0歸0
mov a,#01h ;將累積器初始化
loop1a
mov p1,a :將累積器的值移到P1
acall delay
jb p1.7,loop2 ;if p1.7=1 jumploop2
rl a
ajmp loop1a
loop2
mov p1,#00h
mov a,#01h
loop2a
mov p2,a
acall delay
jb p2.7,inti ;如不需如此長可以改P2.X的地方
rl a
ajmp loop2a delay ;時間副程式
mov r1,#00h ;若要延長時間從這裡改
delay0
mov r2,#00h
nop
djnz r2,$
djnz r1,delay0
ret
end
|
mymj
版主 發表:132 回覆:486 積分:608 註冊:2002-10-25 發送簡訊給我 |
補上程式
這是一個有點笨的程式
org 00h
jmp main
org 0bh
; jmp IntTimer0
org 30h
;初始化程式
main: mov sp,#70h ;設定堆疊指標啟始位址
mov a,#00h
mov p1,a
mov p2,a
mov p3,a
mov p0,a
start: mov r3,#08 ;設定計數器
setb c
p0_out: rlc a
mov p0,a
call delay
djnz r3,p0_out
mov p0,#00h
mov r3,#08 ;設定計數器
setb c
p1_out: rlc a
mov p1,a
call delay
djnz r3,p1_out
mov 01,#00h
mov r3,#08 ;設定計數器
setb c
p2_out: rlc a
mov p2,a
call delay
djnz r3,p2_out
mov p2,#00h
jmp start
;-------------------------------
;暫存器r4調整長時間
;暫存器r5微調整時間
delay:
mov r4,#01h
delay2: mov r5,#80h
delay1: nop
djnz r5,delay1
djnz r4,delay2
ret
;-----------------------------
< >< >0,1的世界太寂寞,閒暇時候登登山,可以洗滌生硬的心靈
|
bum_bum
一般會員 發表:6 回覆:16 積分:4 註冊:2004-02-14 發送簡訊給我 |
引言: 再回答此信時我先聲明非常抱歉我不是來打擂台的只是因為這程式有Bag來補丁釘一下下. 補上程式 這是一個有點笨的程式 org 00h jmp main org 0bh ; jmp IntTimer0 org 30h ;初始化程式 main: mov sp,#70h ;設定堆疊指標啟始位址 mov a,#00h mov p1,a mov p2,a mov p3,a mov p0,a start: mov r3,#08 ;設定計數器 setb c mov a,#00h ;新加 p0_out: rlc a mov p0,a call delay djnz r3,p0_out mov p0,#00h mov r3,#08 ;設定計數器 setb c mov a,#00h p1_out: rlc a mov p1,a call delay djnz r3,p1_out mov 01,#00h mov r3,#08 ;設定計數器 setb c mov a,#00h p2_out: rlc a mov p2,a call delay djnz r3,p2_out mov p2,#00h jmp start ;------------------------------- ;暫存器r4調整長時間 ;暫存器r5微調整時間 delay: mov r4,#01h delay2: mov r5,#80h delay1: nop djnz r5,delay1 djnz r4,delay2 ret ;----------------------------- 如果沒有把a清成0到第2Loop時就不只一個燈亮 < >< >0,1的世界太寂寞,閒暇時候登登山,可以洗滌生硬的心靈 |
bum_bum
一般會員 發表:6 回覆:16 積分:4 註冊:2004-02-14 發送簡訊給我 |
引言: 再回答此信時我先聲明非常抱歉我不是來打擂台的只是因為這程式有Bag來補丁釘一下下. 補上程式 這是一個有點笨的程式 org 00h jmp main org 0bh ; jmp IntTimer0 org 30h ;初始化程式 main: mov sp,#70h ;設定堆疊指標啟始位址 mov a,#00h mov p1,a mov p2,a mov p3,a mov p0,a start: mov r3,#08 ;設定計數器 setb c mov a,#00h ;新加 p0_out: rlc a mov p0,a call delay djnz r3,p0_out mov p0,#00h mov r3,#08 ;設定計數器 setb c mov a,#00h p1_out: rlc a mov p1,a call delay djnz r3,p1_out mov 01,#00h mov r3,#08 ;設定計數器 setb c mov a,#00h p2_out: rlc a mov p2,a call delay djnz r3,p2_out mov p2,#00h jmp start ;------------------------------- ;暫存器r4調整長時間 ;暫存器r5微調整時間 delay: mov r4,#01h delay2: mov r5,#80h delay1: nop djnz r5,delay1 djnz r4,delay2 ret ;----------------------------- 如果沒有把a清成0到第2Loop時就不只一個燈亮 < >< >0,1的世界太寂寞,閒暇時候登登山,可以洗滌生硬的心靈 |
ingchih
一般會員 發表:5 回覆:8 積分:2 註冊:2004-03-25 發送簡訊給我 |
|
bum_bum
一般會員 發表:6 回覆:16 積分:4 註冊:2004-02-14 發送簡訊給我 |
引言: 補上休正程式 這是一個有點笨的程式 org 00h jmp main org 0bh ;初始化程式 main: mov sp,#70h ;設定堆疊指標啟始位址 mov a,#00h mov p1,a mov p2,a mov p3,a mov p0,a start: mov r3,#09 ;設定計數器 setb c p0_out: rlc a mov p0,a call delay djnz r3,p0_out mov p0,#00h mov r3,#09 ;設定計數器 p1_out: rlc a mov p1,a call delay djnz r3,p1_out mov 01,#00h mov r3,#09 ;設定計數器 p2_out: rlc a mov p2,a call delay djnz r3,p2_out mov p2,#00h jmp start ;------------------------------- ;暫存器r4調整長時間 ;暫存器r5微調整時間 delay: mov r4,#01h delay2: mov r5,#80h delay1: nop djnz r5,delay1 djnz r4,delay2 ret end |
mymj
版主 發表:132 回覆:486 積分:608 註冊:2002-10-25 發送簡訊給我 |
;我們Delphi K TOP能夠愈來愈好,人氣愈來愈盛,就是有像bum_bum先進的熱心,這就是進步的原動力
;由衷的感謝
;程式說明
org 00h
jmp main
org 0bh
;jmp IntTimer0
org 30h
;初始化程式
main: mov sp,#70h ;設定堆疊指標啟始位址
mov a,#00h
mov p1,a ;先令所有輸出全為"0"
mov p2,a
mov p3,a
mov p0,a
start:
mov r3,#08 ;設定計數器
;此程式片段(指p0_out這個loop)和bum_bum所修改的程式
;最大不一樣是在d7輸出後,不會多跑1次loop(d7輸出時間和d6,d5...是相同的)
;這個程式片段是先輸出再執行djnz指令,我的ICE故障請ingchih 作實驗後將實際結果貼上來 setb c ;先設carry flag 為"1"
p0_out:
rlc a ;包括carry flag及acc共9 bit作左旋轉
mov p0,a ;將acc內容載入p0輸出
call delay
djnz r3,p0_out
mov p0,#00h;保證p0輸出"0"
mov r3,#08 ;設定計數器
setb c
p1_out:
rlc a
mov p1,a
call delay
djnz r3,p1_out
mov p1,#00h
mov r3,#08 ;設定計數器
setb c
p2_out:
rlc a
mov p2,a
call delay
djnz r3,p2_out
mov p2,#00h
jmp start
;-------------------------------
;暫存器r4調整長時間
;暫存器r5微調整時間
delay:
mov r4,#01h
delay2:
mov r5,#80h
delay1:
nop
djnz r5,delay1
djnz r4,delay2
ret
;-----------------------------
end 補上休正程式
這是一個有點笨的程式
org 00h
jmp main
org 0bh
;初始化程式
main:
mov sp,#70h ;設定堆疊指標啟始位址
mov a,#00h
mov p1,a
mov p2,a
mov p3,a
mov p0,a
start:
mov r3,#09 ;設定計數器,使用djnz指令所以設為9,
;其目的是要讓p0作完後,此1"1"移回carry flag
setb c ;先設carry flag 為"1"
p0_out:
rlc a ;包括carry flag及acc共9 bit作左旋轉
mov p0,a ;將acc內容載入p0輸出
call delay
djnz r3,p0_out
mov p0,#00h;此行可省略(原先程式怕p0的D7還輸出)
mov r3,#09 ;設定計數器
p1_out:
rlc a
mov p1,a
call delay
djnz r3,p1_out
mov p1,#00h
mov r3,#09 ;設定計數器
p2_out:
rlc a
mov p2,a
call delay
djnz r3,p2_out
mov p2,#00h
jmp start
;-------------------------------
;暫存器r4調整長時間
;暫存器r5微調整時間
delay:
mov r4,#01h
delay2:
mov r5,#80h
delay1:
nop
djnz r5,delay1
djnz r4,delay2
ret
end
|
bbtw
一般會員 發表:2 回覆:31 積分:16 註冊:2003-07-11 發送簡訊給我 |
|
ingchih
一般會員 發表:5 回覆:8 積分:2 註冊:2004-03-25 發送簡訊給我 |
大家好:
忙了幾天問題總算得到初步解決。
1.製作一個AT89S52燒錄器及模擬器,買了五顆AT89S52,開始做起實驗,除了 編譯器及連接主電腦的鮑率遭遇一些困難外,其他還算順利。
2.因為我要求的頻率是15k,所以程式裡的Delay部分都用不到,要靠調整AT89S52的主頻來達到要求。〈依89s52資料,主頻率可3Mhz~33Mhz〉 ORG 0000H
MOV A,#00000001B LP1:
MOV P1,A
NOP ;延遲兩個週期
NOP
MOV P2,A
NOP
NOP
MOV P3,A
RL A
AJMP LP1
.END
程式就這麼簡單,連自己也感到懷疑,拔掉模擬器上LS373及6264,把燒好的89s52插上IC座,開機後用示波器觀測,三個port的波形都很乾淨,但
RL加AJMP是3個指令週期,兩個NOP佔2個週期,有點跛腳,還要改進。
3.此問題就此告一段落,非常感謝大家的解答!初次進入單晶片領域,有點興奮,因為有許多控制方面的問題都可靠它解決,在學習過程上一定會有很多問題,還要請教大家,謝謝! yingl
------
yingl |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |