歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

基于單片機微型打印機系統(tǒng)控制設計

  • 資源ID:67026194       資源大?。?span id="ww0y0k5" class="font-tahoma">432.50KB        全文頁數(shù):45頁
  • 資源格式: DOC        下載積分:20積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要20積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標題沒有明確說明有答案則都視為沒有答案,請知曉。

基于單片機微型打印機系統(tǒng)控制設計

精選優(yōu)質文檔-傾情為你奉上基于單基片機的微型打印機的設計摘 要目前,電子領域正向著數(shù)字化、信息化、微型化發(fā)展。打印機作為數(shù)字輸出設備之一也朝著多功能、高性能的方向發(fā)展。微型打印機是電子信息領域一種很重要的輸出設備。本文設計的主要目的是運用單片機來控制微型打印機來實現(xiàn)打印的目的。本設計基于榮達RD-E系列微型打印機,以單片機P80C51以核心元件,輔以必要的外圍電路(包括實時時鐘電路、溫度傳感器和液晶顯示模塊、按鍵、打印機),采用并行接口技術,同時通過液晶顯示器顯示打印的數(shù)字和文字信息??梢詫崿F(xiàn)打印一段固定的文字和單個任意的數(shù)字,同時把打印的內容顯示在液晶屏上。本文主要用溫度傳感器測量溫度,再通過單片機控制熱敏電阻打印機打印出小票,設計了時鐘接口電路,打印機接口電路,溫度傳感器接口電路和液晶顯示接口電路。再輔助軟件設計來進行調試。關 鍵 詞:打印機,單片機,液晶顯示器,DS1302時鐘BASED 0N A SINGLE SUBSTRATE MACHINE DESIGNED FOR MICRO PRINTERABSTRACTAt present, the electronics field is developing towards digitalization, information, miniaturation. Printer, as one of the digital output devices are also moving into the direction of multi-function, high performance. The micro printer.It is a kind of important electronic information field output device.Design is the main purpose of this article is to use single-chip microcomputer to control the micro printer for printing purposes. This design based on RD - E series micro printer, P80C51 MCU core components, supplemented by the necessary peripheral circuit (including real time clock circuit, temperature sensor and LCD display module, keys, printer), USES the parallel interface technology, at the same time, through the LCD display to print Numbers and text messages. Can achieve print a fixed text and a single arbitrary Numbers, and at the same time to print the contents of the display on the LCD screen. Temperature is measured in this paper, with a temperature sensor, and controlled by single chip thermal resistor printer to print out receipts, designs the interface circuit, clock printer interface circuit and temperature sensor interface circuit and LCD interface circuit. Auxiliary software designed to debug.KEY WORDS:printers, microcontroller, liquid crystal display, DS1302 clock 目 錄 專心-專注-專業(yè)前 言近年,隨著社會的發(fā)展生活日新月異。人們的工作的也很繁雜,各種大大小小的公司都得到了很大的發(fā)展,公司在日常發(fā)展中難免需要打印各種各樣的文件和資料,所 以各種各樣的打印機也得到很好的應用,但許多打印機成本都很高,體積也比較大,而且性能以及其他的一些都不是很好,所以人們開始研究新型的微型打印機,微型打印機已經(jīng)走進我們的生活中來了,它跟以往的大型打印進來說,最大的優(yōu)點就是體積小,節(jié)約了空間,而且外觀優(yōu)美,性能可觀,而且價格相對以往的來說會便宜許多,性價比很高,其特有的多份拷貝、復寫打印和連續(xù)打印功能,使許多專業(yè)打印領域對其情有獨鐘。它越來越趨向于被設計成各種各樣的專業(yè)類型,用以打印各類專業(yè)性較強的報表、存折、發(fā)票、車票、卡片等輸出介質。所以微型打印機的前景相當可觀。 從1946年日本大和公司(即現(xiàn)在的EPSON公司)研制出第一臺微型打印機開始,微型打印機如今已有60年的歷史。在這60年里,微型打印機技術獲得了突飛猛進的發(fā)展。從最初的點陣式打印方式,已經(jīng)擴展到現(xiàn)今的近10種微型打印方式,包括梭式打印、9針擊打、24針擊打、噴墨打印、熱敏打印等。其產(chǎn)品種類也百花齊放,包括工業(yè)儀器、商場POS、醫(yī)院收費、話費清單、餐廳、銀行、加油站、路橋收費等領域都會有它的身影。目前,在國內微打市場上主要有EPSON、STAR、SAMSUNG等國際品牌和實達、公達、博施等國內品牌。其配套的設備主要有:收款機、觸摸POS終端、電腦等多項設備幾乎所有需要打印的地方。本課題以單片機為核心,設計和微型打印機的接口電路,編寫微型打印機驅動程序,實現(xiàn)特定信息的打印輸出。首先系統(tǒng)硬件部分選用MCS-51單片機系列,顯示器部分由液顯示編寫驅動程序用keil,打印格式是由打印機芯片用電磁鐵打針,再用按鍵的方式按打印格式輸出。第1章 系統(tǒng)總體設計§1.1總體設計框圖基于單片機的微型打印機的設計的總體設計框圖,如圖1-1圖1-1總體設計框圖§1.2 系統(tǒng)功能簡介1、溫度傳感器測量的當前溫度值,通過主控制器在液晶屏上顯示當前溫度和時間。2、按鍵操作可以決定微型打印機的開始,即按鍵后打印機開始打印。第2章 系統(tǒng)硬件設計§2.1 主控制器部分的設計§2.1.1主控芯片的選擇 P80C51基于80C51內核采用高密度CMOS技術設計制造,包含中央處理單元、片內4k程序存儲器,128字節(jié)內部數(shù)據(jù)存儲器RAM、32個雙向輸入/輸出(I/O)口、3個16位定時/計數(shù)器和6個中斷源,4層優(yōu)先級中斷嵌套結構,可用于多機通信的串行I/O口,I/O擴展或全雙工UART,片內時鐘振蕩電路。此外,P80C51采用低功耗靜態(tài)設計,寬工作電壓范圍(2.7-5.5V),寬工作頻率(可為0Hz),兩種軟件方式選擇電源空閑和掉電模式。空閑模式下,凍結CPU而RAM定時器、串行口和中斷系統(tǒng)維持其功能。由于是靜態(tài)設計。所以掉電模式下,時鐘振蕩停止,RAM數(shù)據(jù)會得以保存,停止芯片內其它功能。CPU喚醒后,從時鐘斷點處恢復執(zhí)行程序。其引腳及各引腳功能如下圖2-12-1引腳圖單片機的40個引腳大致可分為4類:電源、時鐘、控制和I/O引腳。 電源: VCC - 芯片電源,接+5V; VSS - 接地端; 時鐘: XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 控制線:控制線共有4根, ALE/PROG:地址鎖存允許/片內EPROM編程脈沖 ALE功能:用來鎖存P0口送出的低8位地址 PROG功能:片內有EPROM的芯片,在EPROM編程期間,此引腳輸入編程脈沖。 PSEN:外ROM讀選通信號。 RST/VPD:復位/備用電源。 RST(Reset)功能:復位信號輸入端。 VPD功能:在Vcc掉電情況下,接備用電源。 EA/Vpp:內外ROM選擇/片內EPROM編程電源。 EA功能:內外ROM選擇端。b)Vpp功能:片內有EPROM的芯片,在EPROM編程期間,施加編程電源Vpp。 I/O線80C51共有4個8位并行I/O端口:P0、P1、P2、P3口,共32個引腳。P3口還具有第二功能,用于特殊信號輸入輸出和控制信號(屬控制總線)。(b)單片機接口電路如圖2-2圖2-2單片機接口電路§2.1.2復位電路在P80C51單片機中的振蕩器運行時,RST非引腳上保持到少2個機器周期的高電平輸入信號,復位過程即可完成。根據(jù)此原理,本設計采用上系統(tǒng)的實用性。本設計的具體復如下圖2-3。圖2-3 復位電路§2.1.3 晶振電路P80C51在工作時需要外部提供時鐘信號,因此,本設計選擇在其18腳19腳之間接上12MHz的晶振,為單片機提供1s的機器振蕩周期。其電路連接圖如圖所示。在圖中,電容器C3、C4起穩(wěn)定振蕩頻率、快速起振的作用,其電容值一般在2050pF。晶振電路圖如下圖2-4。圖2-4晶振電路圖§2.2 顯示系統(tǒng)的設計§2.2.1 顯示系統(tǒng)的方案的選擇方案 1 :用數(shù)碼管或點陣LED 顯示。方案 2 :用液晶1602 顯示。方案 3 :用液晶12864 顯示。時鐘和溫度的顯示可以用數(shù)碼管或LED,而且價格便宜。但是數(shù)碼管的只能顯示簡單的設計的系統(tǒng),與我們設計要求也不相符。有很多東西需要顯示,還是用顯示功能更好的液晶顯示器比較好,它能顯示更多的數(shù)據(jù),用1602液晶顯示數(shù)據(jù)有限,1602不能夠顯示指針時鐘,只能夠顯示一些基本的西文字符,顯示數(shù)據(jù)的可讀性不好,用可以顯示漢字的 12864液晶顯示器還可以增加顯示信息的可讀性,用12864 的繪圖功能即可繪制出指針時鐘的框架,至于指針的轉動則才12864 加 ds1302同步控制,讓人看起來會很方便。雖然它們在價格上差距很大,但是1602不能夠實現(xiàn)我們的要求,12864.是我們唯一的選擇。§2.2.2 12864F 簡介帶中文字庫的128X64是一種具有4 位/8 位并行、2 線或 3 線串行多種接口方式,內部含有國標一級、二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為128×64, 內置 8192 個 16*16 點漢字,和128 個16*8 點 ASCII 字符集.利用該模塊靈活的接口方式和單、方便的操作指令,可構成全中文人機交互圖形界面??梢燥@示8 ×4 行 16×16 點陣的漢字. 也可完成圖形顯示. 低電壓低功耗是其顯著特點。由該模塊構成的液晶顯示方案與同類型的圖形點陣液晶示模塊相比,不論硬件電路結構或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。§2.2.3 12864F 引腳說明管腳號管腳名電平管腳功能描述1VSS0V電源地2VCC3 .0+5V電源正3V0-對比度(亮度)調整4RS(CS)H/LRS=“H”, 表示 DB7DB0 為顯示數(shù)據(jù)RS=“L”, 表示 DB7DB0 為顯示指令數(shù)據(jù)5R/W(SIDH/LR/W=“H”,E=“H”, 數(shù)據(jù)被讀到DB7DB0 R/W=“L”,E=“HL”, DB7DB0 的數(shù)據(jù)被寫到IR或 DR6E(SCLK)H/L使能信號7DB0H/L三數(shù)據(jù)線8DB1H/L三數(shù)據(jù)線9DB2H/L三數(shù)據(jù)線10DB3H/L三數(shù)據(jù)線11DB4H/L三態(tài)數(shù)據(jù)線12DB5H/L三態(tài)數(shù)據(jù)線13DB6H/L三態(tài)數(shù)據(jù)線14DB7H/L三態(tài)數(shù)據(jù)線15PSBH/LH:8 位或 4 位并口方式,L:串口方式(見注釋 1 )16NC-空腳17/RESET H/LH/L復位端,低電平有效(見注釋2 )18VOUT - LCD- LCD驅動電壓輸出端19AVDD背光源正端(+5V)(見注釋3 )20KVSS背光源負端(見注釋3 )§2.2.4 12864F 液晶顯示電路圖2-5 液晶顯示電路圖設計中采用 LCD12864液晶顯示。它一般串口、并口兩種方式顯示, 而我們一般采用并口顯示。12864的 4 、5 、6 、15、17 腳分別與單片機 的 P3.0 P3.4 相連。714 腳與單片機的P0 口相連。1 、20 號腳接地,2 號腳接電源,19 號腳背光燈正端串一個電阻與電源相連,電阻起限流 的作用,我們取 R=10K。3 號腳是對比度(亮度)調整,這里要用一個 滑動變阻器來調整亮度,這里我們取電位器大小為10K。 §2.3 溫度系統(tǒng)設計§2.3.1 方案的選擇方案 1 :用熱敏電阻等測溫元件測出電壓,再轉換成對應的溫度。需要比較 多的外部元件(A/D 轉換)支持,且硬件電路復雜,制作成本相對較高。 方案 2 :用 DS18B20直接測溫。DS18B20 溫度傳感器是美國DALLAS半導 體公司最新推出的一種改進型智能溫度傳感器,它能直接讀出被測溫度, 并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式。經(jīng)比較,我們選擇方案2 。溫度實現(xiàn)只能通過外部的溫度傳感器來實現(xiàn)。經(jīng)上網(wǎng)查閱及市場考察,DS18b20體積小,只有3 只腳,電路接法簡單。內部含有寄存器為 我們設計實現(xiàn)上下限報警功能提供保障。精度為0 .5°C,也符合我們設 計的要求。 DS18B20 也是我們通常使用的型號,因此溫度傳感器 用DS18B20。§2.3.2 溫度芯片的選擇溫度實現(xiàn)只能通過外部的溫度傳感器來實現(xiàn)。經(jīng)上網(wǎng)查閱資料及市場考察,DS18b20體積小,只有 3 只腳,電路接法簡單。它能夠直接讀出被測溫度。內部含有寄存器為我們設計實現(xiàn)上下限報警功能提供保障。用戶可定義的非易失性溫度報警設置;報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;精度為0 .5°C,也符合我們設計的要求。DS18B20也是我們通常使用的型號,因此溫度傳感器用 DS18B20。§2.3.2 DS18B20內部結構描述DS18B20 溫度傳感器的內部存儲器還包括一個高速暫存RAM 和一個非易失性的可電擦除的EERAM。高速暫存RAM 的結構為8個字節(jié)的 存儲器,結構如圖 4 .1 所示。頭兩個字節(jié)包含測得的溫度信息,第三和 第四字節(jié)是TH 和 TL 的拷貝,是易失的,每次上電復位時被刷新。第五個字節(jié)為配置寄存器,它的內容用于確定溫度值的數(shù)字轉換分辨率。DS18B20工作時按此寄存器中的分辨率將溫度轉換為相應精度的數(shù)值。該字節(jié)各位的定義如圖4 .2 所示。低5 位一直為1 ,TM 是測試模式位,用于設置DS18B20 在工作模式還是在測試模式。表2.1 高速暫存 RAM 結構圖溫度LSB1 字節(jié)溫度MSB2 字節(jié)TH用戶字節(jié) 13 字節(jié)TL用戶字節(jié) 24 字節(jié)TH 用戶字節(jié) 1配置寄存器5 字節(jié)TL 用戶字節(jié) 2保留6 字節(jié)保留7字節(jié)EEROM保留8 字節(jié)CRC9字節(jié)表2.2 配置寄存器TMR1R011111§2.3.3 DS18b20溫度系統(tǒng)電路圖2-6溫度接口電路圖§2.4 時鐘系統(tǒng)電路設計§2.4 .1 時鐘芯片選擇 我們采用具有涓細電流充電能力的低功耗實時時鐘電路DS1302。它可以對年、月、日、周日、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。它采用主電源和備用電源雙電源供電。它的工作電壓范 圍2 .05.5V,在 2 .2V 時,小于 300nA。它內部含有31個字節(jié)的靜態(tài)RAM,可提供用戶訪問。DS1302可以對年、月、日、周日、時、分、秒進行計時,可以達到我們設計的基本的要求。內部的寄存器為我們調時,鬧鐘定時提供了寄存空間。備用用電源也實現(xiàn)了當系統(tǒng)斷電后,時鐘仍然可以保持。而且 它是串行接口,與單片機通信所需要的接口少。不像 DS12887等芯片并行通信需要很多IO 口。§2.4 .2 DS1302管腳及寄存器說明DS1302的引腳排列Vcc1 為后備電源,VCC2 為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。DS1302 由 Vcc1 或 Vcc2 兩者中的較大者供電。當 Vcc2 大于Vcc10 .2V 時,Vcc2 給 DS1302供電。當 Vcc2 小于 Vcc1時,DS1302由 Vcc1 供電。因此,我們 vcc1 用 3V 的紐扣電池作為備用電源,vcc2 用系統(tǒng)電源作為主電源。X1 和 X2 是振蕩源,外接 32.768kHz晶振。RST 是復位/ 片選線,通過把RST 輸入驅動置高電平來啟動所有的數(shù)據(jù)傳送。RST 輸入有兩種功能:首先,RST 接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST 提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當RST 為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對 DS1302進行操作。如果在傳送過程中RST 置為低電平,則會終止此次數(shù)據(jù)傳送,I/O 引腳變?yōu)楦咦钁B(tài)。上電運行時,在Vcc2 .5V 之前,RST 必須保持低電平。只有在SCLK 為低電平時,才能將RST 置為高電平。I/O 為串行數(shù)據(jù)輸入輸出端( 雙向) 。SCLK 為時鐘輸入端。DS1302的寄存器說明DS1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數(shù)據(jù)位為BCD 碼形式。此外,DS1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與RAM 相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。DS1302與 RAM 相關的寄存器分為兩類:一類是單個RAM 單元,共 3 1個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的RAM 寄存器,此方式下可一次性讀寫所有的RAM的31個字節(jié),命令控制字 為FEH(寫) 、FFH(讀)。§2.4 .3 DS1302時鐘電路圖2-7 時鐘接口電路圖§2.5 鍵盤只需要選擇一個開始打印鍵接口電路圖2-8 按鍵接口電路圖§2.6 微型打印機§2.6.1 特點與性能RD-E 型熱敏微型打印機專為儀器儀表面板安裝而設計,采用獨特的面板式嵌入結構,便可將整個打印機固定在儀表面板上。RD-E 型為前面板易上紙結構設計,擁有多項專利技術,實現(xiàn)打印機上紙變革。E 型殼體超小、超薄,外觀精巧;安裝開孔尺寸僅為 76mm×76mm, 深度僅:45mm;但可容納直徑為 33mm 的打印紙卷。控制板為防塵設計安裝,采用原裝進口打印頭有效確保打印效果與打印機的使用壽命。§2.7 打印機接口電路圖2-9 打印機接口電路圖§2.8硬件原理圖圖2-10 硬件原理圖第3章 軟件設計§3.1并口連接方式例程#include<reg52.h>#include<string.h>#include<INTRINS.H>bit STB=P1.1;sbit BUSY=P1.0;/*并口打印子程序*/void pprint(unsigned char ch) while(BUSY) ; P0=ch; STB=0; _nop_(); _nop_(); STB=1;sbit STB=P1.1;sbit BUSY=P1.0;/*主函數(shù)*/main()int i;char ch="北京榮達測試程序" pprint(0x1b);pprint(0x38);pprint(0x00); /調用漢字出庫指令for(i=0;i<strlen(ch);i+)pprint(chi);pprint(0x0d);/回車§3.2 按鍵接口設計#include<reg52.h> /包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義sbit KEY=P33; /定義按鍵輸入端口sbit LED=P12; /定義led輸出端口/*- 主函數(shù)-*/void main (void) KEY=1; /按鍵輸入端口電平置高while (1) /主循環(huán) if(!KEY) /如果檢測到低電平,說明按鍵按下 LED=0; else LED=1; /這里使用if判斷,如果按鍵按下led點亮,否則熄滅 /上述4句可以用一句替代 LED=KEY; /主循環(huán)中添加其他需要一直工作的程序 §3.3 12864,DS1302,DS18B20的接口程序/*程序名稱: 時鐘+溫度通過 LCD12864 顯示 默認時間: 從 12:00 開始版本: VER1.0適用板本: PL-51 學習板*/*頭文件*/ #include <reg52.h> #include <intrins.h>#define uint unsigned int #define uchar unsigned char #define Nop() _nop_() #define _Nop() _nop_()/*引腳端口定義*/sbit LCD12864_RS_PORT= P24; /*LCD12864 引腳定義*/sbit LCD12864_RW_PORT = P265;sbit LCD12864_E_PORT= P26;#define LCD12864_DA_PORT P0/sbit dula=P23;/數(shù)碼管的段選信號sbit wela=P22; /數(shù)碼管的位選信號void delay1 (void)/關閉數(shù)碼管延時程序int k;for (k=0; k<1000; k+);/sbit DQ =P37; /定義 DS18B20 通信端口sbitT_CLK = P35;/*實時時鐘時鐘線引腳 */sbitT_IO = P34;/*實時時鐘數(shù)據(jù)線引腳 */sbitT_RST = P36;/*實時時鐘復位線引腳 */sbitACC0 = ACC0;sbitACC7 = ACC7;uchar code mun_to_char = "" /*數(shù)字轉換為 ASCII 字符碼*/ uchar code Week1_to_char = "一"uchar code Week2_to_char = "二" uchar code Week3_to_char = "三" uchar code Week4_to_char = "四" uchar code Week5_to_char = "五"uchar code Week6_to_char = "六" /*星期數(shù)字轉換為漢字的 ASCII 碼*/ uchar code Week7_to_char = "日"uchar hanzi_buff1="08 年 12 月 20 日 "uchar hanzi_buff2="星期 六"uchar hanzi_buff3="12:00:00"uchar hanzi_buff4="當前溫度: 20.3 度"uchar code lcd1602_line1="Please insert "uchar code lcd1602_line2="LCD12864 Display"uchar data time_data_buff7=0x00,0x00,0x12,0x20,0x12,0x06,0x08;/* 格式為 : 秒 分 時 日 月 星期 年 */以下是時鐘讀取程序/*函 數(shù) 名:RTInputByte()功能:實時時鐘寫入一字節(jié) 說明:往 DS1302 寫入 1Byte 數(shù)據(jù) (內部函數(shù))入口參數(shù):d 寫入的數(shù)據(jù) 返 回 值:無*/void RTInputByte(uchar d)uchar i;ACC = d;for(i=8; i>0; i -)T_IO = ACC0;/*相當于匯編中的 RRC */T_CLK = 1;T_CLK = 0;ACC = ACC >> 1;/*函 數(shù) 名:RTOutputByte()功能:實時時鐘讀取一字節(jié) 說明:從 DS1302 讀取 1Byte 數(shù)據(jù) (內部函數(shù))入口參數(shù):無 返 回 值:ACC*/uchar RTOutputByte(void)uchar i; for(i=8; i>0; i -)ACC = ACC >>1;/*相當于匯編中的 RRC */ ACC7 = T_IO;T_CLK = 1;T_CLK = 0;return(ACC);/*函 數(shù) 名:W1302()功能:往 DS1302 寫入數(shù)據(jù) 說明:先寫地址,后寫命令/數(shù)據(jù) (內部函數(shù)) 調用:RTInputByte() , RTOutputByte() 入口參數(shù):ucAddr: DS1302 地址, ucData: 要寫的數(shù)據(jù) 返 回 值:無*/void W1302(uchar ucAddr, uchar ucDa)T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr);/* 地址,命令 */RTInputByte(ucDa);/* 寫 1Byte 數(shù)據(jù)*/T_CLK = 1;T_RST = 0;/*函 數(shù) 名:R1302()功能:讀取 DS1302 某地址的數(shù)據(jù) 說明:先寫地址,后讀命令/數(shù)據(jù) (內部函數(shù))調用:RTInputByte() , RTOutputByte() 入口參數(shù):ucAddr: DS1302 地址 返 回 值:ucData :讀取的數(shù)據(jù)*/uchar R1302(uchar ucAddr)uchar ucData;T_RST = 0;T_CLK = 0;T_RST = 1;RTInputByte(ucAddr);/* 地址,命令 */ucData = RTOutputByte();/* 讀 1Byte 數(shù)據(jù) */T_CLK = 1;T_RST = 0;return(ucData); /* 函 數(shù) 名:Set1302()功能:設置初始時間 說明:先寫地址,后讀命令/數(shù)據(jù)(寄存器多字節(jié)方式) 調用:W1302() 入口參數(shù):pClock: 設置時鐘數(shù)據(jù)地址 格式為: 秒 分 時 日 月 星期 年7Byte (BCD 碼)1B 1B 1B 1B 1B 1B 1B返 回 值:無*/void Set1302(uchar *pClock)uchar i;uchar ucAddr = 0x80; EA = 0;W1302(0x8e,0x00); /* 控制命令,WP=0,寫操作*/ for(i =7; i>0; i -)W1302(ucAddr,*pClock); /* 秒 分 時 日 月 星期 年 */ pClock+;ucAddr +=2;W1302(0x8e,0x80); /* 控制命令,WP=1,寫保護*/ EA = 1;/*函 數(shù) 名:Get1302()功能:讀取 DS1302 當前時間 說明: 調用:R1302() 入口參數(shù):ucCurtime: 保存當前時間地址。當前時間格式為: 秒 分 時 日 月 星期 年7Byte (BCD 碼) 1B 1B 1B 1B 1B 1B 1B返 回 值:無*/void Get1302(uchar ucCurtime)uchar i;uchar ucAddr = 0x81; EA = 0;for (i=0; i<7; i+)ucCurtimei = R1302(ucAddr);/*格式為: 秒 分 時 日 月 星期 年 */ ucAddr += 2;EA = 1;/以上是 DS1302 時鐘讀取程序/ /以下是 DS18B20 驅動程序/延時函數(shù) void delay(uint i)while(i-);/初始化函數(shù)void Init_DS18B20()unsigned char x=0; DQ = 1; /DQ 復位 delay(8); /稍做延時DQ = 0; /單片機將 DQ 拉低 delay(80); /精確延時 大于 480us DQ = 1; /拉高總線delay(14);x=DQ; /稍做延時后 如果 x=0 則初始化成功 x=1 則初始化失敗 delay(20);/讀一個字節(jié)uchar ReadOneChar()uchar i=0; uchar dat = 0; for (i=8;i>0;i-)DQ = 0; / 給脈沖信號 dat>>=1;DQ = 1; / 給脈沖信號 if(DQ) dat|=0x80; delay(4);return(dat);/寫一個字節(jié)void WriteOneChar(unsigned char dat)uchar i=0;for (i=8; i>0; i -) DQ = 0;DQ = dat&0x01; delay(5);DQ = 1; dat>>=1; /讀取溫度uint ReadTemperature()uchar a=0; uchar b=0; uint t=0; float tt=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過讀序號列號的操作 WriteOneChar(0x44); / 啟動溫度轉換 Init_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀 9 個寄存器) 前兩個就是溫度 a=ReadOneChar();b=ReadOneChar();t=b;t<<=8;t=t|a;tt=t*0.0625; /將溫度的高位與低位合并 t= tt*10+0.5; /對結果進行 4 舍 5 入 return(t);/以上是 DS18B20 驅動程序/以下是 LCD12864 驅動程序/void LCD12864_WaitIdle() /LCD12864 忙 信號檢測LCD12864_DA_PORT = 0xff; LCD12864_RS_PORT = 0; LCD12864_RW_PORT = 1; LCD12864_E_PORT = 1;while(LCD12864_DA_PORT&0x80)=1); /*等待 BF 不為 1*/ LCD12864_E_PORT = 0;void LCD12864_COM_Write( uchar com_da) /* 檢測忙信號寫入命令字com_da 為待寫入的命令字*/LCD12864_WaitIdle(); LCD12864_RS_PORT = 0; LCD12864_RW_PORT = 0; LCD12864_DA_PORT = com_da; LCD12864_E_PORT = 1;Nop();Nop();Nop();Nop(); Nop();Nop();Nop();Nop(); LCD12864_E_PORT = 0;void LCD12864_NoWaitIdle_COM_Write(uchar com_da) /* 不檢測忙信號寫入命令字com_da 為待寫入的命令字*/LCD12864_RS_PORT = 0;LCD12864_RW_PORT = 0; LCD12864_DA_PORT = com_da; LCD12864_E_PORT = 1;Nop();Nop();Nop();Nop();Nop();Nop();Nop();Nop(); LCD12864_E_PORT = 0;void LCD12864_Data_Write(uchar da) /* 數(shù)據(jù)寫入da 為待寫入的 8 位數(shù)據(jù)*/LCD12864_WaitIdle(); /*檢測忙信號*/ LCD12864_RS_PORT = 1; LCD12864_RW_PORT = 0; LCD12864_DA_PORT = da; LCD12864_E_PORT = 1;Nop();Nop();Nop();Nop();Nop();Nop();Nop();Nop(); LCD12864_E_PORT = 0;void lcd_delay_ms(uchar x)/*1MS 為單位的延時程序,不準確*/uchar j; while(x-) for(j=0;j<125;j+);void LCD12864_Reset() /*LCD12864 初始化*/lcd_delay_ms(100); /*適當延時待 LCD 自動復位完成*/ LCD12864_NoWaitIdle_COM_Write(0x30); /*使用 8 位并口通訊*/ lcd_delay_ms(10);LCD12864_NoWaitIdle_COM_Write(0x30); /*使用 8 位并口通訊*/ lcd_delay_ms(10);LCD12864_NoWaitIdle_COM_Write(0x0c); /*顯示開及光標設置*/ lcd_delay_ms(10);LCD12864_NoWaitIdle_COM_Write(0x01); /*顯示清屏*/ lcd_delay_ms(30);LCD12864_NoWaitIdle_COM_Write(0x06); /*DDRAM 的地址計數(shù)器(AC)加 1*/ lcd_delay_ms(30);void LCD12864_HAIZI_WRITE(uchar xpos,uchar ypos,uchar daH,uchar daL) /ST7920 漢字字符寫入/參數(shù)說明: xpos 待寫入的 X 位置/ypos 待寫入的 Y 位置/daH 待寫入的漢字的高八位 daL 待寫入的漢字的低八位uchar xy_pos;if(xpos>=8)|(ypos>=4) ) return; /*X 位置超出顯示范圍退出*/ if(ypos=0) xy_pos = 0x80 + xpos;else if(ypos=1) xy_pos = 0x90 + xpos; /*計算轉換地址*/ else if(ypos=2) xy_pos = 0x88 + xpos;else if(ypos=3) xy_pos = 0x98 + xpos; LCD12864_COM_Write(xy_pos); /*寫地址*/ lcd_delay_ms(1);LCD12864_Data_Write(daH); /*寫高八位數(shù)據(jù)*/ lcd_delay_ms(1);LCD12864_Data_Write(daL); /*寫低八位數(shù)據(jù)*/ lcd_delay_ms(1);/以上是 LCD12864 驅動程序/ /*1MS 為單位的延時程序*/ void delay_1ms(uchar x)uchar j; while(x-)for(j=0;j<125;j+);void main()uchar i;uint temp_buff;LCD12864_Reset(); /*LCD 初始化*/P0=0X00;/關掉數(shù)碼管的信號。阻止數(shù)碼管受到 P0 口信號的影響。 dula=1;wela=0;delay1();dula=0;wela=0;delay1();/LCD12864_DA_PORT = 0xff; /*釋放 P0 端口*/ Set1302(time_data_buff); /*設置時間*/ while(1)for(i=0;i<8;i+) LCD12864_HAIZI_WRITE(i,0,hanzi_buff1i*2,hanzi_buff1i*2+1); /*顯示年月日*/for(i=0;i<8;i+) LCD12864_HAIZI_WRITE(i,1,hanzi_buff2i*2,hanzi_buff2i*2+1); /*顯示星期*/for(i=0;i<8;i+) LCD12864_HAIZI_WRITE(i,2,hanzi_buff3i*2,hanzi_buff3i*2+1); /*顯示時間*/for(i=0;i<8;i+) LCD12864_HAIZI_WRITE(i,3,hanzi_buff4i*2,hanzi_buff4i*2+1); /*顯示溫度*/temp_buff = Read Temperature(); /*讀取溫度*/hanzi_buff410 = mun_to_chartemp_buff/100; /*填充溫度到緩存*/ hanzi_buff411 = mun_to_chartemp_buff%100/10;hanzi_buff413 = mun_to_chartemp_buff%10; Get1302(time_data_buff);hanzi_buff12 = mun_to_chartime_data_buff6/0x10; hanzi_buff13 = mun_to_chartime_data_buff6%0x10; /*年*/ hanzi_buff16 = mun_to_chartime_data_buff4/0x10; hanzi_buff17 = mun_to_chartime_data_buff4%0x10; /*月*/ hanzi_buff110 = mun_to_chartime_data_buff3/0x10; hanzi_buff111 = mun_to_chartime_data_buff3%0x10; /*日*/ hanzi_buff34 = mun_to_chartime_data_buff2/0x10; hanzi_buff35 = mun_to_chartime_data_buff2%0x10; /*時*/ hanzi_buff37 = mun_to_chartime_data_buff1/0x10; hanzi_buff38 = mun_to_chartime_data_buff1%0x10; /*分*/ hanzi_buff310 = mun_to_chartime_data_buff0/0x10; hanzi_buff311 = mun_to_chartime_data_buff0%0x10; /*秒*/ i=time_data_buff5%0x10;if(i=7)hanzi_buff210 = Week7_to_char0 ; hanzi_buff211 = Week7_to_char1; /*星期日*/else if(i=1)hanzi_buff210 = Week1_to_char0 ; hanzi_buff211 = Week1_to_char1; /*星期一*/else if(i=2)hanzi_buff210 = Week2_to_char0 ; hanzi_buff211 = Week2_to_char1; /*星期二*/else if(i=3)hanzi_buff210 = Week3_to_char0 ; hanzi_buff211 = Week3_to_char1; /*星期三*/else if(i=4)hanzi_buff210 = Week4_to_char0 ; hanzi_buff211 = Week4_to_char1; /*星期四*/else if(i=5)hanzi_buff210 = Week5_to_char0 ; hanzi_buff211 = Week5_to_char1; /*星期五*/else if(i=6)hanzi_buff210 = Week6_to_char0 ; hanzi_buff211 = Week6_to_char1; /*星期六*/delay_1ms(200); delay_1ms(200); delay_1ms(200);結論本文詳細介紹了應用P80C51單片機控制微型打印機實現(xiàn)打印輸出的硬件設計及軟件設計。經(jīng)過測試表明,利用設計能夠實現(xiàn)數(shù)據(jù)打印,并且能夠通過串口通信實現(xiàn)對打印機輸出的控制,打印結果正確無

注意事項

本文(基于單片機微型打印機系統(tǒng)控制設計)為本站會員(2127513****773577...)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。 若此文所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復下載不扣分。




關于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!