久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1534|回復: 0
打印 上一主題 下一主題
收起左側

1602顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:202709 發表于 2017-5-19 22:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include"stc12c5a60s2.h"
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^5;
sbit rw=P2^6;
sbit E=P2^7;
bit  shuaxin=1;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
uchar name[]="Name: Xuwenlei ";
uchar tim[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x53,0x4a}; //0~9和: S J
uchar i;
uchar  shan;
uchar js50ms,second,minut,hour;
uchar  s1,s2,m1,m2,h1,h2;
void delay(uchar x)           //延時函數
{        uint y;
                        for(;x>0;x--)
         {                                                                         
                for(y=100;y>0;y--)
                                {};
         }
}
void LCD_wrdata(uchar dat)         //寫數據到LCD
{
        delay(6);
        rs=1;  //寫數據時RS拉高
        rw=0;
        E=1;
        P0=dat;
        delay(6);
        E=0;
        delay(6);
}
void LCD_wrcom(uchar cdat)//寫指令到LCD  
{       
        delay(6);
        rs=0;//寫指令時RS拉低
        rw=0;
        E=1;
        P0=cdat;//
        delay(6);//不加此延時將導致不能寫入指令,但能寫入顯示數據
        E=0;
        delay(6);
}
void LCD_Clear()        //清屏函數
{
  LCD_wrcom(0x01);
  delay(6);
}
void initiate()                          //1602初始化函數
{
    LCD_wrcom(0x38);                 //          顯示模式設置:16*2顯示,5*7點陣,8位數據接口
        LCD_wrcom(0x06);                 //          顯示模式設置:顯示開,有光標,光標閃爍
        LCD_wrcom(0x0c);                 //          顯示模式設置:光標右移,字符不移
       
}
void T0_init()                 //T0初始化
{
    TMOD=0x01;     //T0方式1
        TH0=0x4c;
        TL0=0x00;       //50ms初值       
        TR0=1;
        ET0=1;
       
        EX0=1;
        IT0=1;
        EA=1;
}
void LCD_wirte_setring(uchar x,uchar y,uchar *s)  //寫字符串函數
{
if(y==0){LCD_wrcom( 0x80+x);}
else{LCD_wrcom( 0xc0+x);}
while(*s)
{
   LCD_wrdata(*s);
   s++;
}
}
void LCD_wirte_data(uchar x,uchar y,uchar dat)          //寫字符函數
{
  if(y==0){LCD_wrcom( 0x80+x);}
  else{LCD_wrcom( 0xc0+x);}
  LCD_wrdata(dat);
}
void LCD_Time()                                  //時間顯示函數
{        s1=second%10;                   //  時間賦值                秒分時
    s2=second/10;
        m1=minut%10;
        m2=minut/10;
        h1=hour%10;
        h2=hour/10;
    LCD_wirte_data(6,1,tim[h2]);
    LCD_wirte_data(7,1,tim[h1]);
        LCD_wirte_data(8,1,tim[10]);
        LCD_wirte_data(9,1,tim[m2]);
        LCD_wirte_data(10,1,tim[m1]);
        LCD_wirte_data(11,1,tim[10]);
        LCD_wirte_data(12,1,tim[s2]);
        LCD_wirte_data(13,1,s1+'0');
                                
}
void key_can() interrupt 0
{
  key1=1;key2=1; key3=1;key4=1;
   if(key1==0){          shan++;  TR0=0;
                        if(shan==4)shan=0        ;
                                                                                                         
                                                                                        switch(shan){
                                                                                        case 0:        shan=0;TR0=1;
                                                                                                            LCD_wrcom(0x0c);
                                                                                                   LCD_wirte_setring(1,0,"Name:Xuwenlei ") ;
                                                                                             
                                                                                                             break;
                                            case 1:
                                                                                                LCD_wirte_setring(1,0,"Name:hour    ") ;
                                                                                                LCD_wrcom(0x0f);
                                                                                                        delay(10);
                                                   
                                                                                                                             break;
                                            case 2:
                                                                                                LCD_wirte_setring(1,0,"Name:mint    ") ;                 
                                                                                                LCD_wrcom(0x0f);
                                                                                                        delay(10);
  
                                                                                                                              break;                                                                                       
                                            case 3:
                                                                                                LCD_wirte_setring(1,0,"Name:second    ") ;          
                                                                                                LCD_wrcom(0x0f);
                                                                                                        delay(10);
                                                                                                                          break;
                                                                                                                        }                                          
                      }                                                                                                                 
// if(key2==0&&shan==1)
if(key2==0){
                                 if(shan==1) { hour++; shuaxin=1;   //h加1
                                                                      if(hour==24){hour=0;} }
                                                   else if(shan==2){minut++; shuaxin=1;
                                                                                 if(minut==60){minut=0;}         }
                               else if(shan==3){second++;shuaxin=1;
                                                                                   if(second==60){second=0; }                                                                                                                                             
                                                  }       
                                                
                                                    
                            
             }
if(key3==0){
                       if(shan==1) {     //h減1
                                                                    if(hour==0){hour=24;}
                                                                         hour--;shuaxin=1;
                                                                        }
                                                          else if(shan==2){
                                                                                       if(minut==0){minut=60;}minut--;shuaxin=1;
                                                                                  }       
                                 else if(shan==3){
                                                                                              if(second==0){second=60;} second--;shuaxin=1;                                                                                                                                             
                                                  }       
                                                
                                                    
                  }
}
void T0_intop() interrupt 1
{
  TH0=0x4c;
        TL0=0x00;       //50ms初值重裝
        js50ms++;
       
  if(js50ms==20)        //1s
  {
     js50ms=0;
         shuaxin=1;
                 second++;
                if(second==60)   //60s
                {
                        second=0;
      minut++;
                        if(minut==60)  //60m
                        {
        minut=0;
                                hour++;
                                if(hour==24) //60h
                                {
           hour=0;
        }
      }
    }
  }       
}
void main()
{       
    initiate();                 //          調1602初始化函數
        T0_init();                  //T0 初始化
        LCD_Clear();          //清屏
    LCD_wirte_setring(1,0,"Name:Xuwenlei") ;
        LCD_wirte_setring(1,1,"Time:") ;
       
       
        while(1)
        {
//        { LCD_Time(); }
        if(shuaxin)
        {
        shuaxin=0;
        LCD_Time();
        }
        }          
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜免费视频 | 精品国产一区二区国模嫣然 | 99精品热视频 | 99国内精品久久久久久久 | 亚洲中字在线 | 亚洲成人av在线播放 | 超碰在线播 | 米奇成人网 | 中国一级特黄真人毛片免费观看 | 久久天堂| 亚洲一区在线观看视频 | 日韩人体视频 | 亚洲国产精品久久久 | 久久天堂网 | 亚洲精品4| 久久免费精彩视频 | 99热精品在线观看 | 涩涩视频大全 | 国产一区 | 一区二区在线不卡 | 精品国产一区久久 | 天天天操天天天干 | 欧美黄色性生活视频 | 日韩av美女电影 | japan25hdxxxx日本 做a的各种视频 | 成人午夜精品 | 久草免费在线 | 青草福利 | 欧美日韩精品免费 | 日韩欧美三级在线 | 美国黄色毛片 | 亚洲精品免费视频 | 亚洲久久一区 | 欧美一级α片 | 成人亚洲在线 | 在线播放国产一区二区三区 | 日本精品视频在线观看 | 97天天干 | 国产高清免费视频 | 日韩一区二区三区在线视频 | 国产精品久久久久久一级毛片 |