導航:首頁 > 操作系統 > 基於stc89c52單片機的

基於stc89c52單片機的

發布時間:2023-02-22 02:11:04

1. 求STC89C52單片機的詳細資料包括引腳功能,存儲器等等的詳細介紹,越詳細越好,謝謝

stc89c52具有以下標准功能: 8k位元組flash,256位元組ram, 32 位i/o 口線,看門狗定時器,2 個數據指針,三個16 位 定時器/計數器,一個6向量2級中斷結構,全雙工串列口,片內晶振及時鍾電路。另外,stc89c52可降至0hz靜態邏輯操作,支持2種軟體可選擇節電模式。空閑模式下,cpu 停止工作,允許ram、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,ram內容被保存,振盪器被凍結,單片機一切工作停止,直到下一個中斷或硬體復位為止。8 位微控制器 8k位元組在系統可編程 flash
p0 口:p0口是一個8位漏極開路的雙向i/o口。作為輸出口,每位能驅動8個ttl邏輯電平。對p0埠寫「1」時,引腳用作高阻抗輸入。
當訪問外部程序和數據存儲器時,p0口也被作為低8位地址/數據復用。在這種模式下, p0具有內部上拉電阻。
在flash編程時,p0口也用來接收指令位元組;在程序校驗時,輸出指令位元組。程序校驗時,需要外部上拉電阻。
p1 口:p1 口是一個具有內部上拉電阻的8 位雙向i/o 口,p1 輸出緩沖器能驅動4 個 ttl 邏輯電平。對p1 埠寫「1」時,內部上拉電阻把埠拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由於內部電阻的原因,將輸出電流(iil)。
此外,p1.0和p1.2分別作定時器/計數器2的外部計數輸入(p1.0/t2)和時器/計數器2 的觸發輸入(p1.1/t2ex),具體如下表所示。 在flash編程和校驗時,p1口接收低8位地址位元組。
引腳號第二功能
p1.0 t2(定時器/計數器t2的外部計數輸入),時鍾輸出
p1.1 t2ex(定時器/計數器t2的捕捉/重載觸發信號和方向控制)
p1.5 mosi(在線系統編程用)
p1.6 miso(在線系統編程用)
p1.7 sck(在線系統編程用)
p2 口:p2 口是一個具有內部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅動4 個 ttl 邏輯電平。對p2 埠寫「1」時,內部上拉電阻把埠拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由於內部電阻的原因,將輸出電流(iil)。
在訪問外部程序存儲器或用16位地址讀取外部數據存儲器(例如執行movx @dptr) 時,p2 口送出高八位地址。在這種應用中,p2 口使用很強的內部上拉發送1。在使用 8位地址(如movx @ri)訪問外部數據存儲器時,p2口輸出p2鎖存器的內容。在flash編程和校驗時,p2口也接收高8位地址位元組和一些控制信號。
p3 口:p3 口是一個具有內部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅動4 個 ttl 邏輯電平。對p3 埠寫「1」時,內部上拉電阻把埠拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由於內部電阻的原因,將輸出電流(iil)。 p3口亦作為stc89c52特殊功能(第二功能)使用,如下表所示。在flash編程和校驗時,p3口也接收一些控制信號。
埠引腳 第二功能
p3.0 rxd(串列輸入口)
p3.1 txd(串列輸出口)
p3.2 into(外中斷0)
p3.3 int1(外中斷1)
p3.4 to(定時/計數器0)
p3.5 t1(定時/計數器1)
p3.6 wr(外部數據存儲器寫選通)
p3.7 rd(外部數據存儲器讀選通)
此外,p3口還接收一些用於flash快閃記憶體編程和程序校驗的控制信號。
rst——復位輸入。當振盪器工作時,rst引腳出現兩個機器周期以上高電平將是單片機復位。
ale/prog——當訪問外部程序存儲器或數據存儲器時,ale(地址鎖存允許)輸出脈沖用於鎖存地址的低8位位元組。一般情況下,ale仍以時鍾振盪頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鍾或用於定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個ale脈沖。
對flash存儲器編程期間,該引腳還用於輸入編程脈沖(prog)。
如有必要,可通過對特殊功能寄存器(sfr)區中的8eh單元的d0位置位,可禁止ale操作。該位置位後,只有一條movx和movc指令才能將ale激活。此外,該引腳會被微弱拉高,單片機執行外部程序時,應設置ale禁止位無效。
psen——程序儲存允許(psen)輸出是外部程序存儲器的讀選通信號,當stc89c52由外部程序存儲器取指令(或數據)時,每個機器周期兩次psen有效,即輸出兩個脈沖,在此期間,當訪問外部數據存儲器,將跳過兩次psen信號。
ea/vpp——外部訪問允許,欲使cpu僅訪問外部程序存儲器(地址為0000h-ffffh),ea端必須保持低電平(接地)。需注意的是:如果加密位lb1被編程,復位時內部會鎖存ea端狀態。
如ea端為高電平(接vcc端),cpu則執行內部程序存儲器的指令。
flash存儲器編程時,該引腳加上+12v的編程允許電源vpp,當然這必須是該器件是使用12v編程電壓vpp。

