官术网_书友最值得收藏!

1.1 單片機概述

單片微型計算機(Single Chip Microcomputer, SCM)簡稱單片機,利用大規(guī)模集成電路技術把中央處理單元(Center Processing Unit, CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM)及其他I/O接口部件集成在一塊芯片上,構(gòu)成一個最小的計算機系統(tǒng)。根據(jù)單片機在不同應用場合所承擔的主要功能,有微控制器(Micro Controller Unit, MCU)和微處理器(Micro Processor Unit, MPU)之分,二者主要是計算能力有差異。MCU通常運行較為單一的任務,執(zhí)行對硬件設備的管理/控制功能,對運算處理能力要求不高;MPU通常有一個計算功能強大的CPU,能夠運行比較復雜的、運算量大的程序和任務,通常需要大容量的存儲器。隨著單片機技術的發(fā)展,其應用領域越來越廣泛,單片機通常分為專用型和通用型。

專用型:指用途比較專一,出廠時程序已經(jīng)一次性燒寫好、不能再修改的單片機。專用型單片機通常采用大批量生產(chǎn),成本很低,如果達不到足夠的批量,成本反而會高。

通用型:指可由開發(fā)人員設定其功能的單片機。這種單片機應用于不同的接口電路,編寫不同的應用程序就可實現(xiàn)不同的功能,其應用十分廣泛。一般所說的單片機都是指通用型單片機。

1.1.1 單片機的發(fā)展

1946年第一臺電子計算機誕生至今,微電子技術和半導體技術已有長足發(fā)展,芯片從電子管、晶體管發(fā)展到集成電路、大規(guī)模集成電路,現(xiàn)在一塊芯片上可以集成幾千萬甚至上億只晶體管,功能和性能顯著增強。特別是近20年,隨著通信技術、網(wǎng)絡和圖形圖像處理技術的飛速發(fā)展,單片機在工業(yè)、科研、教育、國防和航空航天等領域獲得了廣泛的應用,單片機技術已經(jīng)是一個國家現(xiàn)代科技水平的重要標志。

1.國外單片機發(fā)展

1976年Intel公司推出了8位的MCS-48單片機,具有體積小、功能較全、價格低的特點,為單片機的發(fā)展奠定了基礎,成為了單片機發(fā)展史上重要的里程碑。在MCS-48的帶領下,國外多家半導體公司相繼研制和發(fā)展了自己的單片機,如Intel公司的MCS-51系列,Motorola公司的6801和6802系列,Rockwell公司的6501及6502系列等。隨著技術的提升,后續(xù)各大國外公司研發(fā)的單片機大多集成了CPU、RAM、ROM、數(shù)目不等的I/O接口、多個中斷源,甚至還有一些帶有A/D轉(zhuǎn)換器,功能越來越強大,RAM和ROM的容量也越來越大,尋址空間也越來越大,促使單片機在多個領域得到了廣泛應用。

1982年以后,16位單片機問世,代表產(chǎn)品是Intel公司的MCS-96系列,16位單片機比起8位機,數(shù)據(jù)寬度增加了一倍,實時處理能力更強,主頻更高,集成度達到了12萬只晶體管,RAM增加到了232B,ROM則達到了8KB,并且有8個中斷源,同時配置了多路A/D轉(zhuǎn)換通道、高速I/O處理單元,適用于更復雜的控制系統(tǒng)。

1985年,Roger Wilson和Steve Furber設計了第一代32位的處理器,用它設計了一臺RISC(Reduced Instruction Set Computing,精簡指令集計算)計算機,簡稱ARM(Acorn RISC Machine),這也是ARM這個名字的由來。ARM內(nèi)核主要有ARM7、ARM9、ARM10、ARM11。

2004年,ARM公司的經(jīng)典處理器ARM11以后的產(chǎn)品改用Cortex命名,并分成A、R和M三類,旨在為各種不同的市場提供服務。

2.國內(nèi)單片機發(fā)展

