zoukankan      html  css  js  c++  java
  • 用1602模拟电子钟功能

     

    实现一个简单的电子钟功能,按S1键可选择调整时、分、秒,s2上调,s3下调

    未实现调整日期功能

      2
      3 /*
      4 li 8/17/2010
      5  */
      6 #include <reg52.h>
      7  #define uint unsigned int
      8 #define uchar unsigned char
      9 sbit lcden=P3^4;
     10 sbit lcdrs=P3^5;
     11 sbit dula=P2^6;
     12 sbit wela=P2^7;
     13 
     14 sbit s1=P3^0;
     15 sbit s2=P3^1;
     16 sbit s3=P3^2;
     17 sbit vss=P3^7;
     18 uchar timeNum,i,Number,keyNum; //timeNum定时器计数,i For循环计数 Number时间临时变量 keyNum显示指针位置
     19 char shi,fen,miao;
     20 uchar code date[]="2010-08-17";
     21 uchar code time[]="00:00:00";
     22 //初始化
     23 void init()
     24 {
     25     TMOD=0x01;
     26     TH0=0xEE;
     27     TL0=0x00;
     28     ET0=1;
     29     EA=1;
     30     TR0=1;
     31     dula=0;
     32     wela=0;
     33 }
     34 
     35 //定时器
     36 void timer() interrupt 1
     37 {
     38     TH0=0xEE;
     39     TL0=0x00;
     40     timeNum++;
     41 }
     42 
     43 //简单延时
     44 void delay(uchar x)
     45 {
     46     uchar i;
     47     while (x--)
     48         for (i=0;i<110;i++);
     49 }
     50 
     51 //写命令
     52 void write_com(uchar com)
     53 {
     54     lcdrs=0;
     55     P0=com;
     56     delay(1);
     57     lcden=1;
     58     lcden=0;
     59 }
     60 
     61 //写数据
     62 void write_data(uchar date)
     63 {
     64     lcdrs=1;
     65     P0=date;
     66     delay(1);
     67     lcden=1;
     68     lcden=0;
     69 }
     70 
     71 //拆分十位和各位并显示
     72 void sfm(uchar add,uchar Num)
     73 {
     74     uchar shi,ge;
     75     shi=Num/10;
     76     ge=Num%10;
     77     write_com(0x80+0x40+add);
     78     write_data(0x30+shi);
     79     write_data(0x30+ge);
     80 }
     81 
     82 //1602初始化显示
     83 void display()
     84 {
     85     write_com(0x38);
     86     write_com(0x0C);
     87     write_com(0x06);
     88     write_com(0x01);
     89     write_com(0x80);
     90     for (i=0;i<10;i++)
     91     {
     92         write_data(date[i]);
     93     }
     94     write_com(0x80+0x40);
     95     for (i=0;i<8;i++)
     96     {
     97         write_data(time[i]);
     98     }
     99 }
    100 
    101 //扫描键盘
    102 void keysacn()
    103 {
    104     vss=0;
    105     if (s1==0)
    106     {
    107         delay(5);
    108         if (s1==0)
    109         {
    110             keyNum++;
    111             while (!s1);
    112             write_com(0x0F);
    113             TR0=0;
    114         }
    115         switch (keyNum)
    116         {
    117         case 1:
    118             write_com(0x80+0x40+7);
    119             break;
    120         case 2:
    121             write_com(0x80+0x40+4);
    122             break;
    123         case 3:
    124             write_com(0x80+0x40+1);
    125             break;
    126         case 4:
    127             keyNum=0;
    128             write_com(0x0C);
    129             TR0=1;
    130             break;
    131         }
    132     }
    133     if(keyNum!=0)
    134     {
    135         if(s2==0)
    136         {
    137             delay(5);
    138             if (s2==0)
    139             {
    140                 while(!s2);
    141                 switch (keyNum)
    142                 {
    143                 case 1:
    144                     miao++;
    145                     if(miao==60)
    146                         miao=0;
    147                     sfm(6,miao);
    148                     write_com(0x80+0x40+7);
    149                     break;
    150                 case 2:
    151                     fen++;
    152                     if(fen==60)
    153                         fen=0;
    154                     sfm(3,fen);
    155                     write_com(0x80+0x40+4);
    156                     break;
    157                 case 3:
    158                     shi++;
    159                     if(shi==24)
    160                         shi=0;
    161                     sfm(0,shi);
    162                     write_com(0x80+0x40+1);
    163                     break;
    164                 }
    165             }
    166         }
    167         if(s3==0)
    168         {
    169             delay(5);
    170             if (s3==0)
    171             {
    172                 while(!s3);
    173                 switch (keyNum)
    174                 {
    175                 case 1:
    176                     miao--;
    177                     if(miao==-1)
    178                         miao=59;
    179                     sfm(6,miao);
    180                     write_com(0x80+0x40+7);
    181                     break;
    182                 case 2:
    183                     fen--;
    184                     if(fen==-1)
    185                         fen=59;
    186                     sfm(3,fen);
    187                     write_com(0x80+0x40+4);
    188                     break;
    189                 case 3:
    190                     shi--;
    191                     if(shi==-1)
    192                         shi=23;
    193                     sfm(0,shi);
    194                     write_com(0x80+0x40+1);
    195                     break;
    196                 }
    197             }
    198         }
    199     }
    200 }
    201 void main()
    202 {
    203     init();
    204     display();
    205     while (1)
    206     {
    207         if (timeNum==200)
    208         {
    209             timeNum=0;
    210             miao++;
    211             if (miao==60)
    212             {
    213                 miao=0;
    214                 fen++;
    215                 if (fen==60)
    216                 {
    217                     fen=0;
    218                     shi++;
    219                     if (shi==24)
    220                     {
    221                         shi=0;
    222                     }sfm(0,shi);
    223                 }sfm(3,fen);
    224             }sfm(6,miao);
    225         }
    226         keysacn();
    227     }
    228 }
  • 相关阅读:
    Android基于mAppWidget实现手绘地图(五)--如何创建地图资源
    Android基于mAppWidget实现手绘地图(四)--如何附加javadoc
    Android基于mAppWidget实现手绘地图(三)--环境搭建
    Android基于mAppWidget实现手绘地图(二)--概要
    Android基于mAppWidget实现手绘地图(一)--简介
    网络通信之Socket与LocalSocket的比较
    Python-Django 整合Django和jquery-easyui
    Python-Django 第一个Django app
    RobotFramework 官方demo Quick Start Guide rst配置文件分析
    RobotFramework RobotFramework官方demo Quick Start Guide浅析
  • 原文地址:https://www.cnblogs.com/lilongjiang/p/1801608.html
Copyright © 2011-2022 走看看