找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1456|回复: 0
打印 上一主题 下一主题
收起左侧

简单的51单片机基于1602液晶的显示

[复制链接]
跳转到指定楼层
楼主
ID:228520 发表于 2017-8-22 08:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  • #include<reg52.h>  
  • #define uint unsigned int  
  • #define uchar unsigned char  
  • sbit en=P3^4;  
  • sbit rs=P3^5;  
  • sbit rw=P3^6;  
  • sbit s2=P3^0;  
  • sbit s3=P3^1;  
  • sbit s4=P3^2;  
  • sbit s5=P3^3;  
  • uchar shi,fen,miao,num,num1=0,num2=0,num3=0,flag;  
  • void delay(uint z)  
  • {  
  •     uint x,y;  
  •     for(x=z;x>0;x--)  
  •         for(y=110;y>0;y--);  
  • }  
  • void busy()  
  • {  
  •     uchar busy;  
  •     P0=0xff;  
  •     rs=0;  
  •     rw=1;  
  •     do  
  •     {  
  •         en=1;  
  •         busy=P0;  
  •         en=0;  
  •   
  •     }while(busy & 0x80);//取最高位  
  •   
  • }  
  • void write_com(uchar com)  
  • {  
  •     busy();  
  •     rs=0;  
  •     rw=0;  
  •     P0=com;  
  •     en=1;  
  •     en=0;  
  • }  
  • void write_date(uchar date)  
  • {  
  •     busy();  
  •     rs=1;  
  •     rw=0;  
  •     P0=date;  
  •     en=1;  
  •     en=0;  
  • }  
  • void display(uchar num,weizhi)  
  • {  
  •     uchar shi,ge;  
  •     shi=num/10;  
  •     ge=num%10;  
  •     write_com(0x80+0x03+weizhi);  
  •     write_date(0x30+shi);  
  •     write_date(0x30+ge);  
  • }  
  • void init()  
  • {  
  •     write_com(0x38);  
  •     write_com(0x0c);  
  •     write_com(0x06);  
  •     write_com(0x01);//清屏  
  •     write_com(0x80|0x07);  
  •     write_date(':');  
  •     write_com(0x80|0x0a);  
  •     write_date(':');  
  •     display(0,2);  
  •     display(0,5);  
  •     display(0,8);  
  •     TMOD=0x01;  
  •     TH0=(65536-45872)/256;  
  •     TL0=(65536-45872)%256;  
  •     EA=1;  
  •     ET0=1;  
  •     TR0=0;   
  • }  
  • void keyscan()  
  • {  
  •     if(s5==0)  
  •     {  
  •         delay(10);  
  •         if(s5==0)  
  •         {  
  •             while(!s5);  
  •             TR0=~TR0;  
  •         }  
  •     }  
  •     if(s3==0)  
  •     {  
  •         delay(10);  
  •         if(s3==0)  
  •         {  
  •             num2++;  
  •             if(num2==60)  
  •                 num2=0;  
  •                 display(num2,5);  
  •                 while(!s3);   
  •         }               
  •     }  
  •     if(s2==0)  
  •     {  
  •         delay(10);  
  •         if(s2==0)  
  •         {  
  •         num3++;  
  •         if(num3==24)  
  •             num3=0;  
  •             display(num3,2);  
  •             while(!s2);  
  •         }  
  •     }  
  • }   
  • void main()  
  • {  
  •     init();  
  •     while(1)  
  •     {  
  •         keyscan();  
  •     }  
  • }  
  • void time0() interrupt 1  
  • {  
  •     TH0=(65536-45872)/256;  
  •     TL0=(65536-45872)%256;  
  •     num++;  
  •     if(num==20)  
  •     {  
  •         num=0;  
  •         num1++;  
  •     }  
  •     display(num1,8);  
  •     if(num1==60)  
  •         {  
  •             num1=0;  
  •             num2++;  
  •             if(num2==60)  
  •             {  
  •                 num2=0;  
  •                 num3++;  
  •                 if(num3==24)  
  •                 {  
  •                     num3=0;  
  •                 }  
  •                     display(num3,2);  
  •             }  
  •                 display(num2,5);  
  •         }  
  • }  

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表