當前位置:首頁 » 編程軟體 » 2864編程

2864編程

發布時間: 2022-07-30 16:39:23

『壹』 protues模擬中的EEPROM2864如何寫入數據

protues模擬中對EEPROM2864寫入數據,要用單片機。
這里,你要搞清一件事,你在網上看到的實驗報告,用2864做彩燈,那是做實物實驗,可以用單片機開發板先把彩燈的編碼寫到2864晶元中去,然後拔下來2864,再插到彩燈控制板上去。用2864做彩燈的好處是,不用單片機,更不用編寫單片機程序,因為沒有學過單片機確實不會編程。而又可以控制彩燈有很多種變化的花樣,電路也簡單。確實比用純數字電路控制簡單多了。可是,實驗是不便用EPROM2764的,燒錄數據困難,需要編程器。
再回到proteus模擬,做同樣的電路,卻無法實現,因為模擬時,那個2864需要用單片機往晶元里寫彩燈編碼,又要寫單片機程序。過程反倒麻煩了,用單片機向2864里寫編碼,再讀出來,再去控制彩燈,這2864倒成了多餘的。因為,往2864里寫編碼和讀編碼省掉,直接用編碼控制彩燈就行了。更主要是又用了單片機,再用2864就更意義啦。
那麼模擬,也不用單片機,耍換成EPROM27C64才行,而編碼是可以生成HEX代碼文件,載入到27C64中,相當於用2864做實物一樣的簡單方便了。模擬圖如下所示。

控制彩燈的編碼數據,寫成一個簡單的C程序,就是一行定義數組的語句,把一組編碼寫到一對大括弧內,然後用keil 編譯成HEX代碼文件就能載入到27C64中了。例如,模擬圖中的控制代碼數據,寫成下面的一行語句就行了。

unsigned char code light[]=

{0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,

};

『貳』 求2864EEPROM的寫操作程序

2864可以直接寫呀

用MOVX@ 指令就行了

MOVX @DPTR,A 將A的值寫入到DPTR指定的存儲器地址中。

『叄』 用51單片機設計可編程樂曲演奏器

............我也急

『肆』 單片機多點溫度控制系統設計的程序設計

單片機的多點溫度控制系統

DSl8820溫度感測器的內部存儲器包括9B高速暫存RAM和1B非易失性的可電擦除的E2PROM,後者存放高溫度和低溫度觸發器TH,TL和結構寄存器,該位元組第7位(TM)為0,低5位一直都是1,第6,5位(R1,R0)用來設置解析度,如表1所示。

根據DSl8820的通信協議,主機控制DSl8820完成溫度轉換必須經過3個步驟:每一次讀寫之前都要對其進行復位,復位成功後發送1條ROM指令,最後發送RAM指令,這樣才能對DSl8820進行預定的操作。復位要求主CPU將數據線下拉500μs,然後釋放,DSl8820收到信號後等待16~60μs左右,後發出60~240μs的存在低脈沖,主CPU收到此信號表示復位成功。由於DSl8820採用的是單線進行控制與讀取數據,因此對操作的時序要求非常嚴格,否則由於時序不匹配,將無法完成對器件的正確操作。

2.3控制執行那分

(1)壁掛爐燃燒系統控制。控制電路採用了脈沖繼電器器件作為整個系統的總控部分,當所有居室溫度均達到設定值時,停止壁掛爐的工作。該繼電器的特點是:當線圈收到一個脈沖信號後,線圈通電,電磁鐵吸合,帶動觸頭閉合接通需要控制的電路,當下一個信號到來後,電磁鐵吸合,觸頭斷開,切斷被控制的電源,因此其具有自鎖和信號遙控功能。由於磁鐵的作用,控制脈沖消失後滑片位置不發生變化,保持穩定狀態,所以該器件具有功耗小、具有記憶功能。

