版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)習(xí)步驟本單片機(jī)最小系統(tǒng)是以AT89S51單片機(jī)為控制核心,由驅(qū)動(dòng)芯片ZLG7289與16鍵的鍵盤矩陣實(shí)現(xiàn)對兩個(gè)4位一體共陰數(shù)碼管LED的驅(qū)動(dòng)顯示,由LCD1602實(shí)現(xiàn)液晶顯示,再通過電平轉(zhuǎn)換芯片MAX232并連接到232接口實(shí)現(xiàn)串口通信,系統(tǒng)還包含有蜂鳴器,USB及適配器供電接口,JTAG程序下載接口,總線擴(kuò)展等。首先,用protel99se軟件制作硬件電路原理圖及繪制PCB板;其次,安裝焊接單片機(jī)最小系統(tǒng)開發(fā)板及下載線,并且進(jìn)行電路調(diào)試;再次,在Keil uVision2軟件環(huán)境下調(diào)試單片機(jī)匯編程序或C語言程序,用單片機(jī)下載軟件ISPLAY或STC-ISP V31實(shí)現(xiàn)程序下載,從而用編程實(shí)
2、現(xiàn)最小系統(tǒng)的基本功能;最后,編寫綜合程序以實(shí)現(xiàn)系統(tǒng)功能的綜合以及拓展功能,其中串口通信用到電腦自帶的超級終端或AccessPort軟件。單片機(jī)最小系統(tǒng)板焊接首先對照元件清單和電路圖,檢查器件是否完整,型號規(guī)格安裝是否正確。然后將各器件根據(jù)焊接規(guī)則焊接到電路板上,其中對于器件的擺放方向和位置需十分注意。先焊發(fā)熱器件電阻和較低的電容,再焊較大的器件,焊接JTAG線,JTAG線里面的芯片電阻,電阻電容均為貼片封裝,焊接時(shí)需小心謹(jǐn)慎,對于各條線引的焊接也需謹(jǐn)慎,按照其對應(yīng)的順序進(jìn)行焊接,焊接結(jié)束后,自行組裝。檢查已經(jīng)焊好的電路板和JTAG下載線是否無誤:先用萬用表檢查電路板焊接是否都正確。當(dāng)檢查沒有短
3、路,斷路,虛焊,漏焊等錯(cuò)誤后,給電路板供電,看二極管是否亮,是否有器件過熱,有可能二極管或三極管會(huì)在焊接的過程中被燒壞,那樣的話就要重新焊器件。再用Keil軟件給板子拷正確的程序,檢查是否能按功能正常工作。單片機(jī)系統(tǒng)的硬件調(diào)試和軟件調(diào)試是不能分開的,許多硬件錯(cuò)誤是在軟件調(diào)試中被發(fā)現(xiàn)和糾正的。軟件設(shè)計(jì)在Keil軟件環(huán)境下對照相關(guān)資料編寫單片機(jī)最小系統(tǒng)開發(fā)板的有用程序,使設(shè)計(jì)好的程序編譯無誤,得到hex格式文件,用程序下載軟件加載到單片機(jī)芯片中,實(shí)現(xiàn)仿真電路,在板上得出效果。設(shè)計(jì)工具:電腦,Keil軟件,Isplay軟件,STC-ISP V31軟件蜂鳴器調(diào)試主要是檢驗(yàn)程序能否下載到芯片,蜂鳴器能正
4、常工作,掌握程序的編譯下載到芯片的方法。在Keil環(huán)境中用C語言編寫簡單是蜂鳴器程序或音樂播放程序。對Keil軟件和程序下載軟件進(jìn)行相關(guān)配置設(shè)置。將編譯產(chǎn)生的hex文件下載到芯片,檢測其工作是否正常,若工作不正常,則從軟件及硬件兩方面進(jìn)行檢查。 有用的報(bào)警聲程序見附錄4串口通信調(diào)試實(shí)現(xiàn)計(jì)算機(jī)與單片機(jī)之間相互通訊功能將編寫的串口調(diào)試程序經(jīng)過編譯,下載到單片機(jī)。串口實(shí)現(xiàn)功能為在計(jì)算機(jī)上能顯示單片機(jī)的輸出。檢測串口是否能正常工作,此階段需用到串口軟件及串口線。若不能正常工作,則需從軟件和硬件兩方面進(jìn)行檢查。正確功能為在電腦超級終端不停顯示輸出內(nèi)容,與預(yù)期相同,工作正常。液晶顯示調(diào)試保證液晶屏LCD能
5、正常工作,輸出效果有所擴(kuò)展。在編寫程序前,認(rèn)真閱讀LCD液晶屏資料,掌握LCD1602及1602液晶模塊數(shù)據(jù)手冊(中文)中的液晶的使用和編程方法,了解其工作時(shí)序,及各個(gè)指令及初始化。對照電路圖中LCD連接情況,編寫LCD1602移動(dòng)顯示程序,經(jīng)編譯下載至單片機(jī),檢測輸出,若無輸出,則調(diào)整電位器,若仍無輸出則從軟件及硬件兩方面進(jìn)行檢查,找出錯(cuò)誤原因,直至液晶屏能正常工作。在程序編寫時(shí)應(yīng)時(shí)刻注意各個(gè)指令間的延時(shí)控制。以保證液晶屏呈現(xiàn)效果移動(dòng)循環(huán)顯示,液晶屏工作正常。之后也可用LCD做數(shù)字鐘,這將在綜合程序里被用到,液晶移屏顯示程序見附錄6數(shù)碼管及鍵盤控制調(diào)試保證數(shù)碼管能正常顯示,以及按鍵能控制數(shù)碼
6、管的顯示.在編寫程序前,應(yīng)認(rèn)真閱讀LED和ZLG7289A資料,了解和掌握其工作時(shí)序,及各個(gè)指令及初始化,在程序編寫時(shí)應(yīng)時(shí)刻注意各個(gè)指令間的延時(shí)控制。對照電路圖中ZLG7289模塊的連接情況,編寫程序,經(jīng)過編譯,然后下載到單片機(jī),檢測展現(xiàn)效果,是否與程序預(yù)期相同。實(shí)現(xiàn)效果逐個(gè)閃爍,逐個(gè)消隱,鍵盤控制改變數(shù)據(jù)并移動(dòng),與預(yù)期相同,工作狀態(tài)正常。再利用單片機(jī)內(nèi)部時(shí)鐘中斷,編寫數(shù)碼管時(shí)鐘程序,使數(shù)碼管能夠?qū)崿F(xiàn)計(jì)時(shí)功能,鍵盤能夠控制時(shí)分秒。系統(tǒng)綜合功能設(shè)計(jì)綜合單片機(jī)開發(fā)板上的各個(gè)功能模塊,以實(shí)現(xiàn)一個(gè)完整的系統(tǒng)功能:根據(jù)前面對各模塊功能的理解和程序編寫,結(jié)合各個(gè)模塊實(shí)現(xiàn)一個(gè)整體系統(tǒng),把各模塊功能綜合起來。
7、設(shè)計(jì)一綜合系統(tǒng),使數(shù)碼管實(shí)現(xiàn)數(shù)字鐘且可右移閃爍,液晶屏實(shí)現(xiàn)時(shí)間、日期的顯示且可移屏,鍵盤能夠控制系統(tǒng),蜂鳴器與鍵盤且可整點(diǎn)報(bào)時(shí),可實(shí)現(xiàn)串口通信功能。鳴器調(diào)試程序 本程序根據(jù)蜂鳴器與單片機(jī)P3.3口相連設(shè)計(jì),可以驗(yàn)證單片機(jī)及下載功能的正確.#include <reg51.h>#include <intrins.h>sbitbuz = P33;unsigned char flag; void delayms(unsigned char ms)/*延時(shí)子程序*/unsigned char i;while(ms-)for(i = 0; i < 120; i+);/*主程序
8、*/main()TMOD = 0x01;flag = 0x00;TH0 = 0x00;TL0 = 0xff;TR0 = 1;IE = 0x82;while(1)flag+;delayms(1);/*中斷控制*/void timer0() interrupt 1 using 1TH0 = 0xfe;TL0 = frq;buz= buz;串口通信調(diào)試程序(單片機(jī)到PC機(jī))此為串口通信程序,可在電腦上的超級終端顯示相關(guān)語句,實(shí)現(xiàn)單片機(jī)與電腦的相互通信。遇到的問題:在進(jìn)行單片機(jī)傳信息到電腦終端時(shí),可是利用宏文件,直接調(diào)用printf.但是在實(shí)際的運(yùn)用中占用大量的空間資源,而且容易出現(xiàn)錯(cuò)誤,讓程序的工作
9、不正常,因此我們改用字節(jié)的傳送,利用串口一個(gè)字節(jié)一個(gè)字節(jié)的傳送,這樣就大大增加了程序的可讀性。#include <reg51.h> /* special function register declarations */ /* for the intended 8051 derivative*/#include <stdio.h> /* prototype declarations for I/O functions*/#ifdef MONITOR51 /* Debugging with Monitor-51 needs*/char code reserve 3 _at
10、_ 0x23; /* space for serial interrupt if */#endif /* Stop Exection with Serial Intr. is enabled */*-The main C function. Program execution startshere after stack initialization.-*/void main (void) /*-Setup the serial port for 1200 baud at 12MHz.-*/#ifndef MONITOR51 SCON = 0x50; /* SCON: mode 1, 8-bi
11、t UART, enable rcvr */ TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 0xe6; /* TH1: reload value for 1200 baud 12MHz */ TR1 = 1; /* TR1: timer 1 run*/ TI = 1; /* TI: set TI to send first char of UART*/#endif/*-Note that an embedded program never exits (becausethere is no operating sys
12、tem to return to). Itmust loop and execute forever.-*/ while (1) printf (" liu jing longn"); /* Print " liu jing long " */ 串口通信調(diào)試程序(PC機(jī)到單片機(jī))#include<reg51.h>#include<intrins.h>#include<1602.h>#define uchar unsigned char#define uint unsigned intUchar data Receive
13、Buffer16=0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20;/設(shè)置16字節(jié)的串行通信接收緩沖區(qū)uchar data BufferPointer=0;/串行通信接收緩沖區(qū)指針,初始為0bit data OnReceive=0;/串行通信接收事件標(biāo)志位void Send(uchar data dat);/*以下為串行通信接收中斷處理函數(shù)*/void serialport(void) interrupt 4 using 2 uchar data c,i;if(RI) c=SBUF;/
14、讀取接收到的數(shù)據(jù)if(BufferPointer<16) ReceiveBufferBufferPointer=c;/將接收到的數(shù)據(jù)存入接收緩沖區(qū)BufferPointer+;else for(i=0;i<15;i+) ReceiveBufferi=ReceiveBufferi+1;/將緩沖區(qū)數(shù)據(jù)左移ReceiveBuffer15=c;/將接收到的數(shù)據(jù)存入接收緩沖區(qū)RI=0;/清空接收標(biāo)志Send(c);/發(fā)送接收到的數(shù)據(jù),以便回顯OnReceive=1;/接收事標(biāo)志位置1/*以下為串口初始化函數(shù)*/void Initserialport(void) TMOD=0x20;SCON=
15、0x50;TH1 = 0xe6; /* TH1: reload value for 1200 baud 16MHz */ES=1; /允許串口中斷EA=1; TR1 = 1; /* TR1: timer 1 run */ void Send(uchar data dat) SBUF=dat;while(TI=0);TI=0;void main(void) /主函數(shù) uchar data i;LcdReset();/初始化LCDInitserialport();/初始化串口DisplayListChar(0,0,"Receive Data:",13);while(1)if(O
16、nReceive) for(i=0;i<16;i+) /接收顯示 DispOneChar(i,1,ReceiveBufferi);OnReceive=0;液晶移屏顯示程序?qū)崿F(xiàn)LCD1602的基本顯示功能,以及使其能夠?qū)崿F(xiàn)移屏功能。#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar codedispcode1="happy new year!"uchar codedispcode2="thanks everyday!"sbit RS=P20
17、;sbit RW=P21;sbit E=P22;void delay(uint t) uint k,l;for(k=t;k>0;k-)for(l=0;l<=10;l+); void wcom() RS=0;RW=0;E=0;delay(1000);E=1;void wdata() RS=1;RW=0;E=0;delay(1000);E=1;void init() /初始化子程序/ uint i;/ for(i=0;i<20;i+) P0=0x38;wcom(); /指令碼設(shè)置16×2顯示,8位數(shù)據(jù)接口 P0=0x0c;wcom(); /開顯示,不顯示光標(biāo),不閃爍光標(biāo)
18、 P0=0x06;wcom(); /讀或?qū)懸粋€(gè)字符后地址累加器加一,光標(biāo)加一 P0=0x01;wcom(); /清屏void main() /主函數(shù)顯示 uchar i; init(); P0=0x80; wcom(); for(i=0;i<=15;i+) P0=dispcode1i; wdata(); P0=0xC0; wcom(); for(i=0;i<=15;i+) P0=dispcode2i; wdata(); for(i=0;i<=40;i+) P0=0x1c; wcom(); delay(100); ZLG7289控制鍵盤及數(shù)碼管顯示程序本程序根據(jù)ZLG7289芯
19、片資料,來實(shí)現(xiàn)其對數(shù)碼管和鍵盤的控制。首先在數(shù)碼管上顯示0-7八位數(shù),然后循環(huán)左右各移八次,再分別左移右移各兩次,而后實(shí)現(xiàn)閃爍消隱功能,再是按鍵時(shí)可以在數(shù)碼管顯示按鍵值,如沒有按鍵則顯示時(shí)鐘,而且可用鍵盤對時(shí)鐘的時(shí)分秒進(jìn)行校對。#include <reg51.h>#include <stdio.h>#include <absacc.h>#define uchar unsigned char#define uint unsigned int/*端口定義*/sbit CS=P10;sbit CLK=P11;sbit DIO=P12;sbit KEY=P32; /
20、需要在INT區(qū)把KEY用跳線冒跳到INT0,其余四個(gè)跳到VCC/這樣,P32就相當(dāng)于直接連接到keybdata uchar com_data; /定義8位數(shù)據(jù)datasbit mos_bit=com_data7;sbit low_bit=com_data0;/*變量定義*/uchar half_hign;uchar half_low;uchar sl,sh,ml,mh,hh,hl;uchar second=0;uchar minute=0;uchar hour=12;uint s_cnt,key;/*延時(shí)子程序*/void delay_8us()uchar i;for (i=0; i<1
21、; i+);void delay_50us() uchar i;for (i=0; i<6; i+);void delay_50ms()uchar i,j;for(j=0;j<50;j+)for(i=0;i<125;i+);void delay_1s()uchar i = 20;while(i-)delay_50ms();void delay_2s()uchar i = 40;while(i-)delay_50ms();void delay_5s()uchar i = 100;while(i-)delay_50ms();/*發(fā)送單字節(jié)指令*/void send(uchar s
22、ebuf)uchar i;com_data=sebuf;CLK=0;CS=0;delay_50us();for(i=0;i<8;i+)delay_8us();DIO=mos_bit;CLK=1;delay_8us();com_data=com_data<<1;CLK=0;DIO=0;/*接收數(shù)據(jù)*/uchar receive(void)uchar i,rebuf;CLK=1;delay_50us();for(i=0;i<8;i+)com_data=com_data<<1;low_bit=DIO;CLK=1;delay_8us();CLK=0;delay_8u
23、s();rebuf=com_data;DIO =1;CS=1;return rebuf;/*復(fù)位*/void reset(void)DIO=1;delay_50ms();send(0xa4);CS=1;/*7289數(shù)碼管顯示,addr為顯示位置 范圍07,dat為現(xiàn)實(shí)內(nèi)容*/void display(uchar addr,uchar dat)if(addr<0 | addr >7)return;send(0xc8 + addr);delay_50us();send(dat); CS=1;/*功能:執(zhí)行ZLG7289純指令參數(shù):cmd:命令字*/void ZLG(uchar t)CS
24、 = 0;delay_50us();send(t);CS = 1;delay_50us();/*發(fā)送雙字節(jié)命令*/void sendcommand(uchar addr,uchar dat)send(addr);delay_50us();send(dat);CS=1;/*獲取鍵盤的位置碼*/uchar getkeycode(uchar dat)uchar key;switch(dat)case 0x00: key = 0x00;break;case 0x01: key = 0x01;break;case 0x02: key = 0x02;break;case 0x03: key = 0x03;
25、break;case 0x04: key = 0x04;break;case 0x05: key = 0x05;break;case 0x06: key = 0x06;break;case 0x07: key = 0x07;break;case 0x08: key = 0x08;break;case 0x09: key = 0x09;break;case 0x0a: key = 0x10;break;case 0x0b: key = 0x11;break;case 0x0c: key = 0x12;break;case 0x0d: key = 0x13;break;case 0x0e: key
26、 = 0x14;break;case 0x0f: key = 0x15;break;default: key = 0xee;break;return key;/*7289按鍵指令*/ZLG7289_Key()uchar key,dat;send(0x15); delay_50us();dat = receive();delay_50us();key = getkeycode(dat);/*按鍵設(shè)定時(shí)分加一*/void Set_time(void) /設(shè)定時(shí)間 if(key=0x00) /按鍵0,控制時(shí) delay_50ms(); if(key=0x00) hour+; if(hour=24)
27、hour=0; hl=hour%10; hh=hour/10; if(key=0x01) /按鍵1,控制分 delay_50ms(); if(key=0x01) minute+; if(minute=60) minute=0; ml=minute%10; mh=minute/10; if(key=0x02) /按鍵2,控制秒 delay_50ms(); if(key=0x02) second+; if(second=60) second=0; sl=second%10;sh=second/10; hh=hour/10; hl=hour%10; mh=minute/10;ml=minute%10
28、; sh=second/10;sl=second%10; /*定時(shí)器中斷初始化*/void Init(void) /初始化子程序IP=0x02;EX0=1;TMOD=0x02; /0.25ms TH0=0x06; TL0=0x06;EA=1; ET0=1; TR0=1; /*中斷控制*/void service_int0() interrupt 0EX0=0;TR0=0;key= ZLG7289_Key();Set_time();delay_1s();EX0=1;TR0=1; /*中斷控制*/void time0() interrupt 1 s_cnt+; if(s_cnt=400)/1s s
29、_cnt=0;second+;if(second=60) second=0; minute+; if(minute=60) minute=0; hour+; if(hour=24) hour=0; /*時(shí)鐘顯示*/void Disp_time(void)do hh=hour/10;hl=hour%10; mh=minute/10;ml=minute%10; sh=second/10;sl=second%10; sendcommand(0x81,0x0a); /顯示“” sendcommand(0x86,0x0a); display(3,sl);delay_50ms(); display(2,s
30、h);delay_50ms(); display(0,ml);delay_50ms(); display(7,mh);delay_50ms(); display(5,hl);delay_50ms(); display(4,hh);delay_50ms(); while(1);/*主函數(shù)*/main()uchar half_high; uchar half_low;uchar dat,key,n;reset(); send(0xbf);/* 測試指令 */CS=1;delay_5s();sendcommand(0x88,0xff); /* 禁止閃爍 */*顯示01234567*/display(
31、0,0x04);display(1,0x05);display(2,0x06);display(3,0x07);display(4,0x00);display(5,0x01);display(6,0x02);display(7,0x03);delay_5s();delay_2s();/*循環(huán)左移*/for ( n=0; n<=7; n+ ) ZLG(0xA3);delay_2s();delay_2s();/*循環(huán)右移*/for ( n=0; n<=7; n+ )ZLG(0xA2);delay_2s();/*左移2位*/for ( n=0; n<=1; n+ )ZLG(0xA1
32、);delay_5s();/*右移2位*/for ( n=0; n<=1; n+ ) ZLG(0xA0);delay_5s();/*閃爍控制*/dat = 0xFE;for ( n=0; n<8; n+ )/逐位閃爍sendcommand(0x88,dat);dat <<= 1;dat+;/數(shù)據(jù)0xFE循環(huán)左移delay_2s(); sendcommand(0x88,0x00);/八位同時(shí)閃爍 delay_5s(); delay_5s();sendcommand(0x88,0xFF);/停止閃爍delay_5s();/*消隱控制*/dat = 0xFE;for ( n=
33、0; n<8; n+ )sendcommand(0x98,dat);dat <<= 1;dat+;/數(shù)據(jù)0xFE循環(huán)左移delay_2s();sendcommand(0x98,0xFF);/停止消隱delay_5s();/*復(fù)位*/reset();delay_5s();reset();display(0,0);display(1,0);display(2,0);display(3,0);display(4,0);display(5,0);display(6,0);display(7,0);delay_5s();delay_5s();while(1) while(KEY); /
34、*判斷是否有按鍵按下*/send(0x15); /讀鍵盤數(shù)據(jù)指令delay_50us();dat = receive();delay_50us();key = getkeycode(dat);half_high = key >> 4;half_low = key & 0x0f;/* 顯示鍵盤的位置碼 */display(0,half_high);display(1,half_low);display(2,half_high);display(3,half_low);display(4,half_high);display(5,half_low);display(6,half
35、_high);display(7,half_low);delay_2s();while(!KEY); /當(dāng)沒有鍵按下后顯示時(shí)鐘 delay_50us(); reset(); delay_50us(); Init(); delay_50ms(); Disp_time(); 系統(tǒng)綜合設(shè)計(jì)程序?qū)CD,LED,蜂鳴器,串口通信的綜合程序。實(shí)現(xiàn)了單片機(jī)的總體功能。使數(shù)碼管和液晶第一行顯示年月日,并且可是實(shí)現(xiàn)整點(diǎn)報(bào)和鬧鐘時(shí)間到的刷屏顯示,第二行顯示由單片機(jī)控制的鬧鐘設(shè)定,并且可是顯示接收到的由電腦發(fā)送的數(shù)據(jù)。按鍵分別能對年月日,時(shí)分秒進(jìn)行調(diào)整,開啟串口通信,轉(zhuǎn)換顯示等功能;蜂鳴器在每次按鍵時(shí)都有提示,而
36、且能夠?qū)崿F(xiàn)整點(diǎn)報(bào)時(shí)功能;串口通信使電腦超級終端。#include <reg51.h>#include <intrins.h>#include <1602.h> #include <absacc.h>#include <7289.h>#include <stdio.h> Uchar data ReceiveBuffer16=0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20;/設(shè)置16字節(jié)的串行通信接收緩沖區(qū)uchar
37、 data BufferPointer=0;/串行通信接收緩沖區(qū)指針,初始為0bit data OnReceive=0; /串行通信接收事件標(biāo)志位#define uint unsigned int#define uchar unsigned charsbit buz=P33;/蜂鳴器口定義uchar code dispcode1="Date :2021-00-00" /顯示字符串uchar code dispcode3=" zheng dian bao "uchar sl,sh,ml,mh,hh,hl,moh,mol,dh,dl;uchar temp,t
38、,s;uint second=0;uint minute=0;uint hour=12;uchar dat,key,k;uint s_cnt,i;uint year=2021;uint month=0;uint day=0;void riqi();void Init();void Disp_time();void Sendy(uchar data dat);/*以下為串行通信接收中斷處理函數(shù)*/void serialport(void) interrupt 4 using 2 uchar data c,i;if(RI) c=SBUF;/讀取接收到的數(shù)據(jù)if(BufferPointer<1
39、6) ReceiveBufferBufferPointer=c;/將接收到的數(shù)據(jù)存入接收緩沖區(qū)BufferPointer+;else for(i=0;i<15;i+) ReceiveBufferi=ReceiveBufferi+1;/將緩沖區(qū)數(shù)據(jù)左移ReceiveBuffer15=c;/將接收到的數(shù)據(jù)存入接收緩沖區(qū)RI=0;/清空接收標(biāo)志Sendy(c);/發(fā)送接收到的數(shù)據(jù),以便回顯OnReceive=1;/接收事標(biāo)志位置1void Sendy(uchar data dat) SBUF=dat;while(TI=0);TI=0;void Init(void)/定時(shí)器初始化DisplayL
40、istChar(0, 0, dispcode1,16);delay(100);IP=0x02;TMOD=0x22; /定時(shí)器初始化 ,0.25ms TH0=0x06; TL0=0x06; SCON=0x50; TH1=0xe6; EA=1; ET0=1; TR0=1;TR1=1; ES=1; void time0() interrupt 1 /定時(shí)器中斷服務(wù)程序計(jì)時(shí) s_cnt+; if(s_cnt=4000) /1s s_cnt=0;second+;if(second=60) second=0; minute+; if(minute=60) minute=0; hour+; if(hour=
41、24) hour=0; day+;if(day=31)day=0;if(month>=12) year+; month=1; if(year>=2021) year=2021; void Disp_time(void) /LED.LCD顯示時(shí)間 dh=day/10;dl=day%10;hh=hour/10;hl=hour%10; mh=minute/10;ml=minute%10; sh=second/10;sl=second%10;if(sl=0&&sh=0&&ml=0&&mh=0) buz=0;delay(10000);buz=1
42、;DisplayListChar(0, 0, dispcode3,16);delay(2021 0);DisplayListChar(0, 0, dispcode1,16);delay(1000);sendcommand(0x81,0x0a);/數(shù)碼管顯示 sendcommand(0x86,0x0a); display(3,sl);delay_50ms(); display(2,sh);delay_50ms(); /秒 display(0,ml);delay_50ms(); display(7,mh);delay_50ms(); /分 display(5,hl);delay_50ms(); d
43、isplay(4,hh);delay_50ms(); /時(shí) /液晶DispOneChar(6,0,(year/1000)%10+0x30);/年DispOneChar(7,0,(year/100)%10+0x30); DispOneChar(8,0,(year/10)%10+0x30);DispOneChar(9,0,(year/1)%10+0x30); DispOneChar(10,0,'-'); DispOneChar(11,0,moh+0x30); /月DispOneChar(12,0,mol+0x30);DispOneChar(13,0,'-');Dis
44、pOneChar(14,0,dh+0x30); /日DispOneChar(15,0,dl+0x30);void riqi() /日期選擇顯示 display(3,dl);delay_50ms(); display(2,dh);delay_50ms(); display(1,mol);delay_50ms(); display(0,moh);delay_50ms(); display(5,temp=(year/100)%10);delay_50ms(); display(4,temp=(year/1000)%10);delay_50ms();display(6,temp=(year/10)%10);delay_50ms;display(7,temp=(year/1)%10);delay_50ms;void main(void)/主函數(shù)LcdReset();Init();delay(100); while(1)/讀鍵盤 Disp_time(); if(!KEY=1) key= ZLG7289_Key(); switch(key)case 0x00:if(minute=60)minute=0; else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年云南師范大學(xué)基礎(chǔ)教育集團(tuán)人才招聘(若干)備考考試題庫及答案解析
- 飛機(jī)模型介紹教學(xué)
- 沈陽戶外施工方案(3篇)
- 車輛信息安全分級管理制度(3篇)
- 2026年安徽廣播電視臺阜陽發(fā)射臺招聘工勤崗位1人備考考試題庫及答案解析
- 2026年度延邊州教育局所屬事業(yè)單位教師專項(xiàng)招聘(53人)筆試模擬試題及答案解析
- 飛機(jī)介紹教學(xué)課件
- 2026廣西北海市合浦縣紀(jì)委監(jiān)委招錄公益性崗位人員1人備考考試題庫及答案解析
- 2026浙江嘉興海寧智能制造崗位專場招聘備考考試題庫及答案解析
- 2025安徽銅陵市利業(yè)人才發(fā)展有限公司招聘派遣制專職財(cái)務(wù)人員(出納崗位)補(bǔ)充1人備考考試題庫及答案解析
- 2026屆湖北省宜昌市秭歸縣物理八年級第一學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 無人機(jī)系統(tǒng)安全培訓(xùn)課件
- 課程顧問工作總結(jié)
- 《社區(qū)居家適老化環(huán)境設(shè)計(jì)》健康養(yǎng)老專業(yè)全套教學(xué)課件
- 2025年高考(甘肅卷)地理真題(學(xué)生版+解析版)
- 2025年山東省村級后備干部選拔考試題(含答案)
- 后勤副校長述職課件
- GB/T 45758-2025室內(nèi)照明環(huán)境下光催化材料細(xì)菌減少率的測定半干法估算實(shí)際環(huán)境細(xì)菌污染表面抗菌活性
- 護(hù)理教學(xué)如何融入思政
- 兒童顱咽管瘤臨床特征與術(shù)后復(fù)發(fā)風(fēng)險(xiǎn)的深度剖析-基于151例病例研究
- 放療患者的飲食指導(dǎo)及護(hù)理
評論
0/150
提交評論