#include #include #define uchar unsigned char sbit RS = P2^4; //定义端口 sbit RW = P2^5; sbit EN = P2^6; sbit s0=P2^0; // 暂停开始键 sbit s1=P2^1; //清零键 uchar ge,shi,bai; uchar time=0; uchar count; uchar press0_num=0; //s0按键次数 uchar press1_num=0; //s1按键次数 uchar code table[]=\"liu hui sb\"; void delayus(uchar t) //延时um级 {while(--t);} void delay(uchar z) { while(z--) { delayus(245); delayus(245); } } bit lcd_check_busy() { //延时函数ms 级 //判忙函数 P0=0xff; RS=0; RW=1; EN=0; _nop_(); EN=1; return (bit)(P0&0x80); //忙返回值是一,不忙是零 } void lcd_write_com(uchar com) //写命令 { while(lcd_check_busy()); RS=0; RW=0; EN=1; P0=com; _nop_(); EN=0; } void lcd_write_date(uchar date) { while(lcd_check_busy()); RS=1; RW=0; EN=1; P0=date; _nop_(); //写数据 EN=0; } void lcd_clear() { lcd_write_com(0x01); delay(5); } void LCD_Write_String(uchar x,uchar y,uchar *s) { if (y==0) { lcd_write_com(0x80+x); //表示第一行 } //液晶写入一个字符串 else { lcd_write_com(0xC0+x); //表示第二行 } while (*s) { lcd_write_date( *s); s++; } } void lcd_init() { lcd_write_com(0x38); //初始化函数 /*显示模式设置*/ delay(5); lcd_write_com(0x38); delay(5); lcd_write_com(0x0c); lcd_write_com(0x06); lcd_write_com(0x01); lcd_write_com(0x80); } void keyscan() { if(!s0) { delay(20); //设置开显示,不显示光标 //写第一个字符后指针加一 //显示清零,数据指针指零 //显示第一行 //按键按下 //延时 if(!s0) //确定按下 { while(!s0); //松手有效 press0_num++; if(press0_num==1) //按一下 { TR0=0; //d定时器关闭 } if(press0_num==2) //按两下 { TR0=1; //定时器开始 press0_num=0; //按键次数清零 } } } if(!s1) { delay(20); if(!s1) { while(!s1); press1_num++; if(press1_num==1) { TR0=0; time=0; //计时从零开始 } if(press1_num==2) { TR0=1; press1_num=0; } } } } void main() { TMOD=0x11; TH0=(66536-47040)/256; //选择中断方式3 //覆初值 TL0=(66536-47040)%256; EA=1; ET0=1; TR0=1; lcd_init(); while(1) { keyscan(); s0=1; s1=1; if(count==20) { count=0; time++; if(time>100) time=0; lcd_clear(); ge=time%10; shi=time/10%10; bai=time/100; lcd_write_com(0x80); //选地址 lcd_write_date(0x30+bai); 个字符后指针加一 //十位地址 lcd——init中有0x06有写第一 lcd_write_date(0x30+shi); //十位地址 lcd_write_date(0x30+ge); //个位地址 LCD_Write_String(1,1,table); } } } void timer0() interrupt 1 { TH0=(66536-47040)/256; TL0=(66536-47040)%256; count++; } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务