(2)居室溫度控制。各居室溫度控制在燃燒控制系統工作前提下,根據各居室溫度測量返回值,採用上海歐凱電磁閥製造有限公司生產的OK6515自保持脈沖電磁閥控制各迴路的通斷。脈沖電磁閥採用脈沖和永磁技術,只需通過控制器切換脈沖的電極觸點來改變電磁閥的開關狀態,當控制器發出電脈沖時,驅動閥芯克服永磁力產生上下移,使閥瓣到位後在永磁作用下處於自保持狀態。

2.4圖形液晶顯示模塊

為了能夠提供形象直觀的用戶顯示界面,系統採用圖形液晶顯示模塊LCDl2864,其具有8位標准數據匯流排、6條控制線及電源線,可與CPU直接介面,顯示各種字元及圖形。考慮到系統中漢字的使用量少,因此選用不帶漢字型檔的LCD。對於使用的漢字分別提取其字模並以二進制形式保存於內部FLASHROM中。

3系統軟體設計

系統軟體設計主要依據系統程序流程以及DSl8820的時序要求進行代碼編寫。為了降低開發難度,提高開發效率,系統開發中引入了μC/OS一Ⅱ嵌入式操作系統並移植了LCD顯示驅動。另一方面,為了確保對DSl8820操作時序的精確性,對DSl8820進行初始化和讀寫代碼仍採用匯編語言。

3.1系統數據結構

系統所需數據結構包括各測溫元件的序列號表,漢字字模存儲、系統運行時間表存儲、各溫控點的設定值及測量值、系統時間的存放及一些臨時數據存儲。

為了區別多個溫度感測器,在系統初始化時讀入感測器中的64位序列號,並將其存入程序存儲空間,以便程序運行期間進行比對,共需64B。漢字字模採用16×16字型檔進行提取,其中每個漢字需32B,約15個字,為了方便程序功能的升級改進,在程序存儲空間中按20個字進行空間分配,需要存儲空間640B。系統運行時間表的設計以小時為設置單位,需要保存24個值;為了減少時間比較過程中的數據計算量以及方便編程,對每個值採用一個位元組存儲,這里共需24B存儲空間,這里仍然使用程序存儲空間進行存儲,以便在系統掉電時設定值不會丟失。

3.2系統程序設計

系統程序設計主要使用KeilC5l進行編寫,但由於對DSl8820器件的讀寫時序要求比較嚴格,故採用匯編代碼,其中溫度讀取子程序主要代碼如下:

『伍』 c++編程錯誤列表及解決方案

