熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-8-17 08:28
正文摘要:本帖最后由 海闊天空8 于 2020-8-31 15:32 編輯 各位網(wǎng)友多數(shù)認(rèn)為不能,這或許是單片機(jī)技術(shù)發(fā)展到今天的一般認(rèn)為。但我還是認(rèn)為歸根結(jié)底還是要用0和1與計(jì)算機(jī)電路(硬件)對(duì)話。如果我的電路硬件連接正確,總會(huì)有 ... |
hhdsdy 發(fā)表于 2020-8-25 22:48 單片機(jī)可不可以存儲(chǔ),運(yùn)行輸出數(shù)據(jù)? |
hhdsdy 發(fā)表于 2020-8-25 22:48 數(shù)據(jù)和程序的關(guān)系我不清楚? |
yzwzfyz 發(fā)表于 2020-8-20 10:57 抱歉,我的目的不是單片機(jī)的實(shí)際應(yīng)用,只是想了解一下單片機(jī)的最基本,最簡(jiǎn)單原理,能輸入輸出數(shù)據(jù)就滿足了,某壇友提供的電路圖越看越像存儲(chǔ)器6116的寫入,輸出數(shù)據(jù)的過程呢?顯示地址,顯示數(shù)據(jù),單脈沖改變地址,寫入-輸出的轉(zhuǎn)換設(shè)置,,,,,看來我是思想被存儲(chǔ)器6116限制住了?不過單片機(jī)89C2051完全可以勝任6116的功能是毫不奇怪的。89C2051單片機(jī)如果斷電后輸入的數(shù)據(jù)能不能保存呢?這個(gè)我不知道? |
hhdsdy 發(fā)表于 2020-8-25 22:48 單片機(jī)的各個(gè)引腳輸出的是不是0或1變化的電位? |
黃youhui 發(fā)表于 2020-8-25 08:23 初學(xué)時(shí)往往對(duì)P0口、P2口和P3口的第二功能用法迷惑不解,認(rèn)為第二功能和原功能之間要有一個(gè)切換的過程,或者說要有一條指令,事實(shí)上,各端口的第二功能完全是自動(dòng)的,不需要用指令來轉(zhuǎn)換。如P3.6、P3.7分別是WR、RD信號(hào),當(dāng)微處理機(jī)外接RAM或有外部I/O口時(shí),它們被用作第二功能,不能作為通用I/O口使用,只要一微處理機(jī)一執(zhí)行到MOVX指令,就會(huì)有相應(yīng)的信號(hào)從P3.6或P3.7送出,不需要事先用指令說明。事實(shí)上‘不能作為通用I/O口使用’也并不是‘不能’而是(使用者)‘不會(huì)’將其作為通用I/O口使用。你完全可以在指令中按排一條SETB P3.7的指令,并且當(dāng)單片機(jī)執(zhí)行到這條指令時(shí),也會(huì)使P3.7變?yōu)楦唠娖剑褂谜卟粫?huì)這么去做,因?yàn)檫@通常會(huì)導(dǎo)致系統(tǒng)的崩潰。 |
hhdsdy 發(fā)表于 2020-8-25 22:48 數(shù)據(jù)和程序是什么關(guān)系?我還真不懂!請(qǐng)教了,,,,,,,, |
hhdsdy 發(fā)表于 2020-8-25 22:48 “給單片機(jī)輸入00000010”后,那它輸出的是什么? |
海闊天空8 發(fā)表于 2020-8-25 19:11 你這么認(rèn)為也對(duì),但是你不能回避一點(diǎn),你想讓單片機(jī)輸出00000010,給單片機(jī)編程輸入00000010是絕對(duì)不行的,因?yàn)?font color="#0000ff">單片機(jī)運(yùn)行的是程序而不是存儲(chǔ)數(shù)據(jù),對(duì)于這一點(diǎn)你就不用再爭(zhēng)論了。 |
breakhero 發(fā)表于 2020-8-23 22:01 您假設(shè)的那個(gè)K3是不是44樓圖中的T1(9012)導(dǎo)通后就把12V送到1腳(RST)了。 |
hhdsdy 發(fā)表于 2020-8-19 12:39 就說地址吧?地址不就是存儲(chǔ)數(shù)據(jù)的地方嗎?不對(duì)嗎?說了100遍“不懂基礎(chǔ)”了,那就麻煩您舉1--2個(gè)基礎(chǔ)的例子好嗎?如果您認(rèn)為我愚弄壇友,那就干脆別理我好了。 |
yzwzfyz 發(fā)表于 2020-8-20 10:57 我想象的“玩單片機(jī)”無非就是利用電腦,編程器等和特定軟件根據(jù)電腦提供的對(duì)話框輸入各種計(jì)算機(jī)語(yǔ)言的代碼,點(diǎn)鼠標(biāo)而已 |
jhczy 發(fā)表于 2020-8-19 23:09 “燒錄程序”?你解釋一下好嗎? |
hhdsdy 發(fā)表于 2020-8-19 00:49 這就是您對(duì)“語(yǔ)言”的理解嗎?我還是認(rèn)為,最終單片機(jī)就認(rèn)識(shí)0和1.不管什么語(yǔ)言就是一種規(guī)則,最終也要用0和1與單片機(jī)引腳對(duì)話,這樣說對(duì)嗎? |
Y_G_G 發(fā)表于 2020-8-19 10:17 人家都提供電路圖了!你就不能,,,,,,,, |
mengzhixinheng 發(fā)表于 2020-8-25 12:50 歸根結(jié)底還還是向單片機(jī)引腳加入0或1吧?其他引腳電平如何設(shè)置?(寫入,保存,讀出,,,,各引腳狀態(tài)如何設(shè)置?)向哪些引腳加數(shù)據(jù)(數(shù)據(jù)的組合不就是程序嗎?)? |
海闊天空8 發(fā)表于 2020-8-25 07:20 不是因?yàn)楸浚悄阕约捍_定的錯(cuò)誤的學(xué)習(xí)方法和態(tài)度而造成的。 電路圖如何接線,眾多壇友們一而再再而三地說明了,自己基礎(chǔ)不過關(guān),反倒認(rèn)為壇友們“沒有人能具體的講清楚!按電路圖如何接線?如何操作?”了,有點(diǎn)倒打一耙的感覺。 “多是用“正規(guī)”的單片機(jī)語(yǔ)言說話,就用0和1和電路直接對(duì)話。看來多是沒有這樣做過的?”----------有些術(shù)語(yǔ)、單詞或者名稱等肯定是按規(guī)范的或者約定俗成的說法來表達(dá),對(duì)成年人說話難道還要用嬰幼兒的語(yǔ)言說?難道數(shù)學(xué)師傅上課得把2的4次方說成2*2*2*2?手工編程對(duì)于近幾年學(xué)單片機(jī)的人來說是幾乎沒有人做過,淘汰的東西有什么值得津津樂道的?你要去隔壁城市出差辦公事,放著車、船和飛機(jī)不用非要走路去,偏又說走路累腳痛,讓大家?guī)湍阆朕k法到隔壁城市去,你說誰(shuí)傻? “有不少朋友認(rèn)為是可以這樣做的!”----------------你搞清楚大家回復(fù)的是什么,是可以手工編程,而不是不用編程就可以給單片機(jī)編程輸入;可以用機(jī)器碼輸入讓單片機(jī)運(yùn)行,但不是可以不用學(xué)單片機(jī)語(yǔ)言玩單片機(jī) |
海闊天空8 發(fā)表于 2020-8-18 20:24 這個(gè)是做下載器需要考慮的過程,不是手工編程。程序還是電腦寫好的,只是需要按照這些步驟去寫入單片機(jī)。 |
黃youhui 發(fā)表于 2020-8-25 08:23 0001表示10進(jìn)制的1,0010表示2,,,,,,任意數(shù)也可以用二進(jìn)制表示,小學(xué)2年級(jí)也知道幾十個(gè)億怎么表示了,但他不一定用過,,,,, |
這種思路只適合玩數(shù)字電路,不適合玩蛋騙雞,數(shù)字電路與蛋騙雞相去甚遠(yuǎn)。數(shù)字電路與蛋騙雞各自體系,否則為何要花費(fèi)時(shí)間和精力去研究、開發(fā)、學(xué)習(xí)蛋騙雞。 |
沒有程序,微處理器將無法工作。 |
hhdsdy 發(fā)表于 2020-8-24 01:23 他說他是“新將就木之人”,猜想他年紀(jì)大了,僅僅是希望有人能跟他說話而已,只是可伶了那些熱情的認(rèn)真的網(wǎng)友,越認(rèn)真越受傷.......... |
你的理論上是可行,但是理論終究只是理論,實(shí)現(xiàn)起來很難的,很多器件你只要給他一個(gè)電平信號(hào)他就能工作,你用撥碼開關(guān)沒問題,但是很多器件和單片機(jī)之間的通訊是有通訊協(xié)議的,例如外加存儲(chǔ)器的讀和寫,往里面寫一個(gè)數(shù)字你可能要按半天開關(guān),而且按錯(cuò)一個(gè)全白費(fèi) |
hhdsdy 發(fā)表于 2020-8-24 01:23 不是一年多原地踏步,是幾十年原地踏步!為什么?一是我笨,二是還沒有人能具體的講清楚!按電路圖如何接線?如何操作?多是用“正規(guī)”的單片機(jī)語(yǔ)言說話,就用0和1和電路直接對(duì)話。看來多是沒有這樣做過的?有不少朋友認(rèn)為是可以這樣做的!也有不少人認(rèn)為我是搗亂!實(shí)際不是這樣的。 |
統(tǒng)一回答: 1、set pins P3.3 to P3.7 to the appropriate levels百度機(jī)翻為 將插腳P3.3至P3.7設(shè)置到適當(dāng)?shù)碾娖健R驗(yàn)槲?1樓摘錄的手冊(cè)里解釋了P3.3、P3.4、P3.5和P3.7它們四個(gè)引腳的不同二進(jìn)制組合決定編程操作中對(duì)應(yīng)的工作模式。電平就是我讓你接了4個(gè)開關(guān)可以通過撥動(dòng)開關(guān)讓這四個(gè)引腳電壓為0或者+5V,以實(shí)現(xiàn)上面說的不同二進(jìn)制組合即適當(dāng)?shù)碾娖健D阋?051聽你話,你就得告訴它,這4個(gè)引腳的邏輯組合對(duì)應(yīng)不同命令,具體命令是啥,看表格第一列,不認(rèn)識(shí)就復(fù)制下來去翻譯。 2、關(guān)于那個(gè)比較合不合適,你以后如果明白了就明白了,始終不明白那就當(dāng)他合適吧。 3、多看一些書、資料,就理解了術(shù)語(yǔ)了,用術(shù)語(yǔ)是因?yàn)樵搰?yán)謹(jǐn)?shù)牡胤奖仨殗?yán)謹(jǐn)。 4、編程操作翻著花變能差到哪,不是相似,本來就一回事。但這倆東西本來就不是一回事。這句就別再問我了,參照上面第二條。 5、我解釋了,1腳是復(fù)用引腳,重復(fù)使用引腳,因?yàn)橐_少,廠家會(huì)把一些不沖突的功能引腳合并,那么地1腳就是RST(Reset input)(復(fù)位)和VPP(Programming Enable Voltage)(編程使能電壓)的復(fù)用,資料標(biāo)示為RST/VPP,是不是峰峰值我也不知道,不知道不能瞎說,但確定它是編程電壓,而且是+12V(要求范圍11.5~12.5),所以是不是峰峰值并無必要吧。 感謝54樓的善意提醒,我早已知道。其實(shí)我用這么大篇幅回復(fù)樓主就是希望能幫到樓主最好,幫不到也希望樓主體會(huì)到壇友的熱心,盡量多自學(xué)一些,聽聽勸,放下執(zhí)念。 樓主再有疑問把那個(gè)PDF完整翻譯了,都在里面,不親自動(dòng)手動(dòng)腦永遠(yuǎn)無解。 我的回復(fù)收工了,完結(jié)。#^_^# |
breakhero 發(fā)表于 2020-8-23 22:01 12V(高壓)我還似乎懂,出來個(gè)"VPP"?是不是“峰-峰值”的意思?外國(guó)字是我最大的障礙!^_^,,,,,,,,,,, |
breakhero 發(fā)表于 2020-8-23 21:12 “2051可以工作在時(shí)鐘0赫茲,所以不使用晶振的情況下,5腳可以輸入脈沖,單步運(yùn)行。”---------這話解除我的疑惑了。越發(fā)覺得和存儲(chǔ)器6116相似之處了。謝謝! |
breakhero 發(fā)表于 2020-8-23 22:01 “所以這個(gè)+12V(高壓)VPP需要在編程操作時(shí)引入,”?如果您這樣說“輸入數(shù)據(jù)之后升高1腳電壓到12V可以固定(激活)數(shù)據(jù)數(shù)據(jù)完成一個(gè)地址的編程”。我不就明白了嘛!是不是這樣理解?^_^謝謝~ |
breakhero 發(fā)表于 2020-8-23 21:12 “我認(rèn)為我已經(jīng)解釋得足夠清楚,”--------您說得不錯(cuò)!但是會(huì)者不難難者不會(huì)。還是要謝謝您! 7、為驗(yàn)證編程數(shù)據(jù),將RST從12V降低至邏輯“H”電平,并將插腳P3.3至P3.7設(shè)置到適當(dāng)?shù)碾娖健?稍诙丝赑1引腳處讀取輸出數(shù)據(jù)。 “設(shè)置到適當(dāng)?shù)碾娖健保渴鞘裁措娖剑?br /> “關(guān)于2051和6116的比較,不合適”?但我卻覺得有不少類似之處呢? |
breakhero 發(fā)表于 2020-8-23 22:01 又被忽悠上了一個(gè),朋友,樓主根本就不是想學(xué)單片機(jī),他早就說明了,不學(xué)任何的單片機(jī)語(yǔ)言,不想使用編程器,只想像6116那樣用開關(guān)輸入什么輸出就是什么,所以,你也別費(fèi)盡心思去指導(dǎo)了,就一個(gè)2051單片機(jī)重復(fù)發(fā)帖(你可以認(rèn)真搜索看一下他發(fā)的涉及單片機(jī)的帖子),一年多了還在原地踏步。我就發(fā)兩個(gè)樓主的帖子吧,你自己看看 http://www.zg4o1577.cn/bbs/dpj-192587-1.html http://www.zg4o1577.cn/bbs/dpj-194066-1.html |
我假設(shè)的那個(gè)K3為雙擲開關(guān)是為了切換高電平“H”和編程電壓+12V的。flash存儲(chǔ)器存儲(chǔ)數(shù)據(jù)0是靠高壓向存儲(chǔ)單元的mos管絕緣柵極注入電荷,所以這個(gè)+12V(高壓)VPP需要在編程操作時(shí)引入,2051設(shè)計(jì)為VPP和RST復(fù)用,也就是1腳。 |
2051可以工作在時(shí)鐘0赫茲,所以不使用晶振的情況下,5腳可以輸入脈沖,單步運(yùn)行。 我認(rèn)為你沒有看我上面貼的2051的PDF手冊(cè)。摘錄一段: 11. Programming The Flash The AT89C2051 is shipped with the 2K bytes of on-chip PEROM code memory array in the erased state (i.e., contents = FFH) and ready to be programmed. The code memory array is pro-grammed one byte at a time. Once the array is programmed, to re-program any non-blank byte, the entire memory array needs to be erased electrically.Internal Address Counter: The AT89C2051 contains an internal PEROM address counter which is always reset to 000H on the rising edge of RST and is advanced by applying a positive going pulse to pin XTAL1.Programming Algorithm: To program the AT89C2051, the following sequence is recommended. 1. Power-up sequence: Apply power between VCC and GND pins Set RST and XTAL1 to GND 2. Set pin RST to “H” Set pin P3.2 to “H” 3. Apply the appropriate combination of “H” or “L” logic levels to pins P3.3, P3.4, P3.5, P3.7 to select one of the programming operations shown in the PEROM Programming Modes table. To Program and Verify the Array: 4. Apply data for Code byte at location 000H to P1.0 to P1.7. 5. Raise RST to 12V to enable programming. 6. Pulse P3.2 once to program a byte in the PEROM array or the lock bits. The byte-write cycle is self-timed and typically takes 1.2 ms. 7. To verify the programmed data, lower RST from 12V to logic “H” level and set pins P3.3 to P3.7 to the appropriate levels. Output data can be read at the port P1 pins. 8. To program a byte at the next address location, pulse XTAL1 pin once to advance the internal address counter. Apply new data to the port P1 pins. 9. Repeat steps 6 through 8, changing data and advancing the address counter for the entire 2K bytes array or until the end of the object file is reached. 10. Power-off sequence: set XTAL1 to “L” set RST to “L” Turn VCC power off 然后百度機(jī)翻如下: 11閃存編程 AT89C2051配備了2K字節(jié)的片內(nèi)PEROM代碼存儲(chǔ)陣列,處于擦除狀態(tài)(即,內(nèi)容=FFH),可隨時(shí)編程。代碼存儲(chǔ)陣列一次編程一個(gè)字節(jié)。一旦數(shù)組被編程,為了重新編程任何非空白字節(jié),整個(gè)內(nèi)存數(shù)組需要被擦除電氣。內(nèi)部地址計(jì)數(shù)器:AT89C2051包含一個(gè)內(nèi)部PEROM地址計(jì)數(shù)器,該計(jì)數(shù)器總是在RST的上升沿重置為000H,并通過向引腳XTAL1施加正向脈沖來推進(jìn)。編程算法:至對(duì)AT89C2051進(jìn)行編程,建議采用以下順序。 1、通電順序: 在VCC和GND引腳之間通電 將RST和XTAL1設(shè)置為GND 2、將引腳RST設(shè)置為“H” 將插腳P3.2設(shè)置為“H” 3、應(yīng)用“H”或“L”邏輯的適當(dāng)組合 電平至插腳P3.3、P3.4、P3.5、P3.7,以選擇編程操作之一 如PEROM編程模式表所示。 要對(duì)陣列進(jìn)行編程和驗(yàn)證,請(qǐng)執(zhí)行以下操作: 4、在位置000H到P1.0到P1.7處應(yīng)用代碼字節(jié)的數(shù)據(jù)。 5、將RST升高至12V以啟用編程。 6、脈沖P3.2一次,在PEROM數(shù)組或鎖位中編程一個(gè)字節(jié)。字節(jié)寫入周期是自定時(shí)的,通常需要1.2ms。 7、為驗(yàn)證編程數(shù)據(jù),將RST從12V降低至邏輯“H”電平,并將插腳P3.3至P3.7設(shè)置到適當(dāng)?shù)碾娖健?稍诙丝赑1引腳處讀取輸出數(shù)據(jù)。 8、為了在下一個(gè)地址位置編程一個(gè)字節(jié),脈沖XTAL1管腳一次,使內(nèi)部地址計(jì)數(shù)器前進(jìn)。將新數(shù)據(jù)應(yīng)用到端口P1引腳。 9、重復(fù)步驟6到8,更改數(shù)據(jù)并為整個(gè)2K字節(jié)數(shù)組前進(jìn)地址計(jì)數(shù)器,或者直到到達(dá)目標(biāo)文件的末尾。 10、斷電順序: 將XTAL1設(shè)置為“L” 將RST設(shè)置為“L” 關(guān)閉VCC電源 注意手冊(cè)里芯片5腳標(biāo)記為XTAL1。 寫在最后:雖然你一直在感謝這個(gè)感謝那個(gè),但是你似乎并不去深入思考別人的幫助,我認(rèn)為我已經(jīng)解釋得足夠清楚,“漁”已經(jīng)給你了,后面的魚還得靠你自己。提示一下,你所說的“節(jié)奏”太過艱澀。關(guān)于2051和6116的比較,不合適。堅(jiān)持寫下來了,措辭如有冒犯,見諒。#^_^# |
13. Flash Programming Modes
Notes: 1. The internal PEROM address counter is reset to 000H on the rising edge of RST and is advanced by a positive pulse at XTAL1 pin. 2. Chip Erase requires a 10 ms PROG pulse. 3. P3.1 is pulled Low during programming to indicate RDY/BSY. 注:上面三處下劃線原本應(yīng)該是上劃線;▔╲▁╱▔代表低電平脈沖。 |
breakhero 發(fā)表于 2020-8-22 23:15 謝謝!說明手動(dòng)編程還是可以的(只要單片機(jī)動(dòng)起來即可,要求不高)。“常開觸點(diǎn)接12V+”就是給1腳(復(fù)位端)加一個(gè)+12V脈沖把輸入數(shù)據(jù)固定下來的意思嗎? 我可能硬件連接沒什么問題,我覺得44樓(我真的謝謝他的熱情幫助!)提供的圖對(duì)我?guī)椭艽蟆T蚴窍热霝橹魑铱傆么鎯?chǔ)器6116的模式去套單片機(jī),^_^。他的圖單片機(jī)并沒接入晶體振蕩器,估計(jì)脫離了這個(gè)電路單片機(jī)也運(yùn)行不起來?是這樣嗎?謝謝。 |
![]() 這個(gè)是2051的資料,你找的截圖中文翻譯估計(jì)也是來源于此,從第8到第11頁(yè)就是有關(guān)編程方法部分,你配合44樓(在此感謝44樓有心,換我真的沒有信心耐心寫下去)的古董資料圖理解。 如果你一定要只用外接開關(guān)實(shí)現(xiàn)編程(你想用2051正常工作就得先給它編程,這個(gè)不以你的意志為轉(zhuǎn)移),那么按如下準(zhǔn)備試試(我沒試過,也不準(zhǔn)備試,因?yàn)槲矣芯幊唐鳎袁F(xiàn)在是紙上談兵,我按個(gè)人理解復(fù)述資料): 20腳VCC接個(gè)常開單擲開關(guān)(叫K1)到5V電源+,10腳GND接5V電源-(電源共地)。 1腳RST接個(gè)100歐3瓦的電阻到地,再接一個(gè)常開開關(guān)(K2)到一個(gè)雙擲開關(guān)(K3)動(dòng)觸點(diǎn),K3常閉觸點(diǎn)接5V+,常開觸點(diǎn)接12V+。 5腳XTAL1接個(gè)4.7K電阻到地,再接個(gè)常開開關(guān)(K4)到5V+。 6、7、8、9、11腳P3.2~P3.5、P3.7分別接個(gè)1K電阻到地,再分別接常開開關(guān)(K5~K9)到5V+。 12~19腳P1.0~P1.7分別接個(gè)1K電阻到地,再分別接常開開關(guān)(K10~K17)到5V+。 然后按你截圖步驟操縱開關(guān)。 唉,我困得不行了,寫不下去了。就這樣吧。 |
angmall 發(fā)表于 2020-8-20 14:57 2051的第5腳做地址計(jì)數(shù)脈沖輸入嗎?同時(shí)CD4040顯示地址,K5-K12做數(shù)據(jù)輸入? |
angmall 發(fā)表于 2020-8-20 14:57 二進(jìn)制數(shù)據(jù)和地址顯示分開了?555第3腳輸出是顯示輸出節(jié)奏嗎?需要兩個(gè)電源?12V和5V。12V用作“激活編程”?74LS245做數(shù)據(jù)輸入轉(zhuǎn)換?,,,,,,,,,,,, |
angmall 發(fā)表于 2020-8-20 14:57 謝謝您!我相信。但一時(shí)難以消化,,,,,,,, |
遵循此電路圖連接, 就是89C2051的手動(dòng)編程![]() |
toyboy 發(fā)表于 2020-8-18 12:58 你說的是有道理,我就認(rèn)準(zhǔn)了從存儲(chǔ)器RAM6116到單片機(jī),不遠(yuǎn)了?(存儲(chǔ)器的使用作為單片機(jī)的基礎(chǔ),可以嗎?)為什么就這么困難?6116的輸入/讀出數(shù)據(jù)不復(fù)雜呀(CD4060-CD4520提供6116的地址)?單片機(jī)輸入/讀出數(shù)據(jù)為什么就這么困難?可能還是沒有正確的電路圖及其設(shè)置方法? |
Powered by 單片機(jī)教程網(wǎng)