單片機(jī)應(yīng)用技術(shù)選編(1) 第一章 單片機(jī)系統(tǒng)綜合應(yīng)用技術(shù) 11.1 且使用 8098單片機(jī)的幾點(diǎn)體會(huì) 2 1.2 單片機(jī)的冷啟動(dòng)與熱啟動(dòng) 31.3 大容量動(dòng)態(tài)存儲(chǔ)器在單片機(jī)系統(tǒng)中的應(yīng)用111.4 MCS-51單片機(jī)系統(tǒng)中動(dòng)態(tài) RAM的刷新技巧141.5 MCS-51單片機(jī)系統(tǒng)中外RAM空間超64KB的擴(kuò)展方法161.6 8031單片機(jī)P0口和P2口的應(yīng)用開(kāi)發(fā) 181.7 74LS164在 8031單片機(jī)中的兩種用法261.8 用于 8031單片機(jī)的快速I(mǎi)/O接口281.9 MCS-51定時(shí)器定時(shí)常數(shù)初值的精確設(shè)定法301.10 8253的翻轉(zhuǎn)問(wèn)題及 MC6840的替代方法321.11 MCS-51單片機(jī)外部中斷源的擴(kuò)展設(shè)計(jì)351.12 MCS-51單片機(jī)多外中斷擴(kuò)展方法401.13 用優(yōu)先權(quán)編碼器74LS348擴(kuò)展51系列單片機(jī)的外中斷源421.14 用優(yōu)先權(quán)編碼器74LS148擴(kuò)展51系列單片機(jī)的外中斷源471.15 8031單片機(jī)與 BG5119A漢字庫(kù)的接口方法521.16 可背插 SRAM的日歷時(shí)鐘 DS1216及其應(yīng)用551.17 實(shí)時(shí)日歷時(shí)鐘集成電路MSM5832及其時(shí)序601.18 實(shí)時(shí)日歷時(shí)鐘集成電路MSM5832的接口技術(shù)631.19 實(shí)時(shí)時(shí)鐘/日歷芯片MC146818及其應(yīng)用671.20 與 SICE仿真器通訊的IBM-PC機(jī)通訊程序的改進(jìn)741.21 代碼形式參數(shù)匯編子程序的應(yīng)用821.22 單片機(jī)應(yīng)用系統(tǒng)中的查表程序設(shè)計(jì)861.23 用狀態(tài)綜合法設(shè)計(jì)鍵盤(pán)監(jiān)控程序901.24 單片機(jī)系統(tǒng)程序的加密技術(shù)961.25 MCS-96單片機(jī)程序保密的幾種方法1001.26 GAL輸出宏單元原理及使用105 1.27 通用陣列邏輯 GAL應(yīng)用于步進(jìn)電機(jī)控制實(shí)例110 第二章 傳感器與前向通道接口技術(shù)1172.1 集成溫度傳感器 LM134及其應(yīng)用1182.2 AD590集成溫度一電流傳感器原理及應(yīng)用1242.3 集成溫度傳感器 AD590的應(yīng)用1292.4 GS-800和 GS-130可燃?xì)怏w傳感器1332.5 集成化霍爾開(kāi)關(guān)傳感器1352.6 一種新穎實(shí)用的氧氣/頻率轉(zhuǎn)換電路1392.7 MCS-51單片機(jī)與數(shù)字式溫度傳感器的接口設(shè)計(jì)1422.8 數(shù)字式溫度傳感器 SWC與 8031的接口及應(yīng)用1452.9 低成本高精度壓力傳感器微機(jī)接口設(shè)計(jì)1472.10 峰值檢測(cè)電路原理及應(yīng)用1512.11 用 LF398制作的實(shí)用峰值和谷值保持電路1532.12 AD637集成真有效值轉(zhuǎn)換器1562.13 傳感器信號(hào)調(diào)理模塊 ZB311622.14 2B31模塊在稱(chēng)重智能儀表中的應(yīng)用1662.15 傳感器信號(hào)調(diào)理模塊 2B30/2B31及其應(yīng)用1692.16 高精度光纖位移測(cè)量系統(tǒng)的電路設(shè)計(jì)1752.17 集成電壓一電流轉(zhuǎn)換器 XTR100的工作原理及應(yīng)用1792.18 傳感器信號(hào)變送器 F693及其應(yīng)用1852.19 一種用兩片 VFC32構(gòu)成的隔離放大器電路1912.20 實(shí)用線性隔離放大器1922.21 電橋放大電路中 7650的一些應(yīng)用問(wèn)題1942.22 A/D轉(zhuǎn)換器 ICL7109的應(yīng)用研究1962.23 5G14433模數(shù)轉(zhuǎn)換器的啟停控制2002.24 ADC1130模數(shù)轉(zhuǎn)換器及其使用2042.25 16位 A/D轉(zhuǎn)換器 ADC1143及其與 80C31單片機(jī)的接口2082.26 串行 I/O D/A A/D轉(zhuǎn)換器與單片機(jī)的接口2132.27 單片機(jī)應(yīng)用系統(tǒng)中的數(shù)字化傳感器接口技術(shù)2162.28 ADVFC32 A/D轉(zhuǎn)換接口技術(shù)2202.29 V/F和 F/V轉(zhuǎn)換器 TD650原理與應(yīng)用2242.30 AD650與 MC-51單片機(jī)的接口技術(shù)2302.31 利用VCO電路與單片機(jī)接口實(shí)現(xiàn)A/D轉(zhuǎn)換2352.32 LM2907/2917系列F/V變換器在汽車(chē)檢測(cè)中的應(yīng)用2382.33 單信號(hào)多通道輸入法改善 A/D轉(zhuǎn)換器性能2412.34 用多片 A們轉(zhuǎn)換芯片提高 A/D轉(zhuǎn)換速度2452.35 實(shí)時(shí)數(shù)控增益調(diào)整與浮點(diǎn) ADC電路2492.36 電荷耦合器件的單片機(jī)驅(qū)動(dòng)2532.37 電荷耦合器件的結(jié)構(gòu)原理與單片機(jī)的軟件定時(shí)驅(qū)動(dòng)2582.38 利用模數(shù)轉(zhuǎn)換器提高轉(zhuǎn)換信號(hào)的線性度2622.39 利用微型機(jī)解決轉(zhuǎn)換中的非線性問(wèn)題2682.40 利用非線性曲線存儲(chǔ)實(shí)現(xiàn)線性化的方法2702.41 輸出無(wú)非線性誤差的可變電壓源單臂電橋274 第三章 控制系統(tǒng)與后向通道接口技術(shù)2793.1 DAC1231與單片機(jī) 8031的接口技術(shù)2803.2 單路及多路 D八的光電隔離接口技術(shù)2843.3 光電隔離高壓驅(qū)動(dòng)器2903.4 TRAIC型光耦在 8031后向通道接口的應(yīng)用分析2913.5 GD-L型光控晶閘管輸出光耦合器2963.6 用于晶閘管過(guò)零觸發(fā)的幾種方式3003.7 固態(tài)繼電器3043.8 固態(tài)繼電器在交流電子開(kāi)關(guān)中的應(yīng)用3083.9 JCG型參數(shù)固態(tài)繼電器3123.10 JCG型參數(shù)固態(tài)繼電器的應(yīng)用315 3.11 介紹幾種適用于印刷電路板的超小型電磁繼電器3193.12 用TWH8751集成電路構(gòu)成微機(jī)控制的三步進(jìn)電機(jī)驅(qū)動(dòng)電源3223.13 3-4相步進(jìn)電機(jī)控制器 5G87133253.14 5G0602報(bào)警電路及應(yīng)用3283.15 兩種新型溫控光控兀的應(yīng)用330 第四章 人機(jī)對(duì)話通道接口技術(shù)3334.1 單片機(jī)鍵盤(pán)接口設(shè)計(jì)3344.2 由電話機(jī)集成電路構(gòu)成的單片機(jī)鍵盤(pán)接口電路3364.3 用 GAL設(shè)計(jì)的一種編碼鍵盤(pán)接口3384.4 用 CMOS電路構(gòu)成的非編碼觸摸鍵盤(pán)3424.5 設(shè)計(jì)薄膜開(kāi)關(guān)應(yīng)注意的一些問(wèn)題3454.6 觸摸式電子開(kāi)關(guān)集成電路 5G673及其應(yīng)用3504.7 8279用于撥碼盤(pán)及顯示器的接口設(shè)計(jì)3544.8 LED數(shù)碼管的構(gòu)造與特點(diǎn)3584.9 LED數(shù)碼管的集成驅(qū)動(dòng)器及配套器件3624.10 8279芯片的顯示接口分析及32位數(shù)碼管顯示驅(qū)動(dòng)電路設(shè)計(jì)366 4.11 用三端可調(diào)穩(wěn)壓塊代替LED顯示器的限流電阻3704.12 液晶顯示器件的構(gòu)造與特點(diǎn)3714.13 LCD七段顯示器與單片機(jī)的接口3744.14 液晶顯示器與單片機(jī)的接口技術(shù)3764.15 可編程LCD控制驅(qū)動(dòng)器PPD72253814.16 微機(jī)總線兼容的四位 LCD驅(qū)動(dòng)電路 TSC7211AM3874.17 使用8255的雙極性歸零脈沖驅(qū)動(dòng)液晶顯示器接口3914.18 DMC16230型 LCD顯示模塊的接口技術(shù)3954.19 點(diǎn)陣式液晶顯示器原理及應(yīng)用4034.20 實(shí)用液晶顯示電路4094.21 8031控制的 CRT顯示控制接口4144.22 用 8031控制多臺(tái)彩色顯示器的實(shí)現(xiàn)方法4194.23 高級(jí)語(yǔ)言處理器--T6668的結(jié)構(gòu)與典型電路4234.24 延長(zhǎng) T6668語(yǔ)言電路錄放時(shí)間的方法4294.25 T6668高級(jí)語(yǔ)音開(kāi)發(fā)站4324.26 語(yǔ)言處理器 T6668在電話報(bào)警系統(tǒng)中的應(yīng)用4354.27 新型語(yǔ)音處理器YYH16439 第五章 網(wǎng)絡(luò)、通訊控制與多機(jī)系統(tǒng)4415.1 IBM-PC/XT和單片機(jī)通訊系統(tǒng)的設(shè)計(jì)4425.2 IBM-PC/XT微機(jī)與單片機(jī)的兩種通訊接口4485.3 MCS-51單片機(jī)與 IBMPC微機(jī)的串行通訊4525.4 中央控制端與 MCS-51單片機(jī)間的數(shù)據(jù)通訊4595.5 IBMPC機(jī)與 MCS-51單片機(jī)的快速數(shù)據(jù)通訊4665.6 8031單片機(jī)與 PC-1500計(jì)算機(jī)的通訊4735.7 多片 MCS-51系統(tǒng)的一種串行通訊方式4775.8 多單片機(jī)處理系統(tǒng)并行通訊的實(shí)現(xiàn)4815.9 半雙工遠(yuǎn)距離電流環(huán)多機(jī)通訊接口電路4855.10 多微機(jī)系統(tǒng)共享 RAM電路4905.11 串行通訊中的波特率設(shè)置4925.12 在MCS-51單片機(jī)的串行通訊中實(shí)現(xiàn)波特率的自動(dòng)整定4965.13 J274和 J275在微機(jī)分布式測(cè)控系統(tǒng)中的應(yīng)用5005.14 單電纜傳送雙向數(shù)據(jù)5045.15 新穎的多路遙控兀編譯碼器5055.16 DTMF在單片機(jī)無(wú)線數(shù)據(jù)通訊中的應(yīng)用5085.17 MCS-8031單片機(jī)在紅外遙控裝置中的應(yīng)用5155.18 一種實(shí)用光纖數(shù)字遙測(cè)系統(tǒng)5185.19 智能儀表通訊系統(tǒng)中一種冗余通道的設(shè)計(jì)5245.20 EIARS-232-C接口使用中的幾個(gè)問(wèn)題528 第六章 電源、電源變換與電源監(jiān)視5316.1 電源擴(kuò)展電路5326.2 一種簡(jiǎn)單的直流三倍壓電路533 6.3 直流電源變換集成電路5356.4 直流電壓變換器ICL7660的應(yīng)用5376.5 一種廉價(jià)高精密基準(zhǔn)電壓源5406.6 精密可調(diào)基準(zhǔn)電壓源及其應(yīng)用5416.7 引腳可編程精密基準(zhǔn)電壓源AD584及其應(yīng)用5496.8 幾種新型恒流源集成電路5536.9 CW334三端可調(diào)恒流源及應(yīng)用5576.10 電源電壓監(jiān)視用芯片TL7705CP簡(jiǎn)介5606.11 電源電壓監(jiān)視用芯片TL7700簡(jiǎn)介5646.12 WMS7705B電源監(jiān)視用芯片簡(jiǎn)介5676.13 具有HMOS結(jié)構(gòu)的MCS-51系列單片機(jī)提供后備電源的方法570 第七章 系統(tǒng)抗于擾技術(shù)5757.1 微型計(jì)算機(jī)系統(tǒng)的抗干擾措施5767.2 計(jì)算機(jī)應(yīng)用系統(tǒng)抗干擾問(wèn)題5797.3 微機(jī)在工業(yè)應(yīng)用中的抗干擾措施5867.4 利用電源監(jiān)視TL7705芯片的抗電源于擾新方法5917.5 利用電源監(jiān)視芯片WMS7705的抗電源干擾新方法5947.6 具有浪涌抑制能力的 TVP 6017.7 瞬變電壓抑制M極管TVP的特性及應(yīng)用6047.8 單片機(jī)實(shí)時(shí)控制軟件抗干擾編程方法的探討6077.9 一種簡(jiǎn)單實(shí)用的微機(jī)死機(jī)自復(fù)位抗干擾技術(shù)6107.10 單片機(jī)程序的監(jiān)視保護(hù)6127.11 軟件 WATCHDOG系統(tǒng)615 7.12 一種實(shí)用的"看門(mén)狗"電路6187.13 高電壓下測(cè)量系統(tǒng)的抗干擾措施619 第八章 應(yīng)用實(shí)例6218.1 單片機(jī)在多功能函數(shù)發(fā)生器中的應(yīng)用6228.2 單片機(jī)波形發(fā)生器6298.3 單片機(jī)控制的調(diào)幅波發(fā)生器6338.4 用 8031單片機(jī)解調(diào)時(shí)統(tǒng)信號(hào)6368.5 具有 114DB動(dòng)態(tài)范圍的浮點(diǎn)數(shù)據(jù)采集系統(tǒng)6418.6 電熱恒溫箱單片微機(jī)控制系統(tǒng)6468.7 智能 I一、C丑測(cè)試儀的原理及設(shè)計(jì)6528.8 采用 LMS算法的單片機(jī)數(shù)字交流電橋6568.9 單片微機(jī)的數(shù)字相位測(cè)試儀6598.10 單片機(jī)的氣體流量測(cè)量6628.11 單片機(jī)的相關(guān)流量?jī)x6688.12 723型可見(jiàn)分光光度計(jì)6758.13 多功能微電腦電子秤6798.14 智能路面回彈檢測(cè)儀6838.15 使用 CCD的單片機(jī)動(dòng)態(tài)布面檢測(cè)系統(tǒng)6878.16 使用 CCD的單片機(jī)激光衍射測(cè)徑系統(tǒng)6908.17 使用 CCD的單片機(jī)動(dòng)態(tài)線徑測(cè)量?jī)x6958.18 使用CCD的單片機(jī)中型熱軋圓鋼直徑檢測(cè)儀7018.19 用 MCS-51單片微機(jī)實(shí)現(xiàn)織布機(jī)的監(jiān)測(cè)7058.20 單片機(jī)在工頻參量測(cè)試中的應(yīng)用7098.21 單片機(jī) 8098在直線電機(jī)控制中的應(yīng)用715?
標(biāo)簽: 單片機(jī) 應(yīng)用技術(shù)
上傳時(shí)間: 2014-12-28
上傳用戶:liufei
prolog 找路例子程序: === === === === === === Part 1-Adding connections Part 2-Simple Path example | ?- path1(a,b,P,T). will produce the response: T = 15 P = [a,b] ? Part 3 - Non-repeating path As an example, the query: ?- path2(a,h,P,T). will succeed and may produce the bindings: P = [a,depot,b,d,e,f,h] T = 155 Part 4 - Generating a path below a cost threshold As an example, the query: ?- path_below_cost(a,[a,b,c,d,e,f,g,h],RS,300). returns: RS = [a,b,depot,c,d,e,g,f,h] ? RS = [a,c,depot,b,d,e,g,f,h] ? no ==================================
標(biāo)簽: Part connections example prolog
上傳時(shí)間: 2015-04-24
上傳用戶:ljt101007
數(shù)據(jù)結(jié)構(gòu) 1、算法思路: 哈夫曼樹(shù)算法:a)根據(jù)給定的n個(gè)權(quán)值{W1,W2… ,Wn }構(gòu)成 n棵二叉樹(shù)的集合F={T1,T2…,T n },其中每棵二叉樹(shù)T中只有一個(gè)帶權(quán)為W i的根結(jié)點(diǎn),其左右子樹(shù)均空;b)在F中選取兩棵根結(jié)點(diǎn)的權(quán)值最小的樹(shù)作為左右子樹(shù)構(gòu)造一棵新的二叉樹(shù),且置新的二叉樹(shù)的根結(jié)點(diǎn)的權(quán)值為其左、右子樹(shù)上結(jié)點(diǎn)的權(quán)值之和;c)F中刪除這兩棵樹(shù),同時(shí)將新得到的二叉樹(shù)加入F中; d)重復(fù)b)和c),直到F只含一棵樹(shù)為止。
標(biāo)簽: 算法 W1 數(shù)據(jù)結(jié)構(gòu) 樹(shù)
上傳時(shí)間: 2016-03-05
上傳用戶:lacsx
圖的深度遍歷,輸出結(jié)果為(紅色為鍵盤(pán)輸入的數(shù)據(jù),權(quán)值都置為1): 輸入頂點(diǎn)數(shù)和弧數(shù):8 9 輸入8個(gè)頂點(diǎn). 輸入頂點(diǎn)0:a 輸入頂點(diǎn)1:b 輸入頂點(diǎn)2:c 輸入頂點(diǎn)3:d 輸入頂點(diǎn)4:e 輸入頂點(diǎn)5:f 輸入頂點(diǎn)6:g 輸入頂點(diǎn)7:h 輸入9條弧. 輸入弧0:a b 1 輸入弧1:b d 1 輸入弧2:b e 1 輸入弧3:d h 1 輸入弧4:e h 1 輸入弧5:a c 1 輸入弧6:c f 1 輸入弧7:c g 1 輸入弧8:f g 1 深度優(yōu)先遍歷: a b d h e c f g 程序結(jié)束.
標(biāo)簽:
上傳時(shí)間: 2016-04-04
上傳用戶:lht618
Newton-Raphson算法 介紹 在科學(xué)計(jì)算和財(cái)經(jīng)工程領(lǐng)域,許多數(shù)值算法都是通用的(至少在理論上是),可廣泛地用于解決一類(lèi)問(wèn)題。一個(gè)大家熟悉的例子就是Newton-Raphson例程,它可用來(lái)尋找方程 f(x)=0的數(shù)值解。標(biāo)準(zhǔn)的數(shù)學(xué)表達(dá)式f(x)表示f是變量x的函數(shù),其通常的表達(dá)形式為f(x,a,b,...)=0,f被定義為多于一個(gè)變量的函數(shù)。在這種情況下,Newton-Raphson算法試圖把x以外的變量固定并作為參數(shù),而尋找關(guān)于變量x的數(shù)值解。 由于Newton-Raphson算法需要知道被求解函數(shù)的確切表達(dá),其傳統(tǒng)實(shí)現(xiàn)方法是直接將代碼嵌入到客戶應(yīng)用程序中。這就使得算法的實(shí)現(xiàn)代碼經(jīng)過(guò)針對(duì)不同被求解函數(shù)的少量修改后在客戶程序中反復(fù)出現(xiàn)。 同許多其它數(shù)學(xué)例程一樣,Newton-Raphson算法的具體實(shí)現(xiàn)是應(yīng)該與特定用戶無(wú)關(guān)的。并且,重復(fù)編碼在任何情況下都應(yīng)該盡量避免。我們很自然地會(huì)想到把該類(lèi)例程作為庫(kù)函數(shù)來(lái)實(shí)現(xiàn),以使客戶程序可以直接調(diào)用它們。但是,這種實(shí)現(xiàn)方式必然會(huì)涉及到如何將用戶自定義函數(shù)(Newton-Raphson 例程需要調(diào)用該函數(shù))封裝成可以作為參數(shù)傳遞的形式。
標(biāo)簽: Newton-Raphson 算法 工程領(lǐng)域 計(jì)算
上傳時(shí)間: 2016-07-31
上傳用戶:gdgzhym
tensor 向量的推廣。在一個(gè)坐標(biāo)系下,由若干個(gè)數(shù)(稱(chēng)為分量)來(lái)表示,而在不同坐標(biāo)系下的分量之間應(yīng)滿足一定的變換規(guī)則,如矩陣、多變量線性形式等。一些物理量如彈性體的應(yīng)力、應(yīng)變以及運(yùn)動(dòng)物體的能量動(dòng)量等都需用張量來(lái)表示。在微分幾何的發(fā)展中,C.F.高斯、B.黎曼、E.B.克里斯托費(fèi)爾等人在19世紀(jì)就導(dǎo)入了張量的概念,隨后由G.里奇及其學(xué)生T.列維齊維塔發(fā)展成張量分析,A.愛(ài)因斯坦在其廣義相對(duì)論中廣泛地利用了張量。
上傳時(shí)間: 2014-01-20
上傳用戶:silenthink
找一個(gè)最小的自然數(shù),使它等于不同的兩組三個(gè)自然數(shù)的三次冪之和,即找最小的x,使得:x=a*a*a+b*b*b+c*c*c = d*d*d+e*e*e+f*f*f 其中,a,b,c,d,e,f都是自然數(shù),a<=b<=c, d<=e<=f [a,b,c]!=[d,e,f] 進(jìn)一步,是否還存在另外一個(gè)自然數(shù)滿足上述條件,可能的話請(qǐng)輸出其結(jié)果
標(biāo)簽:
上傳時(shí)間: 2017-05-16
上傳用戶:vodssv
工業(yè)領(lǐng)域串口通信速度慢是個(gè)比較突出的問(wèn)題, 而 F T 2 4 5 B M 能夠進(jìn)行 US B和并行 I / O口之間的 協(xié)議轉(zhuǎn)換, 在一些條件下能夠取代串口. 介紹 F T 2 4 5 B M 芯片的工作原理和功能, 并給出基于 F T2 4 5 B M 的 US B接口電路的應(yīng)用設(shè)計(jì)和基于 8 9 c 5 2的匯編及 c 5 1 單片機(jī)源程序.
標(biāo)簽: 工業(yè)領(lǐng)域 串口通信 速度 比較
上傳時(shí)間: 2017-05-27
上傳用戶:kytqcool
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定義 sfr WDT_CONTR = 0xe1;//stc2051的看門(mén)狗?????? /**********全局常量************/ //寫(xiě)卡的命令 #define write_command0 0//寫(xiě)密碼 #define write_command1 1//寫(xiě)配置字 #define write_command2 2//密碼寫(xiě)數(shù)據(jù) #define write_command3 3//喚醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //讀卡的時(shí)間參數(shù)us #define ts_min 250//270*11.0592/12=249//取近似的整數(shù) #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10調(diào)整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中斷處理:采用查詢的方法讀卡時(shí)關(guān)所有中斷****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI總線 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//測(cè)試綠燈 sbit led_light1 = P1^5;//測(cè)試紅燈 sbit led_light_ok = P1^1;//讀卡成功標(biāo)志 sbit fengmingqi = P1^5; /***********全局變量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密碼 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存儲(chǔ)卡上用戶數(shù)據(jù)(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收數(shù)組ram uchar command; //第一個(gè)命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //緩存定時(shí)值,因用同一個(gè)定時(shí)器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //緩存定時(shí)值,因用同一個(gè)定時(shí)器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函數(shù)原型*****************/ //讀寫(xiě)操作 void f_readcard(void);//全部讀出1~7 AOR喚醒 void f_writecard(uchar x);//根據(jù)命令寫(xiě)不同的內(nèi)容和操作 void f_clearpassword(void);//清除密碼 void f_changepassword(void);//修改密碼 //功能子函數(shù) void write_password(uchar data *data p);//寫(xiě)初始密碼或數(shù)據(jù) void write_block(uchar x,uchar data *data p);//不能用通用指針 void write_bit(bit x);//寫(xiě)位 /*子函數(shù)區(qū)*****************************************************/ void delay_2(uint x) //延時(shí),時(shí)間x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能頻繁的復(fù)位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允許接收 //SCON =0x50; //01010000B:10位異步收發(fā),波特率可變,SM2=0不用接收到有效停止位才RI=1, //REN=1允許接收 TMOD = 0x21; //定時(shí)器1 定時(shí)方式2(8位),定時(shí)器0 定時(shí)方式1(16位) TCON = 0x40; //設(shè)定時(shí)器1 允許開(kāi)始計(jì)時(shí)(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //啟動(dòng)定時(shí)器 WDT_CONTR = 0x3c;//使能看門(mén)狗 p_U2270B_Standby = 0;//單電源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//讀卡 { EA = 0;//全關(guān),防止影響跳變的定時(shí)器計(jì)時(shí) WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用喚醒功能來(lái)防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作碼讀0頁(yè) write_bit(0); write_password(&bankdata[24]);//密碼block7 p_U2270B_CFE =1 ;// delay_2(516);//編程及確認(rèn)時(shí)間5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一個(gè)穩(wěn)定的低電平?超時(shí)判斷? while(!p_U2270B_OutPut);//等待上升沿的到來(lái)同步信號(hào)檢測(cè)1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定時(shí)器晚啟動(dòng)10個(gè)周期 //同步頭 if((324 < a.W) && (a.W < 353)) ;//檢測(cè)同步信號(hào)1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //讀0~7塊的數(shù)據(jù) for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8個(gè)位 { //等待下降沿的到來(lái) while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再賦值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//讀卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//寫(xiě)卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//寫(xiě)密碼:初始化密碼 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//寫(xiě)操作碼1:10 write_bit(0);//寫(xiě)操作碼0 write_bit(0);//寫(xiě)鎖定位0 for(i = 0;i < 35;i++) { write_bit(1);//寫(xiě)數(shù)據(jù)位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//測(cè)試使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密碼存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡參數(shù):初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//寫(xiě)操作碼1:10 write_bit(0);//寫(xiě)操作碼0 write_bit(0);//寫(xiě)鎖定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密碼寫(xiě)數(shù)據(jù) { uchar data*data p; p = &bankdata[24]; write_bit(1);//寫(xiě)操作碼1:10 write_bit(0);//寫(xiě)操作碼0 write_password(p);//發(fā)口令 write_bit(0);//寫(xiě)鎖定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//寫(xiě)數(shù)據(jù) } else if(x == write_command3)//aor //喚醒 { //cominceptbuff[1]操作碼10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密碼 p_U2270B_CFE = 1;//此時(shí)數(shù)據(jù)不停的循環(huán)傳出 } else //停止操作碼 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密碼 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密碼 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作碼10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//發(fā)原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//寫(xiě)新配置參數(shù):pwd=0 //密碼無(wú)效:即清除密碼 DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密碼 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密碼 DATA = 0x80;//操作碼10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//發(fā)原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//寫(xiě)新密碼 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密碼存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函數(shù)***********************************/ void write_bit(bit x)//寫(xiě)一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延時(shí)448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫(xiě)1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫(xiě)0 } } /*******************寫(xiě)一個(gè)block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0數(shù)據(jù) { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //讀卡 f_writecard(command1); //寫(xiě)卡 f_clearpassword(); //清除密碼 f_changepassword(); //修改密碼 } }
標(biāo)簽: 12345
上傳時(shí)間: 2017-10-20
上傳用戶:my_lcs
|- 我的虛擬機(jī)和ubuntu下載 - 0 B|- 騰訊課堂公開(kāi)課 - 0 B|- 工具軟件 - 0 B|- X210光盤(pán)資料 - 0 B|- 4.C語(yǔ)言專(zhuān)題精講篇 - 0 B|- 2.uboot和linux內(nèi)核移植 - 0 B|- 1.ARM裸機(jī)全集 - 0 B|- 0.基礎(chǔ)預(yù)科 - 0 B|- 專(zhuān)用播放器第一代-已不用,請(qǐng)下載第二代.rar - 18.10 MB|- 專(zhuān)用播放器-《朱老師物聯(lián)網(wǎng)大講堂》收費(fèi)視頻.rar - 18.10 MB|- 朱老師物聯(lián)網(wǎng)大講堂高級(jí)課程專(zhuān)用播放器-第二代.rar - 28.10 MB
標(biāo)簽: 物聯(lián)網(wǎng)
上傳時(shí)間: 2022-06-06
上傳用戶:
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1