C++常見編譯/鏈接錯誤及其解決辦法
1. 解決error LNK2005: ___crtExitProcess 已經在 LIBCMTD.lib(crt0dat.obj) 中定義
有的時候, 在 Debug 模式下編譯沒問題, 換到 Release 模式就發生一堆問題.
典型的例子, 就是因為 c++ runtime library 設定不同, 所造成的重復定義連結錯誤.
而另一個常見的例子是 專案與 library 使用不同的字元集合設定
(如: 一個用 Unicode Character Set, 另一個用 Multi-Byte Character Set)
這個錯誤發生原因, 有可能是
1. 你 link 的 lib 使用 C++ Multi-threaded DLL (/MD)
2. 而你的 source 使用的 C++ runtime library 是 Multi-threaded (/MT)
導致重復定義
解決方法:
兩個使用相同的 C++ runtime library.例如都使用 static 的 Multi-threaded (/MT).
2. 錯誤 1error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已經在 LIBCMT.lib(typinfo.obj) 中定義 MSVCRTD.lib
項目 -> 屬性 -> c/C++ -> 代碼生成 -> 運行時庫 設置為: 多線程調試 DLL (/MDd)
被引用的庫和調用的程序編譯選項不同,需要改成一致後編譯
3.#pragma once與 #ifndef的區別
為了避免同一個文件被include多次
1 #ifndef方式
2 #pragma once方式
在能夠支持這兩種方式的編譯器上,二者並沒有太大的區別,但是兩者仍然還是有一些細微的區別。
方式一:
#ifndef __SOMEFILE_H__
#define __SOMEFILE_H__
... ... // 一些聲明語句
#endif
方式二:
#pragma once
... ... // 一些聲明語句
#ifndef的方式依賴於宏名字不能沖突,這不光可以保證同一個文件不會被包含多次,也能保證內容完全相同的兩個文件不會被不小心同時包含。當然,缺點就是如果不同頭文件的宏名不小心「撞車」,可能就會導致頭文件明明存在,編譯器卻硬說找不到聲明的狀況
#pragma once則由編譯器提供保證:同一個文件不會被包含多次。注意這里所說的「同一個文件」是指物理上的一個文件,而不是指內容相同的兩個文件。帶來的好處是,你不必再費勁想個宏名了,當然也就不會出現宏名碰撞引發的奇怪問題。對應的缺點就是如果某個頭文件有多份拷貝,本方法不能保證他們不被重復包含。當然,相比宏名碰撞引發的「找不到聲明」的問題,重復包含更容易被發現並修正。
方式一由語言支持所以移植性好,方式二 可以避免名字沖突
4.error LNK2019: 無法解析的外部符號 __imp__PathCombineW
PathCombine是Shell api 需要引入庫#pragma comment( lib, "shlwapi.lib")
5.error C2662: "MyClass::GetName()」: 不能將「this」指針從「const MyClass」轉換為「MyClass &」
bool MyClass::operator==(const MyClass* n1) const
{return GetName() == n1->GetName();}
原因是不能在const函數中調用對象的非const方法,MyClass中的GetName()必須是const的。
6.template 模板
模板聲明和定義必須在同一個文件中,而且只有實例話模板類型時才編譯模板實例
7.error C2275: 「MyClass」: 將此類型用作表達式非法 MyClass.Instance();
原因:Instance是靜態方法,用.引用會出錯。應該是MyClass::Instance()
8.error LNK2019: 無法解析的外部符號 "public: __thiscall MyClass(void)
原因:只聲明了構造函數,MyClass(); ,但未定義。 可以定義空函數,或者直接注釋掉,使用默認構造函數。
9.error C2504: 「testing」: 未定義基類
class PackToolTest : testing.Test {}
原因:Test是testing命名空間下的一個類,需要用域操作符,testing::Test
還有一個問題,缺少基類繼承許可權(public、protected、private)
10.error C2864: 「MyClass::_nullpack」: 只有靜態常量整型數據成員才可以在類中初始化
class MyClass {string _nullpack = "test";}
原因:c++ 中,成員變數不能在聲明時初始化,而是在構造函數初始化列表中先初始化
11.error LNK2019: 無法解析的外部符號_WinMain@16int main()
原因:由於創建的是Win32 Project,和Win32 console Project的鏈接庫不同
方法1:在程序最開始的地方加上以下語句
#pragma comment(linker, "/subsystem:console ")
方法2:project > > setting > > 在link 的project options 中將/subsystem:windows(console)刪了
12.類似「已經在 msvcprtd.lib(MSVCP80D.dll) 中定義」問題
vs2005 Debug /Release需要分別配製
分析一下錯誤來源,會發現:
1. 錯誤來源主要是重復定義的問題,而且重復定義的基本上都是VC Runtime和Standard C++ Library中的函數
2. LIBCMT和LIBCPMT為Release下的Lib,本來不應該出現在Debug版本的鏈接的Lib中
3. 重復定義的問題主要出現在:LIBCMT, LIBCPMT, MSVCPRTD, MSVCRTD
來看看出問題的LIB是那些:
1. LIBCMT:C Runtime庫的多線程靜態鏈接的Release版本
2. LIBCPMT:C++ Standard Library的多線程靜態鏈接的Release版本
3. MSVCPRTD:C++ Standard Library的多線程DLL的Debug版本
4. MSVCRTD:C Runtime Library的多線程DLL的Debug版本
當 前我們的配置是多線程DLL的Debug版,因此3和4是應該出現在link的列表中的,不屬於多餘。而後兩者則是只是當多線程靜態鏈接Release版 中才會出現。這提示我在項目中加入的ANTLR.LIB可能是造成這個問題的根源,因為靜態庫的編譯選項很容易和主程序發生沖突,並且根據實際信息我們可 以看出ANTLR.LIB應該是用多線程靜態鏈接的Release版本來編譯的。
解決方法:
1、首先查看編譯項目依賴的其他項目的運行時庫是否一致
2、如果不一致,改為同樣的運行時庫,如在下編譯的是:「多線程調試 DLL (/MDd)」,現在需要把所有的依賴項目的運行時庫都改為一致的庫,就OK了。
13.error C2143: 語法錯誤 : 缺少「;」(在「*」的前面)
原因:產生錯誤處,某類型未include,可能頭文件名拼寫錯誤、頭文件名已更改
14.error C2572: 「MyClass::Invoke」: 重定義默認參數 : 參數 2
string MyClass::Invoke(const CParam& paraObj, INVOKETYPE type = ASYN)
原因:默認參數,只需在聲明時指定。方法定義的時候無需指定默認參數。
string MyClass::Invoke(const CParam& paraObj, INVOKETYPE type /*= ASYN*/)
{ ... }。。。。。
希望對你有用