國內(nèi)微電子技術和半導體技術起步較晚,整體發(fā)展與國外還有一定差距。20世紀80年代初,北京工業(yè)大學電子廠開始了TP801單板機(將微處理器、一定容量的程序/數(shù)據(jù)存儲器、輸入/輸出接口、輔助電路通過總線全部安裝在一塊印制電路板上的單板式微型計算機)開發(fā)熱潮,利用國外的微處理器Z80實現(xiàn)了信息輸入和顯示。同期,上海和江蘇等地開發(fā)了MCS-51的單片機開發(fā)系統(tǒng)。1986年10月,復旦大學舉行了第一次全國單片機學術交流會,這標志了我國單片機事業(yè)的開始,也推動了我國在CPU核心技術上的研究工作。隨著國際形勢的重大變化,我國的科技工作者認識到了微電子產(chǎn)業(yè)在國民經(jīng)濟建設和國家安全中的重要性,進而加速進行微處理器核心技術的研發(fā)。2002年8月10日誕生的“龍芯一號”是我國首枚擁有自主知識產(chǎn)權(quán)的通用高性能微處理芯片。“龍芯一號”是一顆32位的處理器,主頻達到266MHz,采用了0.18μm CMOS工藝制造,具有良好的低功耗性,平均功耗為0.5W,在片內(nèi)提供了一種特別設計的硬件機制,可以抵抗緩沖區(qū)溢出類攻擊。近20年來,我國出現(xiàn)了較多知名的MCU制造商,如中穎電子、北京君正、東軟載波、兆易創(chuàng)新等,分別研發(fā)了具有自主知識產(chǎn)權(quán)的8位、16位、32位和64位的通用和專用處理器,其產(chǎn)品在家電、電網(wǎng)、交通、工業(yè)、通信及網(wǎng)絡等領域得到了廣泛應用,這也進一步促進了我國在單片機核心技術領域的快速發(fā)展。

1.1.2 單片機的硬件組成

單片機的硬件主要由中央處理單元(Central Processing Unit, CPU)、存儲器(RAM和ROM)、I/O接口及總線組成,如圖1-1所示。

圖1-1 單片機的硬件組成

圖1-2 通用計算機的硬件組成

單片機是單芯片式微型計算機,與通用計算機(圖1-2)相比,自身不帶軟件,沒有輸入/輸出(I/O)設備。簡單來講,單片機是將多種功能部件集成到一塊芯片上,而通用計算機是一臺機器,是一套硬件系統(tǒng)的集合。單片機的組成部分介紹如下。

1.中央處理器

中央處理器具有算術運算、邏輯運算和控制操作的功能,是單片機或通用計算機的核心部分。它主要由3部分組成:算術邏輯單元、寄存器組、控制器。

① 算術邏輯單元(Arithmetic Logic Unit, ALU)。用來執(zhí)行基本的算術運算和邏輯運算。

② 寄存器(Register)組。CPU中有多個寄存器,用來存放操作數(shù)、中間結(jié)果以及反映運算結(jié)果的狀態(tài)標志位等。

③ 控制器(Control Unit)。控制器具有指揮整個系統(tǒng)操作的功能。它按一定的順序從存儲器中讀取指令,進行譯碼,在時鐘信號的控制下,發(fā)出一系列的操作命令,控制CPU以及整個系統(tǒng)有條不紊地工作。

2.存儲器

存儲器(程序/數(shù)據(jù)存儲器)的主要功能是存放程序和數(shù)據(jù),程序是單片機或通用計算機操作的依據(jù),數(shù)據(jù)是單片機或通用計算機操作的對象。不管是程序還是數(shù)據(jù),在存儲器中都用二進制的“0”或“1”表示,統(tǒng)稱信息。為實現(xiàn)自動計算,這些信息必須預先放在存儲器中。存儲器由寄存器組成,可以看成一個寄存器堆。存儲器被劃分成許多小單元,稱為存儲單元。每個存儲單元相當于一個緩沖寄存器。為了便于存入和取出,每個存儲單元必須有一個固定的地址,稱為單元地址,單元地址用二進制編碼表示。每個存儲單元的地址只有一個,固定不變,而存儲在其中的信息可以是二進制的“0”或“1”組合的任何編碼。為了減少存儲器向外引出的地址線,存儲器內(nèi)部自帶地址譯碼器。向存儲單元存放或取出信息,都稱為訪問存儲器。訪問存儲器時,先由地址譯碼器將送來的單元地址進行譯碼,找到相應的存儲單元,再由讀/寫控制電路根據(jù)送來的讀/寫命令確定訪問存儲器的方式,完成讀出或?qū)懭氩僮鳌?/p>

3.總線

