基于51系列單片機(jī)的16乘16點(diǎn)陣LED手寫屏的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
基于51系列單片機(jī)的16乘16點(diǎn)陣LED手寫屏的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
基于51系列單片機(jī)的16乘16點(diǎn)陣LED手寫屏的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
基于51系列單片機(jī)的16乘16點(diǎn)陣LED手寫屏的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
基于51系列單片機(jī)的16乘16點(diǎn)陣LED手寫屏的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

遼東學(xué)院本科畢業(yè)論文(設(shè)計(jì))題目成員姓名:專業(yè):網(wǎng)絡(luò)工程班級學(xué)號:信息技術(shù)學(xué)院獨(dú)創(chuàng)性說明作者鄭重聲明:本畢業(yè)論文(設(shè)計(jì))是我個人在指導(dǎo)教師指導(dǎo)下進(jìn)行的研究工作及取得研究成果。盡我所知,除了文中特別加以標(biāo)注和致謝的地方外,畢業(yè)論文(設(shè)計(jì))中不包含其他人已經(jīng)發(fā)表或撰寫的研究成果,也不包含為獲得遼東學(xué)院或其他單位的學(xué)位或證書所使用過的材料。與我一同工作的同志對本研究所做的貢獻(xiàn)均已在論文中做了明確的說明并表示了謝意。作者簽名:___________日期:____1摘要本設(shè)計(jì)是基于51系列單片機(jī)的16*16點(diǎn)陣LED手寫屏的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)主要要包括單片機(jī)控制系統(tǒng)模塊、點(diǎn)陣LED顯示模塊、手寫筆模塊和電源模塊等幾部分組成。通過軟件算法實(shí)現(xiàn)了LED點(diǎn)陣顯示屏的手寫功能的設(shè)計(jì)與實(shí)現(xiàn)。本文給出了系統(tǒng)具體的硬件設(shè)計(jì)方案,軟件流程圖和C語言程序等幾個方面。是一種價(jià)格低廉的圖文顯示方案。本設(shè)計(jì)主要以51系列單片機(jī)作為核心,采用串行傳輸、動態(tài)掃描技術(shù),制作的一款擁有多功能的模塊化16×16LED點(diǎn)陣的多功能顯示屏。關(guān)鍵詞:51單片機(jī);LED點(diǎn)陣;驅(qū)動電路;手寫屏

目錄一、緒論 1(一)課題的研究意義 1(二)設(shè)計(jì)任務(wù)及要求 1(三)單片機(jī)的發(fā)展史 2(四)單片機(jī)的發(fā)展趨勢 3二、系統(tǒng)的整體結(jié)構(gòu) 5三、單片機(jī)介紹 61、單片機(jī)引腳介紹 92、復(fù)位電路設(shè)計(jì) 92.時(shí)鐘電路設(shè)計(jì) 11四、點(diǎn)陣電路介紹 12(一)LED點(diǎn)陣顯示部分簡介 12(二)LED驅(qū)動方式 14(三)手寫筆電路設(shè)計(jì) 16五、軟件設(shè)計(jì) 17(一)系統(tǒng)軟件流程圖 17(二)程序函數(shù)介紹 181、延時(shí)函數(shù) 182、行掃描函數(shù) 183、手寫筆中斷函數(shù) 18(三)編程環(huán)境介紹 19六、仿真與調(diào)試 21(一)系統(tǒng)的整體實(shí)物圖 21總結(jié) 23參考文獻(xiàn) 24附錄A 25(一) 硬件電路原理圖 25附錄B 26(二) 系統(tǒng)程序源代碼 26致謝 38PAGE43 1一、緒論(一)課題的研究意義LED顯示屏是隨著計(jì)算機(jī)及相關(guān)的微電子、光電子技術(shù)的迅猛發(fā)展而形成的一種新型信息顯示媒體。它利用發(fā)光二極管構(gòu)成的點(diǎn)陣模塊或像素單元組成可變面積的顯示屏幕,并可基于LED點(diǎn)陣顯示及光筆檢測輸入實(shí)現(xiàn)人機(jī)交互功能。LED顯示屏憑借其可靠性高、壽命長、功耗低、應(yīng)用領(lǐng)域?qū)挿旱葍?yōu)勢在顯示領(lǐng)域得到了廣泛地應(yīng)用,它被大量應(yīng)用于各類會議、教學(xué)、遠(yuǎn)程教育、電視直播、設(shè)計(jì)分析及實(shí)時(shí)指揮等領(lǐng)域,實(shí)現(xiàn)了高效、直觀和無障礙溝通,大大節(jié)省了時(shí)間,提高了工作效率,降低了交流成本。在當(dāng)今的信息時(shí)代,便捷高效的信息傳播媒體是成功不可或缺的要素,LED顯示屏技術(shù)順應(yīng)了時(shí)代的訴求,將在經(jīng)濟(jì)發(fā)展中扮演越來越重要的角色。本設(shè)計(jì)基于單片機(jī)控制的LED點(diǎn)陣書寫顯示屏,在實(shí)現(xiàn)基本顯示功能的前提下,可以通過自制光筆,實(shí)現(xiàn)點(diǎn)亮,劃亮,反顯,整屏擦除,連寫多字,對象拖移,滾屏顯示等功能。系統(tǒng)硬件電路簡單,軟件功能多樣,控制系統(tǒng)可靠性高,有較高性價(jià)比,具有一定的實(shí)用性和參考價(jià)值。本設(shè)計(jì)旨在通過設(shè)計(jì)實(shí)現(xiàn)LED點(diǎn)陣書寫顯示屏,綜合應(yīng)用所學(xué)的電子技術(shù)知識,豐富個人設(shè)計(jì)和制造技能,更好地達(dá)成知識和實(shí)踐的完美契合,并力爭為顯示領(lǐng)域提供一種便捷有效的顯示方案,讓先進(jìn)的電子科技服務(wù)于社會。(二)設(shè)計(jì)任務(wù)及要求控制器控制器16×16點(diǎn)陣模塊筆LED點(diǎn)陣書寫顯示屏系統(tǒng)結(jié)構(gòu)示意圖設(shè)計(jì)并制作一個基于16×16點(diǎn)陣LED模塊的書寫顯示屏,其系統(tǒng)結(jié)構(gòu)如圖1-1所示。在控制器的管理下,LED點(diǎn)陣模塊顯示屏工作在人眼不易覺察的掃描微亮和人眼可見的顯示點(diǎn)亮模式下;當(dāng)光筆觸及LED點(diǎn)陣模塊表面時(shí),先由光筆檢測觸及位置處LED點(diǎn)的掃描微亮以獲取其行列坐標(biāo),再依據(jù)功能需求決定該坐標(biāo)處的LED是否點(diǎn)亮至人眼可見的顯示狀態(tài),從而在屏上實(shí)現(xiàn)LED點(diǎn)陣屏的書寫顯示功能。設(shè)計(jì)的最終要求是:在點(diǎn)亮功能下當(dāng)光筆接觸屏上某點(diǎn)LED時(shí),能即時(shí)點(diǎn)亮該LED;在劃亮功能下當(dāng)光筆快速劃過時(shí),能同步點(diǎn)亮劃過的各LED,其速度要求2S內(nèi)能劃過并點(diǎn)亮40點(diǎn)LED;在反顯功能下能對屏上顯示的信息實(shí)現(xiàn)反向顯示;在屏幕擦除功能下能實(shí)現(xiàn)對屏上所顯示信息整屏擦除;在筆畫擦除功能下,能用光筆擦除屏上所顯漢字的筆畫;在連寫多字功能下,能結(jié)合自選的擦除方式,在30S內(nèi)以劃亮方式寫出四個漢字且存入機(jī)內(nèi);在對象拖移功能下,能用光筆將選定顯示內(nèi)容在屏上進(jìn)行拖移,先用光筆以劃亮方式在屏上圈定欲拖移顯示對象,再用光筆將該對象拖移到屏上另一位置;當(dāng)光強(qiáng)改變時(shí),能自動連續(xù)調(diào)節(jié)屏上顯示亮度。(三)單片機(jī)的發(fā)展史單片機(jī)誕生于20世紀(jì)70年代末,經(jīng)歷了SCM、MCU、SOC三大階段。第一個階段是SCM,即單片微型計(jì)算機(jī)(SingleChipMicrocomputer)階段,主要是尋求最佳的單片形態(tài)嵌入式系統(tǒng)的最佳體系結(jié)構(gòu)。創(chuàng)新模式獲得成功,奠定了SCM與通用計(jì)算機(jī)完全不同的發(fā)展道路。在開創(chuàng)嵌入式系統(tǒng)獨(dú)立發(fā)展道路上,Intel公司功不可沒。第二個階段是MCU,即微控制器(MicroControllerUnit)階段,主要的技術(shù)發(fā)展方向是:不斷擴(kuò)展?jié)M足嵌入式應(yīng)用時(shí),對象系統(tǒng)要求的各種外圍電路與接口電路,突顯其對象的智能化控制能力。它所涉及的領(lǐng)域都與對象系統(tǒng)相關(guān),因此,發(fā)展MCU的重任不可避免地落在電氣、電子技術(shù)廠家。從這一角度來看,Intel逐漸淡出MCU的發(fā)展也有其客觀因素。在發(fā)展MCU方面,最著名的廠家當(dāng)數(shù)Philips公司。Philips公司以其在嵌入式應(yīng)用方面的巨大優(yōu)勢,將MCS-51從單片微型計(jì)算機(jī)迅速發(fā)展到微控制器。因此,當(dāng)我們回顧嵌入式系統(tǒng)發(fā)展道路時(shí),不要忘記Intel和Philips的歷史功績。第三個階段是SOC,即單片機(jī)嵌入式系統(tǒng)。單片機(jī)的嵌入式系統(tǒng)的獨(dú)立發(fā)展之路,向MCU階段發(fā)展的重要因素,就是尋求應(yīng)用系統(tǒng)在芯片上的最大化解決;因此,專用單片機(jī)的發(fā)展自然形成了SOC化趨勢。隨著微電子技術(shù)、IC設(shè)計(jì)、EDA工具的發(fā)展,基于SOC的單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)會有較大的發(fā)展。因此,對單片機(jī)的理解可以從單片微型計(jì)算機(jī)、單片微控制器延伸到單片應(yīng)用系統(tǒng)。

