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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求大神幫個忙,初學單片機以下代碼怎么改成共陰極的?功能是顯示時分秒

[復制鏈接]
跳轉到指定樓層
樓主
ID:312571 發表于 2018-5-28 21:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
#define  uchar unsigned char
#define  uint  unsigned int

void   KeyHandle(void);   /*按鍵處理模塊*/
void   Delay ();          /*10ms延時*/
void   DispClock();
uchar  Control[6]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//數碼管控制選通
uchar  DisplayArray[6]={0x00,0x00,0x00,0x00,0x00,0x00};//中間存儲變量
uchar code CodeNum[16]={0x28,0xEB,0x32,0xA2,0xE1,
0xA4,0x24,0xE8,0x20,0xA0};//0-f段碼                        
uchar  Keyflag=0;/*按鍵處理標記*/
uchar  SetFlag=0;//=0,Normal;=1,調秒; =2,調分;=3,調時;
uchar  Msecond,Second,Minite,Hour;

sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P3_7 = P3^7;
sbit P3_3 = P3^3;
void main(void)
{
  EA=1;
  ET0=1;
  ET1=1;
  P1_1=1;
  P3_7=1;
  P3_3=1;
  TMOD = 0x11;
  TH0=(65536-20000)/256;
  TL0=(65536-20000)%256; //設定時值為20ms
  TH1=(65536-500)/256;
  TL1=(65536-500)%256; //設定時值為500us
  TR0=1;
  TR1=1; //開始定時
  for(;;)//while(1)
  {
        DispClock();
        KeyHandle();
  }
}
void Time0(void) interrupt 1
{
  TH0=(65536-20000)/256;
  TL0=(65536-20000)%256;
  Msecond++;
  if(Msecond>=50)
  {
        Msecond=0;
        Second++;
        if(Second>=60)
        {
          Second=0;
          Minite++;       
  if(Minite>=60)
          {
            Minite=0;
             Hour++;
           if(Hour>=24)
            {
             Hour=0;
           }
          }
        }
  }
}
void Time1(void) interrupt 3
{
  static uchar s_count=0;//變量定義在其它語句之前,keil c(非C語言規則)
  uchar temp;
  TH1=(65536-500)/256;
  TL1=(65536-500)%256; //設定時值為500us
  P0=Control[s_count];
  temp=DisplayArray[s_count];
  P2=CodeNum[temp];  
  s_count++;
  if(s_count>5)
  {
   s_count=0;
  }
}
void KeyHandle(void)             /*按鍵處理*/
{
  P1_0=1;   
  if(P1_0==0)
  {
   Delay();
   if(P1_0==0)
     {
             SetFlag++;
          if(SetFlag>3)
          SetFlag=0;
          switch (SetFlag)
           { case 1:
                   P3_7 = 0;
                   P3_3 = 0;
                   break;
             case 2:
                   P3_7 = 1;
                   P3_3 = 0;
                   break;
                 case 3:
                   P3_7 = 0;
                   P3_3 = 1;
                   break;
                 default:
                   P3_7 = 1;
                   P3_3 = 1;                                 
                   break;
           }
        }
         P1_0=1;                  //防止按鍵不放
     while((P1_0&0x01)!=0x01);
  }
         //加法處理
         P1_1=1;
         if(P1_1==0)
         {
           Delay();
           if(P1_1==0)
           {
            switch (SetFlag)
                 {
                  case 1:
                          Second++;
                          if(Second>=60) Second=0;
                          break;
                  case 2:
                          Minite++;
                          if(Minite>=60) Minite=0;
                          break;
                  case 3:
                          Hour++;
                          if(Hour>=24) Hour=0;break;
                  default:        break;
                 }
                P1_1=1;                                   //防止按鍵不放
            while((P1_1&0x01)!=0x01);
           }
         
         }
}            
void  DispClock()
{
uchar tempData=0;
tempData=Second;//秒鐘分解
DisplayArray[0]=tempData%10;
DisplayArray[1]=tempData/10;
tempData=Minite;//分鐘分解
DisplayArray[2]=tempData%10;
DisplayArray[3]=tempData/10;
tempData=Hour;//小時分解
DisplayArray[4]=tempData%10;
DisplayArray[5]=tempData/10;
}

void Delay()//10ms延時
{
        uchar i,j;
        for(i=20;i>0;i--)
        for(j=249;j>0;j--);
}

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

使用道具 舉報

沙發
ID:317135 發表于 2018-5-29 11:59 | 只看該作者
第一要你的顯示數碼管是共陰級的
第二程序中uchar  Control[6]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//數碼管控制選通
uchar  DisplayArray[6]={0x00,0x00,0x00,0x00,0x00,0x00};//中間存儲變量
uchar code CodeNum[16]={0x28,0xEB,0x32,0xA2,0xE1,
0xA4,0x24,0xE8,0x20,0xA0};//0-f段碼
這一塊看你是不是使用共陰來編寫段選的,如果是的話就OK了
回復

使用道具 舉報

板凳
ID:312571 發表于 2018-5-29 14:22 | 只看該作者
loading88 發表于 2018-5-29 11:59
第一要你的顯示數碼管是共陰級的
第二程序中uchar  Control[6]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//數碼管 ...

請問一下1.0  1-1   3-7  和3-3是控制什么的啊
回復

使用道具 舉報

地板
ID:340390 發表于 2018-5-29 21:29 | 只看該作者
應該按位取反就好了吧,P2=~(CodeNum[temp]);  
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区中文字幕乱码 | 一a级片 | 福利一区二区在线 | 99精品一区二区三区 | 97国产一区二区 | 国产日韩一区二区三免费高清 | 国产精品99久久久久 | 国产一区二区三区在线 | 欧美二区在线 | 欧美精品一区二区免费视频 | 欧美日韩在线国产 | 久久乐国产精品 | 久久夜视频 | 精品一区二区久久久久久久网站 | 日韩三级免费网站 | 91欧美精品成人综合在线观看 | 免费一区二区三区 | 欧美视频一区二区三区 | 国外成人在线视频 | 亚洲精品一区国语对白 | 久久美女网 | 精品国产一区二区三区性色av | 欧美成人专区 | 先锋资源站 | 国产一区二区欧美 | 欧美黑人体内she精在线观看 | 日日草天天干 | 中文字幕日韩一区 | 操人视频在线观看 | 一区视频在线 | 国产成人精品视频在线观看 | 成人av一区| 亚洲精品一区二区在线观看 | 国产成人精品午夜视频免费 | 伊人超碰 | 99av成人精品国语自产拍 | www.夜夜骑.com | 亚洲欧美一区二区三区视频 | 国产精品久久久久久久久久久久 | a中文在线视频 | 国产高清亚洲 |