void UART_init() { //初始化串行口和波特率發生器 SCON =0x58 //選擇串口工作方式,打開接收允許 TMOD =0x21 //定時器1工作在方式2,定時器0工作在方式1 TH1 =0xfd //實現波特率9600(系統時鐘11.0592MHZ) TR1 =1 //啟動定時器T1 ET1 =0 ES=1 //允許串行口中斷 PS=1 //設計串行口中斷優先級 EA =1 //單片機中斷允許 }
上傳時間: 2014-08-30
上傳用戶:彭玖華
void display() //數碼顯示 { SCON=0; //初始化串行口方式 SBUF=dispcode[ge]; while(!TI); TI=0; led4=0; delay(2); led4=1; SBUF=dispcode[shi]; while(!TI); TI=0; led3=0; delay(2); led3=1;
上傳時間: 2013-11-20
上傳用戶:wtrl
本書從應用的角度,詳細地介紹了MCS-51單片機的硬件結構、指令系統、各種硬件接口設計、各種常用的數據運算和處理程序及接口驅動程序的設計以及MCS-51單片機應用系統的設計,并對MCS-51單片機應用系統設計中的抗干擾技術以及各種新器件也作了詳細的介紹。本書突出了選取內容的實用性、典型性。書中的應用實例,大多來自科研工作及教學實踐,且經過檢驗,內容豐富、翔實。 本書可作為工科院校的本科生、研究生、專科生學習MCS-51單片機課程的教材,也可供從事自動控制、智能儀器儀表、測試、機電一體化以及各類從事MCS-51單片機應用的工程技術人員參考。 第一章 單片微型計等機概述 1.1 單片機的歷史及發展概況 1.2 單片機的發展趨勢 1.3 單片機的應用 1.3.1 單片機的特點 1.3.2 單片機的應用范圍 1.4 8位單片機的主要生產廠家和機型 1.5 MCS-51系列單片機 第二章 MCS-51單片機的硬件結構 2.1 MCS-51單片機的硬件結構 2.2 MCS-51的引腳 2.2.1 電源及時鐘引腳 2.2.2 控制引腳 2.2.3 I/O口引腳 2.3 MCS-51單片機的中央處理器(CPU) 2.3.1 運算部件 2.3.2 控制部件 2.4 MCS-51存儲器的結構 2.4.1 程序存儲器 2.4.2 內部數據存儲器 2.4.3 特殊功能寄存器(SFR) 2.4.4 位地址空間 2.4.5 外部數據存儲器 2.5 I/O端口 2.5.1 I/O口的內部結構 2.5.2 I/O口的讀操作 2.5.3 I/O口的寫操作及負載能力 2.6 復位電路 2.6.1 復位時各寄存器的狀態 2.6.2 復位電路 2.7 時鐘電路 2.7.1 內部時鐘方式 2.7.2 外部時鐘方式 2.7.3 時鐘信號的輸出 第三章 MCS-51的指令系統 3.1 MCS-51指令系統的尋址方式 3.1.1 寄存器尋址 3.1.2 直接尋址 3.1.3 寄存器間接尋址 3.1.4 立即尋址 3.1.5 基址寄存器加變址寄存器間址尋址 3.2 MCS-51指令系統及一般說明 3.2.1 數據傳送類指令 3.2.2 算術操作類指令 3.2.3 邏輯運算指令 3.2.4 控制轉移類指令 3.2.5 位操作類指令 第四章 MCS-51的定時器/計數器 4.1 定時器/計數器的結構 4.1.1 工作方式控制寄存器TMOD 4.1.2 定時器/計數器控制寄存器TCON 4.2 定時器/計數器的四種工作方式 4.2.1 方式0 4.2.2 方式1 4.2.3 方式2 4.2.4 方式3 4.3 定時器/計數器對輸入信號的要求 4.4 定時器/計數器編程和應用 4.4.1 方式o應用(1ms定時) 4.4.2 方式1應用 4.4.3 方式2計數方式 4.4.4 方式3的應用 4.4.5 定時器溢出同步問題 4.4.6 運行中讀定時器/計數器 4.4.7 門控制位GATE的功能和使用方法(以T1為例) 第五章 MCS-51的串行口 5.1 串行口的結構 5.1.1 串行口控制寄存器SCON 5.1.2 特殊功能寄存器PCON 5.2 串行口的工作方式 5.2.1 方式0 5.2.2 方式1 5.2.3 方式2 5.2.4 方式3 5.3 多機通訊 5.4 波特率的制定方法 5.4.1 波特率的定義 5.4.2 定時器T1產生波特率的計算 5.5 串行口的編程和應用 5.5.1 串行口方式1應用編程(雙機通訊) 5.5.2 串行口方式2應用編程 5.5.3 串行口方式3應用編程(雙機通訊) 第六章 MCS-51的中斷系統 6.1 中斷請求源 6.2 中斷控制 6.2.1 中斷屏蔽 6.2.2 中斷優先級優 6.3 中斷的響應過程 6.4 外部中斷的響應時間 6.5 外部中斷的方式選擇 6.5.1 電平觸發方式 6.5.2 邊沿觸發方式 6.6 多外部中斷源系統設計 6.6.1 定時器作為外部中斷源的使用方法 6.6.2 中斷和查詢結合的方法 6.6.3 用優先權編碼器擴展外部中斷源 第七章 MCS-51單片機擴展存儲器的設計 7.1 概述 7.1.1 只讀存儲器 7.1.2 可讀寫存儲器 7.1.3 不揮發性讀寫存儲器 7.1.4 特殊存儲器 7.2 存儲器擴展的基本方法 7.2.1 MCS-51單片機對存儲器的控制 7.2.2 外擴存儲器時應注意的問題 7.3 程序存儲器EPROM的擴展 7.3.1 程序存儲器的操作時序 7.3.2 常用的EPROM芯片 7.3.3 外部地址鎖存器和地址譯碼器 7.3.4 典型EPROM擴展電路 7.4 靜態數據存儲的器擴展 7.4.1 外擴數據存儲器的操作時序 7.4.2 常用的SRAM芯片 7.4.3 64K字節以內SRAM的擴展 7.4.4 超過64K字節SRAM擴展 7.5 不揮發性讀寫存儲器擴展 7.5.1 EPROM擴展 7.5.2 SRAM掉電保護電路 7.6 特殊存儲器擴展 7.6.1 雙口RAMIDT7132的擴展 7.6.2 快擦寫存儲器的擴展 7.6.3 先進先出雙端口RAM的擴展 第八章 MCS-51擴展I/O接口的設計 8.1 擴展概述 8.2 MCS-51單片機與可編程并行I/O芯片8255A的接口 8.2.1 8255A芯片介紹 8.2.2 8031單片機同8255A的接口 8.2.3 接口應用舉例 8.3 MCS-51與可編程RAM/IO芯片8155H的接口 8.3.1 8155H芯片介紹 8.3.2 8031單片機與8155H的接口及應用 8.4 用MCS-51的串行口擴展并行口 8.4.1 擴展并行輸入口 8.4.2 擴展并行輸出口 8.5 用74LSTTL電路擴展并行I/O口 8.5.1 用74LS377擴展一個8位并行輸出口 8.5.2 用74LS373擴展一個8位并行輸入口 8.5.3 MCS-51單片機與總線驅動器的接口 8.6 MCS-51與8253的接口 8.6.1 邏輯結構與操作編址 8.6.2 8253工作方式和控制字定義 8.6.3 8253的工作方式與操作時序 8.6.4 8253的接口和編程實例 第九章 MCS-51與鍵盤、打印機的接口 9.1 LED顯示器接口原理 9.1.1 LED顯示器結構 9.1.2 顯示器工作原理 9.2 鍵盤接口原理 9.2.1 鍵盤工作原理 9.2.2 單片機對非編碼鍵盤的控制方式 9.3 鍵盤/顯示器接口實例 9.3.1 利用8155H芯片實現鍵盤/顯示器接口 9.3.2 利用8031的串行口實現鍵盤/顯示器接口 9.3.3 利用專用鍵盤/顯示器接口芯片8279實現鍵盤/顯示器接口 9.4 MCS-51與液晶顯示器(LCD)的接口 9.4.1 LCD的基本結構及工作原理 9.4.2 點陣式液晶顯示控制器HD61830介紹 9.5 MCS-51與微型打印機的接口 9.5.1 MCS-51與TPμp-40A/16A微型打印機的接口 9.5.2 MCS-51與GP16微型打印機的接口 9.5.3 MCS-51與PP40繪圖打印機的接口 9.6 MCS-51單片機與BCD碼撥盤的接口設計 9.6.1 BCD碼撥盤 9.6.2 BCD碼撥盤與單片機的接口 9.6.3 撥盤輸出程序 9.7 MCS-51單片機與CRT的接口 9.7.1 SCIBCRT接口板的主要特點及技術參數 9.7.2 SCIB接口板的工作原理 9.7.3 SCIB與MCS-51單片機的接口 9.7.4 SCIB的CRT顯示軟件設計方法 第十章 MCS-51與D/A、A/D的接口 10.1 有關DAC及ADC的性能指標和選擇要點 10.1.1 性能指標 10.1.2 選擇ABC和DAC的要點 10.2 MCS-51與DAC的接口 10.2.1 MCS-51與DAC0832的接口 10.2.2 MCS-51同DAC1020及DAC1220的接口 10.2.3 MCS-51同串行輸入的DAC芯片AD7543的接口 10.3 MCS-51與ADC的接口 10.3.1 MCS-51與5G14433(雙積分型)的接口 10.3.2 MCS-51與ICL7135(雙積分型)的接口 10.3.3 MCS-51與ICL7109(雙積分型)的接口 10.3.4 MCS-51與ADC0809(逐次逼近型)的接口 10.3.5 8031AD574(逐次逼近型)的接口 10.4 V/F轉換器接口技術 10.4.1 V/F轉換器實現A/D轉換的方法 10.4.2 常用V/F轉換器LMX31簡介 10.4.3 V/F轉換器與MCS-51單片機接口 10.4.4 LM331應用舉例 第十一章 標準串行接口及應用 11.1 概述 11.2 串行通訊的接口標準 11.2.1 RS-232C接口 11.2.2 RS-422A接口 11.2.3 RS-485接口 11.2.4 各種串行接口性能比較 11.3 雙機串行通訊技術 11.3.1 單片機雙機通訊技術 11.3.2 PC機與8031單片機雙機通訊技術 11.4 多機串行通訊技術 11.4.1 單片機多機通訊技術 11.4.2 IBM-PC機與單片機多機通訊技術 11.5 串行通訊中的波特率設置技術 11.5.1 IBM-PC/XT系統中波特率的產生 11.5.2 MCS-51單片機串行通訊波特率的確定 11.5.3 波特率相對誤差范圍的確定方法 11.5.4 SMOD位對波特率的影響 第十二章 MCS-51的功率接口 12.1 常用功率器件 12.1.1 晶閘管 12.1.2 固態繼電器 12.1.3 功率晶體管 12.1.4 功率場效應晶體管 12.2 開關型功率接口 12.2.1 光電耦合器驅動接口 12.2.2 繼電器型驅動接口 12.2.3 晶閘管及脈沖變壓器驅動接口 第十三章 MCS-51單片機與日歷的接口設計 13.1 概述 13.2 MCS-51單片機與實時日歷時鐘芯片MSM5832的接口設計 13.2.1 MSM5832性能及引腳說明 13.2.2 MSM5832時序分析 13.2.3 8031單片機與MSM5832的接口設計 13.3 MCS-51單片機與實時日歷時鐘芯片MC146818的接口設計 13.3.1 MC146818性能及引腳說明 13.3.2 MC146818芯片地址分配及各單元的編程 13.3.3 MC146818的中斷 13.3.4 8031單片機與MC146818的接口電路設計 13.3.5 8031單片機與MC146818的接口軟件設計 第十四章 MCS-51程序設計及實用子程序 14.1 查表程序設計 14.2 散轉程序設計 14.2.1 使用轉移指令表的散轉程序 14.2.2 使用地地址偏移量表的散轉程序 14.2.3 使用轉向地址表的散轉程序 14.2.4 利用RET指令實現的散轉程序 14.3 循環程序設計 14.3.1 單循環 14.3.2 多重循環 14.4 定點數運算程序設計 14.4.1 定點數的表示方法 14.4.2 定點數加減運算 14.4.3 定點數乘法運算 14.4.4 定點數除法 14.5 浮點數運算程序設計 14.5.1 浮點數的表示 14.5.2 浮點數的加減法運算 14.5.3 浮點數乘除法運算 14.5.4 定點數與浮點數的轉換 14.6 碼制轉換 ……
上傳時間: 2013-11-06
上傳用戶:xuanjie
給初學單片機的經典必備實驗單片機學習最重要是的是要搞清楚其內部的硬件結構。如:p0 p1 p2 p3 T1 T2 以及UART。 至于在編程方面,首先要理解單片機其編程語言和一般的匯編語言以及c語言的區別。 最大的不 同是在于單片機編程主要是圍繞定時器和UART來編程的, 所以要你對那些特殊寄存器要特別的熟 悉,如TMOD PCON SCON PSW IP,一提起這些你應該馬上知道這些寄存器里面所包含位及其中的意 義。如果你做到了這點,可以說單片機你算入門了。 剛開始不要學太多的單片機,單片機的種類很多,但你學精了一個,其他的很好學的,無非只是 在定時器和寄存器上有所不同罷了。 單片機學習是一個辛苦的過程,希望大家能吃苦耐勞,持之以恒。 鑒于本人學習的不足之處,少許錯誤,盡情諒解。 感謝您使用本教程。
上傳時間: 2013-11-19
上傳用戶:xjy441694216
高速51內核芯片c8051的學習資料 位7 SMOD 串行口波特率加倍允許0 串行口波特率是SCON 中的串行口模式定義值1 串行口波特率是SCON 中給出的串行口模式定義值的雙倍位6 GF4-GF0 通用標志4-0這些都是軟件控制下的通用標志位1 停機停機模式選擇設置這該將使CIP-51 進入停機模式該位讀時總為01 進入停機模式關掉振蕩器位0 空閑空閑模式選擇設置該位將使CIP-51 進入空閑模式該位讀時總為01 進入空閑模式關掉CPU 的時鐘但定時器中斷串行口和模擬外設的時鐘仍在運行
上傳時間: 2013-11-05
上傳用戶:woshinimiaoye
單片機基礎知識單片機的外部結構:1、 DIP40雙列直插;2、 P0,P1,P2,P3四個8位準雙向I/O引腳;(作為I/O輸入時,要先輸出高電平)3、 電源VCC(PIN40)和地線GND(PIN20);4、 高電平復位RESET(PIN9);(10uF電容接VCC與RESET,即可實現上電復位)5、 內置振蕩電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)6、 程序配置EA(PIN31)接高電平VCC;(運行單片機內部ROM中的程序)7、 P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 單片機內部I/O部件:(所為學習單片機,實際上就是編程控制以下I/O部件,完成指定任務)1、 四個8位通用I/O端口,對應引腳P0、P1、P2和P3;2、 兩個16位定時計數器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、 一個串行通信接口;(SCON,SBUF)4、 一個中斷控制器;(IE,IP)針對AT89C52單片機,頭文件AT89x52.h給出了SFR特殊功能寄存器所有端口的定義。教科書的160頁給出了針對MCS51系列單片機的C語言擴展變量類型。 C語言編程基礎:1、 十六進制表示字節0x5a:二進制為01011010B;0x6E為01101110。2、 如果將一個16位二進數賦給一個8位的字節變量,則自動截斷為低8位,而丟掉高8位。3、 ++var表示對變量var先增一;var—表示對變量后減一。4、 x |= 0x0f;表示為 x = x | 0x0f;5、 TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。6、 While( 1 ); 表示無限執行該語句,即死循環。語句后的分號表示空循環體,也就是{;}第一章 單片機最小應用系統:單片機最小系統的硬件原理接線圖:1、 接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF2、 接晶體:X1(PIN18)、X2(PIN19)。注意標出晶體頻率(選用12MHz),還有輔助電容30pF3、 接復位:RES(PIN9)。接上電復位電路,以及手動復位電路,分析復位工作原理4、 接配置:EA(PIN31)。說明原因。第二章 基本I/O口的應用第三章 顯示驅動第七章 串行接口應用
標簽: 單片機
上傳時間: 2013-10-30
上傳用戶:athjac
附件有51單片機加上sl811讀寫U盤的源程序和原理圖 /*--------------------------------------------------------------------------AT89X52.H Header file for the low voltage Flash Atmel AT89C52 and AT89LV52.Copyright (c) 1995-1996 Keil Software, Inc. All rights reserved.--------------------------------------------------------------------------*/ #ifndef AT89X52_HEADER_FILE#define AT89X52_HEADER_FILE 1 /*------------------------------------------------Byte Registers------------------------------------------------*/sfr P0 = 0x80;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr P1 = 0x90;sfr SCON = 0x98;sfr SBUF = 0x99;sfr P2 = 0xA0;sfr IE = 0xA8;sfr P3 = 0xB0;sfr IP = 0xB8;sfr T2CON = 0xC8;sfr T2MOD = 0xC9;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC;sfr TH2 = 0xCD;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;
上傳時間: 2014-01-05
上傳用戶:lnnn30
PC與單片機雙向通訊智能溫控程序 #include <AT89X51.H> #include <intrins.h> #define Key_UP P1_0 #define Key_DOWN P1_1 #define Key_SET P1_2 #define RelayOutPort P2_0 #define LEDPort P0 #define DELPort P2_1 #define LEDTwoC P3_6 #define LEDThreeC P3_7 #define TMPort P2_7 #define INBUF_LEN 5 //數據長度 unsigned char inbuf1[INBUF_LEN]={ 0 , 0 , 0 , 0 , 0 } //發送緩沖區 unsigned char inbuf2[50] //接收緩沖區 unsigned char count3 void init_serialcomm( void ) { SCON = 0x50 //SCON: serail mode 1, 8-bit UART, enable ucvr TMOD |= 0x20 //TMOD: timer 1, mode 2, 8-bit reload PCON |= 0x80 //SMOD=1 TH1 = 0xFA //Baud:4800 fosc=11.0592MHz IE |= 0x90 //Enable Serial Interrupt TR1 = 1 // timer 1 run } //向串口發送一個字符 void send_char_com( unsigned char ch) { SBUF=ch while (TI== 0 ) TI= 0
標簽: include intrins define Key_UP
上傳時間: 2014-11-29
上傳用戶:風之驕子
VB遙控播放器紅外遙控解碼 #include <regX52.h> #define c(x) (x*110592/120000) sbit Ir_Pin=P3^2 sbit beep=P2^1 //sbit RELAY=P2^0 #define INBUF_LEN 4 //數據長度 unsigned char inbuf1[INBUF_LEN]={ 0 , 0 , 0 , 0 } //發送緩沖區 unsigned char inbuf2[50] //接收緩沖區 unsigned char count3 void init_serialcomm( void ) { SCON = 0x50 //SCON: serail mode 1, 8-bit UART, enable ucvr T2CON=0x30 TH2=0x00 TL2=0x00 RCAP2H=0xFF RCAP2L=0xDC TR2=1 } //向串口發送一個字符 void send_char_com( unsigned char ch) { SBUF=ch while (TI== 0 ) TI= 0
標簽: include 110592 120000 define
上傳時間: 2013-12-21
上傳用戶:yph853211
單片機開發匯編基礎,學會使用SCON從這里開始
上傳時間: 2013-11-30
上傳用戶:chens000