立即注冊(cè) 登錄
返回首頁

uid:201801的個(gè)人空間

日志

單片機(jī)數(shù)碼管代碼

已有 5834 次閱讀2017-5-17 17:12 | 單片機(jī), 數(shù)碼管

#include <reg51.h>
#include <intrins.h>
#define DataPort P1
unsigned char code table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
sbit SMG1=P3^4;//第一個(gè)數(shù)碼管的位選
sbit SMG2=P3^5;//第2個(gè)數(shù)碼管的位選
sbit SMG3=P3^6;//第3個(gè)數(shù)碼管的位選
sbit SMG4=P3^7;//第4個(gè)數(shù)碼管的位選
void  delayms(unsigned int t) //t ms
{
  unsigned int num,count; 
   for(num=t;num>0;num--)
     for(count=200;count>0;count--)
   {
_nop_();
}
}
//display(1234);
void display(unsigned int num)
{
DataPort=table[num/1000];
SMG1=1;  //第一個(gè)亮
delayms(5);
SMG1=0;

DataPort=table[num%1000/100];
SMG2=1;  //第二個(gè)亮
    delayms(5);
    SMG2=0;

    DataPort=table[num%100/10];
SMG3=1;  //第3個(gè)亮
    delayms(5);
    SMG3=0;

DataPort=table[num%10];
SMG4=1;  //第4個(gè)亮
    delayms(5);
    SMG4=0;
}
void timer0_init()
 {
EA=1;//打開總中斷
ET0=1;//打開定時(shí)器0的中斷
TMOD|=0x01;//設(shè)置成工作方式1 16位定時(shí)器
TH0=(65535-10000)/256; //設(shè)置初值
    TL0=(65535-10000)%256;
    TR0=1;//打開定時(shí)器
 }
unsigned char count;
void main()
  {
   SMG1=SMG2=SMG3=SMG4=0;//數(shù)碼管的
   timer0_init();
   while (1)
   {
    display(count);
   }
  } 
//中斷服務(wù)函數(shù)
void timer0_int()  interrupt 1
{
static unsigned char num;
TH0=(65535-10000)/256; //設(shè)置初值
    TL0=(65535-10000)%256;
num++;
if (num==100)
{
num=0;
count++;
if(count==60)
{
 count=0;
}
}
}  

路過

雞蛋

鮮花

握手

雷人

發(fā)表評(píng)論 評(píng)論 (1 個(gè)評(píng)論)

回復(fù) NAROTOHINATA 2017-5-17 17:13
如有錯(cuò)誤,望幫忙改正!

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

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

返回頂部