基于STC單片機(jī)資料(完整資料)_第1頁
基于STC單片機(jī)資料(完整資料)_第2頁
基于STC單片機(jī)資料(完整資料)_第3頁
基于STC單片機(jī)資料(完整資料)_第4頁
基于STC單片機(jī)資料(完整資料)_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

基于STC單片機(jī)資料(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)

單片機(jī)原理復(fù)習(xí)要點(diǎn)基于STC單片機(jī)資料(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)考試題型:填空題、選擇題、判斷題(共計(jì)45分左右)程序分析題、簡答題(主第二章)、編程題(共計(jì)55分左右)前言:經(jīng)過大家的奮戰(zhàn),單片機(jī)的復(fù)習(xí)資料出爐了!!!感謝所有為本資料無私奉獻(xiàn)的小伙伴們!?。∪绻Y料有錯(cuò)誤,請(qǐng)自行修改.第一章1>.微型計(jì)算機(jī):微處理器,存儲(chǔ)器(ROMRAM)與輸入輸出接口(I/O接口)及連接他們的總線組成.2>。存儲(chǔ)器的兩個(gè)重要的指標(biāo)是容量與速度。3〉.已知一個(gè)存儲(chǔ)器有12根數(shù)據(jù)總線,則該存儲(chǔ)器的容量為4KB。(算法:212=22*210=4K)4>.已知某單片機(jī)有16根地址總線,則該單片機(jī)的尋址范圍為:0-64KB。5>。微機(jī)的總線結(jié)構(gòu)是:三總線結(jié)構(gòu),而單片機(jī)的總線結(jié)構(gòu)是:單總線結(jié)構(gòu).6>??偩€分為地址總線、數(shù)據(jù)總線、控制總線、其中地址總線的I/O口是P0口和P2口,數(shù)據(jù)總線的I/O口是P0口。第二章(看完要有印象)1>。關(guān)于STC15F2K60S2系列單片機(jī)的功能敘述:①。有8通道10位ADC轉(zhuǎn)換。②。兩個(gè)全雙工異步串行口.③。三個(gè)定時(shí)器T0T1T2。(其中T0有4種工作方式,T1有3種工作方式,T2有1種工作方式。但是T1和T2可以作為波特率發(fā)生器)④.增強(qiáng)型8051CPU,每個(gè)機(jī)器周期只有一個(gè)系統(tǒng)時(shí)鐘,時(shí)鐘頻率分為12分頻或不分頻。2>.關(guān)于STC15F2K60S2的引腳(有印象就行)數(shù)據(jù)總線:P0口訪問外部存儲(chǔ)器時(shí)地址總線:P0口(低8位);P2口(高8位)外部中斷入口:P3.2(外部中斷0);P3.3(外部中斷1)P3。6(外部中斷2);P3。7(外部中斷3);P3.0(外部中斷4)定時(shí)器脈沖輸入:P3.4(T0脈沖輸入);P3.5(T1脈沖輸入);P3.1(T2脈沖輸入)控制引腳:地址鎖存信號(hào)線(ALE):P4。5外部存儲(chǔ)器讀操作(EQ\*jc0\*"Font:楷體"\*hps14\o\ad(\s\up13(__(dá)),R)EQ\*jc0\*"Font:楷體”\*hps14\o\ad(\s\up13(__),D)):P4.4外部存儲(chǔ)器寫操作(EQ\*jc0\*”Font:楷體”\*hps14\o\ad(\s\up13(__),W)EQ\*jc0\*”Font:楷體"\*hps14\o\ad(\s\up13(__),R)):P4.23>.單片機(jī)的中央處理器是由運(yùn)算器和控制器組成。4〉。STC15單片機(jī)的儲(chǔ)存結(jié)構(gòu)。(要有印象)0000H-EFFFH:程序Flash0000H—3FFFH:數(shù)據(jù)Flash00H—7FH:低128字節(jié)基本RAM80H—FFH:高128字節(jié)基本RAM片內(nèi)基本RAM分為低128字節(jié)RAM、高128字節(jié)的RAM的特殊功能寄存器(SFR)其中低128字節(jié)又分為工作寄存器區(qū),位尋址區(qū)。與通用RAM區(qū).工作寄存器區(qū)的功能由RS0與RS1決定。位尋址區(qū):片內(nèi)的基本RAM的20H—--—2FH共16個(gè)字節(jié)是位尋址區(qū),每個(gè)字節(jié)8個(gè)位,共128位,其對(duì)應(yīng)的地址分別為00H--—-—7EH。位地址還可以用字節(jié)地址加位號(hào)表示,如20H的單位的B5位,其地址可用05H表示,也可用20.5H表示。通用RAM區(qū);30H——---7FH共80個(gè)字節(jié)。其中高128字節(jié)的RAM的地址為80H——-—FFH.高128字節(jié)的RAM只能采用寄存器間接尋址方式訪問;特殊功能寄存器只能采用直接尋址方式。第四章1>.指令尋址方式:(要了解)直接尋址:直接累加器或寄存器訪問目標(biāo)。比如:MOVA,20H寄存器間接尋址:將地址賦給一個(gè)寄存器,然后利用該寄存器的內(nèi)容作為地址,讓累加器或寄存器訪問。比如:MOVR0,#30HMOVA,@RO立即尋址:將立即數(shù)賦給累加器或寄存器。寄存器尋址:寄存器間的數(shù)據(jù)傳送,或者自加自減.變址尋址:一個(gè)地址加另一個(gè)地址中的數(shù)據(jù)送到累加器或者寄存器。比如:MOVA,@A+DPTR2〉。指令表(必須記住,提供英文全稱輔助記憶)MOVA,B賦值(傳送)(Move)MOVXA,B(片外)賦值MOVCA,B(存儲(chǔ)器)賦值(MoveCode)XCHA,B(寄存器間)交換(Exchange)XCHDA,B(寄存器間低4位)交換SWAPA(自己的低4位與高4位)交換PUSHA入棧操作POPA出棧操作ADD/ADDCA,B加法/帶進(jìn)位的加法(Addition)SUBBA,B減法(Subtraction)MULAB乘法(Multiplicat(yī)ion)DIVAB除法(Division)INCA自加(Increment)DECA自減(Decrement)ANLA,B邏輯與(AndLogic)ORLA,B邏輯或(OrLogic)XRLA,B邏輯異或(ExclusiveOrLogic)CLRA清零(Clear)CPLA取反(ConversePositionLogical)RLA循環(huán)左移(RotateLeft)RLCA循環(huán)左移加CY(RotateLeftwithCY)RRA循環(huán)右移(Rotat(yī)eRight)RRCA循環(huán)右移加CY(RotateRightwithCY)AJMPaddr短轉(zhuǎn)移(絕對(duì)轉(zhuǎn)移)(AbsoluteJump)LJMPaddr長轉(zhuǎn)移(LongJump)SJMPaddr相對(duì)轉(zhuǎn)移(ShortJump)NOP空操作(NotOperation)JZaddr?yàn)椋稗D(zhuǎn)移(JumpifZero)JNZaddr非0轉(zhuǎn)移(JumpifNotZero)CJNEA,B,addr比較不等轉(zhuǎn)移(CompareJumpifNotEqual)DJNZA,addr減1非0轉(zhuǎn)移(DecrementJumpifNotZero)LCALLaddr子程序長調(diào)用(LongCall)ACALLaddr子程序絕對(duì)調(diào)用(AbsoluteCall)RET子程序返回(Return)RETI中斷返回(ReturnfromInterruption)還有其他剩余指令,自己稍微了解一下就行。(備注:A,B為源操作數(shù)和目的操作數(shù),addr為地址或程序標(biāo)志).第五章(要學(xué)會(huì)應(yīng)用)偽指令:ORG作用:設(shè)定程序起始地址指令第六章(整合到大題中考)第七章(建議記?。?〉。引起中斷的根源或者原因稱為中斷源,STC15中,中斷源共有14個(gè)。2>。CPU在處理較低優(yōu)先級(jí)的中斷服務(wù)子程序時(shí),有更高優(yōu)先級(jí)程序申請(qǐng)中斷,使CPU轉(zhuǎn)而執(zhí)行更高優(yōu)先級(jí)的中斷服務(wù)子程序稱為中斷嵌套。3>.中斷標(biāo)志清零的方式有軟件清零和硬件清零.4>。響應(yīng)中斷的條件:中斷總開關(guān)EA以及相應(yīng)中斷的控制位都開放中斷,并且中斷源的信號(hào)滿足中斷要求。5>.中斷方式跳轉(zhuǎn)與調(diào)用方式跳轉(zhuǎn)的區(qū)別?答:中斷方式跳轉(zhuǎn)需要事先設(shè)置中斷服務(wù)程序的入口地址,并且需要設(shè)置相應(yīng)的中斷控制位,開放相應(yīng)的中斷。在設(shè)置好相關(guān)的程序后還需要需要等待中斷。中斷產(chǎn)生后,需要在中斷服務(wù)子程序中設(shè)置入棧操作,用來保護(hù)斷點(diǎn)。中斷服務(wù)執(zhí)行后,程序會(huì)自動(dòng)返回?cái)帱c(diǎn)處。調(diào)用方式跳轉(zhuǎn)則不需要設(shè)置中斷服務(wù)入口地址,只需要查詢相關(guān)中斷申請(qǐng)標(biāo)志位,若有申請(qǐng)就發(fā)生跳轉(zhuǎn)。在執(zhí)行調(diào)用子程序中,系統(tǒng)會(huì)自動(dòng)對(duì)斷點(diǎn)進(jìn)行保護(hù),不需要設(shè)置入棧操作。返回時(shí),需要在調(diào)用子程序中設(shè)置跳轉(zhuǎn)指令,跳轉(zhuǎn)回?cái)帱c(diǎn).(本題較長,建議結(jié)合自己的觀點(diǎn)精簡答案。)6>。中斷服務(wù)程序入口地址:(如果擅長用中斷方式編程的童鞋必須記住,擅長調(diào)用方式編程就不重要了。)外部中斷00003H定時(shí)器/計(jì)數(shù)器T0中斷000BH外部中斷10013H定時(shí)器/計(jì)數(shù)器T1中斷001BH串行口中斷0023HA/D轉(zhuǎn)換中斷002BHLVD中斷0033HPCA中斷003BH串行口2中斷0043HSPI中斷004BH外部中斷20053H外部中斷3005BH定時(shí)器T2中斷0063H預(yù)留中斷006BH、0073H、007BH外部中斷40083H第八章定時(shí)器初始化工作:(要了解如何操作)對(duì)TMOD賦值,以確定T0和T1的工作方式。對(duì)AUXR賦值,確定定時(shí)脈沖的分頻系數(shù),默認(rèn)為12分頻,與傳統(tǒng)8051單片機(jī)兼容。計(jì)算初值,并將其寫入TH0、TL0或TH1、TL1。為中斷方式時(shí),則對(duì)IE賦值,開放中斷,必要時(shí),還需要對(duì)IP操作,確定各個(gè)中斷源的優(yōu)先級(jí)。置位TR0或TR1,啟動(dòng)T0和T1開始計(jì)時(shí)或者計(jì)數(shù)。T0、T1工作方式:(建議記?。㎝1M0工作方式功能00方式016位自動(dòng)重裝初值01方式116位不自動(dòng)重載初值10方式28位自動(dòng)重載初值11方式3兩個(gè)8位(僅限T0)第九章1〉。并行通信和串行通信的區(qū)別是什么?有哪些優(yōu)缺點(diǎn)?答:并行通信是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)同時(shí)進(jìn)行傳送.優(yōu)點(diǎn)是控制簡單,傳送速度快.缺點(diǎn)是由于傳輸線較多,長距離傳送成本較高,因此僅適用于短距離傳送。串行通信是將數(shù)據(jù)字節(jié)分為一位一位的形式在一條傳輸線上逐個(gè)地傳送。優(yōu)點(diǎn)是傳輸線少,長距離傳送成本很低.缺點(diǎn)是傳輸速度慢,因此適用于長距離傳輸。2〉.同步通信和異步通信的區(qū)別是什么?有哪些優(yōu)缺點(diǎn)?答:異步通信的數(shù)據(jù)通常是以字符(或字節(jié))為單位組成字符幀傳送的。優(yōu)點(diǎn)是不需要傳送同步時(shí)鐘,字符幀長度不受限制,故而設(shè)備簡單。缺點(diǎn)是字符幀中因?yàn)榘鹗嘉缓屯V刮欢档土擞行?shù)據(jù)的傳輸速率。同步通信是一種連續(xù)串行傳送數(shù)據(jù)的通信方式,一次通信傳輸一組數(shù)據(jù)(包含若干個(gè)字符數(shù)據(jù)).優(yōu)點(diǎn)是數(shù)據(jù)傳輸速率較高,通??蛇_(dá)56000bit/s或更高。缺點(diǎn)是要求發(fā)送時(shí)鐘和接收時(shí)鐘必須保持嚴(yán)格同步,硬件電路也很復(fù)雜。3〉.多機(jī)通信選擇第十章(要記住會(huì)運(yùn)用?。。?〉.選擇A/D模塊的重要的指標(biāo)是:轉(zhuǎn)換精度和轉(zhuǎn)換速度。2〉。A/D模塊編程過程:打開ADC電源(設(shè)置ADC_CONTR中的ADC_POWER)。適當(dāng)延時(shí),等ADC內(nèi)部模擬電源穩(wěn)定。一般延時(shí)1ms即可。設(shè)置P1口中的相應(yīng)口線作為AD轉(zhuǎn)換模擬量輸入通道(設(shè)置P1ASF寄存器)。選擇ADC通道(設(shè)置ADC_CONTR中的CHS2-CHS0).根據(jù)需要設(shè)置轉(zhuǎn)換結(jié)果存儲(chǔ)格式(設(shè)置CLK_DIV中的ADRJ)。查詢A/D轉(zhuǎn)換結(jié)果標(biāo)志ADC_FLAG,判斷A/D轉(zhuǎn)換是否完成,若完成,則讀出A/D轉(zhuǎn)換結(jié)果(保存在ADC_RES和ADC_RESL寄存器中),并進(jìn)行數(shù)據(jù)處理.如果是多通道模擬量進(jìn)行轉(zhuǎn)換,則更換A/D轉(zhuǎn)換通道后要適當(dāng)延時(shí),使輸入電壓穩(wěn)定,延時(shí)量取20—200μs即可(與輸入電壓源的內(nèi)阻有關(guān)),如果輸入電壓源的內(nèi)阻在10KΩ以下,可不加延時(shí).若采用中斷方式,還需要進(jìn)行中斷設(shè)置(中斷允許和中斷優(yōu)先級(jí))。在中斷服務(wù)程序中讀取A/D轉(zhuǎn)換結(jié)果,并將ADC中斷請(qǐng)求標(biāo)志ADC_FLAG清零。3>.A/D轉(zhuǎn)換速度:SPEED1SPEED0A/D轉(zhuǎn)換所需時(shí)間1190個(gè)時(shí)鐘周期轉(zhuǎn)換一次