總線是單片機把各部分有機地連接起來的一組導線,是各部分之間進行信息交換的公共通道。在單片機中,連接CPU、存儲器和各種I/O設備并使它們之間能夠相互傳送信息的信號線和控制線統(tǒng)稱總線。總線包括地址總線(Address Bus, AB)、數(shù)據(jù)總線(Data Bus, DB)和控制總線(Control Bus, CB)。

地址總線:負責傳輸數(shù)據(jù)的存儲位置或I/O接口中寄存器的地址編號的一組信號線稱為地址總線。它傳送CPU發(fā)出的地址,以便選中CPU所尋址的存儲單元或I/O接口(一個I/O接口有1個或幾個端口地址),地址總線是單向的,如圖1-1所示。如果單片機的地址總線有20位,用A0~A19表示,所以可尋址的存儲單元個數(shù)為220=1M(1M=1024×1024);MCS-51單片機對外部擴展的地址總線為16位,用A0~A15表示,可尋址的存儲單元或I/O端口個數(shù)為216=64K(1K為1024)。

數(shù)據(jù)總線:負責傳輸數(shù)據(jù)的一組信號線稱為數(shù)據(jù)總線。數(shù)據(jù)可以由CPU向存儲器或I/O接口發(fā)送,也可以由存儲器或I/O接口向CPU傳送,因此數(shù)據(jù)總線是雙向的。MCS-51單片機對外部擴展的數(shù)據(jù)總線是8位的,用D0~D7表示,即字長為8位。通常所說的多少位CPU,是指該CPU內(nèi)部數(shù)據(jù)總線的位數(shù)。

控制總線:在傳輸與交換數(shù)據(jù)時起控制作用的一組信號線稱為控制總線。它傳送各種信息,有的是CPU到存儲器或I/O接口的控制信號,如讀信號、寫信號、地址鎖存允許信號(Address Latch Enable, ALE)、中斷響應信號(Interrupt Acknowledge, INTA)等;有的是I/O接口到CPU的信號,如可屏蔽中斷請求信號(INTR)等。控制信號線有的是高電平有效,如ALE、INTR等;有的是低電平有效,如INTA等。由于控制總線既可以由CPU向存儲器或I/O接口發(fā)送控制命令,也可以偵聽存儲器或I/O設備的狀態(tài)信息,因此控制總線也是雙向的。

總線是連接CPU各功能部件的公共數(shù)據(jù)通道,其性能直接關系到單片機的整體性能。總線的性能主要表現(xiàn)為它所支持的數(shù)據(jù)總線位數(shù)和總線工作時鐘頻率。數(shù)據(jù)總線位數(shù)越多,總線工作時鐘頻率越高,總線的信息吞吐率就越高,單片機的性能就越強。

4.I/O接口

在微型計算機或單片機系統(tǒng)中,輸入/輸出(Input/Output, I/O)接口是CPU與外部設備交換信息不可缺少的組成部分。I/O接口是CPU和外設進行銜接的部件,它的一端通過總線和CPU相連,另一端通過控制器和外設相連。通過接口可以傳送外設向CPU輸入的信息,或者傳送CPU輸出到外設的信息。I/O外設是輸入設備和輸出設備的統(tǒng)稱,向CPU輸入信息的設備稱為輸入設備,接收CPU信息的設備稱為輸出設備。

I/O接口主要有三大功能。一是外部設備大多數(shù)都是機電設備,傳送數(shù)據(jù)的速度遠遠低于單片機,因而需要I/O接口做數(shù)據(jù)緩存。二是外部設備表示信息的格式與單片機不同,例如,USB、模擬信號等首先須用I/O接口進行信息格式的轉(zhuǎn)換。三是I/O接口還可以向CPU報告設備運行的狀態(tài),傳達CPU的命令等。CPU與外設間的數(shù)據(jù)交互是由I/O接口完成的。I/O接口中通常包含三類信息:數(shù)據(jù)信息、狀態(tài)信息和控制信息。

1)數(shù)據(jù)信息

CPU與外設交換的基本信息就是數(shù)據(jù)信息。在輸入過程中,數(shù)據(jù)信息由外設經(jīng)過與接口之間的數(shù)據(jù)線進入接口,再到達系統(tǒng)的數(shù)據(jù)總線,送給CPU;在輸出過程中,數(shù)據(jù)信息從CPU經(jīng)過數(shù)據(jù)總線進入接口,再通過接口和外設間的數(shù)據(jù)線送到外設。從信息表示的物理特性上,數(shù)據(jù)信息大致可以分為兩類:數(shù)字量和模擬量。

