單片機串行通信發射機 我所做的單片機串行通信發射機主要在實驗室完成,參考有關的書籍和資料,個人完成電路的設計、焊接、檢查、調試,再根據自己的硬件和通信協議用匯編語言編寫發射和顯示程序,然后加電調試,最終達到準確無誤的發射和顯示。在這過程中需要選擇適當的元件,合理的電路圖扎實的焊接技術,基本的故障排除和糾正能力,會使用基本的儀器對硬件進行調試,會熟練的運用匯編語言編寫程序,會用相關的軟件對自己的程序進行翻譯,并燒進芯片中,要與對方接收機統一通信協議,要耐心的反復檢查、修改和調試,直到達到預期目的。單片機串行通信發射機采用串行工作方式,發射并顯示兩位數字信息,既顯示00-99,使數據能夠在不同地方傳遞。硬件部分主要分兩大塊,由AT89C51和多個按鍵組成的控制模塊,包括時鐘電路、控制信號電路,時鐘采用6MHZ晶振和30pF的電容來組成內部時鐘方式,控制信號用手動開關來控制,P1口來控制,P2、P3口產生信號并通過共陽極數碼管來顯示,軟件采用匯編語言來編寫,發射程序在通信協議一致的情況下完成數據的發射,同時顯示程序對發射的數據加以顯示。畢業設計的目的是了解基本電路設計的流程,豐富自己的知識和理論,鞏固所學的知識,提高自己的動手能力和實驗能力,從而具備一定的設計能力。我做得的畢業設計注重于對單片機串行發射的理論的理解,明白發射機的工作原理,以便以后單片機領域的開發和研制打下基礎,提高自己的設計能力,培養創新能力,豐富自己的知識理論,做到理論和實際結合。本課題的重要意義還在于能在進一步層次了解單片機的工作原理,內部結構和工作狀態。理解單片機的接口技術,中斷技術,存儲方式,時鐘方式和控制方式,這樣才能更好的利用單片機來做有效的設計。我的畢業設計分為兩個部分,硬件部分和軟件部分。硬件部分介紹:單片機串行通信發射機電路的設計,單片機AT89C51的功能和其在電路的作用。介紹了AT89C51的管腳結構和每個管腳的作用及各自的連接方法。AT89C51 與MCS-51 兼容,4K字節可編程閃爍存儲器,壽命:1000次可擦,數據保存10年,全靜態工作:0HZ-24HZ,三級程序存儲器鎖定,128*8 位內部RAM,32 跟可編程I/O 線,兩個16 位定時/計數器,5 個中斷源,5 個可編程串行通道,低功耗的閑置和掉電模式,片內震蕩和時鐘電路,P0和P1 可作為串行輸入口,P3口因為其管腳有特殊功能,可連接其他電路。例如P3.0RXD 作為串行輸出口,其中時鐘電路采用內時鐘工作方式,控制信號采用手動控制。數據的傳輸方式分為單工、半雙工、全雙工和多工工作方式;串行通信有兩種形式,異步和同步通信。介紹了串行串行口控制寄存器,電源管理寄存器PCON,中斷允許寄存器IE,還介紹了數碼顯示管的工作方式、組成,共陽極和共陰極數碼顯示管的電路組成,有動態和靜態顯示兩種方式,說明了不同顯示方法與單片機的連接。再后來還介紹了硬件的焊接過程,及在焊接時遇到的問題和應該注意的方面。硬件焊接好后的檢查電路、不裝芯片上電檢查及上電裝芯片檢查。軟件部分:在了解電路設計原理后,根據原理和目的畫出電路流程圖,列出數碼顯示的斷碼表,計算波特率,設置串行口,在與接受機設置相同的通信協議的基礎上編寫顯示和發射程序。編寫完程序還要進行編譯,這就必須會使用編譯軟件。介紹了編譯軟件的使用和使用過程中遇到的問題,及在編譯后燒入芯片使用的軟件PLDA,后來的加電調試,及遇到的問題,在沒問題后與接受機連接,發射數據,直到對方準確接收到。在軟件調試過程中將詳細介紹調試遇到的問題,例如:通信協議是否相同,數碼管是否與芯片連接對應,計數器是否開始計數等。
上傳時間: 2013-10-19
上傳用戶:uuuuuuu
AT89C2051驅動步進電機的電路和源碼:AT89C2051驅動步進電機的電路和源碼 程序:stepper.c stepper.hex/* * STEPPER.C * sweeping stepper's rotor cw and cww 400 steps * Copyright (c) 1999 by W.Sirichote */#i nclude c:\mc5151io.h /* include i/o header file */ #i nclude c:\mc5151reg.hregister unsigned char j,flag1,temp; register unsigned int cw_n,ccw_n;unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90} #define n 400/* flag1 mask byte 0x01 run cw() 0x02 run ccw() */main(){ flag1=0; serinit(9600); disable(); /* no need timer interrupt */ cw_n = n; /* initial step number for cw */ flag1 |=0x01; /* initial enable cw() */while(1){ { tick_wait(); /* wait for 10ms elapsed */energize(); /* round-robin execution the following tasks every 10ms */ cw(); ccw(); } }}cw(){ if((flag1&0x01)!=0) { cw_n--; /* decrement cw step number */ if (cw_n !=0) j++; /* if not zero increment index j */ else {flag1&=~0x01; /* disable cw() execution */ ccw_n = n; /* reload step number to ccw counter */ flag1 |=0x02; /* enable cww() execution */ } }
上傳時間: 2013-11-21
上傳用戶:boyaboy
1. 文件比較器TKSDiff :a) 二進制比較:支持字體設置和文件改動監測,微調智能比較算法b) 支持文件拖拽,內容替換和插入c) 支持復制選中文本和比較文件的文件名d) 支持選中內容的導出e) 顯示智能比較完成度f) 處理k-flash命令行g) 禁止大文件間的比較h) 修正部分內存越界問題i) 修正消除二進制標題時有時無問題j) 修正目錄比較界面模塊資源泄漏問題k) 修正快速比較設置起始地址 bug
上傳時間: 2013-10-13
上傳用戶:CSUSheep
SPCE061A單片機硬件結構 從第一章中SPCE061A的結構圖可以看出SPCE061A的結構比較簡單,在芯片內部集成了ICE仿真電路接口、FLASH程序存儲器、SRAM數據存儲器、通用IO端口、定時器計數器、中斷控制、CPU時鐘、模-數轉換器AD、DAC輸出、通用異步串行輸入輸出接口、串行輸入輸出接口、低電壓監測低電壓復位等若干部分。各個部分之間存在著直接或間接的聯系,在本章中我們將詳細的介紹每個部分結構及應用。2.1 μ’nSP™的內核結構μ’nSP™的內核如0所示其結構。它由總線、算術邏輯運算單元、寄存器組、中斷系統及堆棧等部分組成,右邊文字為各部分簡要說明。算術邏輯運算單元ALUμ’nSP™的ALU在運算能力上很有特色,它不僅能做16位基本的算術邏輯運算,也能做帶移位操作的16位算術邏輯運算,同時還能做用于數字信號處理的16位×16位的乘法運算和內積運算。1. 16位算術邏輯運算不失一般性,μ’nSP™與大多數CPU類似,提供了基本的算術運算與邏輯操作指令,加、減、比較、取補、異或、或、與、測試、寫入、讀出等16位算術邏輯運算及數據傳送操作。2. 帶移位操作的16位算邏運算對圖2.1稍加留意,就會發現μ’nSP™的ALU前面串接有一個移位器SHIFTER,也就是說,操作數在經過ALU的算邏操作前可先進行移位處理,然后再經ALU完成算邏運算操作。移位包括:算術右移、邏輯左移、邏輯右移、循環左移以及循環右移。所以,μ’nSP™的指令系統里專有一組復合式的‘移位算邏操作’指令;此一條指令完成移位和算術邏輯操作兩項功能。程序設計者可利用這些復合式的指令,撰寫更精簡的程序代碼,進而增加程序代碼密集度 (Code Density)。在微控制器應用中,如何增加程序代碼密集度是非常重要的議題;提高程序代碼密集度意味著:減少程序代碼的大小,進而減少ROM或FLASH的需求,以此降低系統成本與增加執行效能。
上傳時間: 2013-10-10
上傳用戶:星仔
MCS-51系列單片機指令A表MCS-51系列單片機指令d表MCS-51系列單片機指令c表MCS-51系列單片機指令i表MCS-51系列單片機指令j表MCS-51系列單片機指令l表MCS-51系列單片機指令m表MCS-51系列單片機指令n表MCS-51系列單片機指令i表MCS-51系列單片機指令s表MCS-51系列單片機指令x表
上傳時間: 2014-03-27
上傳用戶:chengxin
微型計算機課程設計論文—通用微機發聲程序的匯編設計 本文講述了在微型計算機中利用可編程時間間隔定時器的通用發聲程序設計,重點講述了程序的發聲原理,節拍的產生,按節拍改變的動畫程序原理,并以設計一個簡單的樂曲評分程序為引子,分析程序設計的細節。關鍵字:微機 8253 通用發聲程序 動畫技術 直接寫屏 1. 可編程時間間隔定時器8253在通用個人計算機中,有一個可編程時間間隔定時器8253,它能夠根據程序提供的計數值和工作方式,產生各種形狀和各種頻率的計數/定時脈沖,提供給系統各個部件使用。本設計是利用計算機控制發聲的原理,編寫演奏樂曲的程序。 在8253/54定時器內部有3個獨立工作的計數器:計數器0,計數器1和計數器2,每個計數器都分配有一個斷口地址,分別為40H,41H和42H.8253/54內部還有一個公用的控制寄存器,端地址為43H.端口地址輸入到8253/54的CS,AL,A0端,分別對3個計數器和控制器尋址. 對8353/54編程時,先要設定控制字,以選擇計數器,確定工作方式和計數值的格式.每計數器由三個引腳與外部聯系,見教材第320頁圖9-1.CLK為時鐘輸入端,GATE為門控信號輸入端,OUT為計數/定時信號輸入端.每個計數器中包含一個16位計數寄存器,這個計數器時以倒計數的方式計數的,也就是說,從計數初值逐次減1,直到減為0為止. 8253/54的三個計數器是分別編程的,在對任一個計數器編程時,必須首先講控制字節寫入控制寄存器.控制字的作用是告訴8253/54選擇哪個計數器工作,要求輸出什么樣的脈沖波形.另外,對8253/54的初始化工作還包括,向選定的計數器輸入一個計數初值,因為這個計數值可以是8為的,也可以是16為的,而8253/5的數據總線是8位的,所以要用兩條輸出指令來寫入初值.下面給出8253/54初始化程序段的一個例子,將計數器2設定為方式3,(關于計數器的工作方式參閱教材第325—330頁)計數初值為65536. MOV AL,10110110B ;選擇計數器2,按方式3工作,計數值是二進制格式 OUT 43H,AL ; j將控制字送入控制寄存器 MOV AL,0 ;計數初值為0 OUT 42H,AL ;將計數初值的低字節送入計數器2 OUT 42H,AL ;將計數初值的高字節送入計數器2 在IBM PC中8253/54的三個時鐘端CLK0,CLK1和CLK2的輸入頻率都是1.1931817MHZ. PC機上的大多數I/O都是由主板上的8255(或8255A)可編程序外圍接口芯片(PPI)管理的.關于8255A的結構和工作原理及應用舉例參閱教材第340—373頁.教材第364頁的”PC/XT機中的揚聲器接口電路”一節介紹了揚聲器的驅動原理,并給出了通用發聲程序.本設計正是基于這個原理,通過編程,控制加到揚聲器上的信號的頻率,奏出樂曲的.2.發聲程序的設計下面是能產生頻率為f的通用發聲程序:MOV AL, 10110110B ;8253控制字:通道2,先寫低字節,后寫高字節 ;方式3,二進制計數OUT 43H, AL ;寫入控制字MOV DX, 0012H ;被除數高位MOV AX, 35DEH ;被除數低位 DIV ID ;求計數初值n,結果在AX中OUT 42H, AL ;送出低8位MOV AL, AHOUT 42H,AL ;送出高8位IN AL, 61H ;讀入8255A端口B的內容MOV AH, AL ;保護B口的原狀態OR AL, 03H ;使B口后兩位置1,其余位保留OUT 61H,AL ;接通揚聲器,使它發聲
上傳時間: 2013-10-17
上傳用戶:sunjet
C51控制并口打印機實例:/* 沈陽新榮達電子 *//* 2004-12-7 */#include <reg52.h>#define uchar unsigned char#define uint unsigned int#define data_8 P0sbit BUSY = P1^2; //打印機 BUSY 接P1.2sbit STB = P1^0; //打印機 STB 接P1.0void print(uchar j) //打印子程序{ uchar i;while(BUSY){}; //BUSY=1,打印機忙,等待BUSY 為0 再發數data_8=j;STB=0;i++;i--;STB=1; //給出數據鎖存時鐘BUSY=1;}void main(void){BUSY = 1; //忙信號置高STB = 1; //選通信號置高print(0x1b); //打印機初始化命令print(0x38);print(0x04);for(;;){print(0xd0); //發送漢字內碼“新榮達”print(0xc2);print(0xc8);print(0xd9);print(0xb4);print(0xef);print(0x0d); //換行}}
上傳時間: 2013-11-13
上傳用戶:lwq11
PLC 以 其 可靠性高、抗干擾能力強、配套齊全、功能完善、適應性強等特點,廣泛應用于各種控制領域。PLC作為通用工業控制計算機,是面向工礦企業的工控設備,使用梯形圖符號進行編程,與繼電器電路相當接近,被廣大工程技術人員接受。但是在實際應用中,如何編程能夠提高PLC程序運行速度是一個值得我們思考研究的問題。1 PLC工作原理PLC 與 計 算機的工作原理基本相同,即在系統程序的管理下,通過運行應用程序完成用戶任務。但兩者的工作方式有所不同。計算機一般采用等待命令的工作方式,而PLC在確定了工作任務并裝人了專用程序后成為一種專用機,它采用循環掃描工作方式,系統工作任務管理及應用程序執行都是用循環掃描方式完成的。PLC 有 兩 種基本的工作狀態,即運行(RUN)與停止(STOP)狀態。在這兩種狀態下,PLC的掃描過程及所要完成的任務是不盡相同的,如圖1所示。 PLC在RUN工作狀態時,執行一次掃描操作所的時間稱為掃描周期,其典型值通常為1一100nis,不同PLC廠家的產品則略有不同。掃描周期由內部處理時間、輸A/ 輸出處理執行時間、指令執行時間等三部分組成。通常在一個掃描過程中,執行指令的時間占了絕大部分,而執行指令的時間與用戶程序的長短有關。用戶 程 序 是根據控制要求由用戶編制,由許多條PLC指令所組成。不同的指令所對應的程序步不同,以三菱FX2N系列的PLC為例,PLC對每一個程序步操作處理時間為:基本指令占0.741s/步,功能指令占幾百微米/步。完成一個控制任務可以有多種編制程序的方法,因此,選擇合理、巧妙的編程方法既可以大大提高程序運行速度,又可以保證可靠性。 提高PLC程序運行速度的幾種編程方法2.1 用數據傳送給位元件組合的方法來控制輸出在 PL C應 用編程中,最后都會有一段輸出控制程序,一般都是用邏輯取及輸出指令來編寫,如圖2所示。在圖2所示的程序中,邏輯取的程序步為1,輸出的程序步為2,執行上述程序共需3個程序步。通常情況下,PLC要控制的輸出都不會是少量的,比如,有8個輸出,在條件滿足時要同時輸出。此時,執行圖2所示的程序共需17個程序步。若我們通過位元件的組合并采用數據傳送的方法來完成圖2所示的程序,就會大大減少程序步驟。在三 菱 PLC中,只處理ON/OFF狀態的元件(如X,Y,M和S),稱為位元件。但將位元件組合起來也可以處理數據。位元件組合由Kn加首元件號來表示。位元件每4bit為一組組合成單元。如KYO中的n是組數,當n=1時,K,Yo 對應的是Y3一Yo。當n二2時,KZYo對應的是Y7一Yo。通過位元件組合,就可以用處理數據的方式來處理位元件,圖2程序所示的功能可用圖3所示的傳送數據的方式來完成。
上傳時間: 2013-11-11
上傳用戶:幾何公差
51單片機驅動步進電機(含電路圖和源程序代碼) 源程序:stepper.c stepper.hex /* * STEPPER.C * sweeping stepper's rotor cw and cww 400 steps * Copyright (c) 1999 by W.Sirichote */ #i nclude c:\mc5151io.h /* include i/o header file */ #i nclude c:\mc5151reg.h register unsigned char j,flag1,temp; register unsigned int cw_n,ccw_n; unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90} #define n 400 /* flag1 mask byte 0x01 run cw() 0x02 run ccw() */
上傳時間: 2013-11-09
上傳用戶:釣鰲牧馬
等精度頻率計設計
上傳時間: 2013-10-12
上傳用戶:ming52900