VB客房管理系統全套(帶源碼)顧客可以用電話或上網注冊的方式預定。其方式不同,但提交的內容是相同的:需要的房間類型,房間數,客人人數,預定時間,退房時間等。 服務臺查詢客房管理部,看看是否有滿足客人要求的客房。如果有,則記錄下客人的需要,同時客房管理部通知財務部準備收預約金,同時反饋給客人確認信息。
上傳時間: 2013-12-31
上傳用戶:2525775
三層班級留言本源碼 用VS2005寫的,對于其中沒有太多的技術含量, 但是還是蠻有參考價值的. 后臺數據庫的讀寫采用三層架構,沒有專業的后臺管理程序,所有操作都是同一個頁面上進行. 如果誰有需要,我將源碼放出來給大家參考下. 后臺數據庫sql2000 + asp.net2.0 最后說一句,沒有交流就沒有進步.
上傳時間: 2014-01-15
上傳用戶:hn891122
LINUX 線程池源代碼:Lock.cpp : 鎖的操作 , 讀鎖可以并發 , 寫鎖獨占. Queue.h : 隊列的封裝 , 隊列的讀和寫都加了鎖的保護. Socket.cpp : 套接口的簡單封裝. Thread.cpp : 線程的封裝實現了些簡單的線程停止,運行等功能 , 啟動別的線程的時候需要繼承次類. Worker.cpp : 用戶接口類 , 用戶需繼承此類。 ListenThread.cpp(繼承Thread.cpp) : 服務器監聽線程.如果有客戶端連接通知ThreadPool類,由ThreadPool類進行任務分派. TaskThread.cpp(繼承Thread.cpp) : 具體任務類,負責接受客戶端發送數據. ThreadPool.cpp (繼承Thread.cpp) : 線程池類負責啟動別的線程 , 并且進行線程調度。首先啟動ListenThread.cpp類,如果有客戶端 連接ListenThread.cpp類發送信號通知ThreadPool.cpp類,收到信號再分配給TaskThread.cpp類,進行處理。如果沒有空閑任務類,動態再
上傳時間: 2014-06-11
上傳用戶:wff
相當于UC/OS-II相當于系統的詳盡說明書,英文原版由UC/OS-II系統編著。讀者只需要一些C語言的基礎,如果有操作系統的基礎就更好。 本書將UC/OS-II分為各個模塊來講解,幾乎對所有的語句都作了注釋和分析,讀者可以挑選對自己工作有用的模塊章節來閱讀而不必通讀全書。 另外,本書不僅僅是簡單的翻譯,邵貝貝教授將其多年的嵌入式系統實際工作經驗也溶進了本書中,是嵌入式操作系統類圖書的典范。開發UC/OS-II開發系統必備書籍。
標簽: COS
上傳時間: 2013-06-21
上傳用戶:愛順不順
PCB 布線原則連線精簡原則連線要精簡,盡可能短,盡量少拐彎,力求線條簡單明了,特別是在高頻回路中,當然為了達到阻抗匹配而需要進行特殊延長的線就例外了,例如蛇行走線等。安全載流原則銅線的寬度應以自己所能承載的電流為基礎進行設計,銅線的載流能力取決于以下因素:線寬、線厚(銅鉑厚度)、允許溫升等,下表給出了銅導線的寬度和導線面積以及導電電流的關系(軍品標準),可以根據這個基本的關系對導線寬度進行適當的考慮。印制導線最大允許工作電流(導線厚50um,允許溫升10℃)導線寬度(Mil) 導線電流(A) 其中:K 為修正系數,一般覆銅線在內層時取0.024,在外層時取0.048;T 為最大溫升,單位為℃;A 為覆銅線的截面積,單位為mil(不是mm,注意);I 為允許的最大電流,單位是A。電磁抗干擾原則電磁抗干擾原則涉及的知識點比較多,例如銅膜線的拐彎處應為圓角或斜角(因為高頻時直角或者尖角的拐彎會影響電氣性能)雙面板兩面的導線應互相垂直、斜交或者彎曲走線,盡量避免平行走線,減小寄生耦合等。一、 通常一個電子系統中有各種不同的地線,如數字地、邏輯地、系統地、機殼地等,地線的設計原則如下:1、 正確的單點和多點接地在低頻電路中,信號的工作頻率小于1MHZ,它的布線和器件間的電感影響較小,而接地電路形成的環流對干擾影響較大,因而應采用一點接地。當信號工作頻率大于10MHZ 時,如果采用一點接地,其地線的長度不應超過波長的1/20,否則應采用多點接地法。2、 數字地與模擬地分開若線路板上既有邏輯電路又有線性電路,應盡量使它們分開。一般數字電路的抗干擾能力比較強,例如TTL 電路的噪聲容限為0.4~0.6V,CMOS 電路的噪聲容限為電源電壓的0.3~0.45 倍,而模擬電路只要有很小的噪聲就足以使其工作不正常,所以這兩類電路應該分開布局布線。3、 接地線應盡量加粗若接地線用很細的線條,則接地電位會隨電流的變化而變化,使抗噪性能降低。因此應將地線加粗,使它能通過三倍于印制板上的允許電流。如有可能,接地線應在2~3mm 以上。4、 接地線構成閉環路只由數字電路組成的印制板,其接地電路布成環路大多能提高抗噪聲能力。因為環形地線可以減小接地電阻,從而減小接地電位差。二、 配置退藕電容PCB 設計的常規做法之一是在印刷板的各個關鍵部位配置適當的退藕電容,退藕電容的一般配置原則是:?電電源的輸入端跨½10~100uf的的電解電容器,如果印制電路板的位置允許,采Ó100uf以以上的電解電容器抗干擾效果會更好¡���?原原則上每個集成電路芯片都應布置一¸0.01uf~`0.1uf的的瓷片電容,如遇印制板空隙不夠,可Ã4~8個個芯片布置一¸1~10uf的的鉭電容(最好不用電解電容,電解電容是兩層薄膜卷起來的,這種卷起來的結構在高頻時表現為電感,最好使用鉭電容或聚碳酸醞電容)。���?對對于抗噪能力弱、關斷時電源變化大的器件,ÈRA、¡ROM存存儲器件,應在芯片的電源線和地線之間直接接入退藕電容¡���?電電容引線不能太長,尤其是高頻旁路電容不能有引線¡三¡過過孔設¼在高ËPCB設設計中,看似簡單的過孔也往往會給電路的設計帶來很大的負面效應,為了減小過孔的寄生效應帶來的不利影響,在設計中可以盡量做到£���?從從成本和信號質量兩方面來考慮,選擇合理尺寸的過孔大小。例如¶6- 10層層的內存模¿PCB設設計來說,選Ó10/20mi((鉆¿焊焊盤)的過孔較好,對于一些高密度的小尺寸的板子,也可以嘗試使Ó8/18Mil的的過孔。在目前技術條件下,很難使用更小尺寸的過孔了(當孔的深度超過鉆孔直徑µ6倍倍時,就無法保證孔壁能均勻鍍銅);對于電源或地線的過孔則可以考慮使用較大尺寸,以減小阻抗¡���?使使用較薄µPCB板板有利于減小過孔的兩種寄生參數¡���? PCB板板上的信號走線盡量不換層,即盡量不要使用不必要的過孔¡���?電電源和地的管腳要就近打過孔,過孔和管腳之間的引線越短越好¡���?在在信號換層的過孔附近放置一些接地的過孔,以便為信號提供最近的回路。甚至可以ÔPCB板板上大量放置一些多余的接地過孔¡四¡降降低噪聲與電磁干擾的一些經Ñ?能能用低速芯片就不用高速的,高速芯片用在關鍵地方¡?可可用串一個電阻的方法,降低控制電路上下沿跳變速率¡?盡盡量為繼電器等提供某種形式的阻尼,ÈRC設設置電流阻尼¡?使使用滿足系統要求的最低頻率時鐘¡?時時鐘應盡量靠近到用該時鐘的器件,石英晶體振蕩器的外殼要接地¡?用用地線將時鐘區圈起來,時鐘線盡量短¡?石石英晶體下面以及對噪聲敏感的器件下面不要走線¡?時時鐘、總線、片選信號要遠ÀI/O線線和接插件¡?時時鐘線垂直ÓI/O線線比平行ÓI/O線線干擾小¡? I/O驅驅動電路盡量靠½PCB板板邊,讓其盡快離¿PC。。對進ÈPCB的的信號要加濾波,從高噪聲區來的信號也要加濾波,同時用串終端電阻的辦法,減小信號反射¡? MCU無無用端要接高,或接地,或定義成輸出端,集成電路上該接電源、地的端都要接,不要懸空¡?閑閑置不用的門電路輸入端不要懸空,閑置不用的運放正輸入端接地,負輸入端接輸出端¡?印印制板盡量使Ó45折折線而不Ó90折折線布線,以減小高頻信號對外的發射與耦合¡?印印制板按頻率和電流開關特性分區,噪聲元件與非噪聲元件呀距離再遠一些¡?單單面板和雙面板用單點接電源和單點接地、電源線、地線盡量粗¡?模模擬電壓輸入線、參考電壓端要盡量遠離數字電路信號線,特別是時鐘¡?對¶A/D類類器件,數字部分與模擬部分不要交叉¡?元元件引腳盡量短,去藕電容引腳盡量短¡?關關鍵的線要盡量粗,并在兩邊加上保護地,高速線要短要直¡?對對噪聲敏感的線不要與大電流,高速開關線并行¡?弱弱信號電路,低頻電路周圍不要形成電流環路¡?任任何信號都不要形成環路,如不可避免,讓環路區盡量小¡?每每個集成電路有一個去藕電容。每個電解電容邊上都要加一個小的高頻旁路電容¡?用用大容量的鉭電容或聚酷電容而不用電解電容做電路充放電儲能電容,使用管狀電容時,外殼要接地¡?對對干擾十分敏感的信號線要設置包地,可以有效地抑制串擾¡?信信號在印刷板上傳輸,其延遲時間不應大于所有器件的標稱延遲時間¡環境效應原Ô要注意所應用的環境,例如在一個振動或者其他容易使板子變形的環境中采用過細的銅膜導線很容易起皮拉斷等¡安全工作原Ô要保證安全工作,例如要保證兩線最小間距要承受所加電壓峰值,高壓線應圓滑,不得有尖銳的倒角,否則容易造成板路擊穿等。組裝方便、規范原則走線設計要考慮組裝是否方便,例如印制板上有大面積地線和電源線區時(面積超¹500平平方毫米),應局部開窗口以方便腐蝕等。此外還要考慮組裝規范設計,例如元件的焊接點用焊盤來表示,這些焊盤(包括過孔)均會自動不上阻焊油,但是如用填充塊當表貼焊盤或用線段當金手指插頭,而又不做特別處理,(在阻焊層畫出無阻焊油的區域),阻焊油將掩蓋這些焊盤和金手指,容易造成誤解性錯誤£SMD器器件的引腳與大面積覆銅連接時,要進行熱隔離處理,一般是做一¸Track到到銅箔,以防止受熱不均造成的應力集Ö而導致虛焊£PCB上上如果有¦12或或方Ð12mm以以上的過孔時,必須做一個孔蓋,以防止焊錫流出等。經濟原則遵循該原則要求設計者要對加工,組裝的工藝有足夠的認識和了解,例È5mil的的線做腐蝕要±8mil難難,所以價格要高,過孔越小越貴等熱效應原則在印制板設計時可考慮用以下幾種方法:均勻分布熱負載、給零件裝散熱器,局部或全局強迫風冷。從有利于散熱的角度出發,印制板最好是直立安裝,板與板的距離一般不應小Ó2c,,而且器件在印制板上的排列方式應遵循一定的規則£同一印制板上的器件應盡可能按其發熱量大小及散熱程度分區排列,發熱量小或耐熱性差的器件(如小信號晶體管、小規模集³電路、電解電容等)放在冷卻氣流的最上(入口處),發熱量大或耐熱性好的器件(如功率晶體管、大規模集成電路等)放在冷卻Æ流最下。在水平方向上,大功率器件盡量靠近印刷板的邊沿布置,以便縮短傳熱路徑;在垂直方向上,大功率器件盡量靠近印刷板上方布置£以便減少這些器件在工作時對其他器件溫度的影響。對溫度比較敏感的器件最好安置在溫度最低的區域(如設備的µ部),千萬不要將它放在發熱器件的正上方,多個器件最好是在水平面上交錯布局¡設備內印制板的散熱主要依靠空氣流動,所以在設計時要研究空氣流動的路徑,合理配置器件或印制電路板。采用合理的器件排列方式,可以有效地降低印制電路的溫升。此外通過降額使用,做等溫處理等方法也是熱設計中經常使用的手段¡
上傳時間: 2013-11-24
上傳用戶:氣溫達上千萬的
單片機指令系統原理 51單片機的尋址方式 學習匯編程序設計,要先了解CPU的各種尋址法,才能有效的掌握各個命令的用途,尋址法是命令運算碼找操作數的方法。在我們學習的8051單片機中,有6種尋址方法,下面我們將逐一進行分析。 立即尋址 在這種尋址方式中,指令多是雙字節的,一般第一個字節是操作碼,第二個字節是操作數。該操作數直接參與操作,所以又稱立即數,有“#”號表示。立即數就是存放在程序存儲器中的常數,換句話說就是操作數(立即數)是包含在指令字節中的。 例如:MOV A,#3AH這條指令的指令代碼為74H、3AH,是雙字節指令,這條指令的功能是把立即數3AH送入累加器A中。MOV DPTR,#8200H在前面學單片機的專用寄存器時,我們已學過,DPTR是一個16位的寄存器,它由DPH及DPL兩個8位的寄存器組成。這條指令的意思就是把立即數的高8位(即82H)送入DPH寄存器,把立即數的低8位(即00H)送入DPL寄存器。這里也特別說明一下:在80C51單片機的指令系統中,僅有一條指令的操作數是16位的立即數,其功能是向地址指針DPTR傳送16位的地址,即把立即數的高8位送入DPH,低8位送入DPL。 直接尋址 直接尋址方式是指在指令中操作數直接以單元地址的形式給出,也就是在這種尋址方式中,操作數項給出的是參加運算的操作數的地址,而不是操作數。例如:MOV A,30H 這條指令中操作數就在30H單元中,也就是30H是操作數的地址,并非操作數。 在80C51單片機中,直接地址只能用來表示特殊功能寄存器、內部數據存儲器以及位地址空間,具體的說就是:1、內部數據存儲器RAM低128單元。在指令中是以直接單元地址形式給出。我們知道低128單元的地址是00H-7FH。在指令中直接以單元地址形式給出這句話的意思就是這0-127共128位的任何一位,例如0位是以00H這個單元地址形式給出、1位就是以01H單元地址給出、127位就是以7FH形式給出。2、位尋址區。20H-2FH地址單元。3、特殊功能寄存器。專用寄存器除以單元地址形式給出外,還可以以寄存器符號形式給出。例如下面我們分析的一條指令 MOV IE,#85H 前面的學習我們已知道,中斷允許寄存器IE的地址是80H,那么也就是這條指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。 關于數據存儲器RAM的內部情況,請查看我們課程的第十二課。 直接尋址是唯一能訪問特殊功能寄存器的尋址方式! 大家來分析下面幾條指令:MOV 65H,A ;將A的內容送入內部RAM的65H單元地址中MOV A,direct ;將直接地址單元的內容送入A中MOV direct,direct;將直接地址單元的內容送直接地址單元MOV IE,#85H ;將立即數85H送入中斷允許寄存器IE 前面我們已學過,數據前面加了“#”的,表示后面的數是立即數(如#85H,就表示85H就是一個立即數),數據前面沒有加“#”號的,就表示后面的是一個地址地址(如,MOV 65H,A這條指令的65H就是一個單元地址)。 寄存器尋址 寄存器尋址的尋址范圍是:1、4個工作寄存器組共有32個通用寄存器,但在指令中只能使用當前寄存器組(工作寄存器組的選擇在前面專用寄存器的學習中,我們已知道,是由程序狀態字PSW中的RS1和RS0來確定的),因此在使用前常需要通過對PSW中的RS1、RS0位的狀態設置,來進行對當前工作寄存器組的選擇。2、部份專用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和進位位CY。 寄存器尋址方式是指操作數在寄存器中,因此指定了寄存器名稱就能得到操作數。例如:MOV A,R0這條指令的意思是把寄存器R0的內容傳送到累加器A中,操作數就在R0中。INC R3這條指令的意思是把寄存器R3中的內容加1 從前面的學習中我產應可以理解到,其實寄存器尋址方式就是對由PSW程序狀態字確定的工作寄存器組的R0-R7進行讀/寫操作。 寄存器間接尋址 寄存間接尋址方式是指寄存器中存放的是操作數的地址,即操作數是通過寄存器間接得到的,因此稱為寄存器間接尋址。 MCS-51單片機規定工作寄存器的R0、R1做為間接尋址寄存器。用于尋址內部或外部數據存儲器的256個單元。為什么會是256個單元呢?我們知道,R0或者R1都是一個8位的寄存器,所以它的尋址空間就是2的八次方=256。例:MOV R0,#30H ;將值30H加載到R0中 MOV A,@R0 ;把內部RAM地址30H內的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H內的值放到累加器A中 大家想想,如果用DPTR做為間址寄存器,那么它的尋址范圍是多少呢?DPTR是一個16位的寄存器,所以它的尋址范圍就是2的十六次方=65536=64K。因用DPTR做為間址寄存器的尋址空間是64K,所以訪問片外數據存儲器時,我們通常就用DPTR做為間址寄存器。例:MOV DPTR,#1234H ;將DPTR值設為1234H(16位) MOVX A,@DPTR ;將外部RAM或I/O地址1234H內的值放到累加器A中 在執行PUSH(壓棧)和POP(出棧)指令時,采用堆棧指針SP作寄存器間接尋址。例:PUSH 30H ;把內部RAM地址30H內的值放到堆棧區中堆棧區是由SP寄存器指定的,如果執行上面這條命令前,SP為60H,命令執行后會把內部RAM地址30H內的值放到RAM的61H內。 那么做為寄存器間接尋址用的寄存器主要有哪些呢?我們前面提到的有四個,R0、R1、DPTR、SP 寄存器間接尋址范圍總結:1、內部RAM低128單元。對內部RAM低128單元的間接尋址,應使用R0或R1作間址寄存器,其通用形式為@Ri(i=0或1)。 2、外部RAM 64KB。對外部RAM64KB的間接尋址,應使用@DPTR作間址尋址寄存器,其形式為:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的單元的內容送入累加器A中。外部RAM的低256單元是一個特殊的尋址區,除可以用DPTR作間址寄存器尋址外,還可以用R0或R1作間址寄存器尋址。例如MOVX A,@R0;這條指令的意思是,把R0指定的外部RAM單元的內容送入累加器A。 堆棧操作指令(PUSH和POP)也應算作是寄存器間接尋址,即以堆棧指針SP作間址寄存器的間接尋址方式。 寄存器間接尋址方式不可以訪問特殊功能寄存器!! 寄存器間接尋址也須以寄存器符號的形式表示,為了區別寄存器尋址我寄存器間接尋址的區別,在寄存器間接尋址方式式中,寄存器的名稱前面加前綴標志“@”。 基址寄存器加變址寄存器的變址尋址 這種尋址方式以程序計數器PC或DPTR為基址寄存器,累加器A為變址寄存器,變址尋址時,把兩者的內容相加,所得到的結果作為操作數的地址。這種方式常用于訪問程序存儲器ROM中的數據表格,即查表操作。變址尋址只能讀出程序內存入的值,而不能寫入,也就是說變址尋址這種方式只能對程序存儲器進行尋址,或者說它是專門針對程序存儲器的尋址方式。例:MOVC A,@A+DPTR這條指令的功能是把DPTR和A的內容相加,再把所得到的程序存儲器地址單元的內容送A假若指令執行前A=54H,DPTR=3F21H,則這條指令變址尋址形成的操作數地址就是54H+3F21H=3F75H。如果3F75H單元中的內容是7FH,則執行這條指令后,累加器A中的內容就是7FH。 變址尋址的指令只有三條,分別如下:JMP @A+DPTRMOVC A,@A+DPTRMOVC A,@A+PC 第一條指令JMP @A+DPTR這是一條無條件轉移指令,這條指令的意思就是DPTR加上累加器A的內容做為一個16位的地址,執行JMP這條指令是,程序就轉移到A+DPTR指定的地址去執行。 第二、三條指令MOVC A,@A+DPTR和MOVC A,@A+PC指令這兩條指令的通常用于查表操作,功能完全一樣,但使用起來卻有一定的差別,現詳細說明如下。我們知道,PC是程序指針,是十六位的。DPTR是一個16位的數據指針寄存器,按理,它們的尋址范圍都應是64K。我們在學習特殊功能寄存器時已知道,程序計數器PC是始終跟蹤著程序的執行的。也就是說,PC的值是隨程序的執行情況自動改變的,我們不可以隨便的給PC賦值。而DPTR是一個數據指針,我們就可以給空上數據指針DPTR進行賦值。我們再看指令MOVC A,@A+PC這條指令的意思是將PC的值與累加器A的值相加作為一個地址,而PC是固定的,累加器A是一個8位的寄存器,它的尋址范圍是256個地址單元。講到這里,大家應可明白,MOVC A,@A+PC這條指令的尋址范圍其實就是只能在當前指令下256個地址單元。所在,這在我們實際應用中,可能就會有一個問題,如果我們需要查詢的數據表在256個地址單元之內,則可以用MOVC A,@A+PC這條指令進行查表操作,如果超過了256個單元,則不能用這條指令進行查表操作。剛才我們已說到,DPTR是一個數據指針,這個數據指針我們可以給它賦值操作的。通過賦值操作。我們可以使MOVC A,@A+DPTR這條指令的尋址范圍達到64K。這就是這兩條指令在實際應用當中要注意的問題。 變址尋址方式是MCS-51單片機所獨有的一種尋址方式。 位尋址 80C51單片機有位處理功能,可以對數據位進行操作,因此就有相應的位尋址方式。所謂位尋址,就是對內部RAM或可位尋址的特殊功能寄存器SFR內的某個位,直接加以置位為1或復位為0。 位尋址的范圍,也就是哪些部份可以進行位尋址: 1、我們在第十二課學習51單片機的存儲器結構時,我們已知道在單片機的內部數據存儲器RAM的低128單元中有一個區域叫位尋址區。它的單元地址是20H-2FH。共有16個單元,一個單元是8位,所以位尋址區共有128位。這128位都單獨有一個位地址,其位地址的名字就是00H-7FH。這里就有一個比較麻煩的問題需要大家理解清楚了。我們在前面的學習中00H、01H。。。。7FH等等,所表示的都是一個字節(或者叫單元地址),而在這里,這些數據都變成了位地址。我們在指令中,或者在程序中如何來區分它是一個單元地址還是一個位地址呢?這個問題,也就是我們現在正在研究的位尋址的一個重要問題。其實,區分這些數據是位地址還是單元地址,我們都有相應的指令形式的。這個問題我們在后面的指令系統學習中再加以論述。 2、對專用寄存器位尋址。這里要說明一下,不是所有的專用寄存器都可以位尋址的。具體哪些專用寄存器可以哪些專用寄存器不可以,請大家回頭去看看我們前面關于專用寄存器的相關文章。一般來說,地址單元可以被8整除的專用寄存器,通常都可以進行位尋址,當然并不是全部,大家在應用當中應引起注意。 專用寄存器的位尋址表示方法: 下面我們以程序狀態字PSW來進行說明 D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P 1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示為D5H MOV C,D5H 2、位名稱表示:表示該位的名稱,例如PSW的位5是F0,所以可以用F0表示 MOV C,F0 3、單元(字節)地址加位表示:D0H單元位5,表示為DOH.5 MOV C,D0H.5 4、專用寄存器符號加位表示:例如PSW.5 MOV C,PSW.5 這四種方法實現的功能都是相同的,只是表述的方式不同而已。 例題: 1. 說明下列指令中源操作數采用的尋址方式。 MOV R5,R7 答案:寄存器尋址方式 MOV A,55H 直接尋址方式 MOV A,#55H 立即尋址方式 JMP @A+DPTR 變址尋址方式 MOV 30H,C 位尋址方式 MOV A,@R0 間接尋址方式 MOVX A,@R0 間接尋址方式 改錯題 請判斷下列的MCS-51單片機指令的書寫格式是否有錯,若有,請說明錯誤原因。 MOV R0,@R3 答案:間址寄存器不能使用R2~R7。 MOVC A,@R0+DPTR 變址尋址方式中的間址寄存器不可使用R0,只可使用A。 ADD R0,R1 運算指令中目的操作數必須為累加器A,不可為R0。 MUL AR0 乘法指令中的乘數應在B寄存器中,即乘法指令只可使用AB寄存器組合。
上傳時間: 2013-11-11
上傳用戶:caozhizhi
嵌入式系統是一種應用范圍非常廣泛的系統。可以說除了桌面計算機和服務器外所有計算設備都屬于嵌入式系統,例如從便攜式音樂播放器到航天飛機上的實時系統控制都屬于嵌入式系統。 大多數商用的嵌入式系統都設計成專用任務的低成本的產品。大多數的嵌入式系統都具有實時性的要求。有些功能需要非常快的主頻,但其他大多數功能并不需要高速的處理能力。這些系統通過特定的器件和軟件來滿足實時性的要求。 簡單地通過速度和成本來定義嵌入式系統是困難的,但對于大批量的產品而言,成本常常對系統設計起決定作用。通常,一個嵌入式系統的很多部分相對系統主要功能來說需要較低的性能,因此嵌入式系統和通用PC相比,能夠使用一個滿足輔助功能的合適的CPU,從而簡化了系統設計,降低了成本。例如,數字電視的機頂盒需要處理每秒以百萬兆位計的連續數據,但這些數據處理大部分是由定制的硬件來實現的,如解析、管理和編解碼多個頻道的數字影像。 對于大批量生產的嵌入式系統,如便攜式音樂播放器或手機等,降低成本就成為最主要的問題。這些系統通常只具有幾個芯片:一個高度集成的CPU,一個定制的芯片用于控制其他所有的功能,還有一個存儲芯片。在這種設計中,每部分都設計成使用最小的系統功耗。 對于小批量的嵌入式應用,為了降低開發成本,常常使用PC體系結構,通過限制程序的執行時間或用一個實時操作系統來替換原先的操作系統。在這種情況下,可以使用一個或多個高性能的CPU來替換特殊用途的硬件。 嵌入式系統的軟件通常運行在有限的硬件資源上:沒有硬盤、操作系統、鍵盤或屏幕。軟件一般都沒有文件系統,如果有的話,也會采用Flash驅動器。如果有人機交互接口的話,也是一個小鍵盤或液晶顯示器。硬件是計算機的物理部分,和存儲在硬件中的計算機軟件程序和數據區分開來。 嵌入到機械中的嵌入式系統需要長期無故障連續運行,因此它的軟件需要比PC中的軟件更加仔細地開發和更加嚴格地測試。 那么,到底什么是嵌入式系統呢? 根據IEEE(國際電氣和電子工程師協會)的定義,嵌入式系統是“控制、監視或者輔助設備、機器和車間運行的裝置”(原文為devices used to control,monitor,or assist the operation of equipment,machinery or plants)。這主要是從應用上加以定義的,從中可以看出嵌入式系統是軟件和硬件的綜合體,還可以涵蓋機械等附屬裝置。 目前國內一個普遍被認同的定義是:以應用為中心、以計算機技術為基礎,軟件 硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。 可以這樣認為,嵌入式系統是一種專用的計算機系統,作為裝置或設備的一部分。通常,嵌入式系統是一個控制程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數字接口的設備,如手表、微波爐、錄像機、汽車等,都使用嵌入式系統,有些嵌入式系統還包含操作系統,但大多數嵌入式系統都是由單個程序實現整個控制邏輯。 本書是按照人事部、信息產業部全國計算機技術與軟件專業技術資格(水平)考試要求編寫,內容緊扣《嵌入式系統設計考試大鋼》。全書共六章,分別對嵌入式系統基礎知識、嵌入式微處理器與接口設計、嵌入式軟件與操作系統、嵌入式軟件程序設計、嵌入式系統設計與維護等知識進行了詳細的講解。最后介紹了一個典型的嵌入式系統設計案例。 本書內容豐富,結構合理,概念清晰。既可作為全國計算機技術與軟件專業技術資格(水平)考試中嵌入式系統設計師級別的考試用書,供有關考生學習使用,也可作為本科生嵌入式系統相關課程教材或培訓書使用。
上傳時間: 2013-10-29
上傳用戶:dongqiangqiang
注:1.這篇文章斷斷續續寫了很久,畫圖技術也不精,難免錯漏,大家湊合看.有問題可以留言. 2.論壇排版把我的代碼縮進全弄沒了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調制波,通過調整輸出信號占空比,從而達到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調制波。分辨率8 位即2 的8 次方等于 256 級精度。但是有時候我們會覺得6 個PWM 引腳不夠用。比如我們做一個10 路燈調光, 就需要有10 個PWM 腳。Arduino Duemilanove 2009 有13 個數字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。 二、Arduino 軟件模擬PWM Arduino PWM 調壓原理:PWM 有好幾種方法。而Arduino 因為電源和實現難度限制,一般 使用周期恒定,占空比變化的單極性PWM。 通過調整一個周期里面輸出腳高/低電平的時間比(即是占空比)去獲得給一個用電器不同 的平均功率。 如圖所示,假設PWM 波形周期1ms(即1kHz),分辨率1000 級。那么需要一個信號時間 精度1ms/1000=1us 的信號源,即1MHz。所以說,PWM 的實現難點在于需要使用很高頻的 信號源,才能獲得快速與高精度。下面先由一個簡單的PWM 程序開始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 這是一個軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測試此代碼。 程序解析:由for 循環可以看出,完成一個PWM 周期,共循環255 次。 假設bright=100 時候,在第0~100 次循環中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平; 然后第100 到255 次循環里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無 論輸出高低電平都保持30us。 那么說,如果bright=100 的話,就有100 次循環是高電平,155 次循環是低電平。 如果忽略指令執行時間的話,這次的PWM 波形占空比為100/255,如果調整bright 的值, 就能改變接在D13 的LED 的亮度。 這里設置了每次for 循環之后,將bright 加一,并且當bright 加到255 時歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應該是大家想的比較多的想法。 然后介紹一個簡單一點的。思維風格完全不同。不過對于驅動一個LED 來說,效果與上面 的程序一樣。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,這段代碼少了一個For 循環。它先輸出一個高電平,然后維持(bright*30)us。然 后輸出一個低電平,維持時間((255-bright)*30)us。這樣兩次高低就能完成一個PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運行起來不占CPU 時間,所以軟件模擬一個引腳的PWM 完全沒有實用意義。我們軟件模擬的價值在于:他能將任意的數字IO 口變成PWM 引腳。 當一片Arduino 要同時控制多個PWM,并且沒有其他重任務的時候,就要用軟件PWM 了。 多引腳PWM 有一種下面的方式: int brights[14] = {0}; //定義14個引腳的初始亮度,可以隨意設置 int StartPWMPin = 0, EndPWMPin = 13; //設置D0~D13為PWM 引腳 int PWMResolution = 255; //設置PWM 占空比分辨率 void setup() { //定義所有IO 端輸出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //隨便定義個初始亮度,便于觀察 brights[ i ] = random(0, 255); } } void loop() { //這for 循環是為14盞燈做漸亮的。每次Arduino loop()循環, //brights 自增一次。直到brights=255時候,將brights 置零重新計數。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是計數一個PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個PWM 周期均遍歷所有引腳 { if(i < brights[j])\ 所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調整LED 亮度的話,我們用64 級精度就行。這樣速度就是2x32x64=4ms。就不會閃了。
上傳時間: 2013-10-08
上傳用戶:dingdingcandy
PCB 布線原則連線精簡原則連線要精簡,盡可能短,盡量少拐彎,力求線條簡單明了,特別是在高頻回路中,當然為了達到阻抗匹配而需要進行特殊延長的線就例外了,例如蛇行走線等。安全載流原則銅線的寬度應以自己所能承載的電流為基礎進行設計,銅線的載流能力取決于以下因素:線寬、線厚(銅鉑厚度)、允許溫升等,下表給出了銅導線的寬度和導線面積以及導電電流的關系(軍品標準),可以根據這個基本的關系對導線寬度進行適當的考慮。印制導線最大允許工作電流(導線厚50um,允許溫升10℃)導線寬度(Mil) 導線電流(A) 其中:K 為修正系數,一般覆銅線在內層時取0.024,在外層時取0.048;T 為最大溫升,單位為℃;A 為覆銅線的截面積,單位為mil(不是mm,注意);I 為允許的最大電流,單位是A。電磁抗干擾原則電磁抗干擾原則涉及的知識點比較多,例如銅膜線的拐彎處應為圓角或斜角(因為高頻時直角或者尖角的拐彎會影響電氣性能)雙面板兩面的導線應互相垂直、斜交或者彎曲走線,盡量避免平行走線,減小寄生耦合等。一、 通常一個電子系統中有各種不同的地線,如數字地、邏輯地、系統地、機殼地等,地線的設計原則如下:1、 正確的單點和多點接地在低頻電路中,信號的工作頻率小于1MHZ,它的布線和器件間的電感影響較小,而接地電路形成的環流對干擾影響較大,因而應采用一點接地。當信號工作頻率大于10MHZ 時,如果采用一點接地,其地線的長度不應超過波長的1/20,否則應采用多點接地法。2、 數字地與模擬地分開若線路板上既有邏輯電路又有線性電路,應盡量使它們分開。一般數字電路的抗干擾能力比較強,例如TTL 電路的噪聲容限為0.4~0.6V,CMOS 電路的噪聲容限為電源電壓的0.3~0.45 倍,而模擬電路只要有很小的噪聲就足以使其工作不正常,所以這兩類電路應該分開布局布線。3、 接地線應盡量加粗若接地線用很細的線條,則接地電位會隨電流的變化而變化,使抗噪性能降低。因此應將地線加粗,使它能通過三倍于印制板上的允許電流。如有可能,接地線應在2~3mm 以上。4、 接地線構成閉環路只由數字電路組成的印制板,其接地電路布成環路大多能提高抗噪聲能力。因為環形地線可以減小接地電阻,從而減小接地電位差。二、 配置退藕電容PCB 設計的常規做法之一是在印刷板的各個關鍵部位配置適當的退藕電容,退藕電容的一般配置原則是:?電電源的輸入端跨½10~100uf的的電解電容器,如果印制電路板的位置允許,采Ó100uf以以上的電解電容器抗干擾效果會更好¡���?原原則上每個集成電路芯片都應布置一¸0.01uf~`0.1uf的的瓷片電容,如遇印制板空隙不夠,可Ã4~8個個芯片布置一¸1~10uf的的鉭電容(最好不用電解電容,電解電容是兩層薄膜卷起來的,這種卷起來的結構在高頻時表現為電感,最好使用鉭電容或聚碳酸醞電容)。���?對對于抗噪能力弱、關斷時電源變化大的器件,ÈRA、¡ROM存存儲器件,應在芯片的電源線和地線之間直接接入退藕電容¡���?電電容引線不能太長,尤其是高頻旁路電容不能有引線¡三¡過過孔設¼在高ËPCB設設計中,看似簡單的過孔也往往會給電路的設計帶來很大的負面效應,為了減小過孔的寄生效應帶來的不利影響,在設計中可以盡量做到£���?從從成本和信號質量兩方面來考慮,選擇合理尺寸的過孔大小。例如¶6- 10層層的內存模¿PCB設設計來說,選Ó10/20mi((鉆¿焊焊盤)的過孔較好,對于一些高密度的小尺寸的板子,也可以嘗試使Ó8/18Mil的的過孔。在目前技術條件下,很難使用更小尺寸的過孔了(當孔的深度超過鉆孔直徑µ6倍倍時,就無法保證孔壁能均勻鍍銅);對于電源或地線的過孔則可以考慮使用較大尺寸,以減小阻抗¡���?使使用較薄µPCB板板有利于減小過孔的兩種寄生參數¡���? PCB板板上的信號走線盡量不換層,即盡量不要使用不必要的過孔¡���?電電源和地的管腳要就近打過孔,過孔和管腳之間的引線越短越好¡���?在在信號換層的過孔附近放置一些接地的過孔,以便為信號提供最近的回路。甚至可以ÔPCB板板上大量放置一些多余的接地過孔¡四¡降降低噪聲與電磁干擾的一些經Ñ?能能用低速芯片就不用高速的,高速芯片用在關鍵地方¡?可可用串一個電阻的方法,降低控制電路上下沿跳變速率¡?盡盡量為繼電器等提供某種形式的阻尼,ÈRC設設置電流阻尼¡?使使用滿足系統要求的最低頻率時鐘¡?時時鐘應盡量靠近到用該時鐘的器件,石英晶體振蕩器的外殼要接地¡?用用地線將時鐘區圈起來,時鐘線盡量短¡?石石英晶體下面以及對噪聲敏感的器件下面不要走線¡?時時鐘、總線、片選信號要遠ÀI/O線線和接插件¡?時時鐘線垂直ÓI/O線線比平行ÓI/O線線干擾小¡? I/O驅驅動電路盡量靠½PCB板板邊,讓其盡快離¿PC。。對進ÈPCB的的信號要加濾波,從高噪聲區來的信號也要加濾波,同時用串終端電阻的辦法,減小信號反射¡? MCU無無用端要接高,或接地,或定義成輸出端,集成電路上該接電源、地的端都要接,不要懸空¡?閑閑置不用的門電路輸入端不要懸空,閑置不用的運放正輸入端接地,負輸入端接輸出端¡?印印制板盡量使Ó45折折線而不Ó90折折線布線,以減小高頻信號對外的發射與耦合¡?印印制板按頻率和電流開關特性分區,噪聲元件與非噪聲元件呀距離再遠一些¡?單單面板和雙面板用單點接電源和單點接地、電源線、地線盡量粗¡?模模擬電壓輸入線、參考電壓端要盡量遠離數字電路信號線,特別是時鐘¡?對¶A/D類類器件,數字部分與模擬部分不要交叉¡?元元件引腳盡量短,去藕電容引腳盡量短¡?關關鍵的線要盡量粗,并在兩邊加上保護地,高速線要短要直¡?對對噪聲敏感的線不要與大電流,高速開關線并行¡?弱弱信號電路,低頻電路周圍不要形成電流環路¡?任任何信號都不要形成環路,如不可避免,讓環路區盡量小¡?每每個集成電路有一個去藕電容。每個電解電容邊上都要加一個小的高頻旁路電容¡?用用大容量的鉭電容或聚酷電容而不用電解電容做電路充放電儲能電容,使用管狀電容時,外殼要接地¡?對對干擾十分敏感的信號線要設置包地,可以有效地抑制串擾¡?信信號在印刷板上傳輸,其延遲時間不應大于所有器件的標稱延遲時間¡環境效應原Ô要注意所應用的環境,例如在一個振動或者其他容易使板子變形的環境中采用過細的銅膜導線很容易起皮拉斷等¡安全工作原Ô要保證安全工作,例如要保證兩線最小間距要承受所加電壓峰值,高壓線應圓滑,不得有尖銳的倒角,否則容易造成板路擊穿等。組裝方便、規范原則走線設計要考慮組裝是否方便,例如印制板上有大面積地線和電源線區時(面積超¹500平平方毫米),應局部開窗口以方便腐蝕等。此外還要考慮組裝規范設計,例如元件的焊接點用焊盤來表示,這些焊盤(包括過孔)均會自動不上阻焊油,但是如用填充塊當表貼焊盤或用線段當金手指插頭,而又不做特別處理,(在阻焊層畫出無阻焊油的區域),阻焊油將掩蓋這些焊盤和金手指,容易造成誤解性錯誤£SMD器器件的引腳與大面積覆銅連接時,要進行熱隔離處理,一般是做一¸Track到到銅箔,以防止受熱不均造成的應力集Ö而導致虛焊£PCB上上如果有¦12或或方Ð12mm以以上的過孔時,必須做一個孔蓋,以防止焊錫流出等。經濟原則遵循該原則要求設計者要對加工,組裝的工藝有足夠的認識和了解,例È5mil的的線做腐蝕要±8mil難難,所以價格要高,過孔越小越貴等熱效應原則在印制板設計時可考慮用以下幾種方法:均勻分布熱負載、給零件裝散熱器,局部或全局強迫風冷。從有利于散熱的角度出發,印制板最好是直立安裝,板與板的距離一般不應小Ó2c,,而且器件在印制板上的排列方式應遵循一定的規則£同一印制板上的器件應盡可能按其發熱量大小及散熱程度分區排列,發熱量小或耐熱性差的器件(如小信號晶體管、小規模集³電路、電解電容等)放在冷卻氣流的最上(入口處),發熱量大或耐熱性好的器件(如功率晶體管、大規模集成電路等)放在冷卻Æ流最下。在水平方向上,大功率器件盡量靠近印刷板的邊沿布置,以便縮短傳熱路徑;在垂直方向上,大功率器件盡量靠近印刷板上方布置£以便減少這些器件在工作時對其他器件溫度的影響。對溫度比較敏感的器件最好安置在溫度最低的區域(如設備的µ部),千萬不要將它放在發熱器件的正上方,多個器件最好是在水平面上交錯布局¡設備內印制板的散熱主要依靠空氣流動,所以在設計時要研究空氣流動的路徑,合理配置器件或印制電路板。采用合理的器件排列方式,可以有效地降低印制電路的溫升。此外通過降額使用,做等溫處理等方法也是熱設計中經常使用的手段¡
上傳時間: 2015-01-02
上傳用戶:15070202241
注:1.這篇文章斷斷續續寫了很久,畫圖技術也不精,難免錯漏,大家湊合看.有問題可以留言. 2.論壇排版把我的代碼縮進全弄沒了,大家將代碼粘貼到arduino編譯器,然后按ctrl+T重新格式化代碼格式即可看的舒服. 一、什么是PWM PWM 即Pulse Wavelength Modulation 脈寬調制波,通過調整輸出信號占空比,從而達到改 變輸出平均電壓的目的。相信Arduino 的PWM 大家都不陌生,在Arduino Duemilanove 2009 中,有6 個8 位精度PWM 引腳,分別是3, 5, 6, 9, 10, 11 腳。我們可以使用analogWrite()控 制PWM 腳輸出頻率大概在500Hz 的左右的PWM 調制波。分辨率8 位即2 的8 次方等于 256 級精度。但是有時候我們會覺得6 個PWM 引腳不夠用。比如我們做一個10 路燈調光, 就需要有10 個PWM 腳。Arduino Duemilanove 2009 有13 個數字輸出腳,如果它們都可以 PWM 的話,就能滿足條件了。于是本文介紹用軟件模擬PWM。 二、Arduino 軟件模擬PWM Arduino PWM 調壓原理:PWM 有好幾種方法。而Arduino 因為電源和實現難度限制,一般 使用周期恒定,占空比變化的單極性PWM。 通過調整一個周期里面輸出腳高/低電平的時間比(即是占空比)去獲得給一個用電器不同 的平均功率。 如圖所示,假設PWM 波形周期1ms(即1kHz),分辨率1000 級。那么需要一個信號時間 精度1ms/1000=1us 的信號源,即1MHz。所以說,PWM 的實現難點在于需要使用很高頻的 信號源,才能獲得快速與高精度。下面先由一個簡單的PWM 程序開始: const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { if((bright++) == 255) bright = 0; for(int i = 0; i < 255; i++) { if(i < bright) { digitalWrite(PWMPin, HIGH); delayMicroseconds(30); } else { digitalWrite(PWMPin, LOW); delayMicroseconds(30); } } } 這是一個軟件PWM 控制Arduino D13 引腳的例子。只需要一塊Arduino 即可測試此代碼。 程序解析:由for 循環可以看出,完成一個PWM 周期,共循環255 次。 假設bright=100 時候,在第0~100 次循環中,i 等于1 到99 均小于bright,于是輸出PWMPin 高電平; 然后第100 到255 次循環里面,i 等于100~255 大于bright,于是輸出PWMPin 低電平。無 論輸出高低電平都保持30us。 那么說,如果bright=100 的話,就有100 次循環是高電平,155 次循環是低電平。 如果忽略指令執行時間的話,這次的PWM 波形占空比為100/255,如果調整bright 的值, 就能改變接在D13 的LED 的亮度。 這里設置了每次for 循環之后,將bright 加一,并且當bright 加到255 時歸0。所以,我們 看到的最終效果就是LED 慢慢變亮,到頂之后然后突然暗回去重新變亮。 這是最基本的PWM 方法,也應該是大家想的比較多的想法。 然后介紹一個簡單一點的。思維風格完全不同。不過對于驅動一個LED 來說,效果與上面 的程序一樣。 const int PWMPin = 13; int bright = 0; void setup() { pinMode(PWMPin, OUTPUT); } void loop() { digitalWrite(PWMPin, HIGH); delayMicroseconds(bright*30); digitalWrite(PWMPin, LOW); delayMicroseconds((255 - bright)*30); if((bright++) == 255) bright = 0; } 可以看出,這段代碼少了一個For 循環。它先輸出一個高電平,然后維持(bright*30)us。然 后輸出一個低電平,維持時間((255-bright)*30)us。這樣兩次高低就能完成一個PWM 周期。 分辨率也是255。 三、多引腳PWM Arduino 本身已有PWM 引腳并且運行起來不占CPU 時間,所以軟件模擬一個引腳的PWM 完全沒有實用意義。我們軟件模擬的價值在于:他能將任意的數字IO 口變成PWM 引腳。 當一片Arduino 要同時控制多個PWM,并且沒有其他重任務的時候,就要用軟件PWM 了。 多引腳PWM 有一種下面的方式: int brights[14] = {0}; //定義14個引腳的初始亮度,可以隨意設置 int StartPWMPin = 0, EndPWMPin = 13; //設置D0~D13為PWM 引腳 int PWMResolution = 255; //設置PWM 占空比分辨率 void setup() { //定義所有IO 端輸出 for(int i = StartPWMPin; i <= EndPWMPin; i++) { pinMode(i, OUTPUT); //隨便定義個初始亮度,便于觀察 brights[ i ] = random(0, 255); } } void loop() { //這for 循環是為14盞燈做漸亮的。每次Arduino loop()循環, //brights 自增一次。直到brights=255時候,將brights 置零重新計數。 for(int i = StartPWMPin; i <= EndPWMPin; i++) { if((brights[i]++) == PWMResolution) brights[i] = 0; } for(int i = 0; i <= PWMResolution; i++) //i 是計數一個PWM 周期 { for(int j = StartPWMPin; j <= EndPWMPin; j++) //每個PWM 周期均遍歷所有引腳 { if(i < brights[j])\ 所以我們要更改PWM 周期的話,我們將精度(代碼里面的變量:PWMResolution)降低就行,比如一般調整LED 亮度的話,我們用64 級精度就行。這樣速度就是2x32x64=4ms。就不會閃了。
上傳時間: 2013-10-23
上傳用戶:mqien