第一篇:《單片機原理與應用設計》總結
單片機原理與應用設計
第一章 單片機概述
在一塊半導體硅片上集成了中央處理單元(CPU)、存儲器(RAM/ROM)、和各種I/O接口的集成電路芯片由于其具有一臺微型計算機的屬性,因而被稱為單片微型計算機,簡稱單片機。單片機主要應用于測試和控制領域。
單片機的發展歷史分為四個階段。1974—1976年是單片機初級階段,1976—1978年是低性能單片機階段,1978—1983年是高性能單片機階段,期間各公司的8位單片機迅速發展。1983至現在是8位單片機鞏固發展及16位、32位單片機推出階段。單片機的發展趨勢將向大容量、高性能、外圍電路內裝化等方面發展。
單片機的發展非常迅速,其中MCS-51系列單片機應用非常廣泛,而在眾多的MCS-51單片機及其各種增強型、擴展型的兼容機中,AT89C5x系列,尤其是AT89C51單片機成為8位單片機的主流芯片之一。
第二章 89C51單片機的硬件結構
89C51單片機的功能部件組成如下:8位微處理器,128B數據存儲器片外最多可外擴64KB,4KB程序存儲器,中斷系統包括5個中斷源,片內2個16位定時器計數器且具有4種工作方式。1個全雙工串行口,具有四種工作方式。4個8位并行I/O口及特殊功能寄存器。
89C51單片機的引腳分為電源及時鐘引腳、控制引腳及I/O口。電源為5V供電,P0口為8位漏極開路雙向I/O口,字節地址80H,位地址80H—87H。可作為地址/數據復用口,用作與外部存儲器的連接,輸出低8位地址和輸出/輸入8位數據,也可作為通用I/O口,需外接上拉電阻。P1、P2、P3為8位準雙向I/O口,具有內部上拉,字節地址分別為90H,A0H,B0H。其中P0、P2口可作為系統的地址總線和數據總線口,P2口作為地址輸出線使用時可輸出外部存儲器的的高8位地址,與P0口輸出的低8位地址一起構成16位地址線。P1是供用戶使用的普通I/O口,P3口是雙向功能端口,第二功能很重要。
89C51的CPU包括運算器和控制器,其中運算器包括ALU、累加器A、位處理器、程序狀態字寄存器PSW及兩個暫存器。控制器包括程序計數器、指令寄存器、指令譯碼器、定時及控制邏輯電路等,其主要任務是識別指令,并根據指令的性質控制單片機個功能部件。
89C51的存儲器空間分為程序存儲器、內部數據存儲器、特殊功能寄存器、位地址空間及外部數據寄存器。外部數據存儲器與外擴的I/O口統一編址。89C51復位后程序存儲器PC的內容為0000H,P0—P3口為FFH,SP為07H,程序從0000H開始執行。5個中斷源的中斷入口地址為:INT0是0003H,T0是000BH,INT1是0013H,T1是001BH,串行口為0023H。通常在這5個中斷入口地址處都存放一條跳轉指令條向中斷服務程序。
89C51的時鐘信號有內部時鐘方式和外部時鐘方式兩種,指令的執行是以時鐘周期為時序基準,12個時鐘周期為一個機器周期。
第三章 89C51的指令系統
89C51的尋址方式有7種。
1、寄存器尋址方式,即操作數在寄存器中。例如:MOVA,Rn2、直接尋址方式,指令中直接以單元地址的形式給出操作數,該單元地址中的內容就是操作數。例如:MOVA,40H3、寄存器間接尋址方式,寄存器中存放的是操作數的地址,為區別寄存器尋址和寄存器間接尋址,在寄存器間接尋址方式中應在寄存器名稱前面加前綴“@”。例如:MOVA,@Ri;i=0或
14、立即尋址方式,即直接在指令中給出操作數,為與直接尋址中的直接地址加以區別,在立即數前加“#”。例如:MOVA,#40H5、基址寄存器加變址寄存器間接尋址,用于讀程序存儲器中的數據到累加器中。以DPTR或PC作為基址寄存器,以累加器A作變址寄存器并以兩者內容相加形成16位地址作為操作數的地址。例如:MOVCA,@A+DPTR6、位尋址方式,位尋址指令中可以直接使用位地址。例如:MOVC,40H7、相對尋址方式,目的地址=轉移指令所在地址+轉移指令字節數+rel;其中rel是一個帶符號的8位二進制數補碼數,范圍為-128~+127。
89C51指令系統共111條指令,按功能分為5類:
1、數據傳送類(28條)。
2、算術運算類(24條)。
3、邏輯操作類(25條)。
4、控制轉移類(17條)。
5、位操作類(17條)。
第四章 89C51匯編語言程序的設計與調試
匯編語言語句有兩種類型:指令語句和偽指令語句。指令語句匯編產生指令代碼。偽指令語句是在匯編語言源程序中向匯編程序發出的指示信息,告訴它如何完成匯編工作的。偽指令不產生相應的機器代碼。
匯編語言語句的四分段格式:標號字段:操作碼字段 操作數字段 ;注釋字段
注:符號$用于表示該轉移指令操作碼所在地址,例如:JNB F0,$
常用偽指令:ORG匯編起始地址命令,END匯編終止命令,DB定義字節命令,DW定義數據字命令,EQU賦值命令
匯編語言程序設計步驟:
1、分析問題確定算法 2,、根據算法畫程序框圖
3、分配內存工作區及有關端口地址
4、編寫程序
5、上機調試
匯編語言程序的基本結構分:順序結構、分支結構、循環結構、子程序、中斷服務子程序。
各類程序設計簡介:
1、子程序,是一種能完成某一特定任務的程序段。
注:(1)子程序子程序第一條指令前必須有標號
(2)兩條子程序調用指令:絕對調用指令ACALL addr11;長調用指令LCALL adder16
(3)子程序結構中必須用到堆棧,但現場保護與恢復不是必須的(4)子程序返回主程序最后一條指令必須是RET2、查表程序,查表就是根據自變量x,在表格中尋找y,使y=f(x);兩條查表指令為:MOVCA,@A+DPTR和MOVCA,@A+PC3、關鍵字查找程序,有兩種(1)順序檢索,要檢索的表是無序的。(2)對分檢索,要檢索的數據表已排好序,按對分原則取數進行關鍵字比較。
4、數據極值查找程序,在指定數據區中找出最大值或最小值。
5、數據排序程序,將一批數按降序或升序排列。最常用的排序算法是冒泡法。
6、分支轉移程序設計,分無條件分支轉移和有條件分支轉移。有條件分支轉移程序又分單分支選擇結構和多分支選擇結構。
7、循環程序,分循環計數控制結構和條件控制結構
第五章 89C51的中斷系統
89C51有5個中斷請求源,具有兩個中斷優先級,可實現兩級中斷服務程序嵌套。5個中斷源為:
(1)/INT0—外部中斷請求0。
(2)/INT1—外部中斷請求1。
(3)定時器/計數器T0計數溢出中斷請求。
(4)定時器/計數器T1計數溢出中斷請求。
(5)串行口中斷請求。
中斷請求標志位分別有特殊功能寄存器TCON和SCON的相應位鎖存。TCON為定時器/計數器的控制寄存器,字節地址88H,可位尋址。
SCON為串行口控制寄存器,字節地址98H,可位尋址。
IE為中斷允許寄存器,字節地址A8H,可位尋址。
IP為中斷優先級寄存器,字節地址B8H,可位尋址。注:在同時收到幾個同一優先級的中斷請求時,哪一個中斷請求能優先得到響應取決于內部的查詢順序。外部中斷0中斷級別最高,串行口中斷級別最低。
響應中斷請求的條件:
(1)總中斷允許打開IE=1;
(2)該中斷源發出中斷請求;
(3)該中斷源中斷允許位=1;
(4)無同級或更高級中斷正在被服務;
在一個單一中斷系統里,89C51單片機對外部中斷請求的響應時間在3~8個機器周期。外部中斷請求有兩種觸發方式:電平觸發方式和跳沿觸發方式(負跳變)。但跳沿觸發方式,輸入的負脈沖寬度至少要保持一個機器周期。
中斷響應的撤銷:兩個定時器計數器的中斷請求及外部中斷跳沿方式的請求是自動撤銷。電平觸發的外部中斷請求,其中斷請求標志自動撤銷,中斷請求信號的低電平需自己處理。串行口中斷請求的撤銷只能使用軟件方法。
第六章 89C51的定時器/計數器
89C51內有兩個16位的硬件增1定時器/計數器T0、T1,分別由特殊功能寄存器TH0、TL0,TH1、TL1構成。都具有定時器、計數器兩種工作模式及四種工作方式(方式0~3)。其中特殊功能寄存器TMOD用于選擇T0、T1的工作模式和工作方式。TCON用于控制T0、T1的啟動和停止計數,同時包含T0、T1的狀態。TMOD、TCON均由軟件來設置。計數模式是對加在T0(P3.4)和T1(P3.5)兩個引腳上的外部脈沖進行計數。定時模式是對單片機的時鐘信號經片內12分頻后的脈沖計數。
TMOD字節地址89H不能位尋址。其中M1、M0為工作方式選擇位,00—方式0為13位定時器/計數器。由TLx的低5位和THx的高8位構成。11—方式1為16位定時器/計數器。10—方式2為8位自動重裝定時器/計數器。11—方式3,僅適用于T0,此時T0分成兩個8位計數器TL0、TH0,T1停止工作,TL0可計數/定時,TH0被固定為一個8位定時器(不能作為外部計數模式)。
注:T0處于工作方式3時,T1可定位方式0~2,用來作為串行口的波特率發生器,或不需要中斷的場合。
定時器/計數器工作于計數模式時,輸入信號產生負跳變時計數值增1。外部輸入的計數脈沖的最高頻率為系統震蕩器頻率的1/24。
注:在讀運行中的定時器/計數器的計數值時,應先讀THx,后讀TLx,再讀
THx,若兩次讀得的THx相同,則讀得正確。
第七章 89C51的串行口
89C51單片機片內有一個可編程的全雙工的異步通信串行口,它有兩個物理上獨立的接收發送緩沖器SBUF,共用同一個字節地址99H。它有四種工作方式,波特率可通過軟件設置片內的定時器/計數器控制。串行口的控制寄存器有兩個SCON、PCON。SCON中的SM0、SM1兩位為工作方式選擇位,00—方式0,同步移位寄存器方式(用于擴展I/O口)。01—方式1,8位異步收發,波特率可變(由定時器控制)。10—方式2,9位異步收發,波特率為fosc/64或fosc/32。11—方式3,9位一步收發,波特率可變(由定時器控制)。PCON中的SMOD位為波特率選擇位。89C51的串行口用于串行通信時要占用定時器T1作為波特率發生器。
多個89C51單片機可利用串行口進行多機通信。串行口控制寄存器中的SM2位即為多機通信控制位。方式2和方式3中的第9位數據在多機通信和雙機通信奇偶校驗中很重要。
根據89C51的雙機通信距離和抗干擾性的要求可選擇TTL電平傳輸,或選擇RS-232C、RS-422A、RS485串行接口進行串行數據傳輸。
第八章 89C51單片機擴展存儲器的設計
89C51采用的是程序存儲器空間和數據存儲器空間分開的哈弗結構。最大可分別外擴64KB的存儲空間,其中I/O接口芯片中的寄存器也作為數據存儲器的一部分。
要進行系統擴展首先要構造系統總線,按功能常把系統總線分為3組,地址總線、數據總線、控制總線。以P0口作為低8位地址/數據總線,以P2口作為高8位地址線,形成16位地址線,可尋址64KB范圍。控制信號線有引腳/PSEN、/RD、/WR、ALE、/EA。
為使外擴存儲器空間分配時一個存儲器單元對應一個地址,實地址不發生重疊以避免數據沖突就需要考慮存儲器的地址空間分配問題。89C51必須進行兩種選擇:一是“片選”,二是在片選基礎上進行“單元選擇”。實現片選有兩種方法:線性選擇法和地址譯碼法。常用譯碼芯片有74LS138(3-8譯碼器)、74LS139(雙2-4譯碼器)、74LS154(4-16譯碼器)。在外擴存儲器的接口設計中,89C51單片機與存儲器的連接就是地址線與地址引腳,數據線與數據引腳的連接,關鍵要做好控制線的連接。
89C51單片機P0口數據線和低八位地址線,為將它們分離出來須在單片機外加地址鎖存器,如74LS373、74LS573。
只讀存儲器簡稱ROM,程序存儲器的擴展使用比較多的是EPROM、EEPROM。EPROM的典型芯片是27系列產品。單片機系統常用RAM芯片的典型型號有6616、6264、62128、62256。
第九章 89C51擴展I/O接口的設計
雖然89C51本身已有4個I/O口,但是真正用作I/O口線的只有P1的八位I/O線及P3口的某些位線。在多數應用系統中89C51單片機都需要擴展I/O口。89C51擴展I/O接口電路應滿足以下要求:
1、實現和不同外設的速度匹配。
2、輸出數據鎖存。
3、輸入數據三態緩沖。
每個I/O接口中的端口都要有地址,常用I/O端口編址方式有兩種:獨立編址、統一編址。89C51單片機使用的是統一編址。
為實現和不同外設的速度匹配,I/O接口必須根據不同的外設選擇恰當的I/O
數據傳送方式,有三種:同步傳送、異步傳送、中斷傳送。目前常用的外圍I/O接口芯片有:82C55、81C55。
82C55具有3個8位的并行I/O口,三種工作方式,可通過編程改變其功能。方式0—基本輸入/輸出。方式1—選通輸入/輸出。方式2—雙向傳送(僅PA口)。81C55包含256B的RAM存儲器,RAM的存取時間為400ns,兩個可編程的8位并行口PA和PB,一個可編程的6位并行口PC,以及一個14位的減1計數器。PA和PB口可工作與基本輸入/輸出方式(同82C55的方式0)或選通輸入/輸出方式(同82C55的方式1)。81C55有兩種工作方式:存儲器方式和I/O方式。
在89C51單片機系統中有時還需要使用廉價的74LSTTL芯片來擴展并行I/O口。若串行口未被使用,使用串行口來擴展并行I/O口也是一種較好的擴展方案。
第十章 89C51與鍵盤、顯示器、撥盤、打印機的接口設計
大多數的單片機應用系統,都需要配置輸入外設和輸出外設。常用的輸出外設有LED顯示器、LCD顯示器、打印機等,常用輸入外設有鍵盤、BCD碼撥盤等。
LED分共陽極和共陰極兩種,為8段或七段。LED顯示器有兩種工作方式:靜態顯示方式和動態顯示方式。
在單片機系統中常用的鍵盤有兩種:機械式按鍵鍵盤和薄膜鍵盤。常用鍵盤接口分兩種:獨立式鍵盤接口和行列式鍵盤接口。鍵盤的工作方式分三種:編程掃描方式、定時掃描方式、中斷掃描方式。按鍵的確認一定要注意按鍵的消抖。在單片機應用系統設計中,一般把鍵盤和顯示器放在一起考慮。此時可利用I/O芯片81C55或82C55來實現。也可用專用可編程鍵盤/顯示器接口電路芯片Intel 8279和HD7279A。8279芯片是動態循環掃描顯示方式,與89C51的接口需要8位數據線、段驅動器、位驅動器,還需擴充譯碼器。HD7279芯片可同時驅動8個共陰極LED顯示器和64鍵的矩陣鍵盤,也是采用動態循環掃描顯示方式,與89C51單片機間采用串行接口方式,僅占用4條口線,內部含有譯碼器及驅動器,能自動消抖和識別鍵值。性能要優于8279芯片。
LCD顯示器具有功耗低,抗干擾能力強等優點,按排列形狀可分為:字段型、點陣字符型、點陣圖形型。在單片機應用系統中常用點陣字符型LCD顯示器,使用時必須有相應的LCD控制器、驅動器來對LCD進行掃描、驅動,還要一定 空間的RAM和ROM來存儲寫入的命令和顯示字符的點陣。
在單片機應用系統設計中多使用微型點陣式打印機,常用的有TPuP-40A/16A、GP16及XLF嵌入儀器面板上的漢字微型打印機。有時輸入一些控制參數使用數字撥盤簡單方便,最方便的撥盤是十進制輸入、BCD碼輸出的BCD碼撥盤。
第十一章 89C51單片機與D/A、A/D轉換器的接口
D/A為數模轉換器,主要技術指標為分辨率、建立時間和精度。常用的8位D/A轉換器有DAC0832,它具有兩個輸入數據寄存器,電流輸出,建立時間為1us,可雙緩沖輸入、單緩沖輸入或直接數字輸入,單一電源供電,功耗為20mW。DAC0832可以單、雙極性電壓輸出。設計89C51與DAC0832的接口電路時,常用單緩沖方式或雙緩沖方式的單極性輸出。當8位DAC的分辨率不夠用時,可以采用高于8位的DAC。如12位分辨率的電壓輸出型D/A轉換器AD667。A/D為模數轉換器,其種類很多,廣泛應用于單片機應用系統的主要有:逐次比較型轉換器、雙積分型轉換器、∑-△式轉換器。主要技術指標為轉換時間
和轉換速率、分辨率、轉換精度。常用的8位A/D轉換器ADC0809是一種逐次比較型8路模擬輸入、8位數字量輸出的A/D轉換器。ADC0809雖有8路模擬通道可以同時輸入8路模擬信號,但每個瞬間只能轉換一路。8位ADC不夠用時可使用12位A/D轉換器AD574A,它是12位逐次比較型A/D轉換器。轉換時間為15us,轉換精度≤0.05%。具有三態緩沖電路,片內有高精度的基準電壓源和時鐘電路,所以AD574A可在不需要外加電路和時鐘信號的情況下完成A/D轉換。
雙擊分型ADC由于兩次積分時間比較長,所以AD轉換速度慢,但精度可以做的比較高,對周期變化的干擾信號積分為零,抗干擾性能較好。常用的有三位半的雙積分型AD轉換器MC14433和四位半的雙擊分型AD轉換器ICL7135。第十二章 單片機的串行擴展技術
目前,單片機系統中使用的串行擴展方式主要有PHILIPS公司的I2C總線,DALLAS公司的單總線、Motorola公司的SPI串行外設接口。
單總線只有一條數據輸入/輸出線DQ,總線上所有器件都掛在DQ上,電源也通過這條線供給。單總線器件如:DS18B20。
SPI總線允許單片機與多個廠家生產的標準外圍設備直接相連,以串行方式交換信息。SPI使用四條線:串行時鐘SCK、主器件輸入/從器件輸出數據線MISO、主器件輸出/從器件輸入數據線MOSI和從器件選擇線/CS。具有SPI接口的器件如:存儲器MC2814、顯示驅動器MC14499、MC14489等。
I2C總線用兩條連線實現全雙工同步數據傳送,其中一條數據線SDA,一條時鐘線SCL,所以連接到I2C總線上器件的數據線都接到SDA線上,各器件時鐘線均接到SCL線上。它的運行由主器件控制。對于不帶I2C總線接口的單片機可以使用普通I/O口采用軟件模擬I2C總線時序的方法。具有I2C總線接口的器件如:PCF8553、MAX127/128、MAX517/518/
519、AT24C02等。第十三章 89C51單片機應用系統的設計與開發
單片機應用系統設計的步驟有四步:
(1)需求分析,方案論證和總體設計。
(2)器件選擇,電路設計制作,數據處理,軟件的編制。
(3)系統調試與性能測定。
(4)文件編制。
應用系統的硬件設計應注意以下幾點:
(1)盡可能采用功能強的芯片。
(2)以軟代硬。
(3)工藝設計。
應用系統的軟件總體框架設計應從以下幾方面加以考慮:
(1)根據軟件功能要求,將系統軟件分成若干獨立部分。
(2)各功能程序實行模塊化。子程序化。
(3)在編寫軟件之前,應繪制出程序流程圖。
(4)要合理分配系統資源,包括RAM、ROM、定時器/計數器、中斷源等。對于實時數據采集系統,為消除傳感器通道中的干擾信號,除硬件上采用模擬濾波器外還可以采用軟件濾波。軟件濾波方法一般有:算術平均濾波、滑動平均濾波、中位值濾波、去極值平均濾波等。
單片機系統由于干擾而使程序發生混亂、亂飛時,必須采用將程序納入的正規措施,如指令冗余、軟件陷阱等。
第二篇:《單片機原理及應用》課程
《單片機原理及應用》課程
自評報告
陜西理工學院電氣工程系《單片機原理及應用》課程組 二○一○年三月
目 錄
第一部分 課程簡介
第二部分
課程內容與體系的改革 第三部分 實驗教材
第四部分 自評結果和評分依據 第五部分 存在的主要問題及整改措施 附件:自評評分依據 《單片機原理及應用》課程自評報告
第一部分 課程簡介
單片機技術廣泛地應用于工業控制、智能儀器儀表、機電一體化產品、家用電器等各個工業領域。因此,單片機原理及應用是工科院校各專業學生的一門重要的應用技術課程,對電類學生尤為重要,通過該課程可以了解工業高新技術,培養綜合的工程設計能力。學生在課程設計、畢業設計、科研項目中會廣泛應用到單片機知識,而且,進入工作后,更會廣泛接觸到單片機的工程項目。近幾年,一些用人單位直接把單片機應用技術測試作為人才選用的條件。顯然,提高該門課程的教學質量,對培養學生的綜合應用能力,提升學生在人才需求市場中的競爭能力,具有重要意義。
《單片機原理及應用》課程是自動化、電氣工程及其自動化、計算機科學與技術等專業的一門專業技術基礎課。單片機應用技術包含著廣泛的內容(基本原理、接口技術、開發方法、開發工具、控制技術等),而且構成完整的知識體系。也就是說,缺少某一個方面或某一個環節的知識,將會影響實踐應用能力。再者,單片機產品及其應用技術發展日新月異。在一門課程的有限教學時間內,如何讓學生比較系統全面的掌握單片機應用知識,同時能反映比較新的應用技術,培養學生的工程設計能力,必須加強課程建設力度,在課程內容與課程體系上進行重大改革。
《單片機原理及應用》課程在自動化、電氣工程及其自動化、計算機科學與技術3個本、專科專業中開設學時為40-60學時。多年來,該課程組師資隊伍建設穩步提高,教學和實驗條件逐步完善,現已形成了相對穩定的較高教學水平的師資隊伍和完全滿足實驗教學條件的實驗平臺。
目前,《單片機原理及應用》課程組共有6名課程主講教師和多位實驗技術人員,其中教授1人、副教授2人、講師3人,研究生5人,實驗師多人,承擔校內相關3個專業本、專科學生的單片機原理及應用課程教學與實驗任務。
《單片機原理及應用》課程組在多年的具體教學與實踐過程中,在課程建設和教學改革方面取得了較為顯著的成效。從2000年開始,課程改革小組注重教育思想和教學觀念的轉變,開展了課程教學內容、課程體系、教學方法及教學手段的改革研究與實踐,對課程的教學內容與體系進行了優化。目前已初步建立了以培養學生工程素質和綜合應用能力為教學目標的新的課程體系,在教材建設、實踐性教學環節建設方面取得了可喜的成果。李建忠教授把課程組研究的理論成果變成了現實成果,編著的《單片機原理及應用》(第二版被評為國家十一五規劃教材)一書被全國30多個省市的100多所高校采用,在國內產生較大影響。組織的實踐教學環節在本院多屆學生中也取得了顯著的成效。
《單片機原理及應用》教學儀器設備豐富,實驗開出率100%,同時開設一定的設計性、綜合性實驗。實驗室規章制度健全,管理人員到位,教學服務及時,為實驗課程教學提供了有力保障。
隨著“單片機原理及應用”課程內容和課程體系改革的進行,課程教學質量逐步明顯提高。伴隨著教學質量的提高,浮現出了許多科研項目。例如,智能型家用有毒氣體探測語音報警呼救裝置、機車防帶電過分相裝置、消失模澆注充型速度的微機化測試的研制,科研項目的進行又推動了教學質量的進一步提高。教師在教學中,結合自己的科研生動地講解原理、方法、技術。近幾年課程組成員結合自己的科研項目,在單片機應用技術方面發表論文多篇。
第二部分 課程內容與體系的改革
教材是教育思想、教育理念體現的載體,是一門課程教學內容與體系、教學方法及手段的集中表現。一本好的教材不能局限在知識的傳遞上,還應表現在科學思維方法、獲取知識的方法、綜合能力和創新設計能力培養方法的傳遞上,便于運用新的教學方法和手段組織實施教學。這是課程組改革研究的一個理論成果。
在理論研究的指導下,確定以教材建設為龍頭進行課程內容與體系的優化。由于單片機應用技術知識包含的內容廣泛,單片機產品及其應用技術發展速度快,如何在有限的計劃課時內讓學生比較完整的掌握單片機應用技術知識體系,同時了解一些比較新應用技術,吸取了國內外先進的教學思想和教學經驗,廣泛收集和查閱國內外優秀教材和有關教學資料,又結合我們多年積累的教學經驗和教訓,比較全面地考慮了各種因素,對課程內容與課程體系進行整體優化,編著了《單片機原理及應用》(第二版被評為國家十一五規劃教材)、《單片機原理及應用實踐教程》,形成了一套新的課程教學體系。教材內容體系進行了優化組合。既體現了系統全面,包含了基本原理、接口技術、開發方法、開發工具、控制技術等,又進行了濃縮精練,論述嚴謹透徹。教材內容的組織上采用“以點見面,觸類旁通”的精練濃縮方法。例如,在每一章節前都概述出相關的一般性內容和方法,然后再以具體的內容或典型的實例進行說明。始終貫穿應用觀點。例如,在單片機原理的講解中,著重強調站在應用角度,掌握單片機的功能特性和配置結構。即用戶站在單片機芯片外部看它所提供給用戶的使用功能和資源,達到正確、合理的使用單片機所提供的硬、軟件資源。這不僅給學生強調了達到應用的學習目標,而且給學生樹立了一個學習掌握應用知識的正確學習方法界面。這一點經教學實踐檢驗,取得了良好的教學效果。又例如,在應用技術的講解中,大多數選自生產和科研中的應用實例,使學生學后就能用。注重科學思維方法、獲取知識的方法、綜合能力和創新設計能力的培養方法的傳遞。掌握一門學科知識的學習方法,其實質是找出并抓住學科知識的內在聯系,形成一個完整體系。該書突出了這方面的特色。例如,在指令系統的講述中,大多數教材采取按功能類逐條指令羅列講解,使初學者很難理解記憶。其實,指令系統中有一些操作指令的子集合是具有特征規律的,不同操作指令的子集合之間也具有一些可比性特征規律,在該書的講述中用歸納、類推、類比方法進行縱向歸類,橫向類推、比較。這不僅能使學生掌握知識,而且學習了科學思維方法和學習方法。在講解基礎知識的基礎上,反映新的應用技術成果。例如,緊密結合基礎知識講解了單片機應用程序開發設計方法。
第三部分 實驗教材
在廣泛調研現有實驗教材經驗與問題的基礎上,引入新的教育理念,針對現代工程人才的培養模式、人才素質及能力的要求,課程組認為實驗教材不能局限在對基礎知識的驗證上、不能局限在基本實驗的操作指導上、不能局限在某一門課程知識的動手實踐能力的培養上、不能局限在理論教材的輔助功能作用上,還應給學生提供廣闊的、自由靈活的動手實踐空間,要培養學生在基本理論知識的基礎上能夠吸收、使用新技術方法,培養學生一般的工程實踐能力和創新設計能力,使實驗教材成為相對獨立的綜合實踐能力培養的指導書。在這樣的思想指導下,組織編寫了《單片機原理及應用實踐教程》的,于2001年5月在本院內部印刷使用。在多年的使用中取得了良好的效果。
《單片機原理及應用實踐教程》一書主要具有以下特色:(1)知識的系統完整性與實踐過程的系統完整性并重 實驗內容的編寫上緊密結合理論教學,按照單片機原理及應用課程知識的內在聯系,保持了知識的系統完整性。從宏觀結構上,實驗內容分為單片機系統功能、單片機系統擴展、單片機系統配置和綜合應用四大實驗組。在每個實驗組中又按照基礎→綜合→工程應用的方式安排了多個實驗項目,每個實驗項目中又按照基本原理、知識提要、基本技術、方法論證、實驗結果分析的方式進行組織。這樣,使該書成為學習、掌握單片機原理及應用知識的很有價值的參考書。從實踐應用過程看,該書宏觀上反映了單片機應用系統的開發環境、開發方法、開發過程。在每一個實驗項目中,又反映出了一個單片機應用系統立題概要分析、功能結構論證分析、器件選擇、硬軟件設計、系統調試、性能分析與測試、文檔收集與整理的全過程。使學生能夠學習、掌握到一個單片機應用系統開發設計過程中各個環節的技術方法。
(2)知識掌握和科學思維能力培養并重
在每個實驗項目中都提示出所依據的基本原理知識,所采用的方法和技術,通過實驗來加深對基本知識的理解,達到熟練掌握。在每個實驗項目后,提出一些很有價值的思考問題,主要圍繞實驗現象觀察與分析,培養學生科學細致地觀察與分析問題的方法和能力。每個實驗既給出了參考方案,又要求學生在參考方案的基礎上自行設計、調試,充分發揮學生的主觀能動性和創造力、有意識地培養學生對工程問題的分析與設計方法。每個實驗都要求學生按照嚴格的格式寫出實驗報告,在實驗報告中深入細致地分析、論證有關實驗現象與結果,通過實驗報告的書寫,培養學生嚴謹求實的科學方法和態度。
(3)既面向驗證性實驗又面向開放性、設計性實驗
根據單片機原理與應用的知識結構,實驗內容分為單片機系統功能、單片機系統擴展、單片機系統配置和綜合應用四個實驗組。每個實驗組又按照基本原理、技術、方法的應用,綜合應用、工程設計的思路方式安排了多個實驗項目,為學生提供了廣泛的實驗內容,即可以供課程實驗使用,也可以供開放實驗、設計實驗使用。
(4)實驗教學的目標確定在以下幾個方面:
驗證基本理論、方法和技術。通過驗證性實驗,使學生加深對基本理論、方法和技術理解,能夠熟練應用,并使學生進一步認識到:基本理論、方法和技術來源于實踐,又對實踐有強大的推動作用,在實踐中得到發展,得到創新。
基本實踐能力的培養。基本實踐能力包含:掌握小型單片機應用系統開發研制所采用的基本環境、方法、手段及所使用的儀器設備。
綜合工程實踐能力的培養。綜合工程實踐能力包含:掌握復雜單片機工程應用系統開發研制所采用的先進的環境、方法、手段及所使用的儀器設備,并能進行工程決策分析。
創新設計能力的培養。創新設計能力包含:在一些關鍵的技術環節上能夠激發出超常的思想方法或采用前沿性的技術手段分析解決問題。
(5)實驗教學的實施方式
根據現代工程人才的培養模式、人才素質及能力的要求,我們設計出了形式多樣的實驗教學方式。
指導型實驗。這類實驗納入單片機原理及應用課程的教學計劃和教學大綱,在老師的指導下,進行規定要求實驗,實驗后要寫出實驗報告。實驗目標是基本實踐能力的培養。
開放型實驗。這類實驗是學生根據自己的要求自發地進行實驗,實驗室必須隨時滿足學生的實驗要求。在這種實驗中,學生可根據自己的情況實現多種目標。
設計型實驗。這類實驗學生帶著自己的設計問題,進入實驗室進行調試或測試,一般結合課程設計、畢業設計、大學生科技活動項目進行。實驗要有明確的目標,主要培養學生綜合工程實踐能力和創新設計能力。
第四部分 自評結果和評分依據
為了進一步提高課程教學質量,努力做好課程建設與評估,電氣工程系專門成立了院系、教研室(課程組)兩級評估領導小組,負責對申報課程的指導、監督和審查。課程組全體任課教師認真學習、領會相關課程建設與評估精神,認真對照精品課程建設評估指標體系的各項要求,總結多年來課程建設的成果,結合課程建設過程中存在的實際問題,進行了認真細致地資料整理、自查自評。通過本次自查自評活動,真正達到了“以評促改,以評促建”的目的。
自評結果:Q=102分(≥100),符合并達到了校級精品課程的條件。詳見附件:課程自評表。
第五部分 存在的主要問題及整改措施
1.網絡教學和資源共享方面還需進一步的豐富和完善。實現與本課程相關的信息查詢、輔導答疑、作業練習等多種功能,方便學生網上學習。
2.實驗教學設備更新不夠,試驗教學手段還不夠豐富、不夠先進,理論教學內容和體系還需要進一步整合、優化;
3.進一步加大教學改革力度,轉變教育教學理念,探索高教理論,不斷改進和提高教師的理論與實踐教學方法和手段。
同時還需要認清形勢,剖析自我,虛心向兄弟院校學習先進的課程建設經驗,彌補自己的差距和不足,加快課程建設步伐,使《單片機原理及應用》課程教學全面上臺階、上水平。
附件:自評評分依據 師資結構:19分/20 1.1師資結構:A級,4分/4 課程組職稱結構合理,有教授、副教授、講師、高級實驗師、實驗師共8人,主要由教授、副教授、講師上課。
1.2教學水平:A級,5 分/6 教學水平高,高、中級職稱教師均開課2門以上;教學工作量飽滿,教案齊全;有教改及科研項目。
1.3學術水平:A級,6 分/6近3年發表論文篇,人均6篇;主編、參編教材9部;完成省廳級科研項目3項,校級科研基金項目3項,院教改項目7項。
1.4教風建設:A級,4分/4 教風良好;教研室制度健全,堅持教學研究活動,每年教研活動大于18次,有記錄;能堅持相互聽課、評教;能收集學生對教學的反饋信息,并改進教學;教學組無任何教學事故。教學條件:24分/25 2.1教學大綱:A級,6分/6 教學大綱符合專業培養目標和教學計劃的基本要求,并能結合教學計劃適時修訂、完善;大綱能反映課程體系結構,項目完整,層次清晰,重點、難點突出,要求明確;教學過程中能夠嚴格執行大綱。
2.2教材及教學參考書:A級,7 分/7 選用學校自編國家級規劃教材及相應教學參考書,滿足不同專業的培養計劃要求,使用效果好。
2.3課程教學管理及教學文件:A級,5分/6 教學參考資料豐富、齊全,能反映本課程發展現狀;課程有完整的教學工作總結,教師有教學日歷和教案。
2.4教學設備和手段:A級,6分/6 使用多媒體、板書講解和現場教學等手段;與實驗室共同開發研制有相應的實驗教學設備,且符合本校學生情況,使用效果好,完全能滿足正常的教學需要。3 考核:15分/17 3.1考試說明:A級,3分/3 在教學大綱的指導下,能按要求進行命題考試工作,命題質量高,考分分布合理。3.2題庫(卷庫)建設:B級,4分/5 有與教材配套使用的高質量的試題庫,試題庫完全符合教學要求。3.3命題與評分:A級,4分/4 考試命題形式多樣,有外校試題、教研室組織命題、試題庫組題等,全部為考教分離;有評分標準,流水閱卷,有效控制了評分誤差。3.4試卷分析:B級,3分/5 試題內容體現教學大綱的基本要求,難度適中,有一定的可信度和區分度;成績分布基本合理。4 教學改革:分/13 4.1教改方案:A級,4分/5 在切實可行的教改計劃,且能運用在教學過程中,有一定的總結。4.2教改效果:A級,7分/8 有專業教改項目的實施,完成教改項目7項,教改效果比較顯著,獲校教學成果獎二等獎3項。5 教學效果:21分/25 5.1講課質量:A級,9分/10 根據師生對講課質量的綜合評價,課程組總體講課水平較高。5.2課外指導:A級,5分/6 對學生課外學習有明確具體的要求,并認真落實、檢查;堅持課外輔導、答疑,效果較好。
5.3教學獲獎情況:A級,4分/4近幾年獲院級以上教學成果獎、講課大賽獎、教案評比獎的人數占課題組人數的70%;有畢業生調查信息表,畢業生反映本課程教學效果優良。
5.4學習質量:B級,3分/5 在嚴格組織考試、評分的情況下,學生考試成績真實,客觀反映了學生學習的現狀;學生基本知識掌握較扎實,但綜合解題能力一般。6 特色指標:A級,16分/20(1)兼顧教學的典型性和技術先進性
教學內容的典型性有利于學生理解相關基礎知識,掌握基本原理和方法,觸類旁通。隨著單片機應用技術日異月新的發展,在未來的實際工作中又會廣泛接觸到新技術、新器件。在理論教學和實踐充分考慮了典型性問題,同時在每個實驗的實現方案中又提示學生在典型性問題的基礎上采用一些新器件、新方法自行設計,讓學生接觸一些先進性技術、方法。
(2)基礎訓練與實際應用相結合
在注重單片機原理、實用接口技術的基礎上、還突出教學內容的實踐性和實用性。大多數實驗內容都取材于生產和科研實際。綜合應用實驗集中鍛煉學生了解實際系統要求,設計應用系統的能力。有助于開拓視野,強化工程觀念,培養創新能力和協作精神,提高綜合素質。
(3)注重綜合工程實踐能力和創新設計能力的培養
大多數實驗內容都取材于生產和科研實際,使學生所學就能所用。
每一個實驗項目的實驗過程都突出一個單片機工程應用系統開發設計的各個關鍵技術環節,尤其突出調試方法和手段。每一個實驗項目中都設置了若干問題,讓學生充分發揮主觀能動力和創新思維能力進行調試。每一個實驗項目除給出參考實驗方案外,還提示采用不同的方案、不同的器件、不同的方法自行設計、調試,給學生留下創新發揮的空間。
電氣工程系
《單片機原理及應用》課程組
2010.3
第三篇:單片機原理及應用課程設計
智能電子鐘(LCD顯示)
1、設計內容及要求...............................................................................................2 1.1、設計內容..............................................................................................2 1.2、設計要求..............................................................................................2 1.3、撰寫設計報告......................................................................................2
2、總體方案設計...................................................................................................2 2.1、方案圖................................................................................................2 2.2、面板布置圖.........................................................................................2 2.3、方案討論.............................................................................................3 2.4、明晰任務.............................................................................................4
3、電路原理圖......................................................................................................4
4、程序框圖.........................................................................................................5 4.1、顯示子程序流程圖............................................................................5 4.2、實時時鐘芯片 1302 讀/寫數據流程圖............................................6
5、編程序................................................................................................................6
6、調試....................................................................................................................6 6.1、軟件調試.............................................................................................6 6.2、仿真調試..............................................................................................7
7、自我感想............................................................................................................7
8、參考書目............................................................................................................8 附錄:C 語言編程源程序.......................................................................................8 1.設計內容及要求 1.1、設計內容:
以AT89C51 單片機為核心,制作一個 LCD 顯示的智能電子鐘。1.2、設計要求:
(1)計時:秒、分、時、天、周、月、年。(2)閏年自動判別。
(3)五路定時輸出,可任意關斷(最大可到16路)。(4)時間、月、日交替顯示。(5)自定任意時刻自動開/關屏
(6)計時精度:誤差≤1秒/月(具有微調設置)
(7)鍵盤采用動態掃描方式查詢。所有的查詢、設置功能均由功能鍵K1、K2完成 1.3、撰寫設計報告
單片機課程設計是以課題或項目設計方式開展的一門課程,具有較強的綜合性、實踐性,是工科、工程類院校或職業類院校電類專業在校生的必修課,是將單片機原理與應用課程的理論知識轉變為應用技術的重要教學環節。這一環節不但能加深對單片機原理的理解,而且還能培養學生的實踐動手能力,開發學生的分析、解決問題的能力。單片機課程設計環節的訓練能夠讓學生知道單片機工程項目的制作過程,使學生盡早了解單片機系統的開發過程。
2.總體方案設計 2.1、方案圖
2.2、面板布置圖
2.3、方案討論
方案一:采用實時時鐘芯片
實時時鐘芯片具備年、月、日、時、分、秒計時功能和多點計時功能,計時數據的更新每秒自動進行一次,不需程序干預。計算機可通過中斷或查詢方式讀取計時數據進行顯示,因此計時功能的實現無需占用 CPU 的時間,程序簡單。此外,實時時鐘芯片多數帶有鋰電池做后備電源,具備永不停止的計時功能;具有可編程方波輸出功能,可用做實時測控系統的采樣信號等;有的實時時鐘芯片內部還帶有非易失性 RAM,可用來存放需長期保存但有時也需變更的數據,由于功能完善,精度高,軟件程序設計相對簡單,且計時不占用 CPU 時間,因此,在工業實時測控系統中多采用這一類專用芯片來實現實時時鐘功能。
方案二:軟件控制
利用單片機內部的定時/計數器進行中斷定時,配合軟件延時實現時、分、秒的計時及秒表計時。該方案節省硬件成本,且能使設計者對單片機的指令系統能有更深入的了解,從而掌握單片機應用技術 MCS-51 匯編語言程序設計方法,因此,本系統設計采用此種軟件控制方法來實現計時。而由于 Atmel 公司 的AT89C51 是一種自帶 4KB Flash 存儲器的低電壓、高性能的 CMOS 8 位微處理器。該器件采用 Atmel 高密度非易失存儲器制造技術制造,與工業標準 的MCS-51 指令集和輸出引腳相兼容。AT89C51 將多功能 8 位 CPU 和閃存集成在單個芯片中,是一種高效的微控制器,使用也更方便,壽命更長,可以反復擦除 1000 次。形成了功能強大、使用靈活和具有較高性能價格比的微控制器。它的功能強大而且也比較容易購買,故本設計中所選的單片機為 AT89C51 單片機。2.4、明晰任務
采用 AT89C51 單片機作為系統的控制核心。時鐘數據通過市場上流行的時鐘芯片 DS1302 來獲取。DS1302 是 DALLAS 公司推出的涓流充電時鐘芯片,內含一個實時時鐘/日歷和 31 字節靜態 RAM,可以通過串行接口與計算機進行通信,使得管腳數量減少。實時時鐘/日歷電路能夠計算 2100 年之前的秒、分、時、日、星期、月、年的,具有閏年自動判斷調整的能力。定時電路能夠實現自定任意時刻自動開/關屏,采用 LCD LM016L 顯示年、月、周、天、時、分、秒。通過按鍵開關實現微調,確保計時精度:誤差≤1 秒/月。DS1302 時鐘芯片的主要功能特性:
(1)能計算 2100 年之前的年、月、日、星期、時、分、秒的信息;每月的天數
和閏年的天數可自動調整;時鐘可設置為 24 或 12 小時格式。(2)31B 的 8 位暫存數據存儲 RAM。(3)串行 I/O 口方式使得引腳數量最少。
(4)DS1302 與單片機之間能簡單地采用同步串行的方式進行通信,僅需 3 根線。
(5)寬范圍工作電壓 2.0-5.5V。
(6)工作電流為 2.0A 時,小于 300nA。
(7)功耗很低,保持數據和時鐘信息時功率小于 1mW。
3.電路原理圖
4.程序框圖
4.1、顯示子程序流程圖
4.2、實時時鐘芯片 1302 讀/寫數據流程圖
5.編程序 源程序見附錄部分 6.調試 6.1、軟件調試
目前設計過程中容易造成元件和儀器儀表的損壞,而借助 Keil 和 Proteus進行單片機系統的開發,可以節省設計成本,提高設計速度。Keil 軟件包是一個功能強大的開發平臺,它包括項目管理器、CX51 編譯器、AX51 宏匯編器、BL51/LX51 連接定位器、RTX51 實時操作系統、Simulator 軟件模擬器及 Monitor51 硬件目標調試器。它是一種集成化程度高的文件管理編譯環境,主要功能為編譯 C 語言源程序,匯編程序或混合語言源程序,連接和定位目標文件和庫,創建 HEX 文件,調試目標程序等。Keil 是目前最好的 51 單片機開
發工具之一。Keil 支持軟件模擬仿真(Simulator)和用戶目標調試(Monitor51)兩種工作模式。前者不需要任何單片機硬件即可完成用戶程序仿真、調試,后者利用硬件目標板中的監控程序可以直接調試目標硬件系統。Proteus 是一個完整的嵌入式系統軟件、硬件設計仿真平臺,它包括原理圖輸入系統 ISIS、帶擴展的 Prospice 混合模型仿真器、動態元件庫、高級圖形分析模塊和處理器虛擬系統仿真模型 VSM。ISIS 是 Proteus 系統的中心,具有超強的控制原理設計環境。ProteusVSM 最重要的特點是能把微處理器軟件作用在處理器上,并和該處理器的任何模擬和數字元件協同仿真,仿真執行目標碼就像在真正的單片機系統上運行一樣,VSM CPU 模型能完整仿真 I/O 接口、中斷、定時器、通用外部設備口及其他與 CPU 有關的外部設備,甚至能仿真多個處理器。6.2、仿真調試 Proteus 仿真
7.自我感想
經歷過這么多天不間斷的課程設計,我們有挺多感觸的,從最基本上說我們看到了,也意識到了自己的不足,對于不斷克服的各種阻礙也讓我們體會到了課程設計的意義所在。對于只接觸課本只動筆桿的我們,面臨實際的設計尺寸,讓我們很是尷尬,都說理論聯系實際,真正到聯系的時候才發現挺困難的,不過正是理論知識的各種補充才讓我們能最終完成任務,然后深深地體會到理論對現實的指導作用。我們現在最缺乏的就是實際工作經驗,而理論聯系實踐并不像我們想象的那么簡單,他需要堅實的理論基礎和實際工作經驗。堅實的理論基礎決定了我必須堅持學習新的知識新的理論,完善了自己的知識結構,才能在以后的實際中輕松面對,才能設計出更好的更有益于人們生活與工作的機械,才能跟上時代的步伐,不被淘汰。在這個一邊忙著復習忙著考試又要準備課程設計的日子里,真真正正的體會到了時間的寶貴,有點像高中忙忙碌碌的生活,不過能按時完成課程設計對我們來說也是一個莫大的安慰。嚴謹和細心是做機械設計的必要態度,要想做好一件事,就必須一絲不茍、態度認真。俗話說:“失之毫厘,謬之千里。”在機械設計上尤其應該注意。在以后的工作中,你的很小的一個疏忽將會造成一個公司很大的損失,甚至給用戶帶去生命危險,而自己也會為自己的不負責任行為付出代價。再者就是設計中要嚴謹和細心,對于機械是不能出差錯的,任何的微小誤差都可能產生不可預計的后果,當然對于我們來說就是設計中要走一些彎路,而且在這個嚴重缺少時間又惦記回家問題的我們來說也是一個很嚴重的后果。不過,困難雖是難免的,但我們有信心就能并且已經戰勝了困難,完成了這個無比揪心的課程設計。因為時間等各種關系設計中難免有些不足還請老師助教給予批評和幫助。
8.參考文獻
《MCS-51 系列單片機原理及應用》 孫涵芳 主編 《新概念 51 單片機 C 語言教程》 郭天祥 主編 《51 單片機課程設計》 周向紅 主編 《單片機原理及其應用教程》 張元良 主編 附錄:C 語言編程源程序
#include
uint year_data,t;//-----sbit SCLK=P3^5;//DS1302 通訊線定義 sbit DIO=P3^6;sbit RST=P3^7;sbit speak=P0^0;sbit DS=P2^0;//595 通訊線定義 sbit SH_CP=P2^1;sbit ST_CP1=P2^2;sbit ST_CP2=P2^3;sbit ST_CP3=P2^4;sbit ST_CP4=P2^5;sbit ST_CP5=P2^6;sbit ST_CP6=P2^7;sbit ST_CP7=P3^0;sbit ST_CP8=P3^1;sbit OE1=P1^0;sbit OE2=P1^1;sbit OE3=P1^2;sbit OE4=P1^3;sbit OE5=P1^4;sbit OE6=P1^5;sbit OE7=P1^6;sbit OE8=P1^7;sbit K1=P3^2;//按鍵接口定義 sbit K2=P3^3;sbit K3=P3^4;sbit K4=P0^1;sbit K5=P0^2;//-----void write_595(uchar temp)//寫 74HC595 一個字節 { uchar temp_595,i;temp_595=temp;for(i=0;i<8;i++)
{
SH_CP=0;
_nop_();_nop_();_nop_();if(temp_595&0x80){ DS=1;} else { DS=0;} _nop_();_nop_();_nop_();SH_CP=1;temp_595<<=1;} } //--------------void delay(uint z)//Nms 延時 { uint x,y;for(x=z;x>0;x--)for(y=112;y>0;y--);} //-------------void delaynus(uint z)//ums 延時 { uint x,y;for(x=z;x>0;x--)for(y=10;y>0;y--);} //---------------void write(uchar date)//寫入 DS1302 一個字節 { uchar temp,i;RST=1;SCLK=0;temp=date;for(i=0;i<8;i++){ SCLK=0;if(temp&0x01)DIO=1;else DIO=0;SCLK=1;temp>>=1;} } //-----uchar read()//讀出 DS1302 一個字節 { uchar a,temp;RST=1;for(a=8;a>0;a--){ temp>>=1;SCLK=1;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();SCLK=0;if(DIO){ temp=temp|0x80;} else { temp=temp|0x00;} } return(temp);} //---void write_1302(uchar add,uchar dat)//寫 DS1302 數據 { RST=0;SCLK=0;RST=1;write(add);write(dat);SCLK=1;RST=0;} //----------uchar read_1302(uchar add)// 讀 DS1302 數據 { uchar temp;RST=0;SCLK=0;RST=1;write(add);temp=read();SCLK=1;RST=0;return(temp);} //------------void display()//顯示子程序 { miao=read_1302(0x81);//讀秒 fen=read_1302(0x83);//讀分
shi=read_1302(0x85)&0x3f;//讀時 date=read_1302(0x87);//讀日 month=read_1302(0x89);//讀月 year=read_1302(0x8d);//讀年 day=read_1302(0x8B);//讀星期 write_595(miao);//顯示秒 ST_CP1=0;ST_CP1=1;ST_CP1=0;delaynus(10);write_595(fen);//顯示分 ST_CP2=0;ST_CP2=1;ST_CP2=0;delaynus(10);write_595(shi);//顯示時 ST_CP3=0;ST_CP3=1;ST_CP3=0;delaynus(10);write_595(date);//顯示日 ST_CP4=0;ST_CP4=1;ST_CP4=0;delaynus(10);write_595(month);//顯示月 讀 ST_CP5=0;ST_CP5=1;ST_CP5=0;delaynus(10);write_595(year);//顯示年 ST_CP6=0;ST_CP6=1;ST_CP6=0;delaynus(10);write_595(xingqi[day]);//顯示星期 ST_CP7=0;ST_CP7=1;ST_CP7=0;delaynus(10);} //----------void ds1302_init()//1302 初始化 { RST=0;SCLK=0;/* write_1302(0x80,0x00);//設置初始值 SEC write_1302(0x82,0x00);//設置初始值 MIN write_1302(0x84,0x00);//設置初始值 HR write_1302(0x86,0x00);//設置初始值 DATE write_1302(0x88,0x00);//設置初始值 MONTH write_1302(0x8A,0x00);//設置初始值 DAY */ write_1302(0x8C,0x10);//設置初始值 YEAR } //--------------void PORT_INIT()//端口初始化 { P0=0XFE;P1=0X00;P2=0X00;P3=0XFC;} void time_init()//定時器初始化 { TMOD=0x11;//設置定時 器 01 都為工作方式 1 TH0=(65536-50000)/256;//裝入初值 TL0=(65536-50000)%256;TH1=(65536-10000)/256;//裝入初值 TL1=(65536-10000)%256;PT0=1;//T0 定時器優先級最高 EA=1;//開總中斷
ET0=1;//開定時器 0 中斷 ET1=1;//開定時器 1 中斷 TR0=1;//啟動定時器 0 TR1=1;// 啟動定時器 1 } //--------------void main(void)//主程序 { PORT_INIT();ds1302_init();time_init();year=read_1302(0x8d);//讀年數據 year_data=0x2000|year;write_595(year_data>>8);//顯示 2010 年的 20 字樣 ST_CP8=0;ST_CP8=1;ST_CP8=0;set_shi=0x09;//鬧鐘初始值設定 set_fen=0x39;time_flag=0;//標志位 set=0;while(1){ switch(set){ case 0: //設置秒 { display();// 顯 示 子 程 序
if((shi==set_shi)&&(fen==set_fen)&&(time_flag==0))小時和分鐘 { speak=~speak;if((K2==0)&&(time_flag==0))//按鍵 K2 停 止鬧鐘響 { P0&=0XFE;time_flag=1;} delay(10);} } break;} if(fen==set_fen+1)// 當 不 按 下 鬧 鐘 停止按鍵,一分鐘后自動停止鬧 鐘 { P0&=0XFE;time_flag=0;} } } //--------void time0()interrupt 1 // 定時 器 0 中斷 { TR0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;mun++;if(mun==15){ mun=0;switch(set){ case 1: //設置秒閃爍 {OE1=1;delay(300);OE1=0;} break;case 2: //設置分閃爍 { OE2=1;delay(300);OE2=0;} break;case 3: //設置時閃爍 { OE3=1;delay(300);OE3=0;} break;case 4: //設置日閃爍 { OE4=1;delay(300);OE4=0;} break;case 5: //設置月閃爍 { OE5=1;delay(300);OE5=0;} break;case 6: //設置年閃爍 { OE6=1;OE8=1;delay(300);OE6=0;OE8=0;} break;case 7: //設置星期閃爍 { OE7=1;delay(200);OE7=0;} break;case 8: //設置鬧鐘閃爍 { OE2=1;OE3=1;delay(200);OE2=0;OE3=0;} break;} } TR0=1;} //-----------void time1()interrupt 3 // 定時器 1 中斷 { TR1=0;//先關定時器 TH1=(65536-20000)/256;TL1=(65536-20000)%256;//-if(K1==0){ delay(10);if(K1==0){ set++;if(set==9){ set=0;write_1302(0x80,miao);//設置初始值 SEC write_1302(0x82,fen);//設置初始值 MIN write_1302(0x84,shi);//設置初始值 HR write_1302(0x86,date);//設置初始值 DATE write_1302(0x88,month);// 設置初始值 MONTH write_1302(0x8A,day);//設置初始值 DAY write_1302(0x8C,year_data);//設置初始值 YEAR } t=50000;while((!K1)&&t){ t--;} } } //-------if(K2==0){ delay(10);if(K2==0){ switch(set){ case 1: { miao++;if((miao&0x0f)>0x09){ miao+=0x10;miao&=0xf0;} if(miao==0x60){ miao=0x00;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen++;if((fen&0x0f)>0x09){ fen+=0x10;fen&=0xf0;} if(fen==0x60){ fen=0x00;} ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi++;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x24)//24 小時制 { shi=0x00;} } else { shi=(shi|0x80)+1;if((shi&0x0f)>0x09){ shi+=0x10;shi&=0xf0;} if(shi==0x12)//12 小時制 { shi=0X80;} } write_595(shi);//顯示時 ST_CP3=0;ST_CP3=1;ST_CP3=0;} break;case 4: { date++;if((date&0x0f)>0x09){ date+=0x10;date&=0xf0;} if((date==0x32)&&((month==0x01)||(month==0x03)||(month==0x05)||(month ==0x07)||(month==0x08)||(month==0x10)||(month==0x12))){ date=0x01;} else if((date==0x31)&&((month==0x04)||(month==0x06)||(month==0x09)||(month ==0x11))){ date=0x01;} else if((date==0x29)&&(month==0x02)&&((year_data|read_1302(0x8d))%100!=0)& &((year_data|read_1302(0x8d))%400!=0)){ date=0x01;} else if((date==0x30)&&(month==0x02)&&((year_data|read_1302(0x8d))%100==0)& &((year_data|read_1302(0x8d))%400==0)){ date=0x01;} write_595(date);ST_CP4=0;ST_CP4=1;ST_CP4=0;} break;case 5: { month++;if((month&0x0f)>0x09){ month+=0x10;month&=0xf0;} if(month==0x13){ month=0x01;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data++;if((year_data&0x000f)==0x0a){ year_data+=0x0010;year_data&=0xfff0;} if((year_data&0x00ff)==0xa0){ year_data+=0x0100;//向前進 1 year_data&=0xff00;//后面尾數歸 0 } write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day++;if((day&0x0f)==0x08){ day=0x01;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K2)&&t){ t--;} } } //-------------------------if(K3==0){ delay(10);if(K3==0){ switch(set){ case 1: { miao--;if((miao&0x0f)==0x0F){ miao&=0xf9;//減到 0 后,再減一次就歸 0, } if(miao==0xF9)//當全部減到 00 時,再 減一次就為 59 { miao=0x59;} write_595(miao);ST_CP1=0;ST_CP1=1;ST_CP1=0;} break;case 2: { fen--;if((fen&0x0f)==0x0F){ fen&=0xf9;} if(fen==0xF9){ fen=0x59;} write_595(fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;} break;case 3: { if((read_1302(0x85)&0x80)==0x00){ shi--;if((shi&0x0f)==0x0F){ shi&=0xf9;} if(shi==0xF9)//24 小時制 { shi=0x23;} } else { shi=(shi|0x80)-1;if((shi&0x0f)==0x0F){ shi&=0xf9;} ST_CP4=0;} break;case 5: { month--;if((month&0x0f)==0x0F){ month&=0xf9;} if(month==0x00){ month=0x12;} write_595(month);ST_CP5=0;ST_CP5=1;ST_CP5=0;} break;case 6: { year_data--;if((year_data&0x000f)==0x0F){ year_data&=0xfff9;} if((year_data&0x00f0)==0xF0){ year_data&=0xf999;} write_595(year_data);ST_CP6=0;ST_CP6=1;ST_CP6=0;write_595(year_data>>8);ST_CP8=0;ST_CP8=1;ST_CP8=0;} break;case 7: { day--;if((day&0x0f)==0x00){ day=0x07;} write_595(xingqi[day]);ST_CP7=0;ST_CP7=1;ST_CP7=0;} break;} t=50000;while((!K3)&&t)//松手檢測 { t--;} } } //---switch(set){ case 8: { if(K4==0){ delay(10);if(K4==0){ if((read_1302(0x85)&0x80)==0x00){ set_shi++;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x24)//24 小時制 { set_shi=0x00;} } else { set_shi=(set_shi|0x80)+1;if((set_shi&0x0f)>0x09){ set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小時制 { set_shi=0X80;} write_595(set_shi);// 顯示鬧 鐘的時 ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}
if(set_fen==0x60)
{
set_fen=0x00;
} write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } set_shi+=0x10;set_shi&=0xf0;} if(set_shi==0x12)//12 小時制 { set_shi=0X80;} write_595(set_shi);// 顯示鬧 鐘的時 ST_CP3=0;ST_CP3=1;ST_CP3=0;t=50000;while((!K4)&&t){ t--;} } } //----if(K5==0){ delay(10);if(K5==0){ set_fen++;if((set_fen&0x0f)>0x09){ set_fen+=0x10;set_fen&=0xf0;}
if(set_fen==0x60)
{
set_fen=0x00;
} write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;t=50000;while((!K5)&&t){ t--;} } } } } //------------------------if(((K4==0)||(K5==0))&&(set==0)){ delay(10);if(((K4==0)||(K5==0))&&(set==0)){ write_595(set_shi);//顯示鬧鐘的時 ST_CP3=0;ST_CP3=1;ST_CP3=0;write_595(set_fen);ST_CP2=0;ST_CP2=1;ST_CP2=0;P1=0XF9;while((!K4)||(!K5));P1=0X00;} } //----------TR1=1;//退出時開定時器 } } //----------
第四篇:單片機原理與應用考試大綱
文章標題:單片機原理與應用考試大綱
第一章微型計算機基礎
一、考核知識點:
1、計算機的數據表示和數據運算
2、計算機的各種編碼
3、計算機的組成及工作過程
二、考核要求:
1、識記計算機的各種編碼
2、領會計算機的組成及工作過程
3、簡明應用計算機的數據表示和數據運算
第二章51單片機的硬件結構和原理
一、考核知識點:
1、單片機的發展史及各方面的應用2、51單片機的分類和內部結構
3、單片機的引腳和功能
4、單片機工作的時序
二、考核要求:
1、識記單片機的發展史及各方面的應用
2、識記單片機的引腳和功能
3、領會單片機工作的時序
4、簡明應用51單片機的分類和內部結構
第三章51單片機指令系統
一、考核知識點:
1、單片機的尋址方式
2、單片機的指令系統
3、助記符指令和二進制代碼指令的異同
二、考核要求:
1、領會助記符指令和二進制代碼指令的異同
2、綜合應用單片機的尋址方式
3、綜合應用單片機的指令系統
第四章匯編語言程序設計
一、考核知識點:
1、偽指令
2、匯編語言設計技巧
3、匯編語言到機器語言的編譯過程
二、考核要求:
1、領會偽指令
2、簡明應用匯編語言設計技巧
3、綜合應用匯編語言到機器語言的編譯過程
第五章51單片機的中斷系統
一、考核知識點:
1、中斷基本概念
2、中斷系統的程序編制
3、中斷系統的初步應用
二、考核要求:
1、領會中斷基本概念
2、簡明應用中斷系統解決工程問題
3、綜合簡明應用中斷系統的程序編制
第六章51單片機的內部定時器/計數器及串行接口
一、考核知識點:
1、單片機內部定時器/計數器的結構及工作原理
2、定時器/計數器的程序編制
3、定時器/計數器的初步應用
4、串行口的基本概念
5、串行口的程序編制
6、串行口的初步應用
二、考核要求:
1、識記串行口的基本概念
2、領會單片機內部定時器/計數器的結構及工作原理
3、簡明應用定時器/計數器解決工程問題
4、簡明應用串行口的程序編制
5、簡明應用串行口解決工程問題
6、綜合應用定時器/計數器的程序編制
第七章單片機的系統擴展與接口技術
一、考核知識點:
1、單片機外部總線的擴展
2、外部存儲器的擴展
3、I/O接口的擴展
4、管理功能部件的擴展
5、A/D和D/A接口功能的擴展
二、考核要求:
1、識記單片機外部總線的擴展
2、識記管理功能部件的擴展
3、簡明應用A/D和D/A接口功能的擴展
4、綜合應用外部存儲器的擴展
5、綜合應用I/O接口的擴展
第八章單片機應用系統設計
一、考核知識點:
1、單片機應用系統的開發過程
2、單片機開發工具的分類和使用
3、單片機應用系統的軟件和硬件調試過程
二、考核要求:
1、識記單片機應用系統的軟件和硬件調試過程
2、領會單片機應用系統的開發過程
3、領會單片機開發工具的分類和使用
第九章單片機系統的抗干擾技術
一、考核知識點:
1、單片機干擾源與分類
2、干擾對單片機系統的影響
3、硬件抗干擾技術
4、軟件抗干擾技術
5、數字濾波
二、考核要求:
1、識記單片機干擾源與分類
2、識記干擾對單片機系統的影響
3、識記數字濾波
4、簡明應用硬件抗干擾技術
5、簡明應用軟件抗干擾技術
第十章其它單片機簡介
一、考核知識點:
1、AT89C系列單片機的特點與性能
2、其它8位單片機的特點與性能3、16位、32位單片機的特點與性能
二、考核要求:
1、識記其它8位單片機的特點與性能
2、識記16位、32位單片機的特點與性能
3、領會AT89C系列單片機的特點與性能
《單片機原理及應用技術》考試大綱
《單片機原理及應用技術》課程是一門面向應用的專業技術課。單片機原理與應用介紹了單片機的基本知識和單片機技術的應用,其內容與工程實際緊密聯系,實用性很強,是一門在理論指導下,偏重于實際應用的課程。本課程具有實用性強、理論和實踐結合、軟硬件結合等特點。本課程圍繞使用較為廣泛的MCS-51系列單片機進行學習。本課程已成為理、工科電子類專業的一門基礎課程,這是從電子系統設計角度考慮的,它體現了電子系統設計的方法和硬件結構的變化。通過該課程的學習,要求學生掌握80C51單片機的工作原理、編程技術,掌握單片機應用系統的擴展方法和實際應用。因此,以單片機為內核,分析和設計一個簡單的計算機應用系統是我們學習本課程要達到的目的。
第一部分考試大綱
1單片機概述
本章為單片機的基本概念。
1.掌握有關單片機的基本概念、單片機的特點、單片機的應用。
2.理解單片機的總體組成。
3.了解單片微型計算機的產生、發展歷史、主要品種及系列。
2單片機結構和原理
本章以80C51單片機為例介紹了主要硬件結構和主要功能,著重掌握系統所提供的資源特性及其功能特性。
1.掌握80C51的內部結構。
2.掌握80C51單片機的存儲器組成。
3.掌握單片機并行輸入/輸出端口結構及功能。
4.了解單片機的時序概念和復位工作方式。
5.掌握單片機引腳功能
3指令系統
1.掌握指令與偽指令的正確格式。
2.掌握七種尋址方式的使用及尋址方式的含義。
3.掌握五類指令的功能和使用,特別是傳送指令。
4.理解書中所列例題與習題。
4匯編語言程序設計舉例
本章為MCS-51的一些常用偽指令,介紹順序結構程序設計、分支結構程序設計、循環結構程序設計和子程序的設計。
1.程序設計的基本步驟、各種基本的結構化程序設計方法;讀懂較復雜的常用程序。
2.掌握數據傳送指令的編寫。
3.理解算術運算程序設計。
4.理解數碼轉換程序設計。
5.理解查表程序設計。
6.理解子程序設計和參數傳遞。
7.理解邏輯運算程序設計
5中斷系統
1.掌握有關中斷、中斷源、中斷優先級等概念。
2.掌握中斷響應過程。
3.掌握中斷優先級排列。
4.掌握中斷允許寄存器IE、中斷優先級寄存器IP各位的含義及設置。
5.掌握外部中斷的兩種觸發方式:電平觸發、邊沿觸發。
6定時/計數器
1.掌握定時器/計數器的四種工作方式及有何不同。
2.掌握TMOD和TCON中各位的含義、作用。
4.掌握不同工作方式計數初值與定時時間的關系,即能根據定時時間算出計數初值,完成定時器的初始化編程和簡單應用編程。
7串行通信
1.理解有關通信、協議的概念。
2.理解串行口的四種工作方式。
3.掌握SBUF的含義及作用。
4.了解串行口的工作原理。
5.了解SCON中每一位的含義及SMOD位的作用。
6.掌握串行通信總線RS-232C標準、RS-232C電平轉換。
7.了解RS-232C與MCS-51的接口。
8系統擴展技術
1.掌握總線、驅動、鎖存和譯碼、地址重疊的概念。
2.掌握程序存儲器的擴展:EPROM程序存儲器及其擴展方法。
3.掌握數據存儲器的擴展:靜態存儲器SRAM及其擴展方法。
4.掌握簡單I/O口的擴展。
5.掌握8255A可編程并行接口:結構、控制字、工作方式、與8255A的接口方法。
9A/D和D/A轉換器接口技術
1.掌握DAC0832與單片機的接口方法與編程。
2.掌握ADC0809與單片機的接口方法與編程。
10鍵盤/顯示接口技術
1.掌握LED顯示器結構、工作原理和顯示方式。
2.掌握鍵盤接口原理。
3.理解LED顯示器與80C51單片機接口。
4.理解鍵輸入程序設計方法。
5.了解行列式鍵盤與80C51單片機接口。
11、功率接口技術
1.掌握簡單開關量接口、光電耦合接口和繼電器接口。
2.晶閘管與故態繼電器的應用接口。
12、單片機系統設計技術
掌握單片機系統的設計、開發、調試的原則、步驟及方法。
13、實用舉例
了解一兩個典型的單片機開發應用系統的設計思想和實現方法。
14、新型單片機介紹
了解MCS-51常見8位單片機。
第二部分考試考核改革方案
一、考試考核要求
《單片機技術及應用》選擇具有代表性的、使用較為廣泛的MCS-51系列單片機進行學習(具體以80C51為例),介紹了80C51單片機的硬件組成、軟件編程及一般應用系統組成。通過本課程的學習,要求掌握80C51單片機的系統結構、指令系統、程序設計方法、系統擴展方法、單片機常用接口等應用技術。本課程的教學過程由面授輔導、自學、實驗及作業四個環節組成,因此本課程考試考核要求為:
1.作業、實驗成績與期末考試成績共同評定為課程總成績。
2.作業、實驗占課程總分的60,期末理論考試占總分的40。
為使學生不把注意力僅僅放在期末考試上,培養學生系統學習的能力,加強學生各方面能力的培養,平時、實驗課、作業、考試都納入本課程的成績評定。平時的成績包括出勤、課堂提問和隨堂測試。期末考試可以選擇筆試、口試和進行實際實驗、設計等多種形式。
二、平時成績考核要求及說明
1.每章作業按要求完成后交教師批改,完成作業80為12分(及格);所有作業均完成,且質量較好者,20分(滿分)。中間情況酌情給分。
2.每次實驗均能按照教師安排進行,實驗態度好,至少完成5個實驗且實驗報告完整,為18分(及格);能基本獨立完成6個或以上實驗,實驗報告完整、無誤,實驗質量高,30分(滿分)。中間情況酌情給分。如果實驗有創新的特點,酌情加分。
3.作業與實驗的平均分為平時成績,滿分50分。
4.課程設計單獨計算成績,考評方法見其大綱。
三、理論考試說明
1.單片機技術及應用理論考試,采用閉卷筆試形式,考試時間120分鐘。
2.期末考試試題根據教學大綱,其范圍和難度按照本方案中制訂的考試考核內容和要求確定。考試命題覆蓋考試大綱要求范圍。
3.期末考試試題類型有以下幾種:
①填空題;
②選擇題;
③判斷題;
④簡答題
⑤綜合應用題。
四、考試考核要求層次
按照教學大綱的要求,理論考試要求分為掌握、理解和了解三個層次。
掌握:
對于本課程的重點內容要求學生達到掌握的程度。即能夠全面、深入理解和熟練掌握所學內容,并能夠用其分析、初步設計和解答與應用相關的問題,能夠舉一反三。要求學生掌握的內容也就是考試的主要內容,在考試中所占比例約70。
理解:
對于本課程的一般內容要求學生能夠理解。即要求學生能夠較好地理解所學內容,并且對所涉及的內容能夠進行簡單分析和判斷。要求學生理解的內容也是考試的內容,在考試中所占比例約25。
了解:
對于本課程的次要內容要求學生能夠了解。要求學生了解的內容,一般是指在眼下不必進一步深入和擴展,有些也許需要學生自己今后在工作中進行深入研究。對要求了解的內容,在考試中占較小比例,不超過5。
實驗五:按鍵電路、顯示電路實驗
一、實驗目的:
1.掌握獨立式按鍵電路與矩陣式按鍵電路的設計方法。
2.掌握數碼管顯示電路的工作原理
3.掌握源程序編輯軟件UltraEdit,編譯軟件KeilC51、仿真軟件Proteus的使用方法
4.掌握硬件仿真器ME-52A的使用方法
二、實驗器材:
1.單片機實驗板
2.單片機硬件仿真器ME-51A
3.計算機
4.電源
三、實驗要求:
1.電路如圖5所示,用單片機的P3口所接的四個獨立式按鍵控制p1口流水燈花樣的方法;具體表現為:p3.0、P3.1、P3.2、P3.3四個小按鍵分別實現了四個控制:
(1)跑燈:即P1.0---1.7亮點流動:
(2)流水燈:即P1.0-1.7依次點亮
(3)交叉閃爍:即P0.0,P0.2,P0.4,P0.6和P0.1,P0.3,P0.5,P0.7輪流點亮
(4)停止;在任何狀態下按此鍵程序停止運行.
2.電路如圖6所示,用P2口所接的4×4矩陣式鍵盤作為輸入,在P1口所接的數碼管上顯示出每個按鍵的0~F序號,鍵盤的布局如下表所示:
F
E
D
C
B
A
9876543210
四、實驗原理:
1.獨立式按鍵電路顯示如圖5所示,從圖中可看出,判斷有無鍵按下,只要檢測P3.0~P3.3相應端口的高低電平即可,若檢測有某一端口為低電平,表明該端口有按鍵按下,經延時消抖后轉去執行相應的功能子程序。若為高電平,表明無鍵按1.獨立式按鍵電路如圖5所示,下,繼續檢測。
示例程序如下:
ORG000H
LJMPSTAR1
ORG0030H
STAR1:MOVP3,#0FFH;置P3口為輸入態
JNBP3.0,FUN0;判別P3.0是否有鍵按下,是,則轉FUN0
JNBP3.1,FUN1;判別P3.1是否有鍵按下,是,則轉FUN1
JNBP3.2,FUN2;判別P3.2是否有鍵按下,是,則轉FUN2
JNBP3.3,FUN3;判別P3.3是否有鍵按下,是,則轉FUN3
JNBF0,STAR1;曾經有鍵按下F0置1
RET
圖
5
FUN0:LCALLDL10MS;消岸抖動
JBP3.0,STAR1
WAITL0:JNBP3.0,WAITL0;等待鍵釋放
SETBF0
FUN01:LCALLFUN00
LCALLSTAR1
LJMPFUN01
FUN1:LCALLDL10MS;消岸抖動
JBP3.1,STAR1
WAITL1:JNBP3.1,WAITL1;等待鍵釋放
SETBF0
FUN10:LCALLFUN11
LCALLSTAR1
LJMPFUN10
FUN2:LCALLDL10MS;消岸抖動
JBP3.2,STAR1
WAITL2:JNBP3.2,WAITL2;等待鍵釋放
SETBF0
FUN20:LCALLFUN22
LCALLSTAR1
LJMPFUN20
FUN3:LCALLDL10MS;消岸抖動
JBP3.3,STAR1
WAITL3:JNBP3.3,WAITL3;等待鍵釋放
CLRF0
MOVP1,#0FFH;關顯示
LJMPSTAR1
FUN00:MOVA,#0FEH;跑燈子程序
FUN000:MOVP1,A
LCALLDL05S
JNBACC.7,OUT
RLA
AJMPFUN000
OUT:RET
FUN11:MOVA,#0FEH;流水燈子程序
FUN111:MOVP1,A
LCALLDL05S
JZOUT
RLA
ANLA,P1
AJMPFUN111
FUN22:MOVA,#0AAH;交叉點亮子程序
MOVP1,A
LCALLDL30S
CPLA
MOVP1,A
LCALLDL30S
RET
;************;
;延時程序;
;************;
DL512:MOVR2,#0FFH
LOOP1:DJNZR2,LOOP1
RET
DL10MS:MOVR3,#14H
LOOP2:LCALLDL512
DJNZR3,LOOP2
RET
DL05S:MOVR4,#0AH
LOOP3:LCALLDL10MS
DJNZR4,LOOP3
RET
DL30S:MOVR5,#03H
LOOP4:LCALLDL05S
DJNZR5,LOOP4
RET
END
2.矩陣式按鍵電路顯示如圖6所示。采用掃描方式進行按鍵的識別檢測,并將對應按鍵的鍵號用查表指令將對應的代碼顯示在數碼管上。
圖6
參考程序如下:
ORG0000H
LJMPSTART
ORG0030H
START:MOVSP,#60H;設置堆棧指針
SCAN:MOVR3,#0F7H;置行掃描初值
MOVR1,#00H;到TABLE表中取碼的指針
SCAN1:MOVA,R3
MOVP2,A;掃描輸出
MOVA,P2;重讀P2口狀態
MOVR4,A;暫存于R4呂中
SETBC;C=1
MOVR5,#03H;掃描4列初值
L1:RLCA;A中內容循環左移
JNCKEYIN;C=0,有鍵按下,轉消抖
INCR1;取碼指針加1
DJNZR5,L1;無鍵按下,繼續檢測
MOVA,R3;掃描下一行
SETBC
RRCA
MOVR3,A
JCSCAN1;4行是否掃描完,未完,繼續
LJMPSCAN
KEYIN:MOVR7,#10;削除抖動
D2:MOVR6,#248
DJNZR6,$
DJNZR7,D2
D3:MOVA,P2;按鍵放開否?
XRLA,R4
JZD3
MOVA,R1
MOVDPTR,#TABLE;到TABLE中取碼
MOVCA,@A DPTR
MOVP1,A
LJMPSCAN
TABLE:DB0C0H,0F9H,0A4H,0B0H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH
END
DB80H,90H,88H,83H
DB0C6H,0A1H,86H,8EH
END
五、實驗步驟:
1.運行UltraEdit-32源程序編輯軟件,輸入、編輯匯編語言源程序。
2.運行KeiluVision2源程序編譯軟件,對源程序進行編譯,得到目標代碼文件。
3.運行Proteus模擬仿真軟件,打開已繪制好的仿真電路原理圖,進行模擬仿真。
4.把硬件仿真器ME-52A與單片實驗板連接好,再用硬件仿真器進行仿真驗證。
六、實驗分析與總結
1.用仿真系統調試簡單程序結構、分支程序結構、循環程序結構、子程序結構和中斷結構的關鍵在于,如何將對程序的分析理解和開發系統提供的基本功能有機地結合起來,其前提條件是必須對源程序的作用、結構特點、運行過程與結果有較全面的認識,并能根據程序運行過程中出現的現象和結果分析并判斷產生各種故障現象的原因,再運用排除法逐一檢驗各種判斷是否準確。
2.掌握程序結構特點的基礎上,合理選擇觀測點,通過觀察在觀測點處參數及路徑的變化檢驗程序運行的結果。
3.高調試程序的效率,應對單片機開發系統所提供的幾種程序運行調試方式有足夠的了解并能熟練地運用。例如,在調試過程中,若要觀察最終結果,則可選擇全速運行調試;若要觀察相關指令的運行結果或運行路徑的變化過程,則可選擇單步運行;若要檢查子程序的運行過程,則可選擇跟蹤運行調試;若要檢查循環程序或中斷服務程序,則可選擇斷點運行調試;若要定點檢查程序運行到某處的結果時,則可選擇快速運行到光標處調試。但實際中究竟選用哪種方法更適宜或哪幾種方法結合使用更快捷,將隨著分析能力與操作的熟練程度逐步提高。
4.程序運行結果是否正確時,應運用單片機開發系統所提供的交互界面,將程序運行過程中程序計數器PC(地址)的變化、各單元(內部RAM和外部RAM)內容的變化、特殊功能寄存器內容的變化、堆棧指針SP內容的變化與程序的理論分析結果相對照。
5.程序和調試程序時,需要多次反復的過程,并非一次就能排除全部故障,特別是單片機應用系統的硬件電路和匯編程序相結合的綜合調試就更加復雜,因此,必須通過反復調試,不斷修改硬件和軟件,直到最終符合設計要求為止。如果在調試中能夠根據實驗現象預先對產生故障的原因加以判斷和分析,并制定出相應的調試方法和步驟,可縮小排除故障的范圍,提高調試效率。
七、思考與練習
填空題
1、設X=5AH,Y=36H,則X與Y“或”運算為__7EH_______,X與Y的“異或”運算為___6CH_____。
2、若機器的字長為8位,X=17,Y=35,則X+Y=__110100_____,X-Y=_11101110______(要求結果寫出二進制形式)。
3、單片機的復位操作是____高電平______(高電平/低電平),單片機復位后,堆棧指針SP的值是___07h_____。
4、單片機中,常用作地址鎖存器的芯片是__74HC373____________,常用作地址譯碼器芯片是_____74HC138____________。
5、若選擇內部程序存儲器,應該設置為_____高_______(高電平/低電平),那么,PSEN信號的處理方式為___不用__________________。
6、單片機程序的入口地址是____0000H__________,外部中斷1的入口地址是______0013H_________。
7、若采用6MHz的晶體振蕩器,則MCS-51單片機的振蕩周期為__0.5us_______,機器周期為_____2us__________。
8、外圍擴展芯片的選擇方法有兩種,它們分別是___線選法_______________和_____譯碼法__________。
9、單片機的內部RAM區中,可以位尋址的地址范圍是____20H~2FH______________,特殊功能寄存器中,可位尋址的地址是___是能被8整除的地址_________________。
10、子程序返回指令是___ret______,中斷子程序返回指令是__reti。
11、8051單片機的存儲器的最大特點是內部RAM與外部RAM分開編址。
12、8051最多可以有32個并行輸入輸出口,最少也可以有8個并行口。
13、函數是C語言的基本單位。
14、串行口方式2接收到的第9位數據送SCON寄存器的RB8位中保存。
15、MCS-51內部提供3個可編程的16位定時/計數器,定時器有4種工作方式。
16、一個函數由兩部分組成,即說明部分和語句部分。
17、串行口方式3發送的第9位數據要事先寫入SCON寄存器的TB8位。
18、利用8155H可以擴展3個并行口,256個RAM單元。
19、C語言中輸入和輸出操作是由庫函數scanf和printf等函數來完成。
二、選擇題
1、C語言中最簡單的數據類型包括(B)。
A、整型、實型、邏輯型B、整型、實型、字符型
C、整型、字符型、邏輯型D、整型、實型、邏輯型、字符型
2、當MCS-51單片機接有外部存儲器,P2口可作為(C)。
A、數據輸入口B、數據的輸出口
C、準雙向輸入/輸出口D、輸出高8位地址
3、下列描述中正確的是(D)。
A、程序就是軟件B、軟件開發不受計算機系統的限制
C、軟件既是邏輯實體,又是物理實體D、軟件是程序、數據與相關文檔的集合4、下列計算機語言中,CPU能直接識別的是(D)。
A、自然語言B、高級語言C、匯編語言D、機器語言
5、MCS-5l單片機的堆棧區是設置在(C)中。
A、片內ROM區B、片外ROM區C、片內RAM區D、片外RAM區
6、以下敘述中正確的是(C)。
A、用C語言實現的算法必須要有輸入和輸出操作
B、用C語言實現的算法可以沒有輸出但必須要有輸入
C、用C程序實現的算法可以沒有輸入但必須要有輸出
D、用C程序實現的算法可以既沒有輸入也沒有輸出
7、定時器/計數器工作方式1是(D)。
A、8位計數器結構B、2個8位計數器結構
C、13位計數結構D、16位計數結構
8、C語言提供的合法的數據類型關鍵字是(B)。
A、DoubleB、shortC、integerD、Char9、片內RAM的20H~2FH為位尋址區,所包含的位地址是(B)。
A、00H~20HB、00H~7FHC、20H~2FHD、00H~FFH10、以下能正確定義一維數組的選項是(B)。
A、inta[5]={0,1,2,3,4,5};B、chara[]={0,1,2,3,4,5};
C、chara={'A','B','C'};D、inta[5]=“0123”;
11、數據的存儲結構是指(D)。
A、存儲在外存中的數據B、數據所占的存儲空間量
C、數據在計算機中的順序存儲方式D、數據的邏輯結構在計算機中的表示
12、下列關于棧的描述中錯誤的是(C)。
A、棧是先進后出的先性表B、棧只能順序存儲
C、棧具有記憶作用D、對棧的插入和刪除操作中,不需要改變棧底指針
13、在寄存器間接尋址方式中,間址寄存器中存放的數據是(B)。
A、參與操作的數據B、操作數的地址值
C、程序的轉換地址D、指令的操作碼
14、MCS-51單片機的復位信號是(A)有效。
A、高電平B、低電平C、脈沖D、下降沿
15、為了使模塊盡可能獨立,要求(B)。
A、模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量強
B、模塊的內聚程度要盡量高,且各模塊間的耦合程度要盡量弱
C、模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量弱
D、模塊的內聚程度要盡量低,且各模塊間的耦合程度要盡量強
16、若MCS-51單片機使用晶振頻率為6MHz時,其復位持續時間應該超過(B)。
A、2μsB、4μsC、8μsD、1ms17、以下選項中可作為C語言合法常量的是(A)
A、-80B、-080C、-8e1.0D、-80.0e18、能夠用紫外光擦除ROM中程序的只讀存儲器稱為(C)。
A、掩膜ROMB、PROMC、EPROMD、EEPROM19、以下不能定義為用戶標識符是(D)。
A、MainB、_0C、_intD、sizeof20、下選項中,不能作為合法常量的是(B)。//冪不能為小數
A、1.234e04B、1.234e0.4C、1.234e 4D、1.234e021、以下敘述中錯誤的是(C)
A、對于double類型數組,不可以直接用數組名對數組進行整體輸入或輸出
B、數組名代表的是數組所占存儲區的首地址,其值不可改變
C、當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出“下標越界”的出錯信息
D、可以通過賦初值的方式確定數組元素的個數
22、以下與函數fseek(fp,0L,SEEK_SET)有相同作用的是(D)
A、feof(fp)B、ftell(fp)C、fgetc(fp)D、rewind(fp)
23、存儲16×16點陣的一個漢字信息,需要的字節數為(A)
A、32B、64C、128D、25624、已知1只共陰極LED顯示器,其中a筆段為字形代碼的最低位,若需顯示數字1,則它的字形代碼應為(B)。
A、06HB、F9HC、30HD、CFH25、在C語言中,合法的長整型常數是(A)
A、OLB、4962710C、324562&D、216D26、以下選項中合法的字符常量是(B)
A、“B”B、’ 主站蜘蛛池模板: 激情久久av一区av二区av三区| 久久久无码精品亚洲日韩电影| 人妻尝试又大又粗久久| 永久免费不卡在线观看黄网站| 波多野结衣免费一区视频| 国产专业剧情av在线| 欧美黑人乱大交| 国内精品久久久久久久97牛牛| 思思久久99热只有频精品66| 久久99国产综合精品免费| 成人免费无码大片a毛片18| 人妻在卧室被老板疯狂进入| 国产成人综合久久精品推| 久久理论片午夜琪琪电影院| 国产成人精选视频在线观看不卡| 黑人30厘米少妇高潮全部进入| 国产a∨天天免费观看美女| 国产欧美熟妇另类久久久| 青青草原综合久久大伊人| 欧美熟妇精品一区二区三区| 亚洲精品久久yy5099| 少妇呻吟白浆高潮啪啪69| 国产精品被窝福利一区| 久久精品国产精品亚洲蜜月| 亚洲国产区男人本色vr| 国产丝袜一区视频在线观看| 国产成人92精品午夜福利| 欧美浓毛大泬视频| 天天影视色香欲综合久久| 大学生被内谢粉嫩无套| 国产午夜精品理论片久久影院| 亚洲精品久久久久久一区| 国产成人免费ā片在线观看老同学| 久久棈精品久久久久久噜噜| 亚洲精品鲁一鲁一区二区三区| 无码国产玉足脚交极品播放| 亚洲精品无播放器在线播放| 亚洲国产美女精品久久久| 国产成人片无码视频在线观看| 丰满的少妇邻居中文bd| 装睡被陌生人摸出水好爽|