显示的秒表 C语言程序_第1页
显示的秒表 C语言程序_第2页
显示的秒表 C语言程序_第3页
显示的秒表 C语言程序_第4页
显示的秒表 C语言程序_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、源程序代码:/名称:用1602LCD设计的秒表/说明:首先按下K1键时开始计时,自此按下时暂停,第三次按下时继续累积计时,再次按下时停止计时,K2键用于清零秒表。/#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define delayNOP ( ) _nop_( ); _nop_( ); _nop_( ); _nop_( );/LCD控制函数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); /设置LCD显示起点for(i = 3;i != 0xff ;i-);/将两位整数的1/100s,秒,分,时转换为8位数字字符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;/主函数/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; / 清零计数缓冲Display_String(msg1,0);Beep( );DelayX(100);while (K2 = 0); / 等待释放K2键 Show

8、_Second( );/ 1602LCD显示驱动函数/#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写数据/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);/ 设置显示位置/void LCD_Set_POS(uchar Poition)LC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论