,CPU工作頻率21MHz時(shí),

A/D轉(zhuǎn)換速度約300KHz,9位精度10180個(gè)時(shí)鐘周期轉(zhuǎn)換一次,可達(dá)到10位精度01360個(gè)時(shí)鐘周期轉(zhuǎn)換一次,可達(dá)到10位精度00540個(gè)時(shí)鐘周期轉(zhuǎn)換一次,可達(dá)到10位精度4>.A/D模擬通道選擇:CHS2CHS1CHS0模擬輸入通道選擇000選擇P1.0作為A/D輸入信號(hào)001選擇P1。1作為A/D輸入信號(hào)010選擇P1.2作為A/D輸入信號(hào)011選擇P1.3作為A/D輸入信號(hào)100選擇P1。4作為A/D輸入信號(hào)101選擇P1.5作為A/D輸入信號(hào)110選擇P1。6作為A/D輸入信號(hào)111選擇P1。7作為A/D輸入信號(hào)附加重點(diǎn):特殊功能寄存器(從上到下依次對(duì)應(yīng)寄存器的高位到低位)程序狀態(tài)標(biāo)志寄存器PSWCY:進(jìn)位標(biāo)志。執(zhí)行加減指令時(shí),如果操作結(jié)果的最高位D7進(jìn)/借位,則CY位置1。否則置0,執(zhí)行乘法指令時(shí),CY清0。AC:輔助進(jìn)位標(biāo)志.當(dāng)執(zhí)行加減指令時(shí),如果低四位數(shù)向高四位數(shù)產(chǎn)生進(jìn)/借位.則AC置1,否則置0。F0:用戶自定義。RS1RS0:工作寄存器組選擇控制位。OV:溢出標(biāo)志位,指示運(yùn)算過程中是否發(fā)生了溢出,有溢出時(shí),OV為1。否則為0。F1:用戶標(biāo)志位1P:奇偶標(biāo)志位,如果累加器ACC中的1的個(gè)數(shù)為偶數(shù),P=0,否則P=1。輔助寄存器AUXRT0x12:決定定時(shí)器T0是否12分頻.0:12分頻,定時(shí)周期為1μs。1:不分頻,定時(shí)周期為1T。T1x12:決定定時(shí)器T1是否12分頻。0:12分頻,定時(shí)周期為1μs。1:不分頻,定時(shí)周期為1T。UART_M0x6:串行口模式0狀態(tài)下的速度設(shè)置。TR2:定時(shí)/計(jì)數(shù)器T2運(yùn)行控制位。T2_C/EQ\*jc0\*"Font:宋體”\*hps14\o\ad(\s\up13(__),T):定時(shí)/計(jì)數(shù)器T2功能選擇位。T2x12:T2是否12分頻.EXTRAM:內(nèi)部擴(kuò)展RAM訪問控制位.S1ST2:串行口1波特率發(fā)生器選擇位。0:選擇T1為波特率發(fā)生器。1:選擇T2為波特率發(fā)生器。中斷允許控制器IE(0:關(guān)閉中斷;1:開放中斷)EA:中斷總開關(guān)。ELVD:低電壓中斷允許控制位。EADC:A/D轉(zhuǎn)換中斷允許位.ES:串行口中斷允許標(biāo)志。ET1:定時(shí)器T1中斷允許控制位。EX1:外部中斷1允許控制位.ET0:定時(shí)器T0中斷允許控制位。EX0:外部中斷0允許控制位。中斷優(yōu)先級(jí)控制寄存器IP(0:低優(yōu)先級(jí);1:高優(yōu)先級(jí))PPCA:PCA中斷優(yōu)先級(jí)。PLVD:低電壓中斷優(yōu)先級(jí)。PADC:A/D轉(zhuǎn)換中斷優(yōu)先級(jí)。PS:串行口中斷優(yōu)先級(jí).PT1:定時(shí)/計(jì)數(shù)器T1中斷優(yōu)先級(jí)。PX1:外部中斷1優(yōu)先級(jí)。PT0:定時(shí)/計(jì)數(shù)器T0中斷優(yōu)先級(jí)。PX0:外部中斷0優(yōu)先級(jí)。定時(shí)/計(jì)數(shù)器控制寄存器TCONTF1:T1溢出中斷請(qǐng)求標(biāo)志.TR1:T1的運(yùn)行控制位。0:T1停止運(yùn)行。1:T1啟動(dòng)運(yùn)行。TF0:T0溢出中斷請(qǐng)求標(biāo)志。TR0:T0的運(yùn)行控制位。0:T0停止運(yùn)行。1:T0啟動(dòng)運(yùn)行.IE1:外部中斷1的中斷請(qǐng)求標(biāo)志。IT1:外部中斷1的中斷觸發(fā)方式控制位。IE0:外部中斷0的中斷請(qǐng)求標(biāo)志。IT0:外部中斷0的中斷觸發(fā)控制位。工作方式寄存器TMODGATE:門控位。C/EQ\*jc0\*"Font:宋體"\*hps14\o\ad(\s\up13(__),T):功能選擇位。0:設(shè)定為定時(shí)器工作模式。1:設(shè)定為計(jì)數(shù)器工作模式。M1MO:選擇定時(shí)器/計(jì)數(shù)器工作模式。串口1控制寄存器SCONSM0/FE:為1時(shí),該位用于幀錯(cuò)誤檢測,它必須由軟件清零。為0時(shí),SM0/FE位和SM1一起指定串行通信的工作方式.SM1:多機(jī)通信控制位。SM2:多機(jī)通信控制位。REN:允許接收控制位.1:允許串行口接收數(shù)據(jù);0:禁止串行口接收數(shù)據(jù).TB8:在方式2和3時(shí),它是要發(fā)送的第9個(gè)數(shù)據(jù)位,按需要由軟件進(jìn)行置位或清零。該位可用作數(shù)據(jù)的奇偶校驗(yàn)位,或在多機(jī)通信中用作地址幀/數(shù)據(jù)幀的標(biāo)志位。RB8:在方式2和3時(shí),它是接收到的第9位數(shù)據(jù),為奇偶檢驗(yàn)位或地址幀/數(shù)據(jù)幀標(biāo)志位。在方式1時(shí),若SM2=0,則RB8是接收到的停止位。在方式0時(shí),不使用RB8。TI:發(fā)送中斷標(biāo)志位,必須用軟件清零。RI:接收中斷標(biāo)志位。掉電控制寄存器PCONSMOD:串行口波特率系數(shù)控制位。1:使方式1、方式2和方式3的波特率加倍。0:各工作方式的波特率不加倍。SMOD0:幀錯(cuò)誤檢測有效控制位.1:SCON寄存器中的SM0/FE位用于FE(幀錯(cuò)誤檢測)功能。0:SCON寄存器中的SM0/FE位用于SM0功能,和SM1一起指定串行通信的工作方式。LVDF:片內(nèi)低電壓檢測中斷請(qǐng)求標(biāo)志位.ADC控制寄存器ADC_CONTRADC_POWER:ADC電源控制位.SPEED1:ADC轉(zhuǎn)換速度控制位。SPEED0:ADC轉(zhuǎn)換速度控制位.ADC_FLAG:A/D轉(zhuǎn)換結(jié)束標(biāo)志位。ADC_START:A/D轉(zhuǎn)換起動(dòng)控制位。CHS2:模擬輸入通道選擇。CHS1:模擬輸入通道選擇.CHS0:模擬輸入通道選擇。模擬功能控制寄存器P1ASFP17ASFP16ASFP15ASFP14ASFP13ASFP12ASFP11ASFP10ASF功能:如果要使用相應(yīng)口的模擬功能,需將P1ASF特殊功能寄存器中的相應(yīng)位置為1。附加試卷一.填空題1.MCS-51的程序存儲(chǔ)器空間為程序Flash,其地址指針為0000H-EFFFH;MCS—51的外部數(shù)據(jù)存儲(chǔ)器空間為擴(kuò)展ROM,其地址指針為0000H-06FFH。(P20)2。指出以下指令中源操作數(shù)的尋址方式:MOVCA,@A+DPTR屬于變址尋址;MOVC,01H屬于直接尋址;MOVA,P1屬于寄存器尋址.3.中斷過程一般應(yīng)包括將相應(yīng)的優(yōu)先級(jí)狀態(tài)觸發(fā)器置1、硬件自動(dòng)產(chǎn)生一個(gè)長調(diào)用指令、把斷點(diǎn)地址壓入棧保護(hù)和把中斷程序服務(wù)入口地址送到程序計(jì)數(shù)器PC4個(gè)步驟。(P152)4.在單片機(jī)的控制應(yīng)用系統(tǒng)中,可供選擇的定時(shí)方式有軟件定時(shí)、硬件定時(shí)和可編程定時(shí)器定時(shí)3種。(P159)5.計(jì)算機(jī)的數(shù)據(jù)傳送方式有串行通信和并行通信兩種方式。(這個(gè)題目有點(diǎn)看不懂,答案我不敢肯定是正確的)6.8155是Intel公司生產(chǎn)的可編程RAM和I/O擴(kuò)展芯片,其片內(nèi)資源有:256字節(jié)的靜態(tài)RAM,最快存取時(shí)間為400ns;兩個(gè)可編程的8位并行I/O口PA口、PB口,一個(gè)可編程的6位并行I/O口PC口;一個(gè)可編程的14位減一計(jì)數(shù)器。(這個(gè)我們沒有學(xué)過)7.STC15系列單片機(jī)中是一種8通道10位高速電壓輸入型A/D轉(zhuǎn)換器。8.STC15系列單片機(jī)的5個(gè)中斷源、、T0、T1和串行口中斷所對(duì)應(yīng)的中斷服務(wù)程序入口地址分別是0003H、0013H、000BH、OO1BH和0023H。二.簡答題1.簡述單片機(jī)的特點(diǎn)。答:微型計(jì)算機(jī)的基本組成成分(CPU.儲(chǔ)存器,I/O接口以及連接他們的總線)集成在一塊芯片中而構(gòu)成的計(jì)算機(jī),簡稱為微型計(jì)算機(jī)。簡稱為計(jì)算機(jī)。由于單片機(jī)具有較高的性能價(jià)格比,良好的控制性能和靈活的嵌入特性,單片機(jī)的應(yīng)用極其廣泛。簡述機(jī)器周期、狀態(tài)周期及指令周期之間的區(qū)別。答:指令周期是CPU的關(guān)鍵指標(biāo),指取出一條并執(zhí)行一條指令的時(shí)間。一般由機(jī)器時(shí)間為周期,在計(jì)算機(jī)中,為了管理方便,常常把一條指令分為若干個(gè)階段,每一個(gè)階段完成一項(xiàng)工作。完成一個(gè)基本操作的時(shí)間稱之為機(jī)器周期。一般情況下一個(gè)機(jī)器周期是由若干個(gè)狀態(tài)周期組成的。3.簡述程序狀態(tài)字(PSW)的幾個(gè)標(biāo)志的意義及置位和復(fù)位的條件。答:程序狀態(tài)字的各個(gè)標(biāo)志位意義如下:CY:進(jìn)位標(biāo)志位。執(zhí)行加減指令時(shí),如果操作結(jié)果的最高位D7進(jìn)/借位,則CY位置1.否則置0,執(zhí)行乘法指令時(shí),CY清0。AC:輔助進(jìn)位標(biāo)志位,當(dāng)執(zhí)行加減指令時(shí),如果低四位數(shù)向高四位數(shù)產(chǎn)生進(jìn)/借位。則AC置1,否則置0。FO:用戶標(biāo)志0RS1RS0:工作寄存器組選擇控制位.OV:溢出標(biāo)志位,指示運(yùn)算過程中是否發(fā)生了溢出,有溢出時(shí),OV為1。否則為0。F1:用戶標(biāo)志位1P:奇偶標(biāo)志位,如果累加器ACC中的1的個(gè)數(shù)為偶數(shù),P=0,否則P=1。在STC15中,哪些中斷可以隨著中斷響應(yīng)而自動(dòng)撤除?哪些中斷需要用戶來撤除?撤除的方法是什么?答:對(duì)于定時(shí)器/計(jì)數(shù)器T0或T1溢出中斷,CPU在響應(yīng)中斷后,由硬件自動(dòng)清除其中斷標(biāo)志位TF0或TF1,無需采取其他方式。當(dāng)相應(yīng)中斷服務(wù)執(zhí)行后,這些中斷請(qǐng)求標(biāo)志位也會(huì)自動(dòng)清零。對(duì)于串行口中斷,CPU在響應(yīng)中斷后,硬件不會(huì)自動(dòng)清除標(biāo)志位TI或RI,必須在中斷服務(wù)程序中,在判別TI還是RI引起的中斷后,在用軟解將其清零.外部中斷0和外部中斷1的觸發(fā)方式可以由ITx(x=0,1)設(shè)置為0還是1,都屬于邊沿觸發(fā),CPU在響應(yīng)中斷后由硬件自動(dòng)清除其中的標(biāo)志位IE0或IE1,無需再用其他的方式.電源低電壓檢測中斷的中斷標(biāo)志位需要用軟件清零。三.程序分析題1.指出下列指令中哪些是非法的?如果非法請(qǐng)改正。DECDPTRRLBJNZA,NEXTMOVA,@R2答:非法指令是DECDPTR,改正:INCDPTR.四.綜合應(yīng)用題在STC15單片機(jī)中,請(qǐng)用定時(shí)器1,由p1.0輸出400ms的方波。要求:(1)寫出定時(shí)器1的方式控制字,計(jì)算定時(shí)器1的初值;(2)試編寫完成此功能的程序段。附錄:TMOD格式說明:位序D7D6D5D4D3D2D1D0位符GATEC/T1M1M0GATEC/T0M1M0GATE-—門控位GATE=0由運(yùn)行控制位TR啟動(dòng)定時(shí)器;GATE=1由外中斷請(qǐng)求信號(hào)(INT0或INT1)啟動(dòng)定時(shí)器;C/T——定時(shí)方式或計(jì)數(shù)方式選擇位C/T=0定時(shí)工作方式;C/T=1計(jì)數(shù)工作方式;M1M0—-工作方式選擇位00方式0-—為13位定時(shí)器/計(jì)數(shù)器;01方式1——為16位定時(shí)器/計(jì)數(shù)器;10方式2——為常數(shù)自動(dòng)裝入的8位定時(shí)器/計(jì)數(shù)器;11方式3-—(僅適用于T0)為兩個(gè)8位定時(shí)器/計(jì)數(shù)器,在方式3時(shí)T1停止計(jì)數(shù)。

