顯示的秒表 C語言程序_第1頁
顯示的秒表 C語言程序_第2頁
顯示的秒表 C語言程序_第3頁
顯示的秒表 C語言程序_第4頁
顯示的秒表 C語言程序_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、源程序代碼:/名稱:用1602LCD設(shè)計的秒表/說明:首先按下K1鍵時開始計時,自此按下時暫停,第三次按下時繼續(xù)累積計時,再次按下時停止計時,K2鍵用于清零秒表。/#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define delayNOP ( ) _nop_( ); _nop_( ); _nop_( ); _nop_( );/LCD控制函數(shù)void LCD_Initialize( );void LCD_Set_POS(uchar);v

2、oid LCD_Write_Date(uchar);void Display_String(uchar,uchar);sbit K1 = P10;sbit K2 = P11;sbit BEEP = P30;sbit LCD_RS = P20;sbit LCD_RW = P21;sbit LCD_EN = P22;uchar KeyCount = 0;uchar code msg1 = Second Watch 0 ;uchar code msg2 = >>>> 0 ;uchar code Prompts 16 =: 1- - - - > ,: 1- - - - &

3、gt; :2 ,: 1 - >2 :3- - > ,: 1 - >2 :3- - >4 ;/ 計時緩沖與顯示緩沖uchar Time_Buffer =0,0,0,0;uchar LCD_Display_Buffer=00: 00: 00:00;/ 蜂鳴器/void Beep ()uchar i,j = 70;for (i = 0;i< 180;i+ )while(-j);BEEP = BEEP;BEEP = 0;/ 延時/void DelayX(uint ms) uchar i;while(ms-) for (i= 0;i< 120;i+);/ 顯示計時/v

4、oid Show_Second( ) uchar i; LCD_Set_POS(0x45); /設(shè)置LCD顯示起點for(i = 3;i != 0xff ;i-);/將兩位整數(shù)的1/100s,秒,分,時轉(zhuǎn)換為8位數(shù)字字符LCD_Display_Buffer2i+1 = Time_Bufferi / 10 + 0 ;LCD_Display_Buffer2i = Time_Bufferi % 10 + 0 ;/在 = 3,2,1,0時分別顯示時,分,秒,1/100sLCD_Writer_Date(LCD_Display_Buffer2i+1)LCD_Writer_Date(LCD_Display_

5、Buffer2i)LCD_Writer_Date(: )/ Time0中斷/Void Time0( ) interrupt 1 using 0THO = -10000 / 256;TLO = -10000 % 256;Time_Buffer0 +if(Time_Buffer0 = 100) Time_Buffer0 = 0; Time_Buffer1+;if(Time_Buffer1 = 60) /秒 Time_Buffer1 = 0; Time_Buffer2+;if(Time_Buffer2 = 60) /分 Time_Buffer2 = 0; Time_Buffer3+;if(Time_

6、Buffer3 = 24) /時 Time_Buffer3 = 0;/主函數(shù)/void main( ) uchar i; IE = 0x82; TMOD = 0x01; THO = -10000 / 256; TLO = -10000 % 256; LCD_Initialize( ); Display_String(msg1,0x00);Display_String(msg2,0x40); While(1) if(k1 = 0) DelayX(100); i = +KeyCount; switch (i) case 1: case 3: TRO = 1; Display_String(Prom

7、ptsi-1,0); Break;case 2: case 4: TRO = 0; Display_String(Promptsi-1,0); break; default:TRO = 0; break; While (K1 = 0); / 等待釋放K1鍵 Beep( ); else if(K2 = 0) TRO = 0; KeyCount = 0; for(i = 0;i < 4; i+)Time_Buffer i = 0; / 清零計數(shù)緩沖Display_String(msg1,0);Beep( );DelayX(100);while (K2 = 0); / 等待釋放K2鍵 Show

8、_Second( );/ 1602LCD顯示驅(qū)動函數(shù)/#include reg51.h#include intrins.h#define uchar unsigned char#define uint unsigned int#define DellayNOP( )_nop_( ); _nop_( ); _nop_( ); _nop_( );sbit LCD_RS = P20;sbit LCD_RW = P21;sbit LCD_EN = P22;bit LCD_Busy_Check( );void LCD_Initialize( );void LCD_Set_POS(uchar);void

9、LCD_Write_Command(uchar);void LCD_Write_ Date(uchar);/ 延時/void DelayMS(uint ms) uchar t; while(ms-) for (t =0;t < 120;t+);/ LCD忙檢查/bit LCD_Busy_Check( );bit Rsult;LCD_RS = 0; LCD_RW = 1; LCD_EN = 1;DelayNOP( );Result = (bit)(p0 0x80);LCD_EN = 0return Result;/ 向LCD寫指令/void LCD_Write_Command(uchar

10、cmd);while(LCD_Busy_Check() );LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_( ); _nop_( );pO = cmd; DelayNOP( );LCD_EN = 1;DelayNOP( );LCD_EN = 0;/ 向LCD寫數(shù)據(jù)/void LCD_Write_Date(uchar str);while(LCD_Busy_Check() );LCD_RS = 1; LCD_RW = 0; LCD_EN = 0;pO = str; DelayNOP( );LCD_EN = 1;DelayNOP( );LCD_EN = 0;/ 初始化LCD/void LCD_Initialize( );DelayMS(5); LCD_Write_Command(0x38);DelayMS(5); LCD_Write_Command(0x0c);DelayMS(5); LCD_Write_Command(0x06);DelayMS(5); LCD_Write_Command(0x01);DelayMS(5);/ 設(shè)置顯示位置/void LCD_Set_POS(uchar Poition)LC

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論