(四)單片機(jī)的發(fā)展趨勢CMOS化,近年由于CHMOS技術(shù)的進(jìn)步,大大地促進(jìn)了單片機(jī)的CMOS化。CMOS芯片除了低功耗特性之外,還具有功耗的可控性,使單片機(jī)可以工作在功耗精細(xì)管理狀態(tài)。這也是今后以80C51取代8051為標(biāo)準(zhǔn)MCU芯片的原因。因?yàn)閱纹瑱C(jī)芯片多數(shù)是采用CMOS(金屬柵氧化物)半導(dǎo)體工藝生產(chǎn)。CMOS電路的特點(diǎn)是低功耗、高密度、低速度、低價(jià)格。采用雙極型半導(dǎo)體工藝的TTL電路速度快,但功耗和芯片面積較大。隨著技術(shù)和工藝水平的提高,又出現(xiàn)了HMOS(高密度、高速度MOS)和CHMOS工藝。CHMOS和HMOS工藝的結(jié)合。目前生產(chǎn)的CHMOS電路已達(dá)到LSTTL的速度,傳輸延遲時(shí)間小于2ns,它的綜合優(yōu)勢已在于TTL電路。因而,在單片機(jī)領(lǐng)域CMOS正在逐漸取代TTL電路。低功耗化單片機(jī)的功耗已從毫瓦級,甚至1uA以下;使用電壓在3~6V之間,完全適應(yīng)電池工作。低功耗化的效應(yīng)不僅是功耗低,而且?guī)砹水a(chǎn)品的高可靠性、高抗干擾能力以及產(chǎn)品的便攜化。低電壓化幾乎所有的單片機(jī)都有WAIT、STOP等省電運(yùn)行方式。允許使用的電壓范圍越來越寬,一般在3~6V范圍內(nèi)工作。低電壓供電的單片機(jī)電源下限已可達(dá)1~2V。目前0.8V供電的單片機(jī)已經(jīng)問世。低噪聲與高可靠性為提高單片機(jī)的抗電磁干擾能力,使產(chǎn)品能適應(yīng)惡劣的工作環(huán)境,滿足電磁兼容性方面更高標(biāo)準(zhǔn)的要求,各單片廠家在單片機(jī)內(nèi)部電路中都采用了新的技術(shù)措施。大容量化以往單片機(jī)內(nèi)的ROM為1KB~4KB,RAM為64~128B。但在需要復(fù)雜控制的場合,該存儲容量是不夠的,必須進(jìn)行外接擴(kuò)充。為了適應(yīng)這種領(lǐng)域的要求,須運(yùn)用新的工藝,使片內(nèi)存儲器大容量化。目前,單片機(jī)內(nèi)ROM最大可達(dá)64KB,RAM最大為2KB。高性能化主要是指進(jìn)一步改進(jìn)CPU的性能,加快指令運(yùn)算的速度和提高系統(tǒng)控制的可靠性。采用精簡指令集(RISC)結(jié)構(gòu)和流水線技術(shù),可以大幅度提高運(yùn)行速度?,F(xiàn)指令速度最高者已達(dá)100MIPS(MillionInstructionPerSeconds,即兆指令每秒),并加強(qiáng)了位處理功能、中斷和定時(shí)控制功能。這類單片機(jī)的運(yùn)算速度比標(biāo)準(zhǔn)的單片機(jī)高出10倍以上。由于這類單片機(jī)有極高的指令速度,就可以用軟件模擬其I/O功能,由此引入了虛擬外設(shè)的新概念。小容量、低價(jià)格化與上述相反,以4位、8位機(jī)為中心的小容量、低價(jià)格化也是發(fā)展動向之一。這類單片機(jī)的用途是把以往用數(shù)字邏輯集成電路組成的控制電路單片化,可廣泛用于家電產(chǎn)品[1]。外圍電路內(nèi)裝化這也是單片機(jī)發(fā)展的主要方向。隨著集成度的不斷提高,有可能把眾多的各種處圍功能器件集成在片內(nèi)。除了一般必須具有的CPU、ROM、RAM、定時(shí)器/計(jì)數(shù)器等以外,片內(nèi)集成的部件還有模/數(shù)轉(zhuǎn)換器、DMA控制器、聲音發(fā)生器、監(jiān)視定時(shí)器、液晶顯示驅(qū)動器、彩色電視機(jī)和錄像機(jī)用的鎖相電路等。串行擴(kuò)展技術(shù)在很長一段時(shí)間里,通用型單片機(jī)通過三總線結(jié)構(gòu)擴(kuò)展外圍器件成為單片機(jī)應(yīng)用的主流結(jié)構(gòu)。隨著低價(jià)位OTP(OneTimeProgramble)及各種類型片內(nèi)程序存儲器的發(fā)展,加之處圍接口不斷進(jìn)入片內(nèi),推動了單片機(jī)“單片”應(yīng)用結(jié)構(gòu)的發(fā)展。特別是I/C、SPI等串行總線的引入,可以使單片機(jī)的引腳設(shè)計(jì)得更少,單片機(jī)系統(tǒng)結(jié)構(gòu)更加簡化及規(guī)范化。單片機(jī)作為當(dāng)前應(yīng)用廣泛的嵌入式系統(tǒng)的核心部分之一,具有體積小、速度快、功耗低、價(jià)格低廉等特點(diǎn),在儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理及過程控等諸多領(lǐng)域得到廣泛的應(yīng)用。例如,在冰箱、微波爐、洗衣機(jī)等家用電器中使用單片機(jī)控制系統(tǒng),可以使它們更加智能地工作;電話、傳真、打印機(jī)中可以使用單片機(jī)系統(tǒng)控制撥號打印;單片機(jī)還可以在工業(yè)控制和機(jī)電一體化系統(tǒng)中作為核心控制部件[1]。為了順應(yīng)市場需求,世界上各大芯片制造公司都推出了自己的單片機(jī),從8位、16位到32位,低功耗、高性能,它們各具特色,為單片機(jī)的應(yīng)用提供了廣闊的天地。在此文中所運(yùn)用的是MCS-51系列單片機(jī),MCS-51單片機(jī)卓越的性能深受廣大單片機(jī)愛好者的喜愛。本文運(yùn)用的即是MCS-51單片機(jī)。