答:設(shè)定定時(shí)器T1工作在方式0,定時(shí)時(shí)間為50ms,計(jì)數(shù)次數(shù)為4次。計(jì)數(shù)初值:65536—50000=15536=3CBOH查詢方式編程:ORG0100HMAIN:MOVTMOD,#00HMOVTH1,#3CHMOVTL1,#0B0HMOVR0,#04SETBTR1Check_TF1:JBCTF1,Timer1_OverflowSJMPCheck_TF1Timer1_Overflow:DJNZRO,Check_TF1MOVRO,#04CPLP1.0AJMPCheck_TF1END中斷方式編程:ORG0000HLJMPMAINORG001BHLJMPTimer1_ISRORG0100HMAIN:MOVTMOD,#00HMOVTH1,#3CHMOVTL1,#0B0HSETBEASETBET1SETBTR1SJMP$Timer1_ISR:DJNZR0,Timer1_ExitMOVR0,#04CPLP1。0Timer1_Exit:RETIEND基于C#與單片機(jī)串口通信的投票器李浩東20093101004周守悅20093101012作品的設(shè)計(jì)概述我們知道每年每個(gè)班都需要班委換屆,有很多同學(xué)積極參加競選,然而每一次競選投票都是大家拿出一張紙,然后再紙上寫上自己心目中班委的名字,然后交給監(jiān)票讀票記票,這個(gè)過程不僅大大浪費(fèi)了大家的寶貴時(shí)間,還有可能出現(xiàn)漏票等情況,體現(xiàn)不了公平公正公開。本設(shè)計(jì)是通過按鈕給班委競選人投票,每個(gè)候選人都對(duì)應(yīng)一個(gè)按鈕,投票人如果想投票給某個(gè)人可以按下其對(duì)應(yīng)按鈕,每按下一次改競選人的票數(shù)就會(huì)自動(dòng)增加1,每個(gè)人只能按下一次,電腦顯示屏將通過柱形圖動(dòng)態(tài)的呈現(xiàn)每個(gè)候選人獲得票數(shù)競爭的情況以及通過框圖顯示總票數(shù),不僅使得投票結(jié)果更加公開公正,而且也大大節(jié)省了大家的時(shí)間.本設(shè)計(jì)的創(chuàng)新點(diǎn)是通過柱形圖動(dòng)態(tài)顯示整個(gè)投票過程,而不是直接顯示到最后投票結(jié)果,更加體現(xiàn)公正公開。作品的設(shè)計(jì)與分析主要功能與分析主要使用單片機(jī)和PC機(jī)之間的串口通信,在單片機(jī)硬件上設(shè)置七個(gè)按鍵,其中四個(gè)鍵是用來給A,B,C,D四個(gè)人投票的,這四個(gè)按鍵每按下一次就自動(dòng)增1,記錄這四個(gè)按鍵按下的總次數(shù)num1,num2,num3,num4,并把四個(gè)數(shù)按順序不斷循環(huán)通過串口發(fā)給PC機(jī),PC機(jī)通過串口把這些數(shù)據(jù)存儲(chǔ)下來,并讀出來,通過C#編程,把這四個(gè)人所獲得的總票數(shù)在picturebox控件上面的柱形圖動(dòng)態(tài)呈現(xiàn)出來,通過time控件,不斷更新這個(gè)人所獲得的票數(shù),讓投票人通過柱形圖更加形象直觀的看出每個(gè)被投票人的競爭情況,同時(shí)在柱形圖下方有著這四個(gè)人獲得總票數(shù)的真實(shí)數(shù)目。還有一個(gè)按鍵是票數(shù)清零,如果這次投票已經(jīng)完成或者無效可以按下這個(gè)按鍵,此時(shí)A,B,C,D四個(gè)人的總票數(shù)將變成零。還有一個(gè)按鍵作用是停止投票,如果需要停止這次投票可以按下此鍵,這時(shí)候那四個(gè)投票的按鍵將不可用。最后一個(gè)按鍵的作用是繼續(xù)投票,如需繼續(xù)投票,可按此鍵。其系統(tǒng)設(shè)計(jì)圖如下:PC機(jī)PC機(jī)圖像顯示清零繼續(xù)暫停ABCD單片機(jī)圖像顯示清零繼續(xù)暫停ABCD單片機(jī)數(shù)據(jù)傳輸2.串口通信規(guī)則單片機(jī)與PC機(jī)為了可以進(jìn)行通信,必須要遵守一定的通信規(guī)則,這個(gè)共同的規(guī)則就是通信端口的初始化。通信端口的初始化有以下幾項(xiàng)必須設(shè)置:(1)數(shù)據(jù)的傳輸速率傳輸雙方通過傳輸線的電壓改變來交換數(shù)據(jù),但傳輸線的電壓改變的速度必須和接收端的接收速度保持一致,RS—232通常用于異步傳輸,即雙方并沒有一個(gè)可參考的同步時(shí)鐘作為基準(zhǔn)。由于沒有一個(gè)參考時(shí)鐘,雙方所發(fā)送的高低電位到底代表幾個(gè)位就不得而知了,要使得雙方的數(shù)據(jù)讀取正常,就要考慮到傳輸速率——波特率,其所代表的意義是每秒鐘所能產(chǎn)生的最大電壓狀態(tài)改變率,或者說是每秒鐘可以振蕩的次數(shù).原始信號(hào)經(jīng)過不同的波特率取樣后,所得的結(jié)果完全不一樣。取樣速度只有原來的一半時(shí),信號(hào)被跳著取樣,數(shù)據(jù)因此產(chǎn)生錯(cuò)誤。因此通信雙方獲得相同的通信速度是首先要做的事情.(2)數(shù)據(jù)的發(fā)送單位一般串行通信端口所發(fā)送的數(shù)據(jù)是字符類型的,若用來傳輸文件,則會(huì)使用二進(jìn)制的數(shù)據(jù)類型。當(dāng)使用字符類型時(shí),通常使用ASCII碼,ASCII碼中8個(gè)位形成一個(gè)字符.以實(shí)際的RS-232傳輸來看,由于大多數(shù)應(yīng)用只是發(fā)送文字碼,因此只要7個(gè)位就可以將ASCII碼的0-127號(hào)字符表達(dá)出來,所有的可見字符都在這個(gè)范圍內(nèi),所以只要7個(gè)數(shù)據(jù)位就足夠了.不同的情況下,會(huì)使用到不同的發(fā)送單位,但使用多少個(gè)位合成一個(gè)字節(jié)必須先行確定.(3)起始位及停止位由于異步串行通信中并沒有使用同步脈沖作為基準(zhǔn),故接收端完全不知道發(fā)送端何時(shí)將進(jìn)行數(shù)據(jù)的發(fā)送,而當(dāng)發(fā)送端準(zhǔn)備要開始發(fā)送數(shù)據(jù)時(shí),發(fā)送端會(huì)在所送出的字符前后分別加上高電位的起始位(邏輯0)及低電位的停止位(邏輯1),它們分別是所謂的起始位和停止位。當(dāng)發(fā)送端要開始發(fā)送數(shù)據(jù)時(shí),便將傳輸在線的電位由低電位提升至高電位,而當(dāng)發(fā)送結(jié)束后,再將電位降至低電位.接收端會(huì)因起始位的觸發(fā)(因電壓由低電位升至高電位)而開始接收數(shù)據(jù),并因停止位的通知(因電壓維持在低電位)而確切數(shù)據(jù)的字符信號(hào)已經(jīng)結(jié)束。(4)校驗(yàn)位的檢查為了預(yù)防錯(cuò)誤的產(chǎn)生,因此使用校驗(yàn)位作為檢查的機(jī)制;校驗(yàn)位是用來檢查所發(fā)送數(shù)據(jù)正確性的一種核對(duì)碼,其中又分成奇校驗(yàn)位和偶校驗(yàn)位兩種方式,分別是檢查字符碼中I的數(shù)目是奇數(shù)或偶數(shù)。以偶校驗(yàn)位為例,A的ASCII碼01100001(二進(jìn)制),其中1的數(shù)目是三個(gè),因此校驗(yàn)位便是1,使1的數(shù)目保持偶數(shù)。同理,校驗(yàn)位是奇校驗(yàn)位時(shí),A的校驗(yàn)位便是0,使1的數(shù)目保持奇數(shù)。串口通信協(xié)議由于本設(shè)計(jì)主要從單片機(jī)串口發(fā)送數(shù)據(jù),所以因此有關(guān)串口通信的原理的介紹都是圍繞單片機(jī)講解的。80C51串行口的控制寄存器(1.1)特殊功能寄存器SCONSCON是一個(gè)特殊功能寄存器,用以設(shè)定串行口的工作方式、接收/發(fā)送控制以及設(shè)置狀態(tài)標(biāo)志,字節(jié)地址為98H.SCON寄存器的各位定義如表3-1所示。位76543210字節(jié)地址:98HSM0SM1SM2RENTB8RB8TIRISCON表3—1SCON寄存器SM0和SM1為工作方式選擇位,可選擇四種工作方式,如表3—2所示.SM0SM1方式說明波特率000移位寄存器fosc/1201110位異步收發(fā)器(8位數(shù)據(jù))可變10211位異步收發(fā)器(9位數(shù)據(jù))fosc/64或fosc/3211311位異步收發(fā)器(9位數(shù)據(jù))可變表3-2串口通信4種工作方式SM2為多機(jī)通信控制位,主要用于方式2和方式3。當(dāng)接收機(jī)的SM2=1時(shí)可以利用收到的RB8來控制是否激活RI(RB8=0時(shí)不激活RI,收到的信息丟棄;RB8=1時(shí)收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,進(jìn)而在中斷服務(wù)中將數(shù)據(jù)從SBUF讀走)。當(dāng)SM2=0時(shí),不論收到的RB8為0和1,均可以使收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI(即此時(shí)RB8不具有控制RI激活的功能)。通過控制SM2,可以實(shí)現(xiàn)多機(jī)通信。在方式0時(shí),SM2必須是0.在方式1時(shí),若SM2=1,則只有接收到有效停止位時(shí),RI才置1。REN為允許串行接收位。由軟件置REN=1,則啟動(dòng)串行口接收數(shù)據(jù);若軟件置REN=0,則禁止接收。TB8用在方式2或方式3中,是發(fā)送數(shù)據(jù)的第九位,可以用軟件規(guī)定其作用??梢杂米鲾?shù)據(jù)的奇偶校驗(yàn)位,或在多機(jī)通信中,作為地址幀/數(shù)據(jù)幀的標(biāo)志位(在方式0和方式1中,該位未用).RB8用在方式2或方式3中,是接收到數(shù)據(jù)的第九位,作為奇偶校驗(yàn)位或地址幀/數(shù)據(jù)幀的標(biāo)志位。在方式1時(shí),若SM2=0,則RB8是接收到的停止位。TI,發(fā)送中斷標(biāo)志位.在方式0時(shí),當(dāng)串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行發(fā)送停止位的開始時(shí),由內(nèi)部硬件使TI置1,向CPU發(fā)中斷申請(qǐng)。在中斷服務(wù)程序中,必須用軟件將其清0,取消此中斷申請(qǐng)。RI,接收中斷標(biāo)志位。在方式0時(shí),當(dāng)串行接收第8位數(shù)據(jù)結(jié)束時(shí),或在其它方式,串行接收停止位的中間時(shí),由內(nèi)部硬件使RI置1,向CPU發(fā)中斷申請(qǐng)。也必須在中斷服務(wù)程序中,用軟件將其清0,取消此中斷申請(qǐng)[7]。(1.2)特殊功能寄存器PCONPCON的字節(jié)地址為87H,它的第7位SMOD是與串口通信波特率的設(shè)置有關(guān)的選擇位。SMOD(PCON.7)為波特率倍增位。在串行口方式1、方式2、方式3時(shí),波特率與SMOD有關(guān),當(dāng)SMOD=1時(shí),波特率提高一倍.復(fù)位時(shí),SMOD=0。(2)80C51單片機(jī)串行口的工作方式(2.1)方式0設(shè)置SCON寄存器的SM0、SM1=00時(shí),串行口工作于方式0。此時(shí),串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。其中fosc為時(shí)鐘頻率.(2.2)方式1設(shè)置SCON寄存器的SM0、SM1=01時(shí),串行口工作于方式1.方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,傳送一幀數(shù)據(jù)的格式如圖所示。其中1位起始位,8位數(shù)據(jù)位,1位停止位。用軟件置REN為1時(shí),接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的停止位為1)時(shí),將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請(qǐng)求中斷.方式一的輸入輸出圖如圖3—8、3—9所示。圖3-8方式1輸入圖3-9方式1輸出(2.3)方式2和方式3設(shè)置SCON寄存器的SM0、SM1=10時(shí),串行口工作于方式2,當(dāng)SM0、SM1=11時(shí),串行口工作于方式3。方式2或方式3為11位數(shù)據(jù)的異步通信口.TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳。方式2和方式3時(shí)起始位1位,數(shù)據(jù)9位(含1位附加的第9位,發(fā)送時(shí)為SCON中的TB8,接收時(shí)為RB8),停止位1位,一幀數(shù)據(jù)為11位.方式2的波特率固定為晶振頻率的1/64或1/32,方式3的波特率由定時(shí)器T1的溢出率決定。方式2和方式3輸出:發(fā)送開始時(shí),先把起始位0輸出到TXD引腳,然后發(fā)送移位寄存器的輸出位(D0)到TXD引腳。每一個(gè)移位脈沖都使輸出移位寄存器的各位右移一位,并由TXD引腳輸出.第一次移位時(shí),停止位“1”移入輸出移位寄存器的第9位上,以后每次移位,左邊都移入0.當(dāng)停止位移至輸出位時(shí),左邊其余位全為0,檢測電路檢測到這一條件時(shí),使控制電路進(jìn)行最后一次移位,并置TI=1,向CPU請(qǐng)求中斷。發(fā)送時(shí)序圖如下圖3—10所示。圖3-10方式2或方式3的發(fā)送時(shí)序圖方式2和方式3輸入:接收時(shí),數(shù)據(jù)從右邊移入輸入移位寄存器,在起始位0移到最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng)RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時(shí),接收到的數(shù)據(jù)裝入接收緩沖器SBUF和RB8(接收數(shù)據(jù)的第9位),置RI=1,向CPU請(qǐng)求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,繼續(xù)搜索RXD引腳的負(fù)跳變。接收時(shí)序圖如圖3-11所示。圖3--11方式2或方式3的接收時(shí)序圖(3)波特率的計(jì)算在串行通信中,收發(fā)雙方對(duì)發(fā)送或接收數(shù)據(jù)的速率要有約定。通過軟件可對(duì)單片機(jī)串行口編程為四種工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率來決定.串行口的四種工作方式對(duì)應(yīng)三種波特率.由于輸入的移位時(shí)鐘的來源不同,所以,各種方式的波特率計(jì)算公式也不相同。方式0的波特率=fosc/12方式2的波特率=(2SMOD/64)·fosc方式1的波特率=(2SMOD/32)·(T1溢出率)方式3的波特率=(2SMOD/32)·(T1溢出率)當(dāng)T1作為波特率發(fā)生器時(shí),最典型的用法是使T1工作在自動(dòng)再裝入的8位定時(shí)器方式(即方式2,且TCON的TR1=1,以啟動(dòng)定時(shí)器)。這時(shí)溢出率取決于TH1中的計(jì)數(shù)值。計(jì)算公式如3—1所示:T1溢出率=fosc/{12×[256-(TH1)]}(3-1)在單片機(jī)的應(yīng)用中,常用的晶振頻率為:12MHz和11.0592MHz。所以,選用的波特率也相對(duì)固定。本設(shè)計(jì)根據(jù)要求選用工作方式1。4。單片機(jī)的設(shè)計(jì)硬件設(shè)計(jì)主要有單片機(jī),七個(gè)按鍵,開關(guān),以及一個(gè)與PC機(jī)相連接的USB串口,其硬件圖像如下圖:軟件部分開始其單片機(jī)C語言程序框圖如下:開始繼續(xù)不發(fā)數(shù)據(jù)暫停結(jié)束發(fā)送數(shù)據(jù)Num1,num2,num3,nun4全為零清零Num1++Num4++Num3++Num2++C?A?D?B?判斷是否有按鍵按下初始化(串口設(shè)置)繼續(xù)不發(fā)數(shù)據(jù)暫停結(jié)束發(fā)送數(shù)據(jù)Num1,num2,num3,nun4全為零清零Num1++Num4++Num3++Num2++C?A?D?B?判斷是否有按鍵按下初始化(串口設(shè)置)5.C#的程序設(shè)計(jì)串口通信的串行端口類SerialPort(1.1)SerialPort的主要屬性屬性說明BaudRate獲取或設(shè)置串行波特率。BytesToRead獲取接收緩沖區(qū)中數(shù)據(jù)的字節(jié)數(shù)。BytesToWrite獲取發(fā)送緩沖區(qū)中數(shù)據(jù)的字節(jié)數(shù)。DataBits獲取或設(shè)置每個(gè)字節(jié)的標(biāo)準(zhǔn)數(shù)據(jù)位長度.Encoding獲取或設(shè)置傳輸前后文本轉(zhuǎn)換的字節(jié)編碼。IsOpen獲取一個(gè)值,該值指示SerialPort對(duì)象的打開或關(guān)閉狀態(tài).NewLine獲取或設(shè)置用于解釋ReadLine和WriteLine方法調(diào)用結(jié)束的值。Parity獲取或設(shè)置奇偶校驗(yàn)檢查協(xié)議。PortName獲取或設(shè)置通信端口,包括但不限于所有可用的COM端口。ReadBufferSize獲取或設(shè)置SerialPort輸入緩沖區(qū)的大小。ReadTimeout獲取或設(shè)置讀取操作未完成時(shí)發(fā)生超時(shí)之前的毫秒數(shù)。ReceivedBytesThreshold獲取或設(shè)置DataReceived事件發(fā)生前內(nèi)部輸入緩沖區(qū)中的字節(jié)數(shù)。Site獲取或設(shè)置Component的ISite。(從Component繼承。)StopBits獲取或設(shè)置每個(gè)字節(jié)的標(biāo)準(zhǔn)停止位數(shù)。WriteBufferSize獲取或設(shè)置串行端口輸出緩沖區(qū)的大小。WriteTimeout獲取或設(shè)置寫入操作未完成時(shí)發(fā)生超時(shí)之前的毫秒數(shù).(1.2)SerialPort的主要方法方法說明Close關(guān)閉端口連接,將IsOpen屬性設(shè)置為false,并釋放內(nèi)部Stream對(duì)象.Dispose已重載。釋放SerialPort對(duì)象使用的非托管資源.Equals已重載。確定兩個(gè)Object實(shí)例是否相等。(從Object繼承。)GetPortNames獲取當(dāng)前計(jì)算機(jī)的串行端口名稱數(shù)組。Open打開一個(gè)新的串行端口連接.Read已重載。從SerialPort輸入緩沖區(qū)中讀取。ReadByte從SerialPort輸入緩沖區(qū)中同步讀取一個(gè)字節(jié)。ReadChar從SerialPort輸入緩沖區(qū)中同步讀取一個(gè)字符。ReadExisting在編碼的基礎(chǔ)上,讀取SerialPort對(duì)象的流和輸入緩沖區(qū)中所有立即可用的字節(jié).ReadLine一直讀取到輸入緩沖區(qū)中的NewLine值。ReadTo一直讀取到輸入緩沖區(qū)中的指定value的字符串.ToString返回包含Component的名稱的String(如果有)。不應(yīng)重寫此方法。(從Component繼承.)Write已重載。將數(shù)據(jù)寫入串行端口輸出緩沖區(qū)。WriteLine將指定的字符串和NewLine值寫入輸出緩沖區(qū)。(1.3)SerialPort的主要事件事件說明DataReceived表示將處理SerialPort對(duì)象的數(shù)據(jù)接收事件的方法。ErrorReceived表示處理SerialPort對(duì)象的錯(cuò)誤事件的方法.C#界面串口設(shè)計(jì)開始C#程序框圖開始串口初始化串口初始化不接收數(shù)據(jù)串口打開?顯示圖像Time事件觸發(fā)接收數(shù)據(jù)不接收數(shù)據(jù)串口打開?顯示圖像Time事件觸發(fā)接收數(shù)據(jù)三.功能顯示以及結(jié)果(圖1)投票結(jié)果顯示(圖2)投票結(jié)果動(dòng)態(tài)顯示四.結(jié)論本設(shè)計(jì)利用了單片機(jī)串口通信編程和C#串口通信編程,讓單片機(jī)和PC機(jī)實(shí)現(xiàn)了通信。雖然是比較簡單的C#與單片機(jī)之間的串口通信,但是也大大加深了自己對(duì)課堂知識(shí)的理解,同時(shí)大大提高了自己的動(dòng)手設(shè)計(jì)能力。這次設(shè)計(jì)也讓我充分認(rèn)識(shí)到C#強(qiáng)大的功能,但也讓我看到很多不足,界面完善不夠好,程序編寫較為簡單,還沒用到數(shù)據(jù)庫等功能,這也大大的激發(fā)了我對(duì)C#興趣。最后,非常感謝唐老師,他讓復(fù)雜枯燥的C#變得生動(dòng)有趣,上他的課非常有意思,大大提高了我對(duì)C#的興趣,同時(shí)的加強(qiáng)了我的設(shè)計(jì)技能.參考文獻(xiàn)張明鋒.PIC單片機(jī)入門與實(shí)踐[M]。北京:北京航空航天大學(xué)出版社,2004.黃亮.基于AT89C51單片機(jī)的串行通信程序設(shè)計(jì)[J].中國地質(zhì)大學(xué),單片機(jī)實(shí)用電子制作P29—32.金華.C#網(wǎng)絡(luò)編程技術(shù)教程[M].人民郵電出版社附件C#程序:usingSystem;usingSystem。Collections。Generic;usingSystem。ComponentModel;usingSystem。Data;usingSystem。Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem。Drawing.Drawing2D;usingSystem。IO;usingSystem。IO.Ports;namespacetoupiao{publicpartialclassForm1:Form{//定義委托類型publicdelegatevoidmydelegate();inti=0;inta,b,c,d;stringn1,n2,n3,n4,num;//byte[]n=newbyte[4];//=byte[]rc=newbyte[4];publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){if(?。髉.IsOpen){//設(shè)置串口sp.PortName=textBox1.Text;//指定要使用的串口號(hào)sp.BaudRate=9600;//設(shè)定波特率sp。Parity=System。IO.Ports.Parity。None;//設(shè)定奇偶驗(yàn)證協(xié)議sp.DataBits=8;//設(shè)定字長sp.StopBits=System.IO.Ports。StopBits。One;//設(shè)定停止位sp.DtrEnable=true;//數(shù)據(jù)終端準(zhǔn)備就緒sp。RtsEnable=true;//啟用請(qǐng)求發(fā)送sp.ReadTimeout=1000;//設(shè)置數(shù)據(jù)讀取超時(shí)為1秒try{sp.Open();button1.Text="關(guān)閉串口";}cat(yī)ch(Exceptionex){MessageBox.Show(ex.Message);}}else{sp.Close();button1.Text="打開串口”;}}privatevoidtuxiang(stringnum1,stringnum2,stringnum3,stringnum4){try{a=Convert。ToInt32(num1);b=Convert.ToInt32(num2);c=Convert。ToInt32(num3);d=Convert.ToInt32(num4);}catch{}intsum=a+b+c+d;floata1=Convert.ToSingle(Convert。ToSingle(a)*100/Convert。ToSingle(sum));floatb1=Convert.ToSingle(Convert。ToSingle(b)*100/Convert.ToSingle(sum));floatc1=Convert.ToSingle(Convert.ToSingle(c)*100/Convert。ToSingle(sum));floatd1=Convert.ToSingle(Convert.ToSingle(d)*100/Convert.ToSingle(sum));intwidth=300,height=300;Bitmapmap=newBitmap(width,height);Graphicsg=Graphics.FromImage(map);try{g。Clear(Color.White);Brushbrush1=newSolidBrush(Color.White);Brushbrush2=newSolidBrush(Color.Black);Brushbrush3=newSolidBrush(Color。Red);Brushbrush4=newSolidBrush(Color.Green);Brushbrush5=newSolidBrush(Color.Orange);Brushbrush6=newSolidBrush(Color.DarkBlue);Fontfont1=newFont(”CourierNew",16,F(xiàn)ontStyle.Bold);Fontfont2=newFont(”CourierNew",8);g。FillRectangle(brush1,0,0,width,height);g.DrawString("投票結(jié)果”,font1,brush2,newPoint(90,20));Pointp1=newPoint(70,50);Pointp2=newPoint(230,50);g.DrawLine(newPen(Color。Black),p1,p2);g.DrawString("A:",font2,brush2,newPoint(30,80));g.DrawString(”B:",font2,brush2,newPoint(30,110));g。DrawString(”C:",font2,brush2,newPoint(30,140));g。DrawString("D:”,font2,brush2,newPoint(30,170));g。FillRectangle(brush3,95,80,a1,17);g.FillRectangle(brush4,95,110,b1,17);g.FillRectangle(brush5,95,140,c1,17);g.FillRectangle(brush6,95,170,d1,17);g.DrawRectangle(newPen(Color.Gree(cuò)n),10,210,280,80);g.DrawString("A:"+a。ToString()+"票",font2,brush2,newPoint(15,220));g.DrawString(”B:"+b.ToString()+”票”,font2,brush2,newPoint(150,220));g。DrawString(”C:”+c。ToString()+"票”,font2,brush2,newPoint(15,260));g。DrawString("D:”+d.ToString()+"票",font2,brush2,newPoint(150,260));pictureBox1.Image=map;}catch(Exceptionex){MessageBox。Show(ex。Message);}}privatevoidsp_DataReceived(objectsender,SerialDataReceivedEventArgse){//調(diào)用異步委托處理數(shù)據(jù)讀取及顯示的任務(wù)this.BeginInvoke(newmydelegat(yī)e(readsp));}voidreadsp(){intcd=sp。BytesToRead;byte[]n=newbyte[cd];sp。Read(n,0,cd);num=Encoding。UTF8。GetString(n);i++;if(i〉4){i=1;}switch(i){case1:n1=num;break;case2:n2=num;break;case3:n3=num;break;case4:n4=num;break;}}privatevoidtimer1_Tick(objectsender,EventArgse){tuxiang(n1,n2,n3,n4);}}}單片機(jī)程序:#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharnum1,num2,num3,num4,temp,t;ucharnum[4];uinti;voidSendByte(ucharsc);voidinit();ucharkeyscan();voiddelay(ucharc){uchara,b;for(a=0;a<c;a++){for(b=0;b〈110;b++);}}voidinit(){i=0;SCON=0x40;TMOD=0x20;TH1=0xfd;TL1=0xfd;ES=1;TR1=1;EA=1;TI=0;}voidmain(){init();while(1){keyscan();t=num[i];SendByte(t);i++;if(i>3)i=0;}}voidSendByte(ucharsc){SBUF=sc;while(!TI);TI=0;delay(200);}ucharkeyscan(){P2=0xfe;temp=P2;temp=temp&0xf0;while(temp?。?xf0){delay(10);temp=P2;temp=temp&0xf0;while(temp!=0xf0){temp=P3;switch(temp){case0xee(cuò):num1++;break;case0xde:num2++;break;case0xbe:num3++;break;case0x7e:num4++;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}}P3=0xfd;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(10);temp=P2;temp=temp&0xf0;while(temp!=0xf0){temp=P2;switch(temp){case0xed:num1=0;num2=0;num3=0;num4=0;break;case0xdd:EA=0;break;case0xbd:EA=1;break;}while(temp!=0xf0){temp=P2;temp=temp&0xf0;}}}num[0]=num1;num[1]=num2;num[2]=num3;num[3]=num4;returnnum;}基于單片機(jī)的聲光控制模擬路燈(程序部分)前言:單片機(jī)是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU、隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)數(shù)器等功能集成到一塊硅片上構(gòu)成的一個(gè)小而完善的微型計(jì)算機(jī)系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。本次我們采用at89c51單片機(jī)設(shè)計(jì)一種基于單片機(jī)控制的聲光控制模擬路燈。該燈有聲控,光控,聲光同時(shí)控制樓道燈三種模式,經(jīng)過調(diào)查,現(xiàn)在絕大多數(shù)小區(qū)的樓道燈都是純電路形式實(shí)現(xiàn)聲光控制的,這較之智能控制缺乏功能多樣性,穩(wěn)定性,而未來肯定是智能化的天下,所以我們用單片機(jī)模擬這一個(gè)多功能燈的系統(tǒng)。關(guān)鍵字:單片機(jī),at(yī)89c51,智能社區(qū),樓道燈目錄:TOC\o"1—3"\h\z\uHYPERLINK\l"_Toc388218071”一、設(shè)計(jì)目的PAGEREF_Toc388218071\h2HYPERLINK\l"_Toc388218072"二、總體設(shè)計(jì)PAGEREF_Toc388218072\h2方案選擇:PAGEREF_Toc388218073\h2三、硬件設(shè)計(jì)PAGEREF_Toc388218074\h3HYPERLINK\l"_Toc388218075"原理說明:PAGEREF_Toc388218075\h3四、軟件設(shè)計(jì)PAGEREF_Toc388218076\h3HYPERLINK\l"_Toc388218077”主要程序清單:PAGEREF_Toc388218077\h3HYPERLINK\l”_Toc388218078”程序框圖:PAGEREF_Toc388218078\h5五、實(shí)驗(yàn)結(jié)果PAGEREF_Toc388218079\h6六、總結(jié)PAGEREF_Toc388218080\h6設(shè)計(jì)目的通過此次設(shè)計(jì),主要是為了鞏固我們的單片機(jī)相關(guān)知識(shí)及對(duì)單片機(jī)的相關(guān)應(yīng)用,培養(yǎng)電子系統(tǒng)設(shè)計(jì)與實(shí)踐的能力,學(xué)會(huì)設(shè)計(jì)使用簡易的聲、光傳感器,并能用這些傳感器設(shè)計(jì)一個(gè)聲光控制的路燈(樓道燈)。完成功能:1)、聲控?zé)裟J?當(dāng)傳感器接收到聲音信號(hào)時(shí),單片機(jī)控制燈亮,并在5秒后燈自動(dòng)熄滅.2)、光控等模式.當(dāng)光電傳感器接收到為暗光時(shí),燈自動(dòng)點(diǎn)亮,接收到為亮光時(shí),等自動(dòng)熄滅。3)、樓道燈模式。聲光控制結(jié)合,即模擬當(dāng)天暗并且樓道里有人走過的時(shí)候燈自動(dòng)點(diǎn)亮5秒后熄滅??傮w設(shè)計(jì)此次設(shè)計(jì)的聲光控制燈包括三個(gè)基本模塊,即聲音處理模塊、光處理模塊、單片機(jī)小系統(tǒng).總體設(shè)計(jì)框圖如下:圖1、總體設(shè)計(jì)框圖方案選擇:1)、單片機(jī)部分.由于此次設(shè)計(jì)對(duì)單片機(jī)的要求較低,所以我們選擇最為常用的at89c51單片機(jī)作控制部分.2)、聲控部分一:選擇專用的聲音傳感器模塊來完成,能得到正確的波形、電壓、頻率等參數(shù),且設(shè)計(jì)電路簡單省事,但成本較高。二:用駐極體話筒通過相應(yīng)的信號(hào)處理電路對(duì)聲音信號(hào)進(jìn)行處理,成本較低,但電路設(shè)計(jì)麻煩。綜上所述:我們選擇方案二,因?yàn)榇舜卧O(shè)計(jì)對(duì)聲音信號(hào)的波形等參數(shù)要求較小,只要單片機(jī)接收到并能判斷為高電平即可。3)、光控部分一:用光敏二極管作光電元件,光敏二極管對(duì)光轉(zhuǎn)換為相應(yīng)的電流.二:用光敏電阻作光電元件,光敏電阻對(duì)光轉(zhuǎn)換為相應(yīng)的電阻.綜上所述:我們選用光敏電阻作光控部分的核心元件,因?yàn)楣饷舳O管轉(zhuǎn)換成的是電流,而我們需要判斷的是電壓信號(hào),將電流轉(zhuǎn)換為電壓信號(hào)的電路較復(fù)雜。硬件設(shè)計(jì)總電路圖如下所示:圖2、總電路圖原理說明:1)、聲控部分。聲控主要是用一個(gè)駐極體話筒用于接收聲音信號(hào),然后經(jīng)過一級(jí)放大將聲音信號(hào)放大,然后再通過帶通濾波器提取我們需要的頻率的聲音,最后經(jīng)過過零比較器將信號(hào)整流成方波信號(hào)用于單片機(jī)接收判斷高低電平。2)、光控部分.光控主要是用光敏電阻作同向放大器的反饋電阻來控制放大器的放大倍數(shù)來控制其輸出電壓,當(dāng)光亮?xí)r,光敏電阻阻值較小,放大倍數(shù)小,輸出電壓小,三極管截止,集電極連單片機(jī)腳為高電平,燈滅;當(dāng)光暗時(shí),光敏電阻阻值較大,放大倍數(shù)大,輸出電壓大,三極管導(dǎo)通,集電極連單片機(jī)腳為低電平,燈亮。軟件設(shè)計(jì)軟件設(shè)計(jì)主要是通過判斷聲控部分,光控部分與單片機(jī)I/O口相連的電平的高低來判斷并執(zhí)行燈的亮滅過程。一下是程序清單和程序框圖:主要程序清單:voidmain(void){ TMOD=0x11;//定時(shí)器工作于方式1 TH0=(65536-50000)/256;//定時(shí)器50mS初值?TL0=(65536-50000)%256;ET0=1;???EX0=1;//開外部INTO中斷(時(shí)間調(diào)整)?IT0=0; //INT0負(fù)跳變觸發(fā)?EA=1;//CPU開中斷總允許 TR0=0;//啟動(dòng)定時(shí) led=0;sound=0;light=1; while(1) {??if(key==0) {???delay(30);? ?if(key==0) ??{??? way++;? if(way>2) ?way=0;? ?}??}? switch(way)??{?? case0: //聲控?zé)裟J? P1=seg[1]; ???if(sound==1)????{ ? ? led=1;TR0=1; } ??if(t>100) ? ?{? led=0;TR0=0;? t=0; }????break;? case1:?//光控路燈模式 ? P1=seg[2]; ??if(light==0) ?? ?led=1; ???else?? ?led=0;????break;???case2:?//聲光控制樓道燈模式?? ?P1=seg[3]; ? ?if(light==0&&sound==1) ? ?{ ??led=1;TR0=1;??? }? ? if(t〉100)?? {? led=0;TR0=0; ??? t=0; ???}?? ?break; } ?}}voidtime0(void)interrupt1 //定義T0中斷,計(jì)時(shí){ ?TH0=(65536—50000)/256;?//T0賦初值 TL0=(65536-50000)%256; t++;????}程序框圖:1)、總體框圖 2)、聲控模式 ? ?3)、光控模式 4)、聲光控制模式實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)結(jié)果如下各圖所示:總結(jié)通過此實(shí)驗(yàn),我們了解了基于單片機(jī)的聲光控制燈的原理及制作,學(xué)會(huì)了相關(guān)聲光傳感器的使用?;诖苏n題的拓展,我們可以加上液晶屏實(shí)現(xiàn)一個(gè)人機(jī)的交互,在光控上可以加一個(gè)adc轉(zhuǎn)換器接收光控電路的電壓值,經(jīng)單片機(jī)判斷電壓值來控制燈的亮度,實(shí)現(xiàn)一個(gè)基于不同光照自動(dòng)調(diào)節(jié)燈光亮度的燈,可以達(dá)到節(jié)能的目的.1引言虛擬醫(yī)學(xué)儀器充分利用計(jì)算機(jī)豐富的軟硬件資源,僅增設(shè)少量專用軟、硬件模塊,便可實(shí)現(xiàn)傳統(tǒng)儀器的全部功能及一些傳統(tǒng)儀器無法實(shí)現(xiàn)的功能,同時(shí)縮短了研發(fā)周期。本系統(tǒng)由兩部分組成:以C8051F320單片機(jī)為核心的數(shù)據(jù)采集裝置和以PC機(jī)為平臺(tái)的分析處理系統(tǒng)。設(shè)計(jì)中充分考慮數(shù)據(jù)采集裝置體積小、功耗低、操作快捷的要求,因此全部采用SMT封裝的元器件。PC監(jiān)護(hù)終端通過USB接口接收數(shù)據(jù),傳輸速率高;采用圖形編程語言LabVIEW

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論