(1)數(shù)字量。

數(shù)字量通常是二進制形式的數(shù)據(jù)或以ASCII碼表示的數(shù)據(jù)及字符,還有可能是一位二進制數(shù)(“0”或者“1”)表示的開關量。

(2)模擬量。

在使用單片機進行測控的場合中,多數(shù)情況下,輸入信息就是現(xiàn)場的連續(xù)變化的物理量,如溫度、濕度、位移、壓力等,這些物理量一般通過傳感器轉(zhuǎn)換成電壓或電流,再經(jīng)過放大器放大。這樣的電流和電壓仍然是連續(xù)變化的模擬量,而單片機無法直接接收和處理模擬量,因此,需要經(jīng)過模擬量向數(shù)字量的轉(zhuǎn)換(A/D),變成數(shù)字量才能送入計算機。反過來,單片機輸出的數(shù)字量要經(jīng)過數(shù)字量向模擬量的轉(zhuǎn)換(D/A),變成模擬量后才能進行相關控制。

在單片機運算與處理過程中,數(shù)據(jù)全部以二進制方式表示,這里所提到的數(shù)字量和模擬量僅是從物理信息本身特性進行分類的,并不是CPU能直接識別和處理的信息。

2)狀態(tài)信息

狀態(tài)信息是一種反映外設當前工作狀態(tài)的信息,通常是外設經(jīng)接口送往CPU的信息。CPU根據(jù)這種狀態(tài)信息,隨時了解外設當前的工作情況。對于輸入設備,常用“準備就緒”(READY)信號來表明待輸入的數(shù)據(jù)是否已經(jīng)準備就緒。如果準備就緒,CPU就可以讀這個數(shù)據(jù);對于輸出設備,常用“忙”(BUSY)信號來表示輸出設備是否處于空閑狀態(tài),如為空閑狀態(tài),則可接收CPU送來的信息,否則CPU要等待。

3)控制信息

控制信息是CPU通過接口傳送給外設的,CPU通過發(fā)送控制信息控制外設的工作。如外設的啟動信號和停止信號就是常見的控制信息。實際上,控制信息往往隨著外設的具體工作原理不同而有不同的含義。

5.內(nèi)部集成功能部件

在單片機應用的諸多領域中,會用到通用功能部件,因此各個單片機廠商在芯片內(nèi)部已經(jīng)集成了多種功能部件,主要包括定時器、中斷控制器和通信控制器等部件。x86系列的通用微型計算機的CPU需要通過I/O接口進行這些功能部件的外部擴展。目前,大量32位單片機的CPU內(nèi)部集成了更多的功能部件,如A/D、D/A和多種外部通信接口。

1.1.3 單片機的體系結(jié)構(gòu)

單片機的硬件組成中,根據(jù)程序存儲器和數(shù)據(jù)存儲器的差異,其體系結(jié)構(gòu)可分為馮·諾伊曼結(jié)構(gòu)(Von Neumann Architecture)和哈佛結(jié)構(gòu)(Harvard Architecture)。

馮·諾伊曼結(jié)構(gòu)也稱普林斯頓結(jié)構(gòu)(Princeton Architecture),是一種將程序指令存儲器和數(shù)據(jù)存儲器合并在一起的概念結(jié)構(gòu),程序指令存儲地址和數(shù)據(jù)存儲地址指向同一個存儲器的不同物理位置,因此程序指令和數(shù)據(jù)的位數(shù)相同,如Intel公司的8086處理器的程序指令和數(shù)據(jù)都是16位的。馮·諾伊曼結(jié)構(gòu)的處理器必須具備一個存儲器、一個控制器、一個運算器和輸入/輸出設備。由于馮·諾伊曼結(jié)構(gòu)的程序指令和數(shù)據(jù)存儲在同一個存儲器中,形成系統(tǒng)對存儲器的過分依賴,導致其運行效率相對較低,典型的x86、ARM7處理器采用該結(jié)構(gòu)。

