




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
./計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院硬件課程設(shè)計(jì)報(bào)告摘要在日常生活中,手表,鬧鐘是不可或缺的。在實(shí)際生活生產(chǎn)活動(dòng)中,也要考慮時(shí)間的因素,如工時(shí)的計(jì)算,霓虹燈的亮滅。因?yàn)榧呻娐分圃旒夹g(shù)的不斷提高,出現(xiàn)了高性能、高可靠的集成芯片。電子時(shí)鐘在工業(yè)領(lǐng)域,日常生活中得到了廣泛的應(yīng)用。電子時(shí)鐘在性能方面具有精度高,實(shí)時(shí)性好,易于調(diào)整等優(yōu)點(diǎn)。這些使得溫度控制系統(tǒng)的研究和開(kāi)發(fā)得到的各方面的廣泛關(guān)注和支持。本次課程設(shè)計(jì),我利用8254計(jì)數(shù)芯片,8255芯片,4*4小鍵盤(pán),12864LCD液晶顯示器,蜂鳴器制作了一個(gè)帶有鬧鐘功能的電子時(shí)鐘萬(wàn)年歷。它可以實(shí)現(xiàn)由4*4小鍵盤(pán)輸入初始時(shí)間〔包括年月日時(shí)分秒星期,利用8254計(jì)數(shù),通過(guò)程序處理進(jìn)位,判斷閏年,在液晶顯示屏上實(shí)時(shí)顯示時(shí)間。還可以由小鍵盤(pán)選擇不同的鬧鐘模式,設(shè)定鬧鐘時(shí)間。關(guān)鍵詞:電子時(shí)鐘;8255A芯片;8254芯片;12864LCD液晶顯示器;鍵盤(pán)輸入;蜂鳴器;鬧鐘功能;萬(wàn)年歷目錄1.設(shè)計(jì)任務(wù)與要求…………………6-1.1實(shí)驗(yàn)?zāi)康摹?1.2具體要求………………………62.總體方案與說(shuō)明…………………6-2.1使用硬件………………………62.1流程設(shè)計(jì)………………………6系統(tǒng)程序模塊………………6系統(tǒng)流程圖…………………73.硬件方案……………73.1硬件說(shuō)明………………………73.1.1計(jì)數(shù)芯片8254………………7可編程外圍接口芯片8255A………………83.1.2128×64字符液晶顯示器…………………113.2電路原理圖與說(shuō)明…………123.2.1鍵盤(pán)電路……………………133.2.28254計(jì)數(shù)電路……………133.2.3液晶顯示電路……………143.3電路連接圖………………143.3.18254計(jì)數(shù)芯片………………143.3.2整體電路……………………154.軟件方案…………154.1軟件主要模塊流程圖……………………154.1.1輸入子程序模塊流程圖…………………164.1.2顯示子程序模塊流程圖…………………184.1.2閏年子程序模塊流程圖…………………184.1.2蜂鳴器子程序模塊流程圖…………………184.1.2時(shí)間進(jìn)位程序模塊流程圖…………………194.1.2主程序模塊流程圖…………204.2源程序清單與注釋……………………215.分析與測(cè)試………………………386.運(yùn)行結(jié)果………………………386.1試驗(yàn)線路圖…………396.2實(shí)驗(yàn)結(jié)果………………396.2.1歡迎界面…………………396.2.2鬧鐘設(shè)定界面………………406.2.3鬧鐘功能實(shí)現(xiàn)……………416.2.4閏年功能實(shí)現(xiàn)……………417.結(jié)論與體會(huì)………………………437.1結(jié)論…………437.2體會(huì)…………44參考文獻(xiàn)……………45-1設(shè)計(jì)任務(wù)與要求1.1實(shí)驗(yàn)?zāi)康?.復(fù)習(xí)8255芯片,8254芯片工作原理及使用方法2.學(xué)會(huì)使用12864字符液晶顯示屏,蜂鳴器3.鍛煉小規(guī)模邏輯電路設(shè)計(jì)4.提高分析、解決問(wèn)題的能力1.2具體要求本系統(tǒng)要求能通過(guò)4*4鍵盤(pán)輸入預(yù)設(shè)時(shí)間,實(shí)時(shí)反映當(dāng)前時(shí)間的變化并能對(duì)閏年進(jìn)行準(zhǔn)確判斷。另外,當(dāng)時(shí)間與預(yù)先設(shè)置的鬧鐘時(shí)間相同時(shí),能夠蜂鳴,并在電腦屏幕上顯示。2總體方案與說(shuō)明2.1使用硬件8255芯片、8254芯片、12864字符液晶顯示器、蜂鳴器、4*4鍵盤(pán)2.1流程設(shè)計(jì)2.1.1系統(tǒng)程序模塊2.1.2系統(tǒng)流程圖3硬件方案3.1硬件說(shuō)明3.1.1計(jì)數(shù)芯片82548254芯片是一款使用十分廣泛的可編程定時(shí),計(jì)數(shù)芯片,其主要功能是定時(shí)和計(jì)數(shù)的功能。我們的微機(jī)的動(dòng)態(tài)存儲(chǔ)器刷新電路,系統(tǒng)日時(shí)鐘的技術(shù)以及發(fā)聲系統(tǒng)的聲源都是由8254芯片來(lái)完成的。結(jié)構(gòu)8254芯片的外部引腳和部結(jié)構(gòu)如下圖工作原理8254芯片共有六種工作方式,分別對(duì)應(yīng)與六種不同的用途。〔1方式0:計(jì)數(shù)到0結(jié)束輸出正躍變信號(hào)方式?!?方式1:硬件可重觸發(fā)單穩(wěn)方式?!?方式2:頻率發(fā)生器方式?!?方式3:方波發(fā)生器?!?方式4:軟件觸發(fā)選通方式?!?方式5:硬件觸發(fā)選通方式??删幊掏鈬涌谛酒?255A8255A是一種通用的可編程并行I/O接口芯片,它是為Intel系列微處理器設(shè)計(jì)配套電路,也可用于其他微處理器系統(tǒng)中。通過(guò)對(duì)它編程,芯片可工作于不同的工作方式。在微型計(jì)算機(jī)系統(tǒng)中,用8255A做接口時(shí),通常不需要附加外部邏輯電路就可直接為CPU與外設(shè)之間提供數(shù)據(jù)通道,因此得到了極為廣泛的應(yīng)用。結(jié)構(gòu)和功能8255A的外部引腳和部結(jié)構(gòu)如下圖圖3-38255外部引腳圖圖3-48255部功能圖由圖可見(jiàn),8255A由數(shù)據(jù)端口A、B、C〔期中,C口被分為C口上半部分和C口下半部分,A組和B組控制邏輯,數(shù)據(jù)總線緩沖器和讀寫(xiě)控制邏輯。8255A部包含3個(gè)8位輸入輸出端口,通過(guò)外部的24根輸入輸出線與外設(shè)進(jìn)行通信聯(lián)絡(luò)。A口和B口可以用作8位輸入口或8位輸出口。C口既可以用作8位輸入輸出口用,也可作為兩個(gè)4位的輸入輸出口。還常常用來(lái)配合A口和B口工作,分別用來(lái)產(chǎn)生A口和B口的輸出控制信號(hào)和輸入A口和B口的端口狀態(tài)端口信號(hào)。表3-18255A的基本操作A1A0RDWRCS操作00010端口A→數(shù)據(jù)總線01010端口B→數(shù)據(jù)總線10010端口C→數(shù)據(jù)總線00100數(shù)據(jù)總線→端口A01100數(shù)據(jù)總線→端口B10100數(shù)據(jù)總線→端口C111數(shù)據(jù)總線→控制字寄存器XXXX1數(shù)據(jù)總線三態(tài)11010非法狀態(tài)XX110數(shù)據(jù)總線三態(tài)8255A的控制字方式選擇控制字8255A具有3種基本工作方式。方式0:基本輸入輸出方式;方式1:選通輸入輸出方式;方式2:雙向總線I/O方式。端口A可以工作于3種方式中的任一種;端口B只能工作于方式0和方式1,而不能工作于方式2;端口C常被分成2個(gè)4位端口,除了用做輸入輸出端口外,還能用來(lái)配合A口和B口工作,為這兩個(gè)端口的輸入輸出操作提供聯(lián)絡(luò)信號(hào)。圖3-58255方式選擇控制字格式工作方式A.方式0基本輸入輸出方式,它適用于不需要應(yīng)答信號(hào)的簡(jiǎn)單輸入輸出場(chǎng)合。在這種方式下,A口和B口可作為8位端口,C口的高4和低4為可作為兩個(gè)4為端口。CPU與這些端口交換數(shù)據(jù)時(shí),可以直接輸入指令從端口讀取數(shù)據(jù),或用輸出指令將數(shù)據(jù)寫(xiě)入指定端口,不需要任何其他聯(lián)絡(luò)信號(hào)。B.方式1選通輸入/輸出方式。在這種方式下,A口和B口作為數(shù)據(jù)口,均可用于輸入或輸出方式。而且這兩個(gè)8位數(shù)據(jù)口的輸入、輸出數(shù)據(jù)都能鎖存,但它們必須在聯(lián)絡(luò)信號(hào)的控制下才能完成I/O操作。端口C的6根線用來(lái)產(chǎn)生或接受這些聯(lián)絡(luò)信號(hào)。C.方式2雙向總線方式。只有A口可以工作于這種方式。在這種方式下,CPU與外設(shè)交換數(shù)據(jù)時(shí),可在單一的8位端口數(shù)據(jù)線PA7-PA9上進(jìn)行,既可以通過(guò)A口把數(shù)據(jù)傳送到外設(shè),又可以從A口接收從外設(shè)送來(lái)的數(shù)據(jù),而且輸入和輸出的數(shù)據(jù)均能鎖存,但輸入和輸出不能同時(shí)進(jìn)行3.1.3128×64字符液晶顯示器ST7920是矽創(chuàng)電子公司生產(chǎn)的中文圖形控制芯片,它是一種置128×64-12漢字圖形點(diǎn)陣的液晶顯示控制模塊,用于顯示漢字及圖形?12864A-1漢字圖形點(diǎn)陣液晶顯示模塊集成ST7920驅(qū)動(dòng)器,可顯示漢字及圖形,置8192個(gè)中文漢字〔16×16點(diǎn)陣、128個(gè)字符〔8×16點(diǎn)陣及64×256點(diǎn)陣顯示RAM〔GDRAM。結(jié)構(gòu)圖3-6LCD液晶字符顯示器外形尺寸圖3-7LCD液晶字符坐標(biāo)工作原理12864液晶顯示器工作于并行模式。8位數(shù)據(jù)線與8255A芯片8位數(shù)據(jù)口連接,控制口〔E、R/W、D/I與8255A芯片C口四位相連。通過(guò)8255A的8位數(shù)據(jù)空向12864液晶顯示器傳送數(shù)據(jù),通過(guò)C口低四位傳送控制信號(hào)??刂瓶贓為使能端,高電位有效。R/W為讀寫(xiě)控制,低點(diǎn)位為寫(xiě)數(shù)據(jù)、高電位為讀數(shù)據(jù)。D/I為數(shù)據(jù)與命令口,低電位為命令、高電位為數(shù)據(jù)。將需要顯示的地址通過(guò)數(shù)據(jù)口以命令的形式送入顯示器,再將需要顯示的數(shù)據(jù)通過(guò)數(shù)據(jù)口以數(shù)據(jù)的形式送入顯示器,即可顯示容。表3-2LCD漢字顯示坐標(biāo)X坐標(biāo)Line180H81H82H83H84H85H86H87HLine290H91H92H93H94H95H96H97HLine388H89H8AH8BH8CH8DH8EH8FHLine498H99H9AH9BH9CH9DH9EH9FH圖3-8LCD中文字庫(kù)截圖3.2電路原理圖與說(shuō)明3.2.1鍵盤(pán)輸入電路圖3-9鍵盤(pán)輸入電路原理圖3.2.28254計(jì)數(shù)電路圖3-10計(jì)數(shù)電路原理圖3.2.3液晶顯示電路圖3-11液晶顯示電路原理圖3.3電路連接圖8254計(jì)數(shù)芯片整體電路4軟件方案4.1軟件主要模塊流程圖輸入子程序模塊流程圖圖4-1輸入子程序模塊流程圖4.1.2顯示子程序模塊流程圖4.1.3閏年子程序模塊流程圖4.1.4蜂鳴器子程序模塊流程圖4.1.5時(shí)間進(jìn)位程序模塊流程圖4.1.6主程序模塊流程圖4.2源程序清單與注釋#include<stdio.h>;/*頭文件*/#include<iostream.h>#include<conio.h>#include"ApiExusb.h"#pragmacomment<lib,"ApiExusb.lib">charlcd1[10]={0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3,0xa3};charlcd2[10]={0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9};charl1[8]={0,0xd2,0xb6,0xc8,0xcb,0xce,0xc1,0xc8};/*字符機(jī)碼數(shù)組*/charl2[8]={0,0xbb,0xfe,0xfd,0xc4,0xe5,0xf9,0xd5};charlhy1[32]={0xb5,0xe7,0xd7,0xd3,0xca,0xb1,0xd6,0xd3,0xcd,0xf2,0xc4,0xea,0xc0,0xfa,0xa1,0xef,0xa1,0xf1,0xbb,0xb6,0xd3,0xad,0xc4,0xfa,0xca,0xb9,0xd3,0xc3,0xa1,0xc3,0xa3,0xa9};charlhy2[32]={0xc7,0xeb,0xca,0xb9,0xd3,0xc3,0xd0,0xa1,0xbc,0xfc,0xc5,0xcc,0xca,0xe4,0xc8,0xeb,0xa1,0xf9,0xd6,0xc6,0xd7,0xf7,0xa1,0xaa,0xcb,0xce,0xca,0xc0,0xbb,0xdb,0xa1,0xf9};charsd1[64]={0xc7,0xeb,0xc9,0xe8,0xb6,0xa8,0xc4,0xd6,0xd6,0xd3,0xc4,0xa3,0xca,0xbd,0xa2,0xa0,0xa2,0xd9,0xca,0xb1,0xb7,0xd6,0xc3,0xeb,0xa2,0xa0,0xa2,0xa0,0xa2,0xa0,0xa2,0xa0,0xa2,0xda,0xd0,0xc7,0xc6,0xda,0xca,0xb1,0xb7,0xd6,0xc3,0xeb,0xa2,0xa0,0xa2,0xa0,0xa2,0xdb,0xc4,0xea,0xd4,0xc2,0xc8,0xd5,0xca,0xb1,0xb7,0xd6,0xc3,0xeb,0xa2,0xa0};charsd2[16]={0xc7,0xeb,0xc9,0xe8,0xb6,0xa8,0xc4,0xd6,0xd6,0xd3,0xca,0xb1,0xbc,0xe4,0xa2,0xa0};voidclear<>;voidcmdsetup<>;voiddatasetup<>;voidinput<>;/*數(shù)字輸入*/voidshow<int,int>;/*數(shù)字顯示*/voidshow1<int,int,int>;/*單位顯示*/voidshow2<int>;/*星期顯示*/voidshowhy<>;/*歡迎界面顯示*/voidshowclr<>;/*界面清屏*/voidshowsd1<>;/*設(shè)定界面1顯示*/voidshowsd2<>;intdays<int,int>;voidclock<>;/*蜂鳴器鬧鈴*/bytei,k;intj;voidmain<>{intyear,month,day,week,hour,minute,second;intflag,scheduledyear,scheduledmonth,scheduledday,scheduledweek,scheduledhour,scheduledminute,scheduledsecond;bytedata;;showhy<>;/*歡迎界面顯示*/showclr<>;showsd1<>;/*鬧鐘模式界面顯示*/input<>;flag=j;showclr<>;showsd2<>;/*鬧鐘設(shè)定模式界面顯示*/if<flag==1>/*鬧鐘模式1輸入,顯示預(yù)設(shè)時(shí)分秒*/{show1<0x92,0xca,0xb1>;show1<0x8a,0xb7,0xd6>;show1<0x9a,0xc3,0xeb>;k=0x90;input<>;scheduledhour=10*j;k=0x91;input<>;scheduledhour=scheduledhour+j;k=0x88;input<>;scheduledminute=10*j;k=0x89;input<>;scheduledminute=scheduledminute+j;k=0x98;input<>;scheduledsecond=10*j;k=0x99;input<>;scheduledsecond=scheduledsecond+j;showclr<>;}if<flag==2>/*鬧鐘模式2輸入,顯示預(yù)設(shè)星期時(shí)分秒*/{show1<0x90,0xd0,0xc7>;show1<0x91,0xc6,0xda>;show1<0x96,0xca,0xb1>;show1<0x8a,0xb7,0xd6>;show1<0x8e,0xc3,0xeb>;k=0x92;input<>;scheduledweek=j;k=0x94;input<>;scheduledhour=10*j;k=0x95;input<>;scheduledhour=scheduledhour+j;k=0x88;input<>;scheduledminute=10*j;k=0x89;input<>;scheduledminute=scheduledminute+j;k=0x8c;input<>;scheduledsecond=10*j;k=0x8d;input<>;scheduledsecond=scheduledsecond+j;showclr<>;}if<flag==3>/*鬧鐘模式3輸入,顯示預(yù)設(shè)年月日時(shí)分秒*/{show1<0x94,0xc4,0xea>;show1<0x97,0xd4,0xc2>;show1<0x8a,0xc8,0xd5>;show1<0x8e,0xca,0xb1>;show1<0x9a,0xb7,0xd6>;show1<0x9e,0xc3,0xeb>;k=0x90;input<>;scheduledyear=1000*j;k=0x91;input<>;scheduledyear=scheduledyear+100*j;k=0x92;input<>;scheduledyear=scheduledyear+10*j;k=0x93;input<>;scheduledyear=scheduledyear+j;k=0x95;input<>;scheduledmonth=10*j;k=0x96;input<>;scheduledmonth=scheduledmonth+j;k=0x88;input<>;scheduledday=10*j;k=0x89;input<>;scheduledday=scheduledday+j;k=0x8c;input<>;scheduledhour=10*j;k=0x8d;input<>;scheduledhour=scheduledhour+j;k=0x98;input<>;scheduledminute=10*j;k=0x99;input<>;scheduledminute=scheduledminute+j;k=0x9c;input<>;scheduledsecond=10*j;k=0x9d;input<>;scheduledsecond=scheduledsecond+j;showclr<>;}k=0x80;/*輸入,顯示預(yù)設(shè)的年月日時(shí)分秒星期*/input<>;year=j*1000;k++;/*K儲(chǔ)存字符顯示在液晶屏的地址*/input<>;year=year+j*100;k++;input<>;year=year+j*10;k++;input<>;year=year+j;k++;/*顯示單位漢字*/show1<k,0xc4,0xea>;k=0x90;input<>;month=j*10;k++;input<>;month=month+j;k++;show1<k,0xd4,0xc2>;k=0x94;input<>;day=j*10;k++;input<>;day=day+j;k++;show1<k,0xc8,0xd5>;k=0x88;show1<k,0xd0,0xc7>;k++;show1<k,0xc6,0xda>;k++;input<>;week=j;k=0x8c;input<>;hour=j*10;k++;input<>;hour=hour+j;k++;show1<k,0xca,0xb1>;k=0x98;input<>;minute=j*10;k++;input<>;minute=minute+j;k++;show1<k,0xb7,0xd6>;k=0x9b;input<>;second=j*10;k++;input<>;second=second+j;k++;show1<k,0xc3,0xeb>printf<"Pressanykeytobegin!\n\n">; getch<>;cout<<year<<"年"<<endl;/*在電腦上顯示預(yù)設(shè)的年月日時(shí)分秒星期*/cout<<month<<"月"<<endl;cout<<day<<"日"<<endl;cout<<"星期"<<week<<endl;cout<<hour<<"時(shí)"<<endl;cout<<minute<<"分"<<endl;cout<<second<<"秒"<<endl;while<j>=0>/*計(jì)數(shù)累加進(jìn)位顯示*/{PortWriteByte<0x28b,0x82>;/*10000010,8255B口輸入*/PortWriteByte<0x283,0x77>;/*01110111,通道1,方式3,bcd計(jì)數(shù)*/PortWriteByte<0x280,0x00>;/*寫(xiě)入初值1000*/PortWriteByte<0x280,0x10>;PortWriteByte<0x283,0xb1>;/*10110001,通道2,方式0,bcd計(jì)數(shù)*/PortWriteByte<0x281,0x00>;/*寫(xiě)入初值2000*/PortWriteByte<0x281,0x20>;while<!<data&&0x10>>/*B4檢出高電平,證明1秒過(guò)去*/{PortReadByte<0x289,&data>;}second++;/*時(shí)間更新進(jìn)位*/if<second>=60>{minute++;if<minute>=60>{hour++;if<hour>=24>{week++;if<week>=7>{week=1;}/*星期數(shù)歸1,而不是歸0*/day++;if<day>days<month,year>>/*調(diào)用閏年子程序,計(jì)算當(dāng)月應(yīng)有天數(shù)*/{month++;if<month>=12>{year++;month=1;/*月份數(shù)歸1,而不是歸0*/}day=1;/*天數(shù)數(shù)歸1,而不是歸0*/}hour=0;}minute=0;}second=0;}cout<<year<<"年"<<endl;/*在電腦屏幕上顯示更新后的時(shí)間日期*/cout<<month<<"月"<<endl;cout<<day<<"日"<<endl;cout<<"星期"<<week<<endl;cout<<hour<<"時(shí)"<<endl;cout<<minute<<"分"<<endl;cout<<second<<"秒"<<endl;/*分不同模式,進(jìn)行當(dāng)前時(shí)間與鬧鐘設(shè)定時(shí)間比較*/if<<flag==1>&&<hour==scheduledhour>&&<minute==scheduledminute>&&<second==scheduledsecond>>clock<>;/*調(diào)用蜂鳴器子程序*/if<<flag==2>&&<week==scheduledweek>&&<hour==scheduledhour>&&<minute==scheduledminute>&&<second==scheduledsecond>>clock<>;if<<flag==3>&&<year==scheduledyear>&&<month==scheduledmonth>&&<day=scheduledday>&&<hour=scheduledhour>&&<minute==scheduledminute>&&<second==scheduledsecond>>clock<>;k=0x80;/*調(diào)用顯示子程序*/show<year/1000,k>;/*液晶屏上顯示更新后的時(shí)間日期*/k++;show<year/100%10,k>;/*逐位分離*/k++;show<year/10%10,k>;k++;show<year%10,k>;k=0x90;show<month/10,k>;k++;show<month%10,k>;k=0x94;show<day/10,k>;k++;show<day%10,k>;k=0x8a;show2<week>;k=0x8c;show<hour/10,k>;k++;show<hour%10,k>;k=0x98;show<minute/10,k>;k++;show<minute%10,k>;k=0x9b;show<second/10,k>;k++;show<second%10,k>;}}/************************//*數(shù)字輸入*//************************/voidinput<>{ bytedata; printf<"Pressanykeytobegin!\n\n">; getch<>; if<!Startup<>> /*檢查設(shè)備是否正確打開(kāi)*/ { printf<"ERROR:OpenDeviceError!\n">; return; }printf<"請(qǐng)輸入數(shù)字\n">;while<!kbhit<>>{PortWriteByte<0x28b,0x81>; /*初始化8255*/PortWriteByte<0x28a,0x0f>; /*向C口低4位送1111*/PortReadByte<0x28a,&data>;/*讀取C口低4位*/i=data;if<i!=0x0f>{i=data;Sleep<50>;/*延時(shí)*/PortWriteByte<0x28b,0x88>;/*防抖動(dòng),再次讀入,初始化8255*/PortWriteByte<0x28a,0xf0>; /*向C口高4位送1111*/PortReadByte<0x28a,&data>;/*讀取C口高4位*/i=i|data;if<i==0x77>j=0;/*將按鍵值轉(zhuǎn)化為數(shù)字*/elseif<i==0x7b>j=1;elseif<i==0x7d>j=2;elseif<i==0x7e>j=3;elseif<i==0xb7>j=4;elseif<i==0xbb>j=5;elseif<i==0xbd>j=6;elseif<i==0xbe>j=7;elseif<i==0xd7>j=8;elseif<i==0xdb>j=9;else; printf<"%d\n",j>;/*電腦屏幕顯示*/if<k==0x8a>{show2<j>;/*顯示星期數(shù),使用漢字*/Cleanup<>;return;} show<j,k>; }} Cleanup<>;return; }/************************//*LCD顯示*//************************/voidshow<intj,intk>{if<!Startup<>> /*檢查設(shè)備是否正確打開(kāi)*/ { printf<"ERROR:OpenDeviceError!\n">; return;}PortWriteByte<0x28b,0x80>; /*設(shè)8255為方式0,C口輸出,A口輸出*/clear<>;PortWriteByte<0x288,k>;/*向A口送入字符在液晶屏上顯示的地址*/cmdsetup<>;Sleep<10>;/*延時(shí)*/PortWriteByte<0x288,lcd1[j]>;datasetup<>;/*向A口送入字符機(jī)碼高位*/PortWriteByte<0x288,lcd2[j]>;datasetup<>;/*向A口送入字符機(jī)碼低位*/return;}voidshow1<intk,intj1,intj2>/*在液晶屏上顯示單位*/{printf<"請(qǐng)進(jìn)行下一位\n">; getch<>; cout<<"aaaaaaaa"<<endl; if<!Startup<>> { printf<"ERROR:OpenDeviceError!\n">; return; }PortWriteByte<0x28b,0x80>; /*設(shè)8255為方式0,C口輸出,A口輸出*/clear<>;PortWriteByte<0x288,k>;cmdsetup<>;Sleep<10>;PortWriteByte<0x288,j1>;datasetup<>;PortWriteByte<0x288,j2>;datasetup<>;Cleanup<>;return;}voidshow2<intj>/*顯示星期數(shù),一至日*/{PortWriteByte<0x28b,0x80>; clear<>;PortWriteByte<0x288,k>;cmdsetup<>;Sleep<10>;PortWriteByte<0x288,l1[j]>;datasetup<>;PortWriteByte<0x288,l2[j]>;datasetup<>;return;}voidshowhy<>/*顯示歡迎界面*/{printf<"Pressanykeytobegin!\n\n">; getch<>; cout<<"aaaaaaaa"<<endl;if<!Startup<>> { printf<"ERROR:OpenDeviceError!\n">; return;}PortWriteByte<0x28b,0x80>; clear<>;PortWriteByte<0x288,0x80>;cmdsetup<>;Sleep<10>;for<i=0;i<16;i++>{PortWriteByte<0x288,lhy1[i]>;datasetup<>;};PortWriteByte<0x288,0x90>;cmdsetup<>;Sleep<10>;for<i=16;i<32;i++>{PortWriteByte<0x288,lhy1[i]>;datasetup<>;};PortWriteByte<0x288,0x88>;cmdsetup<>;Sleep<10>;for<i=0;i<16;i++>{PortWriteByte<0x288,lhy2[i]>;datasetup<>;};PortWriteByte<0x288,0x98>;cmdsetup<>;Sleep<10>;for<i=16;i<32;i++>{PortWriteByte<0x288,lhy2[i]>;datasetup<>;}; Cleanup<>; return;}voidshowsd1<>/*顯示鬧鐘模式選擇界面*/{printf<"Pressanykeytobegin!\n\n">; getch<>; cout<<"aaaaaaaa"<<endl;if<!Startup<>> { printf<"ERROR:OpenDeviceError!\n">; return;}PortWriteByte<0x28b,0x80>; /*設(shè)8255為方式0,C口輸出,A口輸出*/clear<>;PortWriteByte<0x288,0x80>;cmdsetup<>;Sleep<10>;for<i=0;i<16;i++>{PortWriteByte<0x288,sd1[i]>;datasetup<>;};PortWriteByte<0x288,0x90>;cmdsetup<>;Sleep<10>;for<i=16;i<32;i++>{PortWriteByte<0x288,sd1[i]>;datasetup<>;};PortWriteByte<0x288,0x88>;cmdsetup<>;Sleep<10>;for<i=32;i<48;i++>{PortWriteByte<0x288,sd1[i]>;datasetup<>;};PortWriteByte<0x288,0x98>;cmdsetup<>;Sleep<10>;for<i=48;i<64;i++>{PortWriteByte<0x288,sd1[i]>;datasetup<>;}; Cleanup<>; return;}voidshowsd2<>/*顯示鬧鐘預(yù)設(shè)時(shí)間設(shè)定界面*/{printf<"Pressanykeytobegin!\n\n">; getch<>; cout<<"aaaaaaaa"<<endl;if<!Startup<>> { printf<"ERROR:OpenDeviceError!\n">; return;}PortWriteByte<0x28b,0x80>; /*設(shè)8255為方式0,C口輸出,A口輸出*/clear<>;PortWriteByte<0x288,0x80>;cmdsetup<>;Sleep<10>;for<i=0;i<16;i++>{PortWriteByte<0x288,sd2[i]>;datasetup<>;}; Cleanup<>; return;}voidshowclr<>/*以顯示滿屏空格的方法來(lái)進(jìn)行清屏*/{printf<"Pressanykeytobegin!\n\n">; getch<>; cout<<"aaaaaaaa"<<endl;if<!Startup<>> { printf<"ERROR:OpenDeviceError!\n">; return;}PortWriteByte<0x28b,0x80>; clear<>;PortWriteByte<0x288,0x80>;cmdsetup<>;Sleep<10>;for<i=0;i<8;i++>{PortWriteByte<0x288,0xa2>;datasetup<>;PortWriteByte<0x288,0xa0>;datasetup<>;};PortWriteByte<0x288,0x90>;cmdsetup<>;Sleep<10>;for<i=0;i<8;i++>{PortWriteByte<0x288,0xa2>;datasetup<>;PortWriteByte<0x288,0xa0>;datasetup<>;};PortWriteByte<0x288,0x88>;cmdsetup<>;Sleep<10>;for<i=0;i<8;i++>{PortWriteByte<0x288,0xa2>;datasetup<>;PortWriteByte<0x288,0xa0>;datasetup<>;};PortWriteByte<0x288,0x98>;cmdsetup<>;Sleep<10>;for<i=0;i<8;i++>{PortWriteByte<0x288,0xa2>;datasetup<>;PortWriteByte<0x288,0xa0>;datasetup<>;}; Cleanup<>; return;}voidclear<>{PortWriteByte<0x288,0x0c>;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水表基礎(chǔ)知識(shí)培訓(xùn)總結(jié)課件
- 混凝土施工中水泥質(zhì)量控制方案
- 水管管件基礎(chǔ)知識(shí)培訓(xùn)課件
- 輸電線路傳輸能力評(píng)估方案
- 建筑施工現(xiàn)場(chǎng)的健康安全檢查與監(jiān)督方案
- 雞舍清潔與消毒技術(shù)
- 水的基本知識(shí)培訓(xùn)內(nèi)容課件
- 二零二五頂賬城市核心區(qū)住宅買(mǎi)賣(mài)合同協(xié)議
- 二零二五年軟件系統(tǒng)集成與維護(hù)合同詳細(xì)實(shí)施條款
- 2025版電力系統(tǒng)電料研發(fā)、生產(chǎn)與銷(xiāo)售合同
- 2025年提取公積金租房合同范本
- 2025高職單招考試題(附答案)
- 儲(chǔ)能系統(tǒng)運(yùn)維安全手冊(cè)
- GB/T 45997-2025科技成果五元價(jià)值評(píng)估指南
- 轉(zhuǎn)讓網(wǎng)約車(chē)合同協(xié)議書(shū)范本
- 醫(yī)院 捐贈(zèng)協(xié)議書(shū)
- 小學(xué)食堂供餐管理方案(3篇)
- 養(yǎng)老院重要環(huán)境因素控制措施
- 藏文教學(xué)課件
- 血透室手衛(wèi)生管理課件
- 風(fēng)電場(chǎng)安全規(guī)程考試題庫(kù)(附答案)
評(píng)論
0/150
提交評(píng)論