




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、【首頁(yè)】課程名稱趣味電子產(chǎn)品設(shè)計(jì)與制作授課專業(yè)班級(jí)課程編號(hào)課程類型必修課校級(jí)公共課();基礎(chǔ)或?qū)I(yè)基礎(chǔ)課();實(shí)驗(yàn)課()選修課限選課();任選課(,)授課方式課堂講授(,);實(shí)踐課 (V)考核方式考試();考查(,)課程教學(xué) 總學(xué)時(shí)數(shù)32學(xué)分?jǐn)?shù)2學(xué)時(shí)分配課堂講授16學(xué)時(shí); 實(shí)踐課 16學(xué)時(shí)教材名稱單片機(jī)的C語(yǔ)言應(yīng)用程 序設(shè)計(jì)(第4版)作者馬忠梅 等出版社及 出版時(shí)間北京航空 航天出版 社2007指aE參力書基于 Proteus的8051單 片機(jī)實(shí)例教程單片機(jī)C程序設(shè)計(jì)及應(yīng) 用實(shí)例基于C語(yǔ)言編程 MCS-51單片機(jī)原理與應(yīng) 用Protel99高級(jí)應(yīng)用作者李學(xué)胡偉張培仁趙晶出版社及 出版時(shí)間電子工
2、業(yè) 出版社人民郵電 出版社2003清華大學(xué) 出版社2003人民郵電 出版社2000授課教師明顯誠(chéng)汪科職稱工程師單位工程訓(xùn)練 中心授課時(shí)間注:表中()選項(xiàng)請(qǐng)打教案【理、工科】第一章 8051 單片機(jī)基礎(chǔ)結(jié)構(gòu)與內(nèi)部資源一、教學(xué)目的和要求通過(guò)對(duì)單片機(jī)的基礎(chǔ)特點(diǎn)、 內(nèi)部結(jié)構(gòu)、 外部硬件擴(kuò)展、 指令系統(tǒng)和簡(jiǎn)單的程序介紹,讓同學(xué)們對(duì)8051 單片機(jī)有個(gè)基礎(chǔ)了解,同時(shí)由淺入深,進(jìn)一步學(xué)習(xí)運(yùn)用 8051 內(nèi)部資源的 C 語(yǔ)言實(shí)現(xiàn),包括中斷、定時(shí)器/計(jì)數(shù)器以及串口等等。二、教學(xué)重點(diǎn)2.1 8051 的內(nèi)部基礎(chǔ)結(jié)構(gòu)2.2 8051 的內(nèi)部資源使用三、教學(xué)難點(diǎn)8051 單片機(jī)獨(dú)特的內(nèi)部結(jié)構(gòu)3.2 8051 中斷、定
3、時(shí)器/計(jì)數(shù)器和串行口的使用1.1 8051 的內(nèi)部結(jié)構(gòu)單片機(jī)是在一塊硅片上集成了各種部件的微型計(jì)算機(jī), 這些部件包括中央處理器CPU數(shù)據(jù)存儲(chǔ)器RAM程序存貯器ROM定時(shí)器/計(jì)數(shù)器和多種IO接口電 路。8051是MCS-51系列單片機(jī)的一個(gè)產(chǎn)品。MCS-51系列單片機(jī)是Intel公司推 出的通用型單片機(jī)。它的基本型產(chǎn)品是8051、 8031 和 8751.這三個(gè)產(chǎn)品只是片內(nèi)程序存儲(chǔ)器的制造工藝不同。 8051 片內(nèi)程序存儲(chǔ)器為掩膜型,在制造芯片時(shí)已將應(yīng)用程序固化進(jìn)去了, 使它具有某種專用功能; 8031 片內(nèi)無(wú)ROM, 使用時(shí)需外接ROM 8751片內(nèi)ROhM EPROMS,固化的應(yīng)用程序可以方
4、便的改寫。8051單片機(jī)內(nèi)部結(jié)構(gòu)可劃分為 CPU存貯器、并行口、用行口、定時(shí)器/計(jì) 數(shù)器、中斷邏輯幾部分。中央處理器核心單元,算術(shù)邏輯單元ALU (算術(shù)運(yùn)算,邏輯運(yùn)算),操作數(shù)存于累加器AC6E暫存器中。控制器執(zhí)行程序指令過(guò)程,程序存貯器中取指令,進(jìn)入指令寄存器IR ,指令譯碼器 ID 譯碼,微操作信號(hào)用于控制單片機(jī)各部分動(dòng)作。時(shí)鐘包括內(nèi)部時(shí)鐘和外部時(shí)鐘。 內(nèi)部時(shí)鐘, 晶振和微調(diào)電容組成的并聯(lián)諧振電路構(gòu)成穩(wěn)定自激振蕩器。外部時(shí)鐘,引入外部脈沖信號(hào)。基本時(shí)序周期, 微操作信號(hào)在時(shí)間上有嚴(yán)格的先后次序。 振蕩周期是振蕩源周期; 時(shí)鐘周期是振蕩周期的 2 倍; 機(jī)器周期包括6 個(gè)時(shí)鐘周期; 而指令周
5、期指完成一條指令所占用的全部時(shí)間。指令部件包括程序計(jì)數(shù)器PG指令寄存器IR,指令譯碼器ID,數(shù)據(jù)指針DPTR 16位地址寄存器,尋址外部 RAM也可尋址外部ROW表格數(shù)據(jù)。8051 的存儲(chǔ)器組織將程序存貯器和數(shù)據(jù)存貯器分開,并各自有尋址機(jī)構(gòu)和尋址方式(哈佛型結(jié)構(gòu)單片機(jī)) 。8051單片機(jī)物理上有4個(gè)存貯空間,片內(nèi) ROM片外ROM片內(nèi)RAM片外 RAM可在片外擴(kuò)展 RAMffi ROM各有64Kb的尋址范圍。8051有256B數(shù)據(jù)存貯 器RAM 4KB程序存貯器 ROM 4KB的ROM片內(nèi)RO防口片外RO泌用,地址為 0000H-0FFFH 1000H-FFFFhM址為片外ROM用。控制信號(hào)E
6、A=1時(shí),先片內(nèi)ROM(4KB,指令地址超過(guò)0FFFH自動(dòng)轉(zhuǎn)向片外ROM EA=Q只從片外ROW指令。 程序存儲(chǔ)器ROM勺某些單元僅供系統(tǒng)使用,0000H-0002H所有執(zhí)行程序的入口地 址,0003H-002AHt勻勻分為5段,5個(gè)中斷服務(wù)程序的入口,用戶不應(yīng)進(jìn)入上述 區(qū)域。RAMfc地址上和ROM1疊,8051通過(guò)不同信號(hào)選通 ROM RAM從外部ROM 取指令時(shí)用選通信號(hào)PSEN而從外部RAM實(shí)寫數(shù)據(jù)采用RD?口 W砒通。8051內(nèi) 部256B的RAM?節(jié),00H-7FH,真正的RAMK; 80H-FFH專門用于特殊功能寄存 器(SFR。低128字節(jié)分三個(gè)區(qū)域(00H-7FH), 00H
7、-1FH四組工作寄存器,每組 占用8個(gè)RAM?節(jié),記為R0-R7,某一時(shí)刻,CPUR能使用其中一組工作寄存器。 20H-2FH共16個(gè)字節(jié),128位,除做一般RAM賣寫外,還可對(duì)每一個(gè)字節(jié)的每一 位進(jìn)行操作。30H-7FH, 80個(gè)字節(jié),一般的用戶RAMK域。8051單片機(jī)特殊功能 寄存器中包含有堆棧指針SR 8051單片機(jī)復(fù)位后,堆棧指針SP總是初始化到內(nèi) 部RAM勺07H位置。8051堆棧屬于向上生長(zhǎng)型,數(shù)據(jù)壓入堆棧,SP內(nèi)容自動(dòng)加1 作為本次進(jìn)棧的地址指針,然后存信息。8051 并行接口P0-P3, P0 口采用總線復(fù)用技術(shù),P2 口作地址的高 8 位, P1口只作IO 口,P0, P2
8、, P3有第二功能。8051的內(nèi)部資源包括用行口,定時(shí)器/ 計(jì)數(shù)器,中斷。 8051 的工作方式包括復(fù)位方式,程序執(zhí)行方式,單步執(zhí)行方式,低功耗操作方式,EPROMI程和校驗(yàn)方式。8051 的系統(tǒng)擴(kuò)展主要包括外部程序存儲(chǔ)器的擴(kuò)展和數(shù)據(jù)存儲(chǔ)器的擴(kuò)展。8051 的尋址方式,指令中給出的地址尋找真實(shí)操作數(shù)地址的方式。 8051 包 括 7 種尋址方式,寄存器尋址。直接尋址、寄存器間接尋址、立即尋址、變址尋址、相對(duì)尋址和位尋址。 8051 指令系統(tǒng)包括數(shù)據(jù)傳輸指令、轉(zhuǎn)移指令、算術(shù)運(yùn) 算指令和邏輯運(yùn)算指令等。1.2 8051 的內(nèi)部資源一、中斷8051 有 5 個(gè)中斷源, 有兩個(gè)中斷優(yōu)先級(jí), 每個(gè)中斷優(yōu)
9、先級(jí)可以編程控制, 中 斷允許受到CPUFF中斷和中斷源開中斷的兩級(jí)控制。5 個(gè)中斷源包括:外部中斷請(qǐng)求0、外部中斷請(qǐng)求1、片內(nèi)定時(shí)器/ 計(jì)數(shù)器 0溢出中斷請(qǐng)求、片內(nèi)定時(shí)器/ 計(jì)數(shù)器溢出中斷請(qǐng)求1、片內(nèi)串口發(fā)送/ 接收中斷請(qǐng)求。為了了解每個(gè)中斷源的是否產(chǎn)生了中斷, 中斷系統(tǒng)對(duì)應(yīng)設(shè)置多個(gè)中斷請(qǐng)求觸發(fā)器實(shí)現(xiàn)記憶。這些觸發(fā)器包括定時(shí)器/計(jì)數(shù)器控制寄存器TCON串口控制寄存 器SCON中斷優(yōu)先級(jí)寄存器IP,中斷允許寄存器IE。中斷響應(yīng), 8051 單片機(jī)的每個(gè)機(jī)器周期采樣各中斷源的中斷請(qǐng)求標(biāo)志位, 如 果沒(méi)有下述阻止條件:1. CPUE在處理同級(jí)或更高級(jí)的中斷;2. 現(xiàn)行機(jī)器周期不是所執(zhí)行指令的最后一
10、個(gè)機(jī)器周期;3. 正在執(zhí)行的是RETI 或是訪問(wèn) IE 或 IP 的指令。將在下一個(gè)機(jī)器周期響應(yīng)被激活了的最高級(jí)中斷請(qǐng)求。CPUS中斷響應(yīng)后完成如下操作:1. 硬件清除相應(yīng)的中斷請(qǐng)求標(biāo)志;2. 執(zhí)行一條硬件子程序,保護(hù)斷點(diǎn),并轉(zhuǎn)向中斷服務(wù)程序入口;3. 結(jié)束中斷時(shí)執(zhí)行RETI 指令,恢復(fù)斷點(diǎn),返回主函數(shù)。同一優(yōu)先級(jí)設(shè)置時(shí),優(yōu)先級(jí)由高至低的順序是:INT0-T/C0-INT1-T/C1-Serial 。寄存器組切換,當(dāng)一個(gè)特定的任務(wù)正在執(zhí)行,可能有更緊急的任務(wù)需要CPU處理,在一個(gè)具有優(yōu)先級(jí)的系統(tǒng)里,CPU是等待第一個(gè)任務(wù)完成,而是假定前一個(gè)任務(wù)已經(jīng)完成, 立即處理新任務(wù)。 若程序流程立即轉(zhuǎn)向新
11、任務(wù), 新任務(wù)使用的各寄存器破壞了第一個(gè)任務(wù)使用的中間信息。 當(dāng)?shù)谝粋€(gè)任務(wù)重新執(zhí)行時(shí), 寄存器的值可引起錯(cuò)誤發(fā)生, 解決的方法每次發(fā)生任務(wù)變化時(shí)執(zhí)行一些指令, 被稱為上下文切換。高優(yōu)先級(jí)的中斷可以中斷正在處理的低優(yōu)先級(jí)程序,因而必須注意寄存器組。 最好給每個(gè)優(yōu)先級(jí)程序分配不同的寄存器組。 因此, 中斷服務(wù)函數(shù)的完整語(yǔ)法如下:返回值 函數(shù)名(參數(shù)) 模式 重入 interrupt n using n當(dāng)調(diào)用中斷函數(shù)時(shí),SFR中的ACC B、DPH DPL PS隧?xiàng)!6⒍〞r(shí)器/ 計(jì)數(shù)器(T/C)8051 系列單片機(jī)至少有兩個(gè)16 位內(nèi)部定時(shí)器/計(jì)數(shù)器, 8052有三個(gè)定時(shí)器/計(jì)數(shù)器,兩個(gè)基本定時(shí)器
12、/計(jì)數(shù)器是T/C0和T/C1。它們既可以編程為定時(shí)器使 用,也可以編程為計(jì)數(shù)器使用。若做定時(shí)器用,計(jì)數(shù)內(nèi)部晶振驅(qū)動(dòng)時(shí)鐘;若做計(jì)數(shù)器使用, 計(jì)數(shù)輸入管腳的脈沖信號(hào)。 定時(shí)器實(shí)際上也是工作在計(jì)數(shù)方式下, 只 不過(guò)對(duì)固定脈沖計(jì)數(shù),由計(jì)數(shù)值可計(jì)算出時(shí)間,有定時(shí)功能。T/C 作定時(shí)器用時(shí), 對(duì)振蕩源 12 分頻的脈沖計(jì)數(shù), 每個(gè)機(jī)器周期計(jì)數(shù)值加1,1/12fosc= 計(jì)數(shù)率,每2us 計(jì)數(shù)值加 1。T/C作計(jì)數(shù)器用時(shí),計(jì)數(shù)脈沖來(lái)自外部脈沖輸入管腳T0、T1,當(dāng)T0/T1腳上出現(xiàn)負(fù)跳變時(shí), 計(jì)數(shù)值加 1, 識(shí)別管腳上的負(fù)跳變需要2 個(gè)機(jī)器周期, 24 個(gè)振蕩周期,可計(jì)數(shù)最高外部脈沖頻率為 1/24fosc
13、 。高于此計(jì)數(shù)率,計(jì)數(shù)出錯(cuò)。與T/C有關(guān)的特殊功能寄存器包括計(jì)數(shù)寄存器TH和TL,控制寄存器TCON方式控制寄存器TMOD定時(shí)器/計(jì)數(shù)器2控制寄存器(T/C2)。定時(shí)器 / 計(jì)數(shù)器的工作方式如下:1. 方式0,為13位T/C,由TH提供高8位,TL提供低5位的計(jì)數(shù)器, 滿計(jì)數(shù)值為2 13 ,但啟動(dòng)前可以預(yù)置計(jì)數(shù)初值;2. 方式 1, 方式 1 與方式 0 基本相同, 唯一區(qū)別在于計(jì)數(shù)寄存器的位數(shù)是16位,由TH和TL寄存器各提供8位,滿計(jì)數(shù)值為216;3. 方式2,是 8 位可自動(dòng)重裝載的 T/C, 滿計(jì)數(shù)值為 28 。4. 方式3,只適用于T/C0,當(dāng)T/C0工作在方式3時(shí),TH0和TL0成
14、為 兩個(gè)獨(dú)立的 8 位計(jì)數(shù)器。只有將T/C1 用作串口的波特率發(fā)生器時(shí),T/C0才能工作在方式3,相當(dāng)于增加了一個(gè)定時(shí)器。5. T/C2 的工作方式, T/C2 包含一個(gè) 16 位重裝載方式,計(jì)數(shù)溢出后, 自動(dòng)在瞬間重裝載。 T/C2 還有捕獲方式,它把瞬時(shí)計(jì)數(shù)值傳到另外 的CPK讀取的寄存器對(duì)。定時(shí)器/計(jì)數(shù)器的初始化,包括編程 TMOD置初值TH和TL,編輯TE,啟動(dòng)T/C。計(jì)數(shù)初值計(jì)算,定時(shí)器工作方式下: T/C 對(duì)機(jī)器周期脈沖進(jìn)行計(jì)數(shù),根據(jù)晶振頻率算出機(jī)器周期,一個(gè)機(jī)器周期為 12/fosc 。那么自然可算出需要的計(jì)數(shù)初值。計(jì)數(shù)器工作方式下,由于計(jì)數(shù)器向上計(jì)數(shù),所以可置負(fù)數(shù)。三、串行口8
15、051單片機(jī)片上有UART(通用異步接收/發(fā)送)用于串行通信,發(fā)送時(shí)數(shù)據(jù) 由TXD端送出,接收時(shí)數(shù)據(jù)由RXD®輸入。有兩個(gè)緩沖器SBUF 一個(gè)作發(fā)送緩 沖器, 另一個(gè)作接收緩沖器。 它是可編程的全雙工的串行口。 短距離的機(jī)間通信 可使用UART勺TTL電平,使用驅(qū)動(dòng)芯片可接成RS232G口通用微機(jī)進(jìn)行通信。波 特率時(shí)鐘必須從內(nèi)部定時(shí)器1 或定時(shí)器 2 獲得。與用行口有關(guān)的SFR包括串口控制寄存器 SCO恃口電源控制寄存器PCON用 行口的工作方式包括:1. 方式0,為移位寄存器輸入/輸出方式,串行數(shù)據(jù)通過(guò)RXD俞入輸出, TXD則用于輸出移位時(shí)鐘脈沖;2. 方式1,是 10 位異步通
16、信方式, 1 位起始位(0) , 8 位數(shù)據(jù)位和1位停止位(1) ,其中的起始位和停止位是在發(fā)送時(shí)自動(dòng)插入;3. 方式 2 和方式3,都是11 位異步接收/ 發(fā)送方式,不同在于波特率不同。串行口的初始化包括,定時(shí)器1 工作方式, T/C1 置初值, T/C1 啟動(dòng),串行口控制SCON開CPU+斷和源中斷。第二章8051的C語(yǔ)言編程一、教學(xué)目的和要求要求學(xué)生通過(guò)本章學(xué)習(xí),了解8051 的編程語(yǔ)言,掌握C51 的數(shù)據(jù)與運(yùn)算、流程控制語(yǔ)句、構(gòu)造數(shù)據(jù)類型、函數(shù)以及模塊化程序設(shè)計(jì)。二、教學(xué)重點(diǎn)2.1 8051 編程語(yǔ)言和 C51 程序結(jié)構(gòu)2.2 C51 的數(shù)據(jù)以及運(yùn)算2.3 C51 的構(gòu)造數(shù)據(jù)類型2.4
17、 函數(shù)的使用和模塊化程序設(shè)計(jì)三、教學(xué)難點(diǎn)C51 的程序結(jié)構(gòu)和相關(guān)的編寫規(guī)則C51 數(shù)據(jù)與運(yùn)算一、數(shù)據(jù)與數(shù)據(jù)類型數(shù)據(jù), 具有一定格式的數(shù)字或數(shù)值叫做數(shù)據(jù)。 數(shù)據(jù)類型, 數(shù)據(jù)的不同格式叫做數(shù)據(jù)類型。數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)按一定的數(shù)據(jù)類型進(jìn)行的排列、組合、架構(gòu)稱為數(shù)據(jù)類型。數(shù)據(jù)類型分為基本類型、 構(gòu)造類型、 指針類型和空類型。 基本類型分為位型、字符型、整型、長(zhǎng)整型、浮點(diǎn)型和精度浮點(diǎn)型。構(gòu)造類型分為數(shù)組類型、結(jié)構(gòu)體類型、共用體和枚舉。二、C51運(yùn)算符、表達(dá)式以及規(guī)則常量,在程序運(yùn)行的過(guò)程中,其值不能改變的量。與變量一樣,常量也有不 同的數(shù)據(jù)類型。變量,在程序運(yùn)行過(guò)程中,其值可以改變的量。一變量主要由兩部分組
18、成, 一是變量名,一是變量值。每一個(gè)變量都有一個(gè)變量名,在內(nèi)存中占據(jù)一定的存 儲(chǔ)空間,并在該內(nèi)存單元存放該變量的值。在程序編制中使用大量不必要的變量類型, 會(huì)導(dǎo)致C編譯器相應(yīng)的增加所調(diào)用的 庫(kù)函數(shù)的數(shù)量,以處理大量增加的變量類型。 最終會(huì)使程序變得過(guò)于龐大,運(yùn)行 速度減慢,甚至?xí)谶B接時(shí),出現(xiàn)因程序過(guò)大裝不進(jìn)代碼區(qū)的情況。 通常使用的 數(shù)據(jù)變量包括位變量、字符變量、整型變量、長(zhǎng)整型變量、浮點(diǎn)型變量。地址為00H-7FH的低128字節(jié)片內(nèi)RAMK被戈U分為3個(gè)區(qū)域。通用寄存器區(qū), 可位尋址區(qū),用戶RAMK。通用寄存器區(qū)被劃分為4組寄存器,0組(00H-07H), 1 組(08H-0FH), 2
19、組(10H-17H), 3 組(18H-1FH);每組含 8 個(gè)通用寄存器 R0-R7, 共32個(gè)通用寄存器。尋址采用寄存器名尋址;字節(jié)地址尋址。當(dāng)用寄存器名來(lái)尋址時(shí),程序狀態(tài)字中的PSWW勺R(shí)S1和RS0兩位的值來(lái)決定 寄存器組。RS1 (PSW.4RS0 (PSW.33組1r 12組101組10r 10組00可位尋址區(qū)包括20H-2FH;用戶RAMK 30H-7FH;編譯器會(huì)通過(guò)將變量、常 量定義為不同的存貯類型,將它們定位在不同的存貯區(qū)中。data/bdata ,定義常量和變量時(shí),編譯器會(huì)將它們定義在片內(nèi) RAME,片內(nèi) RAME存放臨時(shí)性傳遞變量或使用頻率較高的變量。Code存貯數(shù)據(jù)類
20、型時(shí),編譯器將其定位在 ROM® EPRO附,這里存放指令 代碼或其它非易變信息。如果定義數(shù)據(jù)和變量時(shí)缺省存貯類型標(biāo)識(shí)符, 編譯器會(huì)自動(dòng)選擇默認(rèn)的存貯 類型,有SMALL COMPACT LARGE旨令限定。8051單片機(jī)片內(nèi)有21個(gè)特殊功能寄存器(SFR,它們分散在片內(nèi)RAME的高128 字節(jié)中,地址80H-0FFH Xt SFR的操作,只能用直接尋址方式。C51與標(biāo)C不同之處之一在于引入關(guān)鍵字“ sfr ”Sfr SCON=0x98;Sfr16 T2=0xcc ;需經(jīng)常單獨(dú)訪問(wèn)SFR中的位時(shí),使用關(guān)鍵字“ sbit ”。8051單片機(jī)芯片內(nèi)帶有4個(gè)8位的并行口,共32根I/O 口
21、線。每個(gè)口主要 由4部分組成:端口鎖存器,即 SFR中的P0 口-P3 口;輸入緩沖器;輸出緩沖 器;引致芯片外的端口引腳。其中 P1-P3 口為準(zhǔn)雙向口,P0 口為雙向3態(tài)口。8051單片機(jī)芯片引腳中沒(méi)有專用的地址總線和數(shù)據(jù)總線,向外擴(kuò)展存貯器 和接口時(shí),由P2 口輸出地址總線的高8位(A15-A8)。由P0 口輸出地址總線的 低8位(A7-A0);同時(shí)對(duì)P0 口采用總線復(fù)用技術(shù),P0 口又兼作8位雙向數(shù)據(jù)數(shù) 據(jù)總線D7-DQ即由P0分時(shí)輸出低8位地址或輸入輸出8位數(shù)據(jù)。在不做總線擴(kuò)展時(shí),P0口和P2 口可以作為普通的IO 口使用。除8051芯片上的4個(gè)I/O 口以外,還可以在片外擴(kuò)展硬件I
22、/O 口。8051沒(méi)有專用的 I/O 指令, 其口地址與數(shù)據(jù)存貯器地址是統(tǒng)一編址的, 即把一個(gè)口當(dāng)作數(shù)據(jù)存貯器中的一個(gè)單元來(lái)看待。8051 的內(nèi)部口是可以位尋址的,而大部分外部口是字節(jié)尋址的。在給口指定硬件擴(kuò)展電路時(shí), 可以在內(nèi)部口中設(shè)置I/O 控制線和信號(hào)線, 而將外部口定義為字節(jié)寬度I/O 口, 這樣在編程時(shí)可大大簡(jiǎn)化尋址, 并避免使用許多邏輯屏蔽位。在使用 C51 進(jìn)行編程時(shí), 8051 片內(nèi) I/O 口與片外擴(kuò)展的 I/O 口可以統(tǒng)一在頭文件中定義,也可在程序中定義。對(duì)于片外擴(kuò)展I/O 口, 根據(jù)硬件譯碼地址, 將其視為片外數(shù)據(jù)存貯器的一個(gè)單元,使用“ #define ”語(yǔ)句進(jìn)行定義。
23、位變量的 C51 定義的語(yǔ)法和語(yǔ)義。函數(shù)課包含類型為“ bit ”的參數(shù),也可將其作為返回值。 位變量不能定義為一個(gè)指針, 不存在位數(shù)組, 在位定義中允許定義存貯類型,位變量都被放入一位段中。但存貯類型被限制為 data 或 idata 。可位尋址對(duì)象指可以字節(jié)或位尋址的對(duì)象,該對(duì)象應(yīng)位于 8051 片內(nèi)可位尋址的RAME。C51算術(shù)運(yùn)算符包括+, - , X, /, %。乘除,求余運(yùn)算符優(yōu)先級(jí)大于加減。可以用強(qiáng)制類型轉(zhuǎn)換運(yùn)算符改變運(yùn)算優(yōu)先級(jí)。 C51 關(guān)系運(yùn)算符包括<, >, <=, >=,=, ! =,前4 個(gè)優(yōu)先級(jí)相同大于后 2 個(gè)。關(guān)系運(yùn)算符低于算術(shù)運(yùn)算符,高于
24、賦值運(yùn)算符。C51邏輯運(yùn)算符包括&& | ,!。C51位操作運(yùn)算符,&和|。自增減運(yùn)算 符+i , -i , i+ , i-。C51 流程控制語(yǔ)句一、C51程序的基本結(jié)構(gòu)及流程圖C51程序基本架構(gòu)包括順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu)。選擇結(jié)構(gòu)又包括申行多分支和并行多分支。順序結(jié)構(gòu)是一種基本的, 簡(jiǎn)單的編程結(jié)構(gòu)。 這種結(jié)構(gòu)中, 程序由低地址向高地址順序執(zhí)行指令代碼。選擇結(jié)構(gòu)中,程序首先對(duì)一個(gè)條件語(yǔ)句進(jìn)行測(cè)試。當(dāng)條件為“真”時(shí),執(zhí)行一個(gè)方向上的程序流程。所有的分支結(jié)構(gòu)都使程序流程一直向前執(zhí)行而使用循環(huán)結(jié)構(gòu)可使分支流程重復(fù)地執(zhí)行。二、選擇語(yǔ)句選擇語(yǔ)句之一if 語(yǔ)句的三種形式:if
25、 (表達(dá)式) 語(yǔ)句 ;if (表達(dá)式) 語(yǔ)句 1else 語(yǔ)句 2 ;if (表達(dá)式 1) 語(yǔ)句 1else if( 表達(dá)式2)語(yǔ)句2else語(yǔ)句m;if 語(yǔ)句嵌套:if()if() 語(yǔ)句 1else 語(yǔ)句 2elseif()語(yǔ)句3else 語(yǔ)句4switch/case 語(yǔ)句switch()case常量表達(dá)式1: 語(yǔ)句1break ;case常量表達(dá)式2: 語(yǔ)句2break ;Default : 語(yǔ)句 nbreak ;三、循環(huán)語(yǔ)句作為構(gòu)成循環(huán)結(jié)構(gòu)的循環(huán)語(yǔ)句,一般是由循環(huán)體及循環(huán)終止條件兩部分組成。 一組被重復(fù)執(zhí)行的語(yǔ)句成為循環(huán)體, 能否繼續(xù)執(zhí)行下去取決于循環(huán)終止條件。實(shí)體循環(huán)語(yǔ)句包括以下三種,
26、 while 語(yǔ)句, do-while 語(yǔ)句, for 語(yǔ)句。while 語(yǔ)句的一般形式:while( 表達(dá)式 ) 語(yǔ)句 / 循環(huán)體 /do-while 語(yǔ)句的格式:do 執(zhí)行語(yǔ)句 / 循環(huán)體 /While( 表達(dá)式 )for 循環(huán)語(yǔ)句的一般形式:for( 表達(dá)式1;表達(dá)式2;表達(dá)式3) 執(zhí)行語(yǔ)句 C51 構(gòu)造數(shù)據(jù)類型一、數(shù)組C 語(yǔ)言具有使用戶能夠定義一組有序數(shù)據(jù)項(xiàng)的能力。 這組有序的數(shù)據(jù)即數(shù)組。數(shù)組是一組具有固定數(shù)目和相同類型成分分量的有序集合。 其成分分量的類型為該數(shù)組的基本類型。 如整型變量的有序集合稱為整型數(shù)組, 字符型變量的有序集合稱為字符型數(shù)組。 這些整型或字符型變量是各自所屬數(shù)組
27、的成分分量, 稱為數(shù)組元素。一維數(shù)組的定義方式:類型說(shuō)明符,數(shù)組名 整型表達(dá)式 例如 int idata a6= ;二維數(shù)組的定義方式: 類型說(shuō)明符,數(shù)組名 常量表達(dá)式 1 常量表達(dá)式 2存取方式,順序,按行存取,先存取第一行,依次下來(lái)。字符數(shù)組的存儲(chǔ)兩種方式:一種方式例如: char a10=B , E , I , , J , I , N , G , O ;另一種方式例如: char a10=“BEI JING” ; C 編譯器會(huì)自動(dòng)在字符末尾加上結(jié)束符 O ( NULL) ,因此,字符數(shù)組的元素?cái)?shù)目一定要比字符多一個(gè)。二維字符數(shù)組,第一下標(biāo)是字符串個(gè)數(shù),第二個(gè)下標(biāo)是每個(gè)字符串長(zhǎng)度。如, u
28、charcode msg17= ;第二個(gè)下標(biāo)個(gè)數(shù)必須指定。二、指針指針是C語(yǔ)言中的一個(gè)重要概念,也是C語(yǔ)言的重要特色之一。C語(yǔ)言區(qū)別于其他高級(jí)設(shè)計(jì)語(yǔ)言的主要特點(diǎn)就是它在處理指針時(shí)所表現(xiàn)出的能力和靈活性。使用指針可以有效地表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu), 有效而方便的使用數(shù)組; 動(dòng)態(tài)的分配存貯器,直接處理內(nèi)存地址,在調(diào)用函數(shù)時(shí)還能輸入或返回多于 1 個(gè)的變量值。使用指針可以使程序簡(jiǎn)潔、緊湊、高效。為了了解指針的基本概念, 必須了解數(shù)據(jù)在內(nèi)存中是如何存貯和讀取的。 一 且程序中定義了一個(gè)變量,C編譯器在編譯時(shí)就給這個(gè)變量在內(nèi)存中分配相應(yīng)的 內(nèi)存空間。通常C語(yǔ)言系統(tǒng)對(duì)一個(gè)整型變量分配兩個(gè)字節(jié)的內(nèi)存空間單元,對(duì)一
29、個(gè)字符型變量分配一個(gè)字節(jié)內(nèi)存單元,一個(gè)浮點(diǎn)型變量分配4 個(gè)字節(jié)內(nèi)存單元。對(duì)于變量需要區(qū)分變量名和變量值的概念。 前者是一個(gè)數(shù)據(jù)的符號(hào), 后者是一個(gè)數(shù)據(jù)的內(nèi)容。對(duì)于內(nèi)存單元區(qū)分兩個(gè)概念,一個(gè)是內(nèi)存單元地址,一個(gè)是內(nèi)存單元內(nèi)容。前者是內(nèi)存對(duì)該單元的編號(hào), 它表示著該單元在整個(gè)內(nèi)存中的位置。 后者指在該內(nèi)存單元中存放著的數(shù)據(jù)。 在變量和內(nèi)存單元的對(duì)應(yīng)關(guān)系中, 變量的變量名與內(nèi)存單元的地址相對(duì)應(yīng),變量的變量值與內(nèi)存單元的內(nèi)容相對(duì)應(yīng)。內(nèi)存中變量名 a,b,c 是不存在的, 對(duì)于變量值的存取通過(guò)地址進(jìn)行。 兩種訪問(wèn)方式,直接訪問(wèn)和間接訪問(wèn)。直接訪問(wèn)找地址,取變量值。間接訪問(wèn),找存放變量 a 的地址的內(nèi)存單
30、元的地址。 取出變量 a 的地址, 然后從找到的 a 的地址中 再取數(shù)據(jù)變量值。對(duì)于指針弄清兩個(gè)概念,變量的指針和指向變量的指針變量(指針變量) 。變量的指針就是變量的地址, 指向變量的指針變量, 一個(gè)變量專門用來(lái)存放另一 個(gè)變量的地址。指針變量的定義:類型識(shí)別符 * 指針變量名例如 int *ap; float *pointer指針變量的賦值, 指針變量的引用是通過(guò)取地址運(yùn)算符&來(lái)實(shí)現(xiàn)。ap=&a;( ap為指針變量, a 為變量,&為取地址運(yùn)算符)通過(guò)指針和指針變量來(lái)對(duì)內(nèi)存進(jìn)行間接訪問(wèn),就需要用到指針運(yùn)算符“ *” 。“ * ”在指針變量定義和指針運(yùn)算所代表的含義不
31、同。當(dāng)定義時(shí), *ap 中的“ *”是指針變量類型說(shuō)明符;當(dāng) x=*ap 時(shí), “* ”是指針運(yùn)算符。例如: int *ap, int a, ap=&a; *ap=a; &*ap=&a; *&a 與 a 等價(jià)。*ap+=a+。uchar data *xdata zz ,外部RAMM旨針指向內(nèi)部 RAMft據(jù)。數(shù)組指針和指向數(shù)組的指針變量,數(shù)組的指針=數(shù)組的起始地址,指向數(shù)組的指針變量。例如: int a10;int *app; app=&a0;app=a( 數(shù)組名 a 可以代表數(shù)組 a10 的首地址 ) 。合起來(lái)定義: int *app=&a0;
32、int *app=a;當(dāng)定義完后, app=&a0 ;通用指針引用數(shù)組元素: app=&a0 , 則 app+i=a+i 是數(shù)組元素 ai 的地址。* ( app+i )或 * ( a+i )是 app+i 或 a+i 所指向的數(shù)組元素,即 ai ;指針變量可帶下標(biāo) appi=*(app+i) ; app+1 是指向數(shù)組首地址的下一個(gè)元 素。指針變量的運(yùn)算: p+, p 指向下一個(gè)單元*p+=*( p+)*p+,*+p(*p)+,指向的元素值加1,而非指針變量加 1。指向多維數(shù)組的指針和指針變量:p-a34 , p=a, p+1=a+1; p+2=a+2;指向第幾行首址。* (
33、p+1)+3=&a13 ,指向 a13 的地址;* (*(p+1)+3)=a13 ,表示 a13 的值;* (p+i)+j 相當(dāng)于 &aij ,第 i 行第 j 列地址;* (*(p+i)+j) 相當(dāng)于 aij;“基于存貯器的”指針和“一般”指針,兩種類型“基于存貯器的” 指針以存貯器類型為參量, 存貯器類型定義即可放在定義的開頭,也可直接放在定義的對(duì)象名之前。例如: char xdata *data pdxdata char xdata *pdx兩者等價(jià)。一般指針(包含 3 個(gè)字節(jié), 2 個(gè)字節(jié)偏移和 1 個(gè)字節(jié)存貯器類型) ;將常數(shù)值 0x41 寫入地址為 0x8000 的
34、外部數(shù)據(jù)存貯器。#define XBYTE(char *)0x20000l)XBYTE0x8000=0x41三、結(jié)構(gòu)C 語(yǔ)言的重要特點(diǎn)之一,是具有構(gòu)造數(shù)據(jù)類型的能力,它可以在諸如字符,整型, 浮點(diǎn)型等簡(jiǎn)單數(shù)據(jù)類型的基礎(chǔ)上, 按層次產(chǎn)生各種構(gòu)造數(shù)據(jù)類型, 如數(shù)組、指針、 結(jié)構(gòu)和共用體等。 前面已經(jīng)討論了數(shù)組和指針兩種構(gòu)造數(shù)據(jù)類型, 但是僅有這些是不夠的, 有時(shí)還需將不同類型的數(shù)據(jù)組成一個(gè)有機(jī)的整體, 這些組合在一起的數(shù)據(jù)就是結(jié)構(gòu)。C 語(yǔ)言中的結(jié)構(gòu),就是把多個(gè)不同類型的變量結(jié)合在一起形成的一個(gè)組合型變量,稱為結(jié)構(gòu)變量。這些不同類型的變量可以是基本類型、枚舉類型、指針類型、 數(shù)組類型或其它結(jié)構(gòu)類型的
35、變量。 這些構(gòu)成一個(gè)結(jié)構(gòu)的各個(gè)變量稱為結(jié)構(gòu)元素,它們定義規(guī)則與變量名相同。結(jié)構(gòu)類型的一般形式為:struct 結(jié)構(gòu)名結(jié)構(gòu)成員說(shuō)明;結(jié)構(gòu)成員說(shuō)明的格式為:類型標(biāo)識(shí)符 成員名;例如: struct dateint month;int day;int year;定義一個(gè)結(jié)構(gòu)的變量的方法有三種:1. 先定義結(jié)構(gòu)的類型,再定義該結(jié)構(gòu)的變量名struct dateint month;int day;int year;date date1,date2;/ 定義結(jié)構(gòu)的變量名 /2. 在定義結(jié)構(gòu)類型的同時(shí)定義該結(jié)構(gòu)的變量struct dateint monthint day;int year;date1,dat
36、e2;3. 直接定義結(jié)構(gòu)類型變量 struct int year;int month;int day;date1,date2, ,date n;結(jié)構(gòu)類型變量的引用, 對(duì)于結(jié)構(gòu)類型變量的引用遵守如下規(guī)則: 結(jié)構(gòu)不能作為一個(gè)整體參加賦值、 存取和運(yùn)算, 也不能整體的作為函數(shù)的參數(shù), 或函數(shù)的返 回值。對(duì)結(jié)構(gòu)所執(zhí)行的操作,只能用&運(yùn)算符取結(jié)構(gòu)的地址,或?qū)Y(jié)構(gòu)變量的成員分別加以引用。引用的方式:結(jié)構(gòu)變量名 . 成員名;如果結(jié)構(gòu)類型變量的成員本身又屬于一個(gè)結(jié)構(gòu)類型變量, 則要用若干個(gè)成員運(yùn)算符“ . ” ,一級(jí)一級(jí)的找到最低一級(jí)成員,只有最低一級(jí)成員才能參加賦值、存取或運(yùn)算。 “->” 和
37、“ . ”符號(hào)等同。結(jié)構(gòu)數(shù)組的定義,當(dāng)數(shù)組中的每個(gè)元素都具有相同的結(jié)構(gòu)類型的結(jié)構(gòu)變量,則稱該數(shù)組為結(jié)構(gòu)數(shù)組。結(jié)構(gòu)數(shù)組與變量數(shù)組不同之處, 就在于結(jié)構(gòu)數(shù)組的每一個(gè)元素, 都是具有同一個(gè)結(jié)構(gòu)類型的結(jié)構(gòu)變量,它們都具有同一個(gè)結(jié)構(gòu)類型,都含有相同的成員項(xiàng)。例如: struct dateint month;int day;int year;struct date date110;指向結(jié)構(gòu)類型數(shù)據(jù)的指針, 一個(gè)指向結(jié)構(gòu)類型數(shù)據(jù)的指針, 就是該數(shù)據(jù)在內(nèi)存中的首地址。 我們也可以設(shè)一個(gè)指針變量, 把它指向一個(gè)結(jié)構(gòu)數(shù)組, 此時(shí)該指 針變量的值就是結(jié)構(gòu)數(shù)組的起始地址。指向結(jié)構(gòu)體變量的指針變量的一般形式為:stru
38、ct 結(jié)構(gòu)類型名 * 指針變量名;或 struct 結(jié)構(gòu)成員說(shuō)明* 指針變量名;指向結(jié)構(gòu)變量的指針變量的一個(gè)實(shí)際的應(yīng)用例子就是對(duì)信息進(jìn)行傳輸, 一個(gè)任務(wù)使用 “傳送一條信息” 的方法與另一個(gè)任務(wù)進(jìn)行通信。 這個(gè)傳送操作包括傳 送信息結(jié)構(gòu)變量的指針變量,這個(gè)指針變量是向接收任務(wù)傳遞的信息或指針。指向結(jié)構(gòu)數(shù)組的指針變量的一般形式:struct 結(jié)構(gòu)數(shù)組名* 結(jié)構(gòu)數(shù)組指針變量名;或: struct 結(jié)構(gòu)成員說(shuō)明* 結(jié)構(gòu)數(shù)組指針變量名 ; 共用體和枚舉在這不做重點(diǎn)講解。函數(shù)一、函數(shù)的調(diào)用函數(shù)調(diào)用的一般形式為:函數(shù)名(實(shí)際參數(shù)列表) ;對(duì)于有參數(shù)函數(shù), 若包含多個(gè)實(shí)際參數(shù), 應(yīng)將各參數(shù)之間用逗號(hào)分隔開。
39、 主 調(diào)用函數(shù)的數(shù)目與被調(diào)用函數(shù)的形式參數(shù)的數(shù)目應(yīng)該相等。 實(shí)參和形參按照實(shí)際 順序一一對(duì)應(yīng)傳遞數(shù)據(jù)。如果調(diào)用的是無(wú)參數(shù)函數(shù), 則實(shí)際參數(shù)表可以省略, 但函數(shù)名后面必須有一 對(duì)空括號(hào)。函數(shù)調(diào)用的方式有以下三種:1函數(shù)調(diào)用語(yǔ)句,即把被調(diào)用函數(shù)名作為主調(diào)用函數(shù)中的一個(gè)語(yǔ)句。此時(shí)并不要求被調(diào)用函數(shù)返回結(jié)構(gòu)數(shù)值,只要求函數(shù)完成某種操作。2函數(shù)結(jié)果作為表達(dá)式的一個(gè)運(yùn)算對(duì)象,此時(shí)被調(diào)用函數(shù)以一個(gè)運(yùn)算對(duì)象的身份出現(xiàn)在一個(gè)表達(dá)式中,就要求被調(diào)用函數(shù)帶有return 語(yǔ)句,以便返回一個(gè)明確的數(shù)值參加表達(dá)式的運(yùn)算。4. 函數(shù)參數(shù)。即被調(diào)用函數(shù)作為另一個(gè)函數(shù)的實(shí)際參數(shù)。對(duì)被調(diào)用函數(shù)的說(shuō)明:1. 被調(diào)用函數(shù)必須是已經(jīng)
40、存在的函數(shù)(庫(kù)函數(shù)或用戶自定義函數(shù))2. 如果函數(shù)中使用了庫(kù)函數(shù),或不在同一個(gè)文件中的另外自定義函數(shù),則應(yīng)該在程序的開頭處用 #include 進(jìn)行包含語(yǔ)句, 將所需要的函數(shù)信息包 含到程序中來(lái)。3. 如果程序中使用了自定義函數(shù), 則該函數(shù)與調(diào)用函數(shù)同在一個(gè)文件里面,則應(yīng)根據(jù)主調(diào)用函數(shù)和被調(diào)用函數(shù)在文件中的位置,決定是否對(duì)被調(diào)用函數(shù)作出說(shuō)明。用函數(shù)指針變量調(diào)用函數(shù),一個(gè)函數(shù)在編譯時(shí),C編譯器會(huì)給它分配一個(gè)入口地址。 這個(gè)入口地址被稱為函數(shù)的指針。 我們可用一個(gè)指針變量指向函數(shù), 然 后通過(guò)該指針變量調(diào)用函數(shù)。例如: int (*p)( ); 函數(shù)指針變量定義int factorial(n)p=
41、factorial / 函數(shù)指針變量指向函數(shù)的入口地址/使用時(shí)直接用指針變量調(diào)用函數(shù)即可:C=factorial(j);C=(*p)(j);如果一個(gè)函數(shù)指針變量不對(duì)他進(jìn)行賦值, 是不能固定指向某個(gè)函數(shù)的, 它是專門用來(lái)存放函數(shù)的入口地址的。 給函數(shù)指針變量賦值時(shí), 只需給出函數(shù)名, 不必給出參數(shù)。二、數(shù)組、指針作為函數(shù)的參數(shù)當(dāng)用數(shù)組名作為函數(shù)的參數(shù)時(shí), 應(yīng)該在調(diào)用函數(shù)和被調(diào)用函數(shù)中分別定義數(shù)組。 只有這樣, 作為調(diào)用函數(shù)的實(shí)際參數(shù)數(shù)組全部元素, 才能順利地傳遞到被調(diào)用函數(shù)的形式參數(shù)數(shù)組中。實(shí)參數(shù)組和形參數(shù)組的類型應(yīng)該一致,否則導(dǎo)致結(jié)果出錯(cuò)。實(shí)參和形參的大小可以一致也可以不一致,形參數(shù)組不應(yīng)大于
42、實(shí)參數(shù)組。用指向函數(shù)的指針變量作為函數(shù)的參數(shù)。 函數(shù)指針變量常用途之一就是把指針作為參數(shù)傳遞給其他函數(shù)。例如:主函數(shù): main()sub(f1,f2);子函數(shù): sub(x1,x2)int (*x1)( ), (*x2)( );a=(*x1)(i);b=(*x2)(i,j);形參被定義為指向函數(shù)的指針變量。用指向結(jié)構(gòu)的指針變量作為函數(shù)的參數(shù)。 用指向結(jié)構(gòu)變量的指針變量作為實(shí)際參數(shù),將結(jié)構(gòu)變量的地址傳遞給被調(diào)用函數(shù)的形式參數(shù)。例如: struct record;void show(p)struct record *pmain()struct record note;show (¬
43、e);第三章EDA軟件、教學(xué)目的和要求通過(guò)本章節(jié)的講解要求學(xué)生掌握電子產(chǎn)品設(shè)計(jì)研發(fā)所必備的軟件。 具體包括KEIL編程編譯調(diào)試軟件、Proteus電路仿真設(shè)計(jì)軟件、PROTEL99SE制電路板設(shè)計(jì)軟件等。二、教學(xué)重點(diǎn)2.1 KEIL 編程編譯調(diào)試軟件學(xué)習(xí)2. 2 PROTEUS 電路仿真設(shè)計(jì)軟件學(xué)習(xí)2.3 PROTEL99SE 印制電路板設(shè)計(jì)軟件學(xué)習(xí)三、教學(xué)難點(diǎn)如何將KEIL與PROTEUS合搭建仿真平臺(tái)KEIL uVision3 編程、編譯、調(diào)試軟件KEIL uVision3 是德國(guó) KEIL Software 公司針對(duì) 51 系列單片機(jī)推出的基于32位windows環(huán)境,高效率的C語(yǔ)言開發(fā)
44、平臺(tái)。它是一個(gè)功能強(qiáng)大的單片機(jī)集 成開發(fā)環(huán)境,主要包括:C51交叉編譯器、A51宏匯編器、BL51連接/重定位器、 LIB51 庫(kù)管理器、 OH51 Intel HEX 格式文件轉(zhuǎn)換器、 RTX-51 實(shí)時(shí)操作系統(tǒng)以及單片機(jī)軟件仿真器Dscope51。uV3將項(xiàng)目管理、源代碼編輯、程序調(diào)試等集成到 了一個(gè)功能強(qiáng)大的windows32平臺(tái)中。具C編譯工具在產(chǎn)生代碼的準(zhǔn)確性和效率 方面達(dá)到了較高的水平,對(duì)C語(yǔ)言的編譯支持幾乎達(dá)到了完美的程度,當(dāng)然它也同樣支持 A51 宏匯編。uV3 內(nèi)嵌多種靈活的控制選項(xiàng),作為大項(xiàng)目的開發(fā)尤其理想。我們將通過(guò)上機(jī)實(shí)踐來(lái)講授KEIL 軟件的使用,如何在編輯器模塊里面
45、建立項(xiàng)目,編寫、編譯、調(diào)試應(yīng)用程序,同時(shí)會(huì)結(jié)合PROTE脂真軟件,搭建仿真平臺(tái), 再不接觸到任何硬件的前提下完成電路原理圖的仿真, 檢驗(yàn)編寫程序的效率 和可行性。基于8051的C語(yǔ)言編程的Proteus仿真軟件一、Proteus概述Proteus是一款集單片機(jī)仿真和SPICE分析于一身的EDA©真軟件,于1989 年由英國(guó)Labcenter Electronics Ltd研發(fā)成功。除具備和其他 EDAX具一樣的 原理圖設(shè)計(jì)、PCB自動(dòng)生成及電路仿真的功能外,最大特點(diǎn)是 Proteus VSMK現(xiàn) 了混合模式的SPICE電路仿真,他將虛擬儀器、高級(jí)圖標(biāo)仿真、微處理器軟仿真 器、 第三方
46、的編譯器和調(diào)試器等有機(jī)結(jié)合起來(lái), 實(shí)現(xiàn)了在硬件物理模型搭建成功 之前, 即可在計(jì)算機(jī)上完成原理圖設(shè)計(jì)、 電路分析與仿真、 處理器代碼調(diào)試及實(shí) 時(shí)仿真、系統(tǒng)測(cè)試、以及功能驗(yàn)證。二、KEIL與Proteus結(jié)合搭建仿真平臺(tái)KEIL 本身帶有調(diào)試、軟件仿真,但并沒(méi)有跟硬件結(jié)合起來(lái),因此,即使軟件調(diào)試運(yùn)行的再好,也沒(méi)辦法跟驗(yàn)證是否適合于硬件,因此將KEIL軟件與Proteus 仿真軟件結(jié)合,搭建仿真平臺(tái),通過(guò)繪制硬件原理圖,調(diào)用實(shí)際的仿真工具,通 過(guò)在 KEIL 中對(duì)程序的調(diào)試,直接就可以輸出測(cè)試在硬件原理圖中的運(yùn)行效果, 觀測(cè)輸出結(jié)果的正確與否來(lái)判斷我們編寫的應(yīng)用程序的可行性和硬件電路的可 行性,
47、做到完全未接觸到物理硬件器件時(shí)就已經(jīng)完成了仿真調(diào)試工作。 為后續(xù)搭 建硬件平臺(tái),測(cè)試硬件電路打下良好的基礎(chǔ)。在調(diào)試過(guò)程中我們會(huì)講解具體的仿真器件的使用,調(diào)試方法和步驟,讓同學(xué)們做到有的放矢,輕松自如的學(xué)習(xí)、實(shí)踐和操作這兩款軟件。PROTEL99SE制電路板設(shè)計(jì)軟件印制電路板為硬件電路的實(shí)現(xiàn)搭建了一個(gè)良好的平臺(tái), 因此一款印制電路板設(shè)計(jì)的好壞直接關(guān)系到我們是否能實(shí)現(xiàn)硬件原理圖的功能。 以下是整個(gè)印制電路板的設(shè)計(jì)流程。我們的任務(wù)就是讓同學(xué)們一天時(shí)間學(xué)會(huì)PROTEL99SE業(yè)級(jí)的原理圖繪制和印制板設(shè)計(jì),做到游刃有余,輕松自如。第一課:元件庫(kù)制作1. 創(chuàng)建相關(guān)工作目錄;2. 下載安裝軟件;3. 制作
48、SCH 元件庫(kù);4. 制作 PCB 元件庫(kù)。第二課:原理圖和PCB®作1. 設(shè)計(jì)原理圖的準(zhǔn)備工作;2. 添加元件庫(kù);3. 頁(yè)面設(shè)置,圖紙?jiān)O(shè)置;4. 設(shè)計(jì)原理圖(層次原理圖設(shè)計(jì))5. 自動(dòng)編號(hào);6. DRg能;7. 全局更改功能添加封裝;8. 輸出原件清單;9. PCBS計(jì)準(zhǔn)備工作;10. 規(guī)劃版框;11. 設(shè)置安裝孔;12. 導(dǎo)入網(wǎng)絡(luò)表;13. 原理圖交互布局;14. 布線規(guī)則設(shè)置;15. 自動(dòng)布線;16. 手工布線;17. 布線推擠;18. 添加文字;19. PCB 鋪銅;20. PCB DRC;第三課:相關(guān)經(jīng)驗(yàn)介紹1. 如何把大的 IC 在 PROTEL99SE 中分開做;2.
49、如何在Protel99SE PCB 中新增加一個(gè)元件;3. 如何在PROTEL99SE PCB文件中快速提取封裝;4. PROTEL 如何打開 ORCAD 原理圖文件;5. AD8 如何使用 99SE 的庫(kù);6. 四層板和多層板的設(shè)計(jì)方法;7. PROTEL99SE 輸出 CAM 的方法;8. 英文版 99SE 如何加漢字;9. PROTEL 另外一種鋪銅的方法;10. PROTEL99SE 如何為沒(méi)有網(wǎng)絡(luò)的PCB 添加網(wǎng)絡(luò);11. 在PCB中加入圖片;12. 如何在PCB中制作出方孔;13. AD6.9中如何使用PROTEL99SE的原件庫(kù);第四章 趣味電子產(chǎn)品設(shè)計(jì)與制作一、教學(xué)目的和要求要
50、求學(xué)生在掌握上述已有教學(xué)內(nèi)容的基礎(chǔ)上,實(shí)際動(dòng)手設(shè)計(jì)制作2、3款小型電子產(chǎn)品。做到獨(dú)立設(shè)計(jì)項(xiàng)目書編制、硬件器件選型、電路原理圖繪制、印制 電路板設(shè)計(jì)制作、程序編制、軟件仿真、搭載焊接硬件電路、調(diào)試實(shí)現(xiàn)其功能。二、教學(xué)重點(diǎn)2.1原理圖的論證實(shí)現(xiàn)、硬件器件的選型2. 2運(yùn)用設(shè)計(jì)軟件進(jìn)行原理圖繪制、PCB印制板設(shè)計(jì)、電路仿真等 三、教學(xué)難點(diǎn)如何將整個(gè)設(shè)計(jì)項(xiàng)目從頭到尾設(shè)計(jì)制作完成,培養(yǎng)具備整體項(xiàng)目設(shè)計(jì)思維和能力。實(shí)作電子產(chǎn)品1電子時(shí)鐘軟硬件設(shè)計(jì)1、電子時(shí)鐘硬件電路設(shè)計(jì)任何電子產(chǎn)品設(shè)計(jì)都無(wú)外乎從硬件和軟件兩方面來(lái)考慮。兩者相互之間是有機(jī)配合,當(dāng)兩者配合良好時(shí)就是產(chǎn)品設(shè)計(jì)成功時(shí)。硬件設(shè)計(jì)綜合考慮的因素較多,
51、 按照項(xiàng)目設(shè)計(jì)研發(fā)的要求,應(yīng)該首先根據(jù)市場(chǎng)需求初步設(shè)計(jì)電子時(shí)鐘產(chǎn)品應(yīng)該具 備的基礎(chǔ)功能;其次完善項(xiàng)目設(shè)計(jì)書;再次考慮成本、效率、和可行性問(wèn)題來(lái)對(duì) 硬件器件進(jìn)行選型;然后設(shè)計(jì)硬件電路,通過(guò)繪制硬件電路圖來(lái)實(shí)現(xiàn);再未搭建 物理硬件之前進(jìn)行硬件電路的仿真(需結(jié)合后續(xù)編寫的控制程序共同完成);最后設(shè)計(jì)印制電路板作為硬件電路搭建的平臺(tái)。 本次電子時(shí)鐘產(chǎn)品設(shè)計(jì)的硬件電路 如圖1所示。尸二二 HL F 二二 f*2! FA圖1電子時(shí)鐘硬件電路圖L.nHXI: i NWId r i TTiI I WI7 imIf I M I' MGIrIr111T lr-ll;u,-«>T32、電子時(shí)
52、鐘軟件設(shè)計(jì)控制程序的編寫無(wú)疑是對(duì)一個(gè)人綜合邏輯思維能力的一次考驗(yàn),需具備良好的數(shù)學(xué)邏輯思維能力,良好的程序語(yǔ)言編寫基礎(chǔ),掌握一定的編寫技巧。首先是 根據(jù)電子鐘實(shí)現(xiàn)的功能和已經(jīng)做了的硬件元器件選型進(jìn)行項(xiàng)目任務(wù)書編制;其次根據(jù)任務(wù)書繪制程序流程框圖;再次根據(jù)程序流程框圖的定義進(jìn)行 C應(yīng)用程序的 編制;然后調(diào)試應(yīng)用程序,并借助仿真軟件一起聯(lián)調(diào),最后在無(wú)任何錯(cuò)誤的情況 下搭載硬件電路,焊接元器件,燒寫下載應(yīng)用程序,調(diào)試實(shí)現(xiàn)其功能。電子時(shí)鐘軟件設(shè)計(jì)的程序流程框圖如圖 2所示。定時(shí)器0中斷入口時(shí)間及日期運(yùn)行處理按鍵處理返回主函數(shù)結(jié)果顯示圖2程序流程框圖實(shí)作電子產(chǎn)品2數(shù)字溫度計(jì)軟硬件設(shè)計(jì)1、數(shù)字溫度計(jì)硬件電
53、路設(shè)計(jì)用一片DS18B20構(gòu)成測(cè)溫系統(tǒng),測(cè)量的溫度精度達(dá)到0.1度,測(cè)量的溫度的 范圍在一20度到+50度之間,用4位數(shù)碼管顯示出來(lái)。具體的硬件電路圖如 圖3所示。4DS18B2OPidVCCPl.lMOPl JPCIPJ JP02PI 4P03Pl .5Pfi4Pl.d Pl:PC 5K6RSIA'PDPt' 7P3 .( RxDEA'VppPMlxALt PROGP: 2INI0PSENP3 3INT1P2.7Pi.4 10P2.6pr F門5P3.d WBP2.4巴RDP2JXFAI2P?2XFAL1P2.1GNDP2.01 TT TT u TT TF 1_ IT
54、 n=AT89s52圖3數(shù)字溫度計(jì)硬件電路圖DS18B20 數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1Wire,即單總線器件,具有 線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一 根通信線,可以掛很多這樣的數(shù)字溫度計(jì)。DS18B20產(chǎn)品的特點(diǎn)(1)、只要求一個(gè)I/O 口即可實(shí)現(xiàn)通信。(2)、在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列 號(hào)。(3)、實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。(4)、測(cè)量溫度范圍 在一55°C到+125。C之間。(5)、數(shù)字溫度計(jì)的分辨率用戶可以從 9位到12位 選擇。(6)、內(nèi)部有溫度上、下限告警設(shè)置。DS18B20詳細(xì)弓唧功能描述1 GND地信號(hào);2 DQ數(shù)據(jù)輸入/輸出引腳。開漏 單總線接口弓I腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源;3 VDD可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。DS18B20的使用方法。由于DS18B20采用的是1Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙 向傳輸,而對(duì)AT89S51單片機(jī)來(lái)說(shuō),我們必須采用軟件的方法來(lái)模擬單總線的 協(xié)議時(shí)序來(lái)完成對(duì)DS18B20芯片的訪問(wèn)。由于DS18B20是在一根I/O線上讀
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蘇北四市生物試題及答案
- 2025年鎮(zhèn)江房地產(chǎn)市場(chǎng)區(qū)域分化現(xiàn)狀與投資機(jī)遇深度分析報(bào)告
- 2025年主題公園市場(chǎng)發(fā)展態(tài)勢(shì)報(bào)告:品牌競(jìng)爭(zhēng)力評(píng)估與行業(yè)趨勢(shì)
- 班組長(zhǎng)工作述職報(bào)告
- 網(wǎng)絡(luò)直播行業(yè)自律規(guī)范與內(nèi)容監(jiān)管效果評(píng)估研究報(bào)告
- 安全工程師考試內(nèi)容解析試題及答案
- 電商綠色物流智能化與自動(dòng)化技術(shù)應(yīng)用報(bào)告
- 紅棋考試題及答案
- 工會(huì)考試知識(shí)試題及答案
- 教育資源整合的反思試題及答案
- 汽車修理工高級(jí)理論知識(shí)
- 律師實(shí)務(wù)訓(xùn)練材料
- 《社會(huì)職業(yè)大調(diào)查》 第一課時(shí)(教案)-三年級(jí)勞動(dòng)北師大版
- 橋架支架計(jì)算表
- Unit3OnthemoveDevelopingideasRunningintoabetterlife教學(xué)設(shè)計(jì)-高一下學(xué)期外研版英語(yǔ)
- 生物航煤行業(yè)前景
- YS/T 819-2012電子薄膜用高純銅濺射靶材
- GB/T 3961-1993纖維增強(qiáng)塑料術(shù)語(yǔ)
- 學(xué)校項(xiàng)目工程監(jiān)理規(guī)劃
- 高考語(yǔ)文答題思維導(dǎo)圖
- 設(shè)備檢維修作業(yè)票填寫模板
評(píng)論
0/150
提交評(píng)論