哈佛結(jié)構(gòu)是一種將程序指令存儲和數(shù)據(jù)存儲分開的存儲器結(jié)構(gòu)。中央處理器首先到程序指令存儲器中讀取程序指令,解碼后得到數(shù)據(jù)地址,再到相應的數(shù)據(jù)存儲器中讀取數(shù)據(jù),并進行下一步的操作(通常是執(zhí)行)。程序指令存儲和數(shù)據(jù)存儲分開,數(shù)據(jù)和程序指令的存儲可以同時進行,可以使程序指令和數(shù)據(jù)有不同的位數(shù),如Microchip公司的PIC16芯片的程序指令是14位的,而數(shù)據(jù)是8位的;MCS-51、ARM9、ARM10和ARM11等采用哈佛結(jié)構(gòu)。

由于數(shù)據(jù)存儲器與程序指令存儲器采用不同的總線,因而較大地提高了存儲器的帶寬,使其數(shù)字信號處理性能更加優(yōu)越,CPU運行效率相對更高。

1.1.4 單片機常用術語

1.位(bit)

位是計算機所能表示的最基本、最小的數(shù)據(jù)單元。計算機采用二進制數(shù),所以位就是一個二進制位,它有兩種狀態(tài)——“0”和“1”。不同的二進制位組合就可以表示不同的數(shù)據(jù)、字符等信息。

2.字(Word)和字長

字是計算機內(nèi)部進行數(shù)據(jù)處理的基本單位,通常它與計算機內(nèi)部的寄存器、算術邏輯單元、數(shù)據(jù)總線位數(shù)一致。計算機的每一個字所包含的二進制位數(shù)稱為字長。

3.字節(jié)(Byte)

相鄰的8位二進制數(shù)稱為字節(jié)。字節(jié)長度是固定的,但不同計算機的字長是不同的。8位計算機的字長等于1字節(jié),而16位計算機的字長等于2字節(jié),32位計算機的字長等于4字節(jié)。目前為了表示方便,常把1字節(jié)定為8位,把1個字定為16位,把1個雙字定為32位。

4.存儲容量

存儲容量是衡量內(nèi)部存儲器能存儲二進制信息量多少的一個技術指標。通常把8位二進制代碼稱為一字節(jié)(Byte),16位二進制代碼稱為一個字(Word),把32位二進制代碼稱為一個雙字(DWORD)。存儲器容量一般以字節(jié)為最基本的計量單位。一字節(jié)記為1B,1024字節(jié)記為1KB,1024KB記為1MB,1024MB記為1GB,而1024GB記為1TB。在表示存儲容量時,大寫字母“B”表示字節(jié)(Byte),小寫字母“b”表示位(bit),比如16B實際表示16×8bit=128bit。

5.指令(Instruction)

指令是規(guī)定計算機進行某種操作的命令。它是計算機自動控制的依據(jù)。計算機只能直接識別0和1組合的編碼,這就是指令的機器碼。計算機的機器碼指令長度可以是1字節(jié)、2字節(jié),也可以是多字節(jié),如4字節(jié)、6字節(jié)等。

6.程序(Program)

程序是指令的有序集合,是一組為完成某種任務而編制的指令序列。

7.指令系統(tǒng)(Instruction Set)

指令系統(tǒng)是一臺計算機所能執(zhí)行的全部指令。

8.指令流水線

指令流水線是為提高處理器執(zhí)行指令的效率,把一條指令的操作分成多個細小的步驟,每個步驟由專門的電路完成的方式。

指令順序執(zhí)行時通常需要經(jīng)過3個階段:取指、譯碼、執(zhí)行,每個階段都要花費一個機器周期,如果沒有采用流水線技術,那么執(zhí)行這條指令需要3個機器周期;如果采用了指令流水線技術,那么當這條指令完成“取指”后進入“譯碼”時,下一條指令就可以進行“取指”了,這樣就提高了指令的執(zhí)行效率。

9.CISC和RISC

CISC(Complex Instruction Set Computer,復雜指令集計算機)指令能力強,但多數(shù)指令使用率低,進而增加了CPU的復雜度。它不僅帶來了計算機結(jié)構(gòu)上的復雜性,同時使程序設計更為復雜,致使出錯的概率增加。此外,大量使用復雜的存儲器操作指令,很難大幅提高計算機的效率。