2. 求用STC89C52單片機的電梯控製程序

基於STC89C52單片機電梯設計.doc

文檔名稱:基於STC89C52單片機電梯設計.doc

格式:doc  大小:0.01MB  總頁數:7

 展開↓





更多功能

 免費預覽本文檔(全文)

下載敬告:

本站不保證該用戶上傳的文檔完整性,不預覽、不比對內容而直接下載產生的反悔問題本站不予受理。如果您已付費下載過本站文檔,您可以點這里二次下載 收起↑

 文檔介紹:

基於STC89C52單片機電梯設計 摘 要:隨著人們生活水平的不斷提高和現代科技的猛速發展,高層建築已成為一種用於居住、辦公的主流建築設計。為了更好地提高人們生活和工作的效率,電梯成為生活中不可或缺的垂直代步工具。為了讓電梯在運行過程中實時、有效地實現方向優先、距離優先選擇,本文提出了基於STC89C52單片機的電梯設計。

本文以STC89C52單片機作為背景機通過驅動外圍電路實現電梯垂直運行,該系統主要由硬體和?件兩大部分組成。其中,硬體部分主要由主控晶元、顯示模塊、按鍵模塊、鈴聲提示模塊4大部分組成。主控模塊由STC89C52作為背景機完成驅動外圍電路進行信息處理和控制的功能,顯示模塊負責實時的顯示電梯的升降狀態以及電梯所到樓層數,按鍵電路主要負責完成電梯的外呼內選將樓層到達信號傳輸給單片機,鈴聲提示模塊一方面報警提示乘客到達了所需的樓層,另一方面完成出現緊急停止時的報警提示。

3. stc89c52單片機和51單片機的區別

1、種類不同:51系列單片機是指51內核,stc89c5X基本都是51內核的種類。

2、大小不同:最後一個數字表示E2prom的大小,E2prom=X*4K,c51就是4K,c52就是8k。

3、配件不同:52還多了一個定時器,所以可以說52是51(這個51是指stc89c51,不是51內核)的增強型。

如下圖,可以很清晰的看出兩者之間的差別:

向左轉|向右轉

(3)基於stc89c52單片機的擴展閱讀:

單片機(Microcontrollers)作為計算機發展的一個重要分支領域,根據發展情況,從不同角度,單片機大致可以分為通用型/專用型、匯流排型/非匯流排型及工控型/家電型。

通用型

這是按單片機(Microcontrollers)適用范圍來區分的。例如,80C51式通用型單片機,它不是為某種專門用途設計的;專用型單片機是針對一類產品甚至某一個產品設計生產的,例如為了滿足電子體溫計的要求,在片內集成ADC介面等功能的溫度測量控制電路。

匯流排型

這是按單片機(Microcontrollers)是否提供並行匯流排來區分的。匯流排型單片機普遍設置有並行地址匯流排、 數據匯流排、控制匯流排,這些引腳用以擴展並行外圍器件都可通過串列口與單片機連接,另外,許多單片機已把所需要的外圍器件及外設介面集成一片內,因此在許多情況下可以不要並行擴展匯流排,大大減省封裝成本和晶元體積,這類單片機稱為非匯流排型單片機。

控制型