『陸』 怎樣往EEPROM2864中存入16進制數據。要靠軟體編程還是可以硬體實現 這個問題你是怎麼解決的。

找一個 EEPROM 寫入器,與PC 連接後,用寫入器自帶的工具軟體即可寫入。

『柒』 怎樣往EEPROM2864中存入16進制數據。要靠軟體編程還是可以硬體實現

你好!不知問題是否已經解決?
看沒有人回答,我還是根據自己的經驗來說一點吧!
2864是一片128K的EEPROM存儲晶元,要將數據存入此晶元中,
首先肯定是需要有硬體支持的,有了硬體再根據此晶元的時序要求和操作步驟進行軟體編程,這樣才能將數據存入。
而且,EEPROM中存儲的數據本來就是16進制的,初始狀態下全為0xFF。
不知道是否是你想要的答案!

『捌』 可編程彩燈控制器

用PLC的方式可以完成,但程序會很復雜!建議你用單片機的程序或許可以更好的實現這些功能!不過本人的單片機學的不好!

『玖』 用proteus模擬時用到eeprom2864,如何將數據寫入eeprom2864中

方法如下:
1、在編程軟體Micro/WIN的Data Blocek(數據塊)中定義V數據區存儲單元的初始值,下載數據塊時,這些數值也被寫入到相應的EEPROM單元中。
2、用特殊存儲器SMB31、SMW32,用編程方法將V存儲區的數據寫入EEPROM
3、在System Block(系統塊)中設置數據保持功能,可將MB0 - MB13的內容在CPU斷電時自動寫入到EEPROM中.

熱點內容
maven預編譯 發布:2025-02-08 09:20:34 瀏覽:752
手機電量緩存 發布:2025-02-08 09:01:37 瀏覽:898
java怎麼寫程序 發布:2025-02-08 09:00:55 瀏覽:868
javaphp加密 發布:2025-02-08 08:59:45 瀏覽:986
股票避險資產配置哪個好 發布:2025-02-08 08:57:44 瀏覽:878
谷歌瀏覽器開啟ftp 發布:2025-02-08 08:55:08 瀏覽:33
安卓工程師開發是什麼專業 發布:2025-02-08 08:38:15 瀏覽:678
怎麼用電腦和朋友遠程伺服器連接 發布:2025-02-08 08:29:52 瀏覽:233
如何播放咪咕視頻的緩存電影 發布:2025-02-08 08:28:17 瀏覽:574
台式電腦修改密碼在哪裡修改 發布:2025-02-08 08:25:18 瀏覽:298