RISC(Reduced Instruction Set Computer,精簡指令集計算機)的最大特點是指令系統(tǒng)簡單,使計算機的結(jié)構(gòu)更加簡單、更加合理,使系統(tǒng)達到最高的效率。為此,首先簡化硬件設計,排除那些實現(xiàn)復雜功能的復雜指令,而保留能提高機器性能并且使用頻率最高的指令。精簡指令集計算機開始于20世紀80年代中后期。這是計算機體系結(jié)構(gòu)發(fā)展的又一次重大變革,是計算機發(fā)展的必然趨勢。RISC技術的主要特點如下。

● 采用高效的流水線操作,使指令在流水線中并行地操作,從而提高處理數(shù)據(jù)和指令的速度。

● 指令格式的規(guī)格化和簡單化:為與流水線結(jié)構(gòu)相適應且提高流水線的效率,指令的格式必須趨于簡單和固定的格式。此外,盡量減少尋址方式,從而使硬件邏輯部件簡化且縮短譯碼時間,同時也提高了機器執(zhí)行效率和可靠性。

● 采用面向寄存器堆的指令:RISC結(jié)構(gòu)采用大量的寄存器操作指令,使指令系統(tǒng)更為精簡,控制部件更為簡化,指令執(zhí)行速度大大提高。

● 采用裝入/存儲指令結(jié)構(gòu):RISC結(jié)構(gòu)的指令系統(tǒng)中,只有裝入/存儲指令可以訪問內(nèi)存,而其他指令均在寄存器之間對數(shù)據(jù)進行處理。用裝入指令從內(nèi)存中將數(shù)據(jù)取出,送到寄存器;在寄存器之間對數(shù)據(jù)進行快速處理,并將數(shù)據(jù)暫存在那里,以便再有需要時,不必再次訪問內(nèi)存,提高了指令執(zhí)行的速度。

10.分時復用和多功能復用

單片機某些引腳具有分時復用功能,這些引腳在不同時段傳輸不同類型的信號,達到多路傳輸?shù)哪康摹H鏜CS-51單片機P0端口的8個引腳具備地址/數(shù)據(jù)(AD0~AD7)分時復用功能,即這些引腳前一個時間段傳輸?shù)氖堑刂沸盘枺笠粋€時間段傳輸?shù)氖菙?shù)據(jù)信號。分時復用以時間作為信號分割傳輸?shù)膮⒘浚时仨毷垢髀沸盘栐跁r間軸上互不重疊,從而使不同的信號在不同的時間內(nèi)傳送。

單片機某些引腳具有多功能復用功能,是指這些引腳具備多個功能,但在一個具體應用中,這些引腳只能選擇其中一個功能,其他功能被禁止。

11.統(tǒng)一編址和獨立編址

統(tǒng)一編址是指把I/O接口中有關的I/O端口(寄存器)與存儲單元同等看待,將它們與存儲單元一起統(tǒng)一編排地址,即對I/O端口的訪問就如同對存儲單元的訪問一樣。訪問端口時,沒有專用的I/O指令,所使用的是CPU對存儲器的讀/寫操作指令,如MCS-51單片機外部擴展的I/O接口和RAM存儲器統(tǒng)一編址,均采用MOVX指令進行訪問。通常在整個地址空間中劃分出一小塊連續(xù)的地址分配給I/O端口;被分配給I/O端口的地址,存儲器不能使用,存儲器只能使用其他地址段。

獨立編址是指I/O端口的地址和存儲器的地址各自獨立,分別編排,二者的地址空間是相互獨立的。因此,必須有專門的I/O指令對端口進行操作。如8086系統(tǒng)中,對于I/O端口,CPU有專門的I/O指令去訪問,如8086系統(tǒng)的I/O讀寫專用指令為IN/OUT指令。

主站蜘蛛池模板: 和静县| 桂林市| 安仁县| 常宁市| 龙泉市| 张家口市| 宜君县| 酒泉市| 静乐县| 阳泉市| 西峡县| 珠海市| 泸定县| 广元市| 南丹县| 隆安县| 怀宁县| 隆化县| 白朗县| 郑州市| 拜城县| 章丘市| 台北县| 泰顺县| 靖安县| 金门县| 乐至县| 阜南县| 新沂市| 奉贤区| 共和县| 海盐县| 靖边县| 耒阳市| 兰考县| 聊城市| 长春市| 岱山县| 衡阳县| 泰和县| 万年县|