找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3144|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

跑表程序設(shè)計(jì)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
/*數(shù)碼管前三位顯示一個(gè)跑表,三個(gè)獨(dú)立鍵盤實(shí)現(xiàn)按下第一個(gè)時(shí)計(jì)時(shí)停止,
按下第二個(gè)時(shí)計(jì)時(shí)開始,按下第三個(gè)是計(jì)數(shù)值清零從頭開始。*/

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

sbit key1=P3^2;
sbit key2=P3^3;
sbit key3=P3^4;
sbit w1=P2^0;
sbit w2=P2^1;
sbit w3=P2^2;

uchar num,t0,bai,shi,ge,flag;
uint shu;
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};

void delay(uint z);
void init();
void display(uchar bai,uchar shi,uchar ge);
void keyscan();

void main()
{
        init();
        while(1)
        {
                keyscan();
                if(flag==0)
                        display(bai,shi,ge);       
                else               
                        display(0,0,0);               
        }
}

void init()
{
        shu=0;
        t0=0;
        flag=0;
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
}
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void timer0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        t0++;
        if(t0==3)
        {
                t0=0;
                shu++;
                bai=shu/100;
                shi=shu%100/10;
                ge=shu%10;
                if(shu==1000)
                        shu=0;
        }
}

void display(uchar bai,uchar shi,uchar ge)
{
         P0=0xff;
         w1=0;
         P0=table[bai];
         w1=1;
         delay(1);

         P0=0xff;
         w2=0;
         P0=table[shi];
         w2=1;
         delay(1);

         P0=0xff;
         w3=0;
         P0=table[ge];
         w3=1;
         delay(1);

}

void keyscan()
{
         if(key1==0)
         {
                 while(!key1);
                TR0=0;
         }                          
       
         if(key2==0)
         {
                 while(!key2);
                flag=0;
                  TR0=1;
         }
         
         if(key3==0)       
         {
                while(!key3);
                shu=0;
                flag=1;
                TR0=0;
         }
         
}



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

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2017-2-27 00:41 | 只看該作者
樓主能分享一下該程序的電路原理圖嗎?
回復(fù)

使用道具 舉報(bào)

板凳
ID:162469 發(fā)表于 2017-3-2 09:55 | 只看該作者
admin 發(fā)表于 2017-2-27 00:41
樓主能分享一下該程序的電路原理圖嗎?

這是基于開發(fā)板KR-51所寫的程序。。
回復(fù)

使用道具 舉報(bào)

地板
ID:162469 發(fā)表于 2017-3-2 09:57 | 只看該作者
原理圖如下

捕獲.PNG (77.15 KB, 下載次數(shù): 44)

捕獲.PNG

獨(dú)立按鍵.PNG (9.65 KB, 下載次數(shù): 51)

獨(dú)立按鍵.PNG

數(shù)碼管顯示電路.PNG (28.78 KB, 下載次數(shù): 58)

數(shù)碼管顯示電路.PNG
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表