二、系統(tǒng)的整體結(jié)構(gòu)(一)控制芯片的確定方案一:采用STC公司生產(chǎn)的STC125A60S28位單片機(jī)。該單片機(jī)具有成本低,性價(jià)比高的優(yōu)點(diǎn),且編程較方便,其外部具有32個可編程I/O口、內(nèi)部含有3個16位定時(shí)器/計(jì)數(shù)器、可使用八個中斷源、并且可進(jìn)行全雙工的串行通信。但是其內(nèi)部模塊較少、功能局限性大,并且內(nèi)部沒有集成模/數(shù)轉(zhuǎn)換模塊、脈沖寬度調(diào)制模塊,如果需要使用AD模塊和脈沖寬度調(diào)制模塊的話不需加這些外圍電路,內(nèi)部有八路10位AD,兩路PWM輸出單片機(jī)的運(yùn)行速度非常的快是普通51單片機(jī)的8-12倍。給系統(tǒng)的點(diǎn)陣刷新提供了有力的保證。方案二:采用飛思卡爾半導(dǎo)體公司生產(chǎn)的MK10DN512系列32位單片機(jī)。該單片機(jī)內(nèi)部具有128K的RAM和128K的ROM、512K可編程Flash存儲器、16路精度為8bit/10bit/12bit的AD轉(zhuǎn)換模塊、16路脈沖寬度調(diào)制(PWM)通道、8個定時(shí)器/計(jì)數(shù)器、2個全雙工UART串行通道、看門狗定時(shí)器、80個可編程I/O口、16個外部事件觸發(fā)中斷引腳、超過150個中斷輸入源。是一款性能十分強(qiáng)大的綜合性單片機(jī),并且內(nèi)部自帶PLL模塊,總線頻率最高可以設(shè)置成256MHz,運(yùn)算速度快并穩(wěn)定。100引腳的MK10DN512芯片的質(zhì)量僅為50g。不過其做工復(fù)雜,成本較高,因此性價(jià)比較低,一般應(yīng)用在汽車,航天等高精度控制領(lǐng)域。在本次設(shè)計(jì)中,流量計(jì)回傳為脈沖型,因此不必采集模擬量,且控制方式為電平式,從成本的角度出發(fā),STC125A60S2單片機(jī)完全可以滿足要求,因此本次設(shè)計(jì)中選擇性價(jià)比更高的STC125A60S2單片機(jī)。(二)點(diǎn)陣驅(qū)動方案論證方案一:串行顯示此種顯示方式由主要由74HC138譯碼器單元、數(shù)據(jù)移位寄存器74HC595和列驅(qū)動器組成,這種控制方式是單片機(jī)的I/O口得到了縮減不影響接收控制器傳輸下來的大量數(shù)據(jù),此方案為點(diǎn)陣顯示屏系統(tǒng)中比較常用的,所用器件也比較常用,價(jià)格便宜。方案二:并行顯示可以通過鎖存器芯片來增強(qiáng)單片機(jī)的I/O口的驅(qū)動能力,將8位寬的數(shù)據(jù)同時(shí)輸入到LED點(diǎn)陣列中,達(dá)到并行控制LED點(diǎn)陣的目的。方案中運(yùn)用4片鎖存器74HC373來組成雙緩沖寄存器,來驅(qū)動LED點(diǎn)陣行線,用5片3-8譯碼器74HC138組合成5-32譯碼器對LED點(diǎn)陣的32列進(jìn)行選取。這樣就避免了各行數(shù)據(jù)顯示不同步的問題。由于并行數(shù)據(jù)傳輸速度非常快,所以高速度的地址編碼信息可以同步發(fā)出。但由于單片機(jī)的引腳資源有限無法實(shí)現(xiàn)綜上所述,本設(shè)計(jì)最終選擇了第一個方案。(三)光筆設(shè)計(jì)的方案選擇光筆設(shè)計(jì)的關(guān)鍵是選擇合適的傳感器件,只有具有很高的靈敏度和一定的響應(yīng)時(shí)間的傳感器才能完成系統(tǒng)的要求及功能。方案一:采用核心部件為光敏電阻制成的光筆檢測系統(tǒng)。光敏電阻是將光能轉(zhuǎn)換為電能的一種傳感器件,它是構(gòu)成光電式傳感器的主要部件。光敏電阻結(jié)構(gòu)簡單、使用方便、價(jià)格便宜,但經(jīng)調(diào)試發(fā)現(xiàn)其響應(yīng)時(shí)間長,不易檢測。方案二:采用光敏二極管,與光敏電阻相比有較好的高頻特性,具有一定的可靠性,功耗低.相比于光敏電阻而言靈敏度較差,需要較高倍數(shù)的放大器才能實(shí)現(xiàn)精準(zhǔn)識別的效果。方案三:采用光敏三極管,其工作原理與光敏二極管相似。但光敏三極管除了具有光敏二極管能將光信號轉(zhuǎn)換成電信號的功能外,還有對電信號放大的功能。所以其靈敏度更高,響應(yīng)時(shí)間快?;谝陨戏治觯覀儾捎霉饷羧龢O管作為光筆的檢測部件。(四)系統(tǒng)整體方案確立經(jīng)過深思熟慮過后對單片機(jī)的選擇以及點(diǎn)陣的掃描方式進(jìn)行了論證最終確定了系統(tǒng)的基本結(jié)構(gòu),本設(shè)計(jì)中系統(tǒng)大致分為五部分:單片機(jī)控制單元、點(diǎn)陣驅(qū)動單元(行驅(qū)動和列驅(qū)動)、點(diǎn)陣顯示單元、手寫筆單元和電源五個單元組成。如圖2.1給出系統(tǒng)的整個系統(tǒng)結(jié)構(gòu)圖電源單片機(jī)電源單片機(jī)點(diǎn)陣驅(qū)動點(diǎn)陣屏手寫筆掃描檢測按鍵中斷光電檢測圖2.1系統(tǒng)結(jié)構(gòu)圖三、單片機(jī)介紹本設(shè)計(jì)中要求單片機(jī)的頻率必須要快,要不然將會明顯的看出刷屏現(xiàn)象。所以經(jīng)過對比試驗(yàn)確定選用STC公司的STC12C5A60S2系列單片機(jī)這款單片機(jī)是單時(shí)鐘/機(jī)器周期(1T)的單片機(jī),具有高速、低功耗、超強(qiáng)抗干擾等特點(diǎn)是新一代8051單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度比普通的單片機(jī)快8-12倍。內(nèi)部集成MAX810專用復(fù)位電路,擁有2路PWM,8路高速10位的A/D轉(zhuǎn)換(頻率250K/S),適合對電機(jī)控制,抗干擾場合。單片機(jī)的實(shí)物圖如圖3.1所示:圖3.1單片機(jī)實(shí)物圖STC12C5A60S2基本的特性介紹如下:1.內(nèi)部集成增強(qiáng)型8051CPU,1T,單時(shí)鐘、機(jī)器周期,指令代碼完全與8051兼容2.工作電壓:STC12C5A60S2 系列工作電壓:5.5V-3.5V(5V單片機(jī))STC12LE5A60S2系列工作電壓:3.6V-2.2V(3V單片機(jī))3.工作頻率范圍:0~35MHz,相當(dāng)于普通8051的0~420MHz4.用戶應(yīng)用程序空間8K/16K/20K/32K/40K/48K/52K/60K/62K字節(jié)5.片上集成1280字節(jié)RAM6.通用I/O口(36/40/44個),復(fù)位后為:準(zhǔn)雙向口/弱上拉(普通8051I/O口)可設(shè)置成四種模式:準(zhǔn)雙向口/弱上拉,推挽/上拉,僅為輸入/高阻,開漏每個I/O口驅(qū)動能力均可達(dá)到20mA,但整個芯片最大不要超過120mA7.ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器,無需專用仿真器可通過串口(P3.0/P3.1)直接下載用戶程序,數(shù)?即可完成一片8.有EEPROM功能(STC12C5A62S2/AD/PWM無內(nèi)部EEPROM)9.看門狗10.內(nèi)部集成MAX810專用復(fù)位電路(外部晶體12M以下時(shí),復(fù)位腳可直接1K電阻到地)11.外部掉電檢測電路:在P4.6口有一個低壓門檻比較器5V單片機(jī)為1.33V,誤差為±5%,3.3V單片機(jī)為1.31V,誤差為±3%12.時(shí)鐘源:外部高精度晶體/時(shí)鐘,內(nèi)部R/C振蕩器(溫漂為±5%到±10%以內(nèi))用戶在下載用戶程序時(shí),可選擇是使用內(nèi)部R/C振蕩器還是外部晶體/時(shí)鐘常溫下內(nèi)部R/C振蕩器頻率為:5.0V單片機(jī)為:11MHz~17MHz;3.3V單片機(jī)為:8MHz~12MHz精度要求不高時(shí),可選擇使用內(nèi)部時(shí)鐘,但因?yàn)橛兄圃煺`差和溫漂,以實(shí)際測試為準(zhǔn)13.共4個16位定時(shí)器兩個與傳統(tǒng)8051兼容的定時(shí)器/計(jì)數(shù)器,16位定時(shí)器T0和T1,沒有定時(shí)器2,但有獨(dú)立波特率發(fā)生器做串行通訊的波特率發(fā)生器,再上2路PCA模塊可再實(shí)現(xiàn)2個16位定時(shí)器14.3個時(shí)鐘輸出口,可由T0的溢出在P3.4/T0輸出時(shí)鐘,可由T1的溢出在P3.5/T1輸出時(shí)鐘,獨(dú)立波特率發(fā)生器可以在P1.0口輸出時(shí)鐘15.外部中斷I/O口7路,傳統(tǒng)的下降沿中斷或低電平觸發(fā)中斷,并新增支持上升沿中斷的PCA模塊,PowerDown模式可由外部中斷喚醒,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3,CCP1/P1.416.PWM(2路)/PCA(可編程計(jì)數(shù)器陣列,2路)也可用來當(dāng)2路D/A使用也可用來再實(shí)現(xiàn)2個定時(shí)器也可用來再實(shí)現(xiàn)2個外部中斷(上升沿中斷/下降沿中斷均可分別或同時(shí)支持)17.A/D轉(zhuǎn)換,10位精度ADC,共8路,轉(zhuǎn)換速度可達(dá)250K/S(每秒鐘250次)18.通用全雙工異步串行口(UART),由于STC12系列是高速的8051,可再用定時(shí)器或PCA軟件實(shí)現(xiàn)多串口19.STC12C5A60S2系列有雙串口,后綴有S2標(biāo)志的才有雙串口,RxD2/P1.2(可通過寄存器設(shè)置到P4.2),TxD2/P1.3(可通過寄存器設(shè)置到P4.3)20.工作溫度范圍:-40~+85℃(工業(yè)級)/0~75℃(商業(yè)級)21.封裝:LQFP-48,LQFP-44,PDIP-40,PLCC-44,QFN-40I/O口不夠時(shí),可用2到3根普通I/O口線外接74HC164/165/595(均可級聯(lián))來擴(kuò)展I/O口,還可用A/D做按鍵掃描來節(jié)省I/O口,或用雙CPU,三線通信,還多了串口。

(一)單片機(jī)最小系統(tǒng)介紹1、單片機(jī)引腳介紹STC12C5A62S2單片機(jī)外部引腳圖如圖3.2所示,與89c51單片機(jī)的外部引腳圖完全相同只不過功能方面有所提高。圖3.2單片機(jī)外部引腳圖2、復(fù)位電路設(shè)計(jì)復(fù)位電路的基本功能是:可以使單片機(jī)初始化,也可以是死機(jī)狀態(tài)下的單片機(jī)重新啟動。系統(tǒng)上電時(shí)提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號,以防電源開關(guān)或電源插頭分-合過程中引起的抖動而影響復(fù)位。復(fù)位電路分為上電復(fù)位和手動復(fù)位兩種:不管哪種復(fù)位只要在RESET引腳有持續(xù)兩個機(jī)械周期以上的高電平就可以是單片機(jī)復(fù)位。圖3.3上電復(fù)位這種上電復(fù)位功能是利用電容器充電來實(shí)現(xiàn)的,當(dāng)加電時(shí),電容C充電,電路中有電流流過,構(gòu)成回路,在電阻R上產(chǎn)生壓降,RESET引腳上為高電平;當(dāng)電容C充滿電后,電路相當(dāng)于斷開,RESET的電位與地相同,復(fù)位結(jié)束??梢姀?fù)位的時(shí)間與充電的時(shí)間有關(guān),充電時(shí)間越長復(fù)位的時(shí)間越長,增大電容或電阻都可以增加復(fù)位時(shí)間。圖3.4按鍵電平復(fù)位按鍵式復(fù)位電路與上電復(fù)位電路的原理相同,但是它還可以通過按鍵實(shí)現(xiàn)復(fù)位,按下按鍵后,通過R1和R2形成回路,是RESET引腳產(chǎn)生高電平。按鍵時(shí)間決定了復(fù)位的時(shí)間。圖3.5按鍵脈沖復(fù)位按鍵脈沖式復(fù)位電路是利用RC微分電路在RESET端產(chǎn)生正脈沖來實(shí)現(xiàn)復(fù)位的。綜合本設(shè)計(jì)的要求,最終方案選取的是按鍵復(fù)位電路。2.時(shí)鐘電路設(shè)計(jì)時(shí)鐘電路是單片機(jī)的心臟,它控制著單片機(jī)的工作節(jié)奏。單片機(jī)工作的時(shí)候,是在統(tǒng)一的時(shí)鐘脈沖控制下一拍一拍地進(jìn)行的,這個脈沖的來源是單片機(jī)控制中的時(shí)序電路發(fā)出的,這種時(shí)鐘信號可以有兩種方式產(chǎn)生:內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。內(nèi)部時(shí)鐘方式:單片機(jī)內(nèi)部有一個高增益反相放大器,用于構(gòu)成內(nèi)振蕩器,引腳XTAL1和XTAL2分別是放大器的輸入端和輸出端。在XTAL1和XTAL2兩端跨接晶體或陶瓷振蕩器,就構(gòu)成了穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部時(shí)鐘發(fā)生器。本設(shè)計(jì)總C1和C2選擇30pF,晶振為12MHz。基本原理如圖3.6所示:圖3.6振蕩電路

四、點(diǎn)陣電路介紹(一)LED點(diǎn)陣顯示部分簡介LED點(diǎn)陣顯示器廣為人知主要是以發(fā)光二極管為像素的,LED屏用高亮度LED晶粒進(jìn)行陣列組合,然后再透過環(huán)氧樹脂和塑模封裝而成。特點(diǎn)是具有較高的亮度、低功耗、外界引腳少、可看視角大、使用壽命長、耐濕、耐冷熱、耐腐蝕等優(yōu)點(diǎn)。如圖4.1所示為LED點(diǎn)陣的實(shí)物圖:圖4.1點(diǎn)陣實(shí)物圖LED點(diǎn)陣顯示器有單色和彩色兩類,最常見是紅的單色的了的點(diǎn)陣屏。本設(shè)計(jì)就是使用單色的紅色點(diǎn)陣屏。LED點(diǎn)陣常見的規(guī)格有4×4、8×8、16×16、32×32等多種;根據(jù)所能顯示的圖素的數(shù)目分為,單色、雙原色、三原色三種。顯示圖素顏色即可顯示的文字、圖像等內(nèi)容的顏色也有所不同,顧名思義單原色點(diǎn)陣只能顯示固定色彩如紅、綠、黃等單種顏色,雙原色和三原色點(diǎn)陣顯示內(nèi)容的顏色由圖素內(nèi)不同顏色發(fā)光二極管點(diǎn)亮的組合方式?jīng)Q定,例如紅綠都亮?xí)r可顯示黃色,如果按照脈沖方式控制二極管的點(diǎn)亮?xí)r間,則可實(shí)現(xiàn)256高級灰度顯示,即可實(shí)現(xiàn)彩色顯示。本設(shè)計(jì)是基于單片機(jī)的LED點(diǎn)陣手寫顯示器的設(shè)計(jì)與實(shí)現(xiàn)其使用的內(nèi)部電路結(jié)構(gòu)和外型規(guī)格,即為單紅色LED點(diǎn)陣屏。可書寫文字也可用于圖形顯示。用多塊點(diǎn)陣顯示器組合則可構(gòu)成大熒幕顯示器,通過手寫筆的點(diǎn)觸即可實(shí)現(xiàn)手寫。由LED點(diǎn)陣顯示器的內(nèi)部結(jié)構(gòu)可知,器件宜采用動態(tài)掃描驅(qū)動方式工作,由于LED管芯大多為高亮度型,因此M行或N列的單體LED驅(qū)動電流可選用窄脈沖,但其平均電流應(yīng)小于20mA,否則將對點(diǎn)陣的壽命起到影響,絕大多數(shù)點(diǎn)陣顯示器的單體LED的正向壓降都在2V上下。當(dāng)所需顯示的屏幕較大時(shí)一般會將多個LED點(diǎn)陣組成的小模組合點(diǎn)陣的方式組合而成,每一個組合都有自己的獨(dú)立的控制系統(tǒng),組合在一起后只要一個通信系統(tǒng)將所有的組合聯(lián)系來用一個總控制器控制即可。LED點(diǎn)陣顯示系統(tǒng)中各模組的顯示方式有靜態(tài)和動態(tài)顯示兩種。本設(shè)計(jì)中采用動態(tài)掃描的方式進(jìn)行顯示應(yīng)為數(shù)據(jù)需要不斷的刷新,在實(shí)際應(yīng)用中也是一般采用動態(tài)顯示方式,動態(tài)顯示采用掃描的方式工作,從上到下逐次對LED屏幕的各行進(jìn)行掃描點(diǎn)亮,同時(shí)又向各列送出表示圖形或文字資訊的脈沖信號,反復(fù)以上操作,就可顯示各種圖形或文字等。本設(shè)計(jì)中采用四塊8*8點(diǎn)陣組合成16*16的點(diǎn)陣組合屏如圖4.2所示:圖4.216×16點(diǎn)陣LED實(shí)物圖8×8點(diǎn)陣LED的工作原理。其等效電路如圖4.3所示,只要其對應(yīng)的X、Y軸順向偏壓,即可使LED發(fā)亮。例如如果想使左上角LED點(diǎn)亮,則Y0=1,X0=0即可。應(yīng)用時(shí)限流電阻可以放在X軸或Y軸。而16×16就是在8×8原理的基礎(chǔ)上將四塊8×8級聯(lián)而成[5],如圖4.4所示。

圖4.38×8點(diǎn)陣LED電路圖4.416×16點(diǎn)陣LED電路(二)LED驅(qū)動方式LED點(diǎn)陣的驅(qū)動方式可分為靜態(tài)驅(qū)動和動態(tài)驅(qū)動兩種。靜態(tài)驅(qū)動方式:在靜態(tài)驅(qū)動的有機(jī)發(fā)光顯示器件上,一般各有機(jī)電致發(fā)光像素的陰極是連在一起引出的,各像素的陽極是分立引出的,這就是共陰的連接方式。若要一個像素發(fā)光只要讓恒流源的電壓與陰極的電壓之差大于像素發(fā)光值的前提下,像素將在恒流源的驅(qū)動下發(fā)光,若要一個像素不發(fā)光就將它的陽極接在一個負(fù)電壓上,就可將它反向截止。但是在圖像變化比較多時(shí)可能出現(xiàn)交叉效應(yīng),為了避免我們必須采用交流的形式。靜態(tài)驅(qū)動電路一般用于段式顯示屏的驅(qū)動上。動態(tài)驅(qū)動方式:在動態(tài)驅(qū)動的有機(jī)發(fā)光顯示器件上人們把像素的兩個電極做成了矩陣型結(jié)構(gòu),即水平一組顯示像素的同一性質(zhì)的電極是共用的,縱向一組顯示像素的相同性質(zhì)的另一電極是共用的。如果像素可分為N行和M列,就可有N個行電極和M個列電極。行和列分別對應(yīng)發(fā)光像素的兩個電極。即陰極和陽極。在實(shí)際電路驅(qū)動的過程中,要逐行點(diǎn)亮或者要逐列點(diǎn)亮像素,通常采用逐行掃描的方式,行掃描,列電極為數(shù)據(jù)電極。實(shí)現(xiàn)方式是:循環(huán)地給每行電極施加脈沖,同時(shí)所有列電極給出該行像素的驅(qū)動電流脈沖,從而實(shí)現(xiàn)一行所有像素的顯示。該行不再同一行或同一列的像素就加上反向電壓使其不顯示,以避免“交叉效應(yīng)”,這種掃描是逐行順序進(jìn)行的,掃描所有行所需時(shí)間叫做幀周期。本設(shè)計(jì)的驅(qū)動電路由行驅(qū)動和列驅(qū)動構(gòu)成。為了充分利用單片機(jī)外部接口資源,行驅(qū)動電路中采用兩個個3-8線譯碼器74LS138,然后由A、B、C三腳為輸入端,形成16種不同的輸入狀態(tài)值,行驅(qū)動電路如圖4.5所示。設(shè)計(jì)中列驅(qū)動由集成電路74HC595構(gòu)成,74HC595具有一個8位串入并出的移位寄存器和一個8位輸出鎖存器的機(jī)構(gòu),可以實(shí)現(xiàn)在顯示本行列數(shù)據(jù)的同時(shí),傳送下一行的列數(shù)據(jù),即達(dá)到重疊處理的目的,列驅(qū)動電路如圖4.6所示。圖3.7點(diǎn)陣LED行驅(qū)動電路圖3.8點(diǎn)陣LED列驅(qū)動電路(三)手寫筆電路設(shè)計(jì)手寫筆中用光電三極管做為的感光元件,LM393運(yùn)放作為比較器。由于點(diǎn)陣的光強(qiáng)相對較弱,通過光電三極管的電流很小,通過串接硅二極管來提升光電三極管發(fā)射極電壓,方便后級比較器作業(yè)手寫筆的設(shè)計(jì)的基本原理圖如圖3.9所示:圖3.9手寫筆電路

五、軟件設(shè)計(jì)(一)系統(tǒng)軟件流程圖如圖5.1所示給出系統(tǒng)的主函數(shù)流程圖和中斷服務(wù)程序的流程圖。主程序主要對點(diǎn)陣進(jìn)行掃描,等待手寫筆的中斷到來,若有中斷到來即進(jìn)入中斷服務(wù)程序。中斷服務(wù)程序進(jìn)行現(xiàn)場的保護(hù),并記錄中斷到來時(shí)的行列坐標(biāo),顯示所記錄坐標(biāo)。開始開始程序初始化開中斷掃描點(diǎn)陣顯示緩存區(qū)數(shù)據(jù)中斷保護(hù)現(xiàn)場記錄當(dāng)前列坐標(biāo)y行掃描記錄當(dāng)前行坐標(biāo)x點(diǎn)亮緩存區(qū)(x,y)還原現(xiàn)場開啟中斷結(jié)束返回圖5.1系統(tǒng)流程圖手寫筆的使用時(shí)需要按住按鍵才能進(jìn)行識別光線的,點(diǎn)陣在屏幕掃描時(shí)會有一定的殘余的光,點(diǎn)陣筆一旦檢測到有光線時(shí)單片機(jī)的中端口將有一個中斷打斷,單片機(jī)并將剛剛來中斷時(shí)所點(diǎn)亮點(diǎn)陣的行和列記住并存入數(shù)組中。以后將在沒掃描一邊屏幕后調(diào)用一邊顯示函數(shù),顯示函數(shù)的數(shù)據(jù)將來自于之前的鎖存數(shù)組。實(shí)現(xiàn)了屏幕的手寫功能。(二)程序函數(shù)介紹1、延時(shí)函數(shù)函數(shù)名稱:voiddelay(unsignedintyanshi);主要通過程序的循環(huán)實(shí)現(xiàn)延時(shí)功能。功能:根據(jù)延時(shí)值的大小進(jìn)行延時(shí)等待操作,1默認(rèn)為2uS入口參數(shù):延時(shí)的值,范圍0-65535voiddelay(unsignedintyanshi){unsignedintl;//定義延時(shí)循環(huán)控制變量 for(l=0;l<=yanshi;l++); //根據(jù)延時(shí)參數(shù)進(jìn)行空循環(huán)操作,達(dá)到延時(shí)功能}2、行掃描函數(shù)函數(shù)名稱:voidhansao(unsignedcharhs);功能:根據(jù)入口參數(shù)hs的值,進(jìn)行判斷選擇哪一行,選通1-16行的選通入口參數(shù):hs的值,范圍0-15voidhansao(unsignedcharhs)3、手寫筆中斷函數(shù)光筆中斷程序(選擇外中斷1,下降沿觸發(fā))記錄光筆的行列坐標(biāo)voidexint1()interrupt2{ EX1=0; //進(jìn)入中斷之后馬上關(guān)閉中斷會造成識別不了列1-16的數(shù)據(jù)guangbi=1; if(dm<16) {lieyouxiao=1; adr_j=dm;}}4、主函數(shù)主函數(shù)首先對各個模塊函數(shù)進(jìn)行初始化,調(diào)節(jié)各個函數(shù)工作,是整個系統(tǒng)的核心。voidmain(void){unsignedcharnum=0;//定義按鍵掃描值的控制變量IT1=1;//setINT1inttype(1:Fallingonly0:Lowlevel)EX1=0;//enableINT1interrupt IE1=0; EA=1; yid=1; ts=1; zimuo=0; //控制字摸數(shù)據(jù)從第一個字模取值 k2=0; while(1) {k2=1; disp();//掃描光筆 shuju_chuli(); k2=0; //數(shù)據(jù)處理完就進(jìn)行顯示 if(ts==1) {

(三)編程環(huán)境介紹KEILC51標(biāo)準(zhǔn)C編譯器為8051微控制器的軟件開發(fā)提供了C語言環(huán)境,,本站特地制作了一個相對簡單的教程。此軟件能嵌入?yún)R編語言保留了匯編代碼高效,快速的特點(diǎn)。KEILC51編譯器的功能不斷增強(qiáng),使你可以更加貼近CPU本身,及其它的衍生產(chǎn)品,其效率已經(jīng)達(dá)到了相當(dāng)搞的程度。C51已被完全集成到uVision2的集成開發(fā)環(huán)境中,這個集成開發(fā)環(huán)境包含:編譯器,匯編器,實(shí)時(shí)操作系統(tǒng),項(xiàng)目管理器,調(diào)試器。uVision2IDE可為它們提供單一而靈活的開發(fā)環(huán)境。

KeilC51軟件是眾多單片機(jī)應(yīng)用開發(fā)的優(yōu)秀軟件之一,它集編輯,編譯,仿真于一體,支持匯編,PLM語言和C語言的程序設(shè)計(jì),界面友好,易學(xué)易用。如圖5.2為打開界面:圖5.2keil打開界面工程新建后保存即可在打開界面進(jìn)行編程,如圖5.3為編寫程序時(shí)的界面圖。

六、仿真與調(diào)試(一)系統(tǒng)的整體實(shí)物圖經(jīng)過緊張的調(diào)試制作后系統(tǒng)的基本模型搭接完成了,如下圖給出了系統(tǒng)的模型圖,系統(tǒng)基本的基本組成為:底板、單片機(jī)、四個8*8點(diǎn)陣屏以及與單片機(jī)連接的各個驅(qū)動部分、其次就是手寫筆部分。驅(qū)動電路手寫筆筆驅(qū)動電路手寫筆筆單片機(jī)點(diǎn)陣屏系統(tǒng)整體實(shí)物圖(正面)系統(tǒng)整體實(shí)物圖(背面)下圖為系統(tǒng)上電后試驗(yàn)效果。漢字書寫圖圖案繪制圖

總結(jié)本作品完成了題目的基本要求和發(fā)揮部分的全部要求,系統(tǒng)性能良好。通過對作品的各項(xiàng)進(jìn)行了優(yōu)化,使系統(tǒng)的性能有了提高。應(yīng)用74HC138譯碼器設(shè)計(jì)16×16點(diǎn)陣的行列驅(qū)動控制信號,掃描速度滿足設(shè)計(jì)要求。 雖然這次設(shè)計(jì)滿足了課題的要求,但在很多方面都有許多的不足,還不能滿足正常的書寫需求,但在設(shè)計(jì)的過程中提高了自己學(xué)習(xí)思考的能力,讓自己能更好的去面對未來的工作。

參考文獻(xiàn)[1]單片機(jī)原理與實(shí)踐/陳連坤編著[M].北京:清華大學(xué)出版社;北京交通大學(xué)出版社,2009.11.[2]王為青,程國鋼編著.單片機(jī)KeilCx51應(yīng)用開發(fā)技術(shù)[M].北京:人民郵電出版社,2007.2[3]雷伏容,張小林,崔浩.51單片機(jī)常用模塊設(shè)計(jì)查詢手冊[M].北京清華大學(xué)出版社,2010.1.[4]51系列單片機(jī)開發(fā)寶典[M].電子工業(yè)出版社出版.[5]例說51單片機(jī)(C語言版)[M].人民郵電出版社出版.[6]李廣地.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2001.7.[7]網(wǎng)站:/.[8]俞國亮,蔣敏,俞日龍.MCS-51單片機(jī)原理與應(yīng)用[M].[9]網(wǎng)站:/搜索天狼星51單片機(jī)C語言學(xué)習(xí).[10]張毅剛.新編MCS-51單片機(jī)應(yīng)用設(shè)計(jì)(第3版)[M].哈爾濱工業(yè)大學(xué)出版[11]ProgressinComputer[D]MauriceWilkesPrestigeLecturedeliveredtoIEE,Cambridge,ComputerLaboratory,UniversityofCambridge,[12]AT89C51In-CircuitProgramming[R]RobertW.Sparks,AtmelCorporation[13]AT89C51DATASHEEPPhilipsSemiconductors1999.dec[14]Yang.Y,Yi.J,Woo,Y.YandKim.B:‘OptimumdesignforlinearityandefficiencyofmicrowaveDohertyamplifierusinganewloadmatchingtechnique’,Microw.J,2001[15]Vizimuller,P:‘RFdesignguide-systems,circuits,andequations’(ArtechHouse,Boston,MA,1995)R.Dye,“VisualObject-OrientatedProgramming,”Dr.DobbsMacintoshJournal,1991.9

附錄A硬件電路原理圖

附錄B系統(tǒng)程序源代碼 //頭文件名:60SX1-16X16光電筆書寫漢字點(diǎn)陣顯示屏//功能:通電后控制光電筆在點(diǎn)陣顯示模塊上面測試及點(diǎn)亮劃亮顯示漢字內(nèi)容按鍵1清屏//需要注意第一行劃亮速度不夠,可以采用點(diǎn)亮方式點(diǎn)亮。//硬件連接:帶高速單片機(jī)控制器模塊的點(diǎn)陣顯示模塊//晶振:22.1184MHZ//************************************************************************#include"reg52.h"http://單片機(jī)頭文件#include"intrins.h"#defineucharunsignedchar#defineuintunsignedint#defineulintunsignedlongintsbitDAT=P2^5; //模擬數(shù)據(jù)發(fā)送端口sbitCLK=P2^6;//模擬時(shí)鐘控制端口sbitSUO=P2^7; //模擬鎖存信號端口sbita=P2^0; //行數(shù)據(jù)掃描信號sbitb=P2^1; //行數(shù)據(jù)掃描信號sbitc=P2^2; //行數(shù)據(jù)掃描信號sbitd=P2^3; //行數(shù)據(jù)掃描信號sbiten=P2^4; //行數(shù)據(jù)掃描信號sbitk1_led=P1^0;//K1按鍵和指示燈sbitk2=P1^1; //sbitk3=P1^2; //sbitk4=P1^3; sbitDAT=P1^5; //模擬數(shù)據(jù)發(fā)送端口sbitCLK=P1^6;//模擬時(shí)鐘控制端口sbitSUO=P1^7; //模擬鎖存信號端口sbita=P3^4; //行數(shù)據(jù)掃描信號sbitb=P3^5; //行數(shù)據(jù)掃描信號sbitc=P3^6; //行數(shù)據(jù)掃描信號sbitd=P3^7; //行數(shù)據(jù)掃描信號sbiten=P2^0; //行數(shù)據(jù)掃描信號sbitk1_led=P1^0;//K1按鍵和指示燈sbitk2=P1^1; //K2按鍵sbitk3=P1^2; //K3按鍵sbitk4=P1^3; //K4按鍵/////*與編譯器無關(guān)的數(shù)據(jù)類型定義*//********************************************************************************************/typedefunsignedcharuint8;//無符號8位整型變量typedefsignedcharint8;//有符號8位整型變量typedefunsignedshortuint16;//無符號16位整型變量typedefsignedshortint16;//有符號16位整型變量typedefunsignedintuint32;//無符號32位整型變量typedefsignedintint32;//有符號32位整型變量typedeffloatfp32;//單精度浮點(diǎn)數(shù)(32位長度)typedefdoublefp64;//雙精度浮點(diǎn)數(shù)(64位長度)/********************************************************************************************///sfrAUXR=0x8e;//Auxiliaryregister unsignedchardk=0,dm=99,dl=0,k=0,m=0,kkk=0; //定義控制顯示一個漢字時(shí)間,顯示一屏數(shù)據(jù)時(shí)間,亮度控制參數(shù),顯示幾個字kkk正顯暗數(shù)據(jù)unsignedcharh_sel=0;//此變量取值0~15uchardatahuancun[16][2]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};//二維數(shù)組顯示緩存。ucharcunfangadr=0;//存儲位置,用于用戶存放漢字的地址,起始為第0個存儲位置,共5個(hanzi_0-hanzi_4)。ucharhuancun_hang_adr;//掃描到的點(diǎn)所在字節(jié)的行坐標(biāo)。ucharhuancun_lie_adr; //掃描到的點(diǎn)所在字節(jié)的列坐標(biāo)。ucharhuancun_bit;//掃描到的點(diǎn)在其所在字節(jié)的位地址,排列從低到高0-7;bitguangbi=0;bitzhuangtai=1;uchari=0;//行掃描動態(tài)坐標(biāo)。ucharj=0;//列掃描動態(tài)坐標(biāo)。bithangyouxiao=0;//行掃描有效標(biāo)志。bitlieyouxiao=0;//列掃描有效標(biāo)志。ucharadr_i=12;//中斷記錄行緩存坐標(biāo)。ucharadr_j=23;//中斷記錄列緩存坐標(biāo)。ucharadr_k=56;//中斷記錄列緩存坐標(biāo)。uchari,dd=7,gongne=0,huncun32=0,huncun2=0;//dd為移動顯示變量gongne為功能選擇顯示變量0-8控制正顯反顯點(diǎn)亮劃亮ucharyid,h,o=0,ts=0; //YID為移動計(jì)數(shù)器,H為行段計(jì)數(shù)器。uintzimuo; //字模計(jì)數(shù)器ucharcodehanzi[]; //漢字字模ucharBUFF[48]; //緩存voidin_data(void); //調(diào)整數(shù)據(jù)voidrxd_data(void); //發(fā)送數(shù)據(jù)voidsbuf_out(); //16段掃描unsignedintcodetab[]=//定義顯示數(shù)據(jù),根據(jù)取字模軟件進(jìn)行提取{0xFE,0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xEF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFE,0xFF,0xFD,0xFF,0xFB,0xFF,0xF7,0xFF,0xEF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,//掃描0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//全滅0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//全亮};unsignedcharzuhehou[64]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//全滅0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//全亮};//************************************************************************//函數(shù)名稱:voiddelay(unsignedintyanshi);//功能:根據(jù)yanshi值的大小進(jìn)行延時(shí)等待操作,1默認(rèn)為2uS//入口參數(shù):yanshi的值,范圍0-65535//出口參數(shù):無//修改歷史:V1.0//************************************************************************voiddelay(unsignedintyanshi){ unsignedintl; //定義延時(shí)循環(huán)控制變量 for(l=0;l<=yanshi;l++); //根據(jù)延時(shí)參數(shù)進(jìn)行空循環(huán)操作,達(dá)到延時(shí)功能}//************************************************************************//函數(shù)名稱:voidhansao(unsignedcharhs);//功能:根據(jù)入口參數(shù)hs的值,進(jìn)行判斷選擇哪一行,選通1-16行的選通//入口參數(shù):hs的值,范圍0-15//出口參數(shù):無//************************************************************************voidhansao(unsignedcharhs){ if(hs<16) //判斷hs的值是否在行掃描的值范圍內(nèi),不在范圍內(nèi)不執(zhí)行任何操作 { if(hs==0) //選通第1行 { a=0;b=0;c=0;d=0;return; } if(hs==1) //選通第2行 { a=1;b=0;c=0;d=0;return; } if(hs==2) //選通第3行 { a=0;b=1;c=0;d=0;return; } if(hs==3) //選通第4行 { a=1;b=1;c=0;d=0;return; } if(hs==4) //選通第5行 { a=0;b=0;c=1;d=0;return; } if(hs==5) //選通第6行 { a=1;b=0;c=1;d=0;return; } if(hs==6) //選通第7行 { a=0;b=1;c=1;d=0;return; } if(hs==7) //選通第8行 { a=1;b=1;c=1;d=0;return; } if(hs==8) //選通第9行 { a=0;b=0;c=0;d=1;return; } if(hs==9) //選通第10行 { a=1;b=0;c=0;d=1;return; } if(hs==10) //選通第11行 { a=0;b=1;c=0;d=1;return; } if(hs==11) //選通第12行 { a=1;b=1;c=0;d=1;return; } if(hs==12) //選通第13行 { a=0;b=0;c=1;d=1;return; } if(hs==13) //選通第14行 { a=1;b=0;c=1;d=1;return; } if(hs==14) //選通第15行 { a=0;b=1;c=1;d=1;return; } if(hs==15) //選通第16行 { a=1;b=1;c=1;d=1;return; } }}/*#######################################################################//函數(shù)名稱:voidsendbyte(unsignedintbyte);//功能:根據(jù)byte值的大小,取出對應(yīng)tab數(shù)組中的值,模擬SPI發(fā)送出去一個字節(jié)//入口參數(shù):byte值,范圍0-65535//出口參數(shù):無voidsendbyte(unsignedintbyte){unsignedcharnum; //定義需要發(fā)送的數(shù)據(jù)unsignedcharc; //定義發(fā)送一個字節(jié)的變量num=tab[byte]; //根據(jù)byte值取出tab數(shù)組中的數(shù)據(jù),存入發(fā)送數(shù)據(jù)變量中for(c=0;c<8;c++) //循環(huán)發(fā)送一個字節(jié){CLK=0; //時(shí)鐘置低電平啟動DAT=num&0x80; //取出需要發(fā)送數(shù)據(jù)的最高位CLK=1; //時(shí)鐘置高電平結(jié)束數(shù)據(jù)發(fā)送num<<=1; //將需要發(fā)送的數(shù)據(jù)左移一位}}voidsendbyte1(unsignedintbyte){unsignedcharnum; //定義需要發(fā)送的數(shù)據(jù)unsignedcharc; //定義發(fā)送一個字節(jié)的變量num=zuhehou[byte]; //根據(jù)byte值取出tab數(shù)組中的數(shù)據(jù),存入發(fā)送數(shù)據(jù)變量中for(c=0;c<8;c++) //循環(huán)發(fā)送一個字節(jié){CLK=0; //時(shí)鐘置低電平啟動DAT=num&0x80; //取出需要發(fā)送數(shù)據(jù)的最高位CLK=1; //時(shí)鐘置高電平結(jié)束數(shù)據(jù)發(fā)送num<<=1; //將需要發(fā)送的數(shù)據(jù)左移一位}}voiddelay2us(void)//誤差-0.010706018519us{unsignedchara;for(a=30;a>0;a--);}/*****光筆中斷程序(選擇外中斷1,下降沿觸發(fā))記錄光筆的行列坐標(biāo)*********/voidexint1()interrupt2{ EX1=0; //進(jìn)入中斷之后馬上關(guān)閉中斷會造成識別不了列1-16的數(shù)據(jù)guangbi=1; if(dm<16) { lieyouxiao=1; adr_j=dm; }}voidshuju_chuli(){if(hangyouxiao&&lieyouxiao){hangyouxiao=0;lieyouxiao=0;//顯示坐標(biāo)huancun_hang_adr=adr_i;//存放0-15行的數(shù)值huancun_lie_adr=adr_j+3;//存放列的左邊8位還是和右邊8位的數(shù)值0-1 huancun_bit=(adr_j)%8;//存放列的0-8個位。if(huancun_lie_adr<=10) //這個變量一定要根據(jù)實(shí)際情況定 { //實(shí)際上要根據(jù)變量進(jìn)行調(diào)試 adr_k=0; }else{if(huancun_lie_adr>10||huancun_lie_adr<=18) { adr_k=1; }} //判斷左右屏的變化 huancun[huancun_hang_adr][adr_k]=0x01<<huancun_bit; for(huncun32=0;huncun32<16;huncun32++) { zuhehou[huncun32*2+1]&=~hua

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論