SPI接口讀寫串行EEPROM:93C46為采用3線串行同步總線SPI接口方式的EEPROM,其芯片引腳名稱和功能描述如圖1-1:
上傳時間: 2013-11-19
上傳用戶:taozhihua1314
介紹了基于89S51 單片機的微型熱敏打印機的組成,分析了打印原理,詳細給出了整體流程以及各個功能模塊的軟件設計。熱敏打印頭采用I/O 口模擬串行數據傳輸實現數據加載。設計的微型熱敏打印機運用于實際,取得了良好的效果。關鍵詞:熱敏打印機 過熱保護 步進電機 數據加載由于常用的微型針式打印機的速度慢,噪聲大,無法滿足某些場合的需要。微型熱敏打印機具有打印速度快、噪音低、可靠性高、字跡清晰、機頭小而輕等優點,可滿足各種場合的打印要求,因此得到廣泛應用。筆者在汽車行駛記錄儀的開發過程中,根據廠家要求,選用較為先進的熱敏打印機作為打印設備。但微型熱敏打印頭對打印時序和溫度要求較高,一旦控制不當極易造成打印頭燒毀。因此,在有合理的硬件設計的基礎上,軟件設計也十分重要。本文使用某些軟件設計替代了部分硬件電路,使打印機的控制電路得到了簡化。
上傳時間: 2013-11-14
上傳用戶:digacha
串口調試軟件SSCOM可供免費使用,免費下載,本軟件可以在Win95/98、Win2000、WinNT、WinXP下面運行.軟件功能主要為: 1.接收從串口進來的數據并在窗口顯示. 2.所接收到的數據數據顯示方式可以選擇為字符方式或者HEX方式 4.中文顯示無亂碼,且不影響速度 5.串口波特率可以選擇為110bps-256000bps.(波特率>115200時需要硬件支持) 6.可以即時顯示存在的串口號.如果您增加了usb轉串口等設備,串口號也會在列表中出現. 7.可以選擇“5、6、7、8”四種數據長度. 8.可以選擇為“1、1.5、2”三種停止位.(1.5停止位需要硬件支持) 8.第9位數據可以選擇為“無、奇校驗、偶校驗、1、0”四種方式. 9.可以選擇“無流控、軟流控、硬流控、自定義”四種流控方式. 10.串口設置和字符串操作等設置在程序關閉時自動保存,打開時自動載入. 11.可以在接收窗口按鍵即發送該鍵值. 12.可以在字符串輸入框輸入您想發送的字符串,并發送. 13.可以在字符串輸入框輸入您想發送的HEX數據串,數據的值從00到FF,沒有任何限制. 14.可以定時重復發送數據,并可以設置發送時間間隔. 15.可以在發送字符串時選擇發送新行,即自動加上回車換行. 16.可以顯示當前串口的CTS、DSR、RLSL(CD)信號線的狀態. 17.可以自由控制當前串口的DTR、RTS信號線的輸出狀態. 18.可以打開一個文本文件或者一個二進制文件預覽其內容,查看方式可以是文本或者HEX方式. 19.可以打開一個文本文件或者一個二進制文件并以當前波特率發送到串口. 20.可以保存窗口內容到一個文本文件,文件名取自當前時間,保存在當前目錄. 21.可以即時顯示發送的字節數和接收到的字節數,按清除窗口將會清零. 22.帶有功能強大的擴展功能:多條字符串發送定義和網上查找串口資料等. 23.可以定義最多32條預備發送的字符串,每條字符串可以定義為HEX數據串或者字符串方式.在每一條數據的左邊打勾就表示這是一條hex數據串. 24.點擊字符串右邊的標號即可以發送這條定義好的字符串. 25.可以設置為循環發送你定義過的多條字符串,并且可以設置發送時間間隔. 26.在串口資料欄您可以從mcu51網站或者Google查找有關串口技術資料. 27.在串口資料欄您可以進入技術討論bbs,在此發表您的高見或者提出您的問題和需求. 28.在產品信息欄您可以獲得現時最新的產品信息. 29.這是個綠色軟件,單個文件即可執行,不會給您的機器增加任何負擔. 此版本使用C++Builder編寫,相對于上一版本SSCOM2.0,主要改進在: 1.程序更穩定可靠,修改了一些報錯信息.使用更加人性化。 2.修改了避免顯示漢字亂碼的算法,快了許多. 3.hex數據輸入的錯誤兼容性. 4.發送字符串可以加發回車換行. 5.可以保存窗口內容到文件. 6.發送和接收的字符數統計更準確. 7.不再接收到一定數量字符數就清屏,因為發現即使收到很多內容也不會溢出,速度仍然很快. 8,可以打開二進制文件并發送,從前只能發文本文件. 9.打開文件后可以用asc方式或者hex方式預覽文件中前4K內容. 10.發送文件前告訴操作者需要發送多少時間.免得久等. 11.新增功能強大的擴展功能,多達32條自定義字符串操作,程序關閉時這些字符串會自動保存,下次開機時再載入,每條可以定義為HEX數據串或者ASC字符串,按后邊的數字按鈕可以發送.也可以自動循環發送定義過的字符串. 12.新增串口設置自動保存. 13.加入了網絡支持功能,用戶很方便討論問題和找到技術支持.
上傳時間: 2013-10-26
上傳用戶:448949
PC機與單片機通信實例:表決器單片機要同時處理很多部分的功能,如:按鍵處理、LED處理、通信處理等。而單片機程序是串行執行的。如何讓眾多任務同時進行或者看起來同時進行?并行:真正意義上的同時進行。并發:宏觀上是同時的,而在微觀上是輪流進行的。即看起來是同時進行的。例如:面前的CRT顯示器,電子束是逐點順序點亮熒光屏上的像素。由于點亮的速度足夠快,很短時間便可掃過整個屏幕,以致于在宏觀上看,所有的像素都是同時刷新的。
上傳時間: 2013-10-28
上傳用戶:spman
介紹用PIC16F84單片機制作的電子密碼鎖。PIC16F84單片機共18個引腳,13個可用I/O接口。芯片內有1K×14的FLASHROM程序存儲器,36×8的靜態RAM的通用寄存器,64×8的EEPROM的數據存儲器,8級深度的硬堆棧。 用PIC單片機設計的電子密碼鎖微芯公司生產的PIC8位COMS單片機,采用類RISC指令集和哈弗總線結構,以及先進的流水線時序,與傳統51單片機相比其在速度和性能方面更具優越性和先進性。PIC單片機的另一個優點是片上硬件資源豐富,集成常見的EPROM、DAC、PWM以及看門狗電路。這使得硬件電路的設計更加簡單,節約設計成本,提高整機性能。因此PIC單片機已成為產品開發,尤其是產品設計和研制階段的首選控制器。本文介紹用PIC16F84單片機制作的電子密碼鎖。PIC16F84單片機共18個引腳,13個可用I/O接口。芯片內有1K×14的FLASHROM程序存儲器,36×8的靜態RAM的通用寄存器,64×8的EEPROM的數據存儲器,8級深度的硬堆棧。硬件設計 電路原理見圖1。Xx8位數據線接4x4鍵盤矩陣電路,面板布局見表1,A、B、C、D為備用功能鍵。RA0、RA7輸出4組編碼二進制數據,經74LS139譯碼后輸出逐行掃描信號,送RB4-RB7列信號輸入端。余下半個139譯碼器動揚聲器。RB2接中功率三極管基極,驅動繼電器動作。有效密碼長度為4位,根據實際情況,可通過修改源程序增加密碼位數。產品初始密碼為3345,這是一隨機數,無特殊意義,目的是為防止被套解。用戶可按*號鍵修改密碼,按#號鍵結束。輸入密碼并按#號確認之后,腳輸出RB2腳輸出高電平,繼電器閉合,執行一次開鎖動作。 若用戶輸入的密碼正確,揚聲器發出一聲稍長的“滴”提示聲,若輸入的密碼與上次修改的不符,則發出短促的“滴”聲。連續3次輸入密碼錯誤之后,程序鎖死,揚聲器報警。直到CPU被復位或從新上電。軟件設計 軟件流程圖見圖3。CPU上電或復位之后將最近一次修改并保存到EEPROM的密碼讀出,最為參照密匙。然后等待用戶輸入開鎖密碼。若5分鐘以內沒有接受到用戶的任何輸入,CPU自動轉入掉電模式,用戶輸入任意值可喚醒CPU。每次修改密碼之后,CPU將新的密碼存入內部4個連續的EEPROM單元,掉電后該數據任有效。每執行一次開鎖指令,CPU將當前輸入密碼與該值比較,看是否真確,并給出相應的提示和控制。布 局 所有元件均使用SMD表貼封裝,縮小體積,便于產品安裝,60X60雙面PCB板,頂層是一體化輸入鍵盤,底層是元件層。成型后的產品體積小巧,能很方便的嵌入防盜鐵門、保險箱柜。
上傳時間: 2013-10-31
上傳用戶:uuuuuuu
PC機之間串口通信的實現一、實驗目的 1.熟悉微機接口實驗裝置的結構和使用方法。 2.掌握通信接口芯片8251和8250的功能和使用方法。 3.學會串行通信程序的編制方法。 二、實驗內容與要求 1.基本要求主機接收開關量輸入的數據(二進制或十六進制),從鍵盤上按“傳輸”鍵(可自行定義),就將該數據通過8251A傳輸出去。終端接收后在顯示器上顯示數據。具體操作說明如下:(1)出現提示信息“start with R in the board!”,通過調整乒乓開關的狀態,設置8位數據;(2)在小鍵盤上按“R”鍵,系統將此時乒乓開關的狀態讀入計算機I中,并顯示出來,同時顯示經串行通訊后,計算機II接收到的數據;(3)完成后,系統提示“do you want to send another data? Y/N”,根據用戶需要,在鍵盤按下“Y”鍵,則重復步驟(1),進行另一數據的通訊;在鍵盤按除“Y”鍵外的任意鍵,將退出本程序。2.提高要求 能夠進行出錯處理,例如采用奇偶校驗,出錯重傳或者采用接收方回傳和發送方確認來保證發送和接收正確。 三、設計報告要求 1.設計目的和內容 2.總體設計 3.硬件設計:原理圖(接線圖)及簡要說明 4.軟件設計框圖及程序清單5.設計結果和體會(包括遇到的問題及解決的方法) 四、8251A通用串行輸入/輸出接口芯片由于CPU與接口之間按并行方式傳輸,接口與外設之間按串行方式傳輸,因此,在串行接口中,必須要有“接收移位寄存器”(串→并)和“發送移位寄存器”(并→串)。能夠完成上述“串←→并”轉換功能的電路,通常稱為“通用異步收發器”(UART:Universal Asynchronous Receiver and Transmitter),典型的芯片有:Intel 8250/8251。8251A異步工作方式:如果8251A編程為異步方式,在需要發送字符時,必須首先設置TXEN和CTS#為有效狀態,TXEN(Transmitter Enable)是允許發送信號,是命令寄存器中的一位;CTS#(Clear To Send)是由外設發來的對CPU請求發送信號的響應信號。然后就開始發送過程。在發送時,每當CPU送往發送緩沖器一個字符,發送器自動為這個字符加上1個起始位,并且按照編程要求加上奇/偶校驗位以及1個、1.5個或者2個停止位。串行數據以起始位開始,接著是最低有效數據位,最高有效位的后面是奇/偶校驗位,然后是停止位。按位發送的數據是以發送時鐘TXC的下降沿同步的,也就是說這些數據總是在發送時鐘TXC的下降沿從8251A發出。數據傳輸的波特率取決于編程時指定的波特率因子,為發送器時鐘頻率的1、1/16或1/64。當波特率指定為16時,數據傳輸的波特率就是發送器時鐘頻率的1/16。CPU通過數據總線將數據送到8251A的數據輸出緩沖寄存器以后,再傳輸到發送緩沖器,經移位寄存器移位,將并行數據變為串行數據,從TxD端送往外部設備。在8251A接收字符時,命令寄存器的接收允許位RxE(Receiver Enable)必須為1。8251A通過檢測RxD引腳上的低電平來準備接收字符,在沒有字符傳送時RxD端為高電平。8251A不斷地檢測RxD引腳,從RxD端上檢測到低電平以后,便認為是串行數據的起始位,并且啟動接收控制電路中的一個計數器來進行計數,計數器的頻率等于接收器時鐘頻率。計數器是作為接收器采樣定時,當計數到相當于半個數位的傳輸時間時再次對RxD端進行采樣,如果仍為低電平,則確認該數位是一個有效的起始位。若傳輸一個字符需要16個時鐘,那么就是要在計數8個時鐘后采樣到低電平。之后,8251A每隔一個數位的傳輸時間對RxD端采樣一次,依次確定串行數據位的值。串行數據位順序進入接收移位寄存器,通過校驗并除去停止位,變成并行數據以后通過內部數據總線送入接收緩沖器,此時發出有效狀態的RxRDY信號通知CPU,通知CPU8251A已經收到一個有效的數據。一個字符對應的數據可以是5~8位。如果一個字符對應的數據不到8位,8251A會在移位轉換成并行數據的時候,自動把他們的高位補成0。 五、系統總體設計方案根據系統設計的要求,對系統設計的總體方案進行論證分析如下:1.獲取8位開關量可使用實驗臺上的8255A可編程并行接口芯片,因為只要獲取8位數據量,只需使用基本輸入和8位數據線,所以將8255A工作在方式0,PA0-PA7接實驗臺上的8位開關量。2.當使用串口進行數據傳送時,雖然同步通信速度遠遠高于異步通信,可達500kbit/s,但由于其需要有一個時鐘來實現發送端和接收端之間的同步,硬件電路復雜,通常計算機之間的通信只采用異步通信。3.由于8251A本身沒有時鐘,需要外部提供,所以本設計中使用實驗臺上的8253芯片的計數器2來實現。4:顯示和鍵盤輸入均使用DOS功能調用來實現。設計思路框圖,如下圖所示: 六、硬件設計硬件電路主要分為8位開關量數據獲取電路,串行通信數據發送電路,串行通信數據接收電路三個部分。1.8位開關量數據獲取電路該電路主要是利用8255并行接口讀取8位乒乓開關的數據。此次設計在獲取8位開關數據量時采用8255令其工作在方式0,A口輸入8位數據,CS#接實驗臺上CS1口,對應端口為280H-283H,PA0-PA7接8個開關。2.串行通信電路串行通信電路本設計中8253主要為8251充當頻率發生器,接線如下圖所示。
上傳時間: 2013-12-19
上傳用戶:小火車啦啦啦
當拿到一張CASE單時,首先得確定的是能用什么母體才能實現此功能,然后才能展開對外圍硬件電路的設計,因此首先得了解每個母體的基本功能及特點,下面大至的介紹一下本公司常用的IC:單芯片解決方案• SN8P1900 系列– 高精度 16-Bit 模數轉換器– 可編程運算放大器 (PGIA)• 信號放大低漂移: 2V• 放大倍數可編程: 1/16/64/128 倍– 升壓- 穩壓調節器 (Charge-Pump Regulator)• 電源輸入: 2.4V ~ 5V• 穩壓輸出: e.g. 3.8V at SN8P1909– 內置液晶驅動電路 (LCD Driver)– 單芯片解決方案 • 耳溫槍 SN8P1909 LQFP 80 Pins• 5000 解析度量測器 SN8P1908 LQFP 64 Pins• 體重計 SN8P1907 SSOP 48 Pins單芯片解決方案• SN8P1820 系列– 精確的12-Bit 模數轉換器– 可編程運算放大器 (PGIA)• Gain Stage One: Low Offset 5V, Gain: 16/32/64/128• Gain Stage One: Low Offset 2mV, Gain: 1.3 ~ 2.5– 升壓- 穩壓調節器• 電源輸入: 2.4V ~ 5V• 穩壓輸出: e.g. 3.8V at SN8P1829– 內置可編程運算放大電路– 內置液晶驅動電路 – 單芯片解決方案 • 電子醫療器 SN8P1829 LQFP 80 Pins 高速/低功耗/高可靠性微控制器• 最新SN8P2000 系列– SN8P2500/2600/2700 系列– 高度抗交流雜訊能力• 標準瞬間電壓脈沖群測試 (EFT): IEC 1000-4-4• 雜訊直接灌入芯片電源輸入端• 只需添加1顆 2.2F/50V 旁路電容• 測試指標穩超 4000V (歐規)– 高可靠性復位電路保證系統正常運行• 支持外部復位和內部上電復位• 內置1.8V 低電壓偵測可靠復位電路• 內置看門狗計時器保證程序跳飛可靠復位– 高抗靜電/栓鎖效應能力– 芯片工作溫度有所提高: -200C ~ 700C 工規芯片溫度: -400C ~ 850C 高速/低功耗/高可靠性微控制器• 最新 SN8P2000 系列– SN8P2500/2600/2700 系列– 1T 精簡指令級結構• 1T: 一個外部振蕩周期執行一條指令• 工作速度可達16 MIPS / 16 MHz Crystal– 工作消耗電流 < 2mA at 1-MIPS/5V– 睡眠模式下消耗電流 < 1A / 5V額外功能• 高速脈寬調制輸出 (PWM)– 8-Bit PWM up to 23 KHz at 12 MHz System Clock– 6-Bit PWM up to 93 KHz at 12 MHz System Clock– 4-Bit PWM up to 375 KHz at 12 MHz System Clock• 內置高速16 MHz RC振蕩器 (SN8P2501A)• 電壓變化喚醒功能• 可編程控制沿觸發/中斷功能– 上升沿 / 下降沿 / 雙沿觸發• 串行編程接口
上傳時間: 2013-10-21
上傳用戶:jiahao131
提出了一種基于LPC2142且具有USB (通用串行總線) 接口的高速數據采集卡的設計方案,給出了基于ARM7處理器LPC2142和FPGA芯片的軟硬件設計方法,該設計方案解決了高速實時信號與接口總線之間的速度兼容問題。關鍵詞 USB 高速數據采集卡 LabVIEW uC/OS-II 速度兼容
上傳時間: 2013-11-09
上傳用戶:atdawn
串行編程器源程序(Keil C語言)//FID=01:AT89C2051系列編程器//實現編程的讀,寫,擦等細節//AT89C2051的特殊處:給XTAL一個脈沖,地址計數加1;P1的引腳排列與AT89C51相反,需要用函數轉換#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引腳排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//編程前的準備工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//編程結束后的工作,設置合適的引腳電平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//從P0口獲得數據{ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//轉換并設置P0口的數據{ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//讀特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//寫器件{//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 //寫一個單元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效驗:循環讀,直到讀出與寫入的數相同 { nTimeOut++; if(nTimeOut>1000)//超時了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//讀器件{ BYTE Data;//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 //讀一個單元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一個脈沖指向下一個單元//----------------------------------------------------------------------------- return Data;} void Lock01()//寫鎖定位{ InitPro01();//先設置成編程狀態//----------------------------------------------------------------------------- //根據器件的DataSheet,設置相應的編程控制信號 if(ComBuf[2]>=1)//ComBuf[2]為鎖定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//設置pw中的函數指針,讓主程序可以調用上面的函數{ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上傳時間: 2013-11-12
上傳用戶:gut1234567
PCF8563 是低功耗的CMOS 實時時鐘日歷芯片.它提供一個可編程時鐘輸出一個中斷輸出和掉電檢測器.所有的地址和數據通過I2C 總線接口串行傳遞最大總線速度為400Kbits/s 每次讀寫數據后內嵌的字地址寄存器會自動產生增量.2 特性 低工作電流典型值為0.25 A VDD=3.0V Tamb=25 時; 世紀標志; 大工作電壓范圍1.0 5.5V; 低休眠電流典型值為0.25 A(VDD=3.0V,Tamb=25 ); 400KHz 的I2C 總線接口VDD=1.8 5.5V 時; 可編程時鐘輸出頻率為32.768KHz 1024Hz 32Hz 1Hz; 報警和定時器; 內部集成的振蕩器電容片內電源復位功能掉電檢測器; I2C 總線從地址讀0A3H 寫0A2H; 開漏中斷引腳
上傳時間: 2013-12-16
上傳用戶:liuchee