這是按照單片機(Microcontrollers)大致應用的領域進行區分的。一般而言,工控型定址范圍大,運算能力強;用於家電的單片機多為專用型,通常是小封裝、低價格,外圍器件和外設介面集成度高。 顯然,上述分類並不是惟一的和嚴格的。例如,80C51類單片機既是通用型又是匯流排型,還可以作工控用。

4. 基於STC89C52單片機的電子時鍾系統的設計

就弄個AT24C02讀寫程序,注釋詳細看這個也應該用不到專門的時鍾晶元,思路:開機進入主循環之前讀取晶元中的數據,設置個標志位沒30秒取反一次。或者但秒=0或為60時取反一次也是半分種吸和或斷開,利用單片機本身的定時器,例如每個50ms中斷一次20次就是一秒,bit ack; //應答標志位sbit SDA=P2^1;
sbit SCL=P2^0;/*------------------------------------------------
啟動匯流排
------------------------------------------------*/
void Start_I2c()
{
SDA=1; //發送起始條件的數據信號
_Nop();
SCL=1;
_Nop(); //起始條件建立時間大於4.7us,延時
_Nop();
_Nop();
_Nop();
_Nop();
SDA=0; //發送起始信號
_Nop(); //起始條件鎖定時間大於4μ
_Nop();
_Nop();
_Nop();
_Nop();
SCL=0; //鉗住I2C匯流排,准備發送或接收數據
_Nop();
_Nop();
}
/*------------------------------------------------
結束匯流排
------------------------------------------------*/
void Stop_I2c()
{
SDA=0; //發送結束條件的數據信號
_Nop(); //發送結束條件的時鍾信號
SCL=1; //結束條件建立時間大於4μ
_Nop();
_Nop();
_Nop();
_Nop();
_Nop();
SDA=1; //發送I2C匯流排結束信號
_Nop();
_Nop();
_Nop();
_Nop();
}
/*----------------------------------------------------------------
位元組數據傳送函數
函數原型: void SendByte(unsigned char c);
功能: 將數據c發送出去,可以是地址,也可以是數據,發完後等待應答,並對
此狀態位進行操作.(不應答或非應答都使ack=0 假)
發送數據正常,ack=1; ack=0表示被控器無應答或損壞。
------------------------------------------------------------------*/
void SendByte(unsigned char c)
{
unsigned char BitCnt;

for(BitCnt=0;BitCnt<8;BitCnt++) //要傳送的數據長度為8位
{
if((c<<BitCnt)&0x80)SDA=1; //判斷發送位
else SDA=0;
_Nop();
SCL=1; //置時鍾線為高,通知被控器開始接收數據位
_Nop();
_Nop(); //保證時鍾高電平周期大於4μ
_Nop();
_Nop();
_Nop();
SCL=0;
}

_Nop();
_Nop();
SDA=1; //8位發送完後釋放數據線,准備接收應答位
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop();
_Nop();
if(SDA==1)ack=0;
else ack=1; //判斷是否接收到應答信號
SCL=0;
_Nop();
_Nop();
} /*----------------------------------------------------------------
位元組數據傳送函數
函數原型: unsigned char RcvByte();
功能: 用來接收從器件傳來的數據,並判斷匯流排錯誤(不發應答信號),
發完後請用應答函數。
------------------------------------------------------------------*/
unsigned char RcvByte()
{
unsigned char retc;
unsigned char BitCnt;

retc=0;
SDA=1; //置數據線為輸入方式
for(BitCnt=0;BitCnt<8;BitCnt++)
{
_Nop();
SCL=0; //置時鍾線為低,准備接收數據位
_Nop();
_Nop(); //時鍾低電平周期大於4.7us
_Nop();
_Nop();
_Nop();
SCL=1; //置時鍾線為高使數據線上數據有效
_Nop();
_Nop();
retc=retc<<1;
if(SDA==1)retc=retc+1; //讀數據位,接收的數據位放入retc中
_Nop();
_Nop();
}
SCL=0;
_Nop();
_Nop();
return(retc);
} /*----------------------------------------------------------------
應答子函數
原型: void Ack_I2c(void);

----------------------------------------------------------------*/
void Ack_I2c(void)
{

SDA=0;
_Nop();
_Nop();
_Nop();
SCL=1;
_Nop();
_Nop(); //時鍾低電平周期大於4μ
_Nop();
_Nop();
_Nop();
SCL=0; //清時鍾線,鉗住I2C匯流排以便繼續接收
_Nop();
_Nop();
}/*----------------------------------------------------------------
向有子地址器件發送多位元組數據函數
函數原型: bit ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);
功能: 從啟動匯流排到發送地址,子地址,數據,結束匯流排的全過程,從器件
地址sla,子地址suba,發送內容是s指向的內容,發送no個位元組。
如果返回1表示操作成功,否則操作有誤。
注意: 使用前必須已結束匯流排。
----------------------------------------------------------------*/
bit ISendStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
{
unsigned char i;
for(i=0;i<no;i++)
{
Start_I2c(); //啟動匯流排
SendByte(sla); //發送器件地址
if(ack==0)return(0);
SendByte(suba); //發送器件子地址
if(ack==0)return(0);

SendByte(*s); //發送數據
if(ack==0)return(0);
Stop_I2c(); //結束匯流排
DelayMs(1); //必須延時等待晶元內部自動處理數據完畢
s++;
suba++;
}
return(1);
}/*----------------------------------------------------------------
向無子地址器件讀位元組數據函數
函數原型: bit IRcvByte(unsigned char sla,ucahr *c);
功能: 從啟動匯流排到發送地址,讀數據,結束匯流排的全過程,從器件地
址sla,返回值在c.
如果返回1表示操作成功,否則操作有誤。
注意: 使用前必須已結束匯流排。
----------------------------------------------------------------*/
/*bit IRcvByte(unsigned char sla,unsigned char *c)
{
Start_I2c(); //啟動匯流排
SendByte(sla+1); //發送器件地址
if(ack==0)return(0);
*c=RcvByte(); //讀取數據
NoAck_I2c(); //發送非就答位
Stop_I2c(); //結束匯流排
return(1);
}*/
/*----------------------------------------------------------------
向有子地址器件讀取多位元組數據函數
函數原型: bit ISendStr(unsigned char sla,unsigned char suba,ucahr *s,unsigned char no);
功能: 從啟動匯流排到發送地址,子地址,讀數據,結束匯流排的全過程,從器件
地址sla,子地址suba,讀出的內容放入s指向的存儲區,讀no個位元組。
如果返回1表示操作成功,否則操作有誤。
注意: 使用前必須已結束匯流排。
----------------------------------------------------------------*/
bit IRcvStr(unsigned char sla,unsigned char suba,unsigned char *s,unsigned char no)
{
unsigned char i; Start_I2c(); //啟動匯流排
SendByte(sla); //發送器件地址
if(ack==0)return(0);
SendByte(suba); //發送器件子地址
if(ack==0)return(0); Start_I2c();
SendByte(sla+1);
if(ack==0)return(0); for(i=0;i<no-1;i++)
{
*s=RcvByte(); //發送數據
Ack_I2c(); //發送就答位
s++;
}
*s=RcvByte();
NoAck_I2c(); //發送非應位
Stop_I2c(); //結束匯流排
return(1);
}

閱讀全文

與基於stc89c52單片機的相關的資料

熱點內容
推特app界面如何設置成中文 瀏覽:452
太空工程師轉子編程屬性 瀏覽:32
windowscmd關機命令 瀏覽:342
雲桌面只要伺服器裝一套軟體 瀏覽:247
電腦右鍵按到什麼導致文件夾全屏 瀏覽:454
我的世界如何製造伺服器主城 瀏覽:365
linuxssh連不上 瀏覽:297
永宏plc用什麼編程電纜 瀏覽:371
win激活命令行 瀏覽:886
新手學電腦編程語言 瀏覽:893
雲空間在哪個文件夾 瀏覽:926
編程游戲小貓抓小魚 瀏覽:790
安卓dosbox怎麼打開 瀏覽:774
伺服器無影響是怎麼回事 瀏覽:958
比德電子采購平台加密 瀏覽:202
加密貨幣400億 瀏覽:524
植發2次加密 瀏覽:44
vc6查看編譯的錯誤 瀏覽:595
心理大全pdf 瀏覽:1002
區域鏈加密幣怎麼樣 瀏覽:343