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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

顯示出問題了,求大神們幫我看看,就小時和分鐘顯示出問題了

[復制鏈接]
跳轉到指定樓層
樓主
ID:138194 發表于 2016-9-30 17:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="0123456789:";
sbit en=P2^5;                                          //使能端
sbit rs=P1^0;                                          //數據選擇端
sbit rw=P1^1;                                          //讀寫選擇端
sbit key1=P3^4;                                          //功能選擇鍵
sbit key2=P3^5;                                          //時間加 按鍵
sbit key3=P3^6;                                          //時間減按鍵
sbit key4=P3^7;                                          //暫停按鍵
sbit dula=P2^6;                                          //申明U1鎖存器的鎖存端
sbit wela=P2^7;                                          //申明U1鎖存器的鎖存端
uint num,num1,shi=0,fen=0,miao=0; //聲明全局變量
void delayms(uint z);

//////////                   定時器0的使用                         //////////                       
void T0_time() interrupt 1                   //選用定時器0方式一
{
         TH0=(65536-45872)/256;                   //重裝初值
            TL0=(65536-45872)%256;
         num++;
         if(num>=20)                                   //1秒到
         {
                        miao++;
                        num=0;                                           //重新對num賦值,重新計時
                if(miao==60)
                {
                                   fen++;
                                miao=0;
                        if(fen==60)
                        {
                                    shi++;
                                        fen=0;
                                if(shi==24)
                                        {
                                                shi=0;
                                        }
                        }
                }
         }
}
//////////////                                用1602顯示                                         ////////////
void Wcom(uchar com)                                  //寫命令
{
        rs=0;                                                          //選擇數據段
        P0=com;                                                          //將要寫的命令傳送到數據總線
        delayms(5);
        en=1;                                                          //使能端給一高脈沖,將命令送入液晶控制器
        delayms(5);
        en=0;
}
void Wdate(uchar date)                                  //寫數據
{
        rs=1;                                                          //選擇數據段
        P0=date;
        delayms(5);
        en=1;                                                          //使能端給一高脈沖,將數據送入液晶控制器
        delayms(5);
        en=0;
}
void init()                                                   //初始化函數
{
        dula=0;                                                   //關閉數碼管
        wela=0;
        rs=0;                                                   //選擇數據端
        rw=0;                                                   //選擇讀數據端
        en=0;                                                   //使能端給低電平
        Wcom(0x38);                                           //設置16x2顯示,8位數據接口
        Wcom(0x0c);                                           //設置開顯示。不顯示光標,不閃爍光標
        Wcom(0x06);                                           //寫一個字符地址指針加1
        Wcom(0x01);                                           //所有顯示清零
        Wcom(0x80+0x42);
}
void show()                                                   //顯示
{
        uint shi1,shi2,fen1,fen2,miao1,miao2;
        shi1=shi/10;                                   //小時的十位
        shi2=shi%10;                                   //小時的個位
        fen1=fen/10;                                   //分鐘的十位
        fen2=fen%10;                                   //分鐘的個位
        miao1=miao/10;                                   //秒十位
        miao2=miao%10;                                   //秒個位
        Wcom(0x80+0x42);
        for(num1=0;num1<8;num1--)
        {
                Wdate(table[shi1]);
                delayms(5);
                Wdate(table[shi2]);
                delayms(5);
                Wdate(table[10]);
                delayms(5);
                Wdate(table[fen1]);
                delayms(5);
                Wdate(table[fen2]);
                delayms(5);
                Wdate(table[10]);
                delayms(5);
                Wdate(table[miao1]);
                delayms(5);
                Wdate(table[miao2]);
                delayms(5);
        }
}
/////////////                                按鍵檢測                                        /////////////////
void keyscan()
{
                if(key1==0);
                        {
                                shi++;
                                if(shi==24)
                                   shi=0;
                                   while(!key1);
                        }
                if(key2==0);
                        {
                                fen++;
                                if(fen==60)
                                {
                                        fen=0;
                                        shi++;
                                }
                                        while(!key2);
                        }
                if(key3==0)
                        {
                                 miao++;
                                if(miao==60)
                                  {
                                          fen++;
                                    miao=0;
                                  }
                                  while(!key3);
                        }
                 if(key4==0)
                         {
                                TR0=~TR0;
                        }
         
}

void main()
{
        init();
        TMOD=0X01;                                           //設置定時器0為工作方式1
        TH0=(65536-45872)/256;                   //賦初值
        TL0=(65536-45872)%256;
        EA=1;                                                   //開啟總中斷
        ET0=1;                                                   //開啟定時器0中斷
        TR0=1;                                                   //啟動定時器0
        while(1)
        {
                 keyscan();
                 show();
        }
}

void delayms( uint z)                                  //延時子程序
{
        uint x,y;
        for(x=z;x>0;x--)
          for(y=110;y>0;y--);
}








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

使用道具 舉報

沙發
ID:81249 發表于 2016-10-1 21:45 來自手機 | 只看該作者
是鍵掃描不對還是顯示不對?
回復

使用道具 舉報

板凳
ID:81249 發表于 2016-10-1 22:01 來自手機 | 只看該作者
把顯示函數中的for循環去了看看
回復

使用道具 舉報

地板
ID:140371 發表于 2016-10-2 07:15 | 只看該作者
keyscan()函數中的 if(key1==0);  if(key2==0);  有錯誤   改成  if(key1==0)    if(key2==0)
回復

使用道具 舉報

5#
ID:79544 發表于 2016-10-7 11:53 | 只看該作者
把按鍵掃描改一下試試,if(key2==0){fen++;if(fen==60)fen=0;
}
回復

使用道具 舉報

6#
ID:138194 發表于 2016-10-7 12:13 | 只看該作者
謝謝,問題找到了,是按鍵沒加延時
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国内自拍偷拍 | 成人h动漫精品一区二区器材 | 精品视频一区二区三区在线观看 | 中文字幕一区二区三区在线观看 | av中文字幕在线 | 伊人久久伊人 | 日韩视频在线免费观看 | 国产欧美日韩一区 | 99免费在线观看 | 精品国产乱码一区二区三 | 国产一区二区在线免费观看 | 伊人免费在线 | 99国内精品| 国产精品九九九 | 久久久久久国产精品 | 国产亚洲黄色片 | 成人性视频免费网站 | 在线免费观看黄色 | 精品免费看 | aaa级片| 日韩三级免费网站 | 国产欧美一区二区三区久久人妖 | 成人夜晚看av | 久久精品成人 | 久久在线免费 | 成人日韩 | 亚洲视频免费在线看 | a级免费观看视频 | 99久久99| 亚洲成人精品视频 | 黄色男女网站 | 在线亚洲免费视频 | 久久男人| 国产中文字幕在线 | 免费a网站| 亚洲码欧美码一区二区三区 | 亚洲一区精品视频 | 久久久九九| 五月婷婷中文 | 激情a| 狠狠天天 |