单片机码表的驱动程序

发布者:Yuexiang最新更新时间:2019-08-15 来源: eefocus关键字:单片机  码表  驱动程序 手机看文章 扫描二维码
随时随地手机看文章


#include

#include "./delay/delay.h"

 

#define SEGPORT P0

 

sbit start = P1^0;

sbit end = P1^1;

sbit seg_select = P2^1;        

sbit bit_select = P2^0;          

 

unsigned char flag = 1;

unsigned char duanma[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};               

unsigned char weima[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 

unsigned char TempData[8];

 

unsigned char shi = 0, fen = 0, miao = 0;

 

void display()

{

  static unsigned char i = 0;

  SEGPORT = 0x0;

  seg_select = 1;

  seg_select = 0;

  

  SEGPORT = 0xff;

  bit_select = 1;

  bit_select = 0;

  SEGPORT = TempData[i];

  seg_select = 1;

  seg_select = 0;

  

  SEGPORT = weima[i];

  bit_select = 1;

  bit_select = 0;

  

i++;

  if(8 == i)

{

i = 0;

    }  

}

 

void time0_init(void)

{

  EA = 1;             

  TMOD |= 0x01;

  TH0 = (65536 - 2000) / 256;

  TL0 = (65536 - 2000) % 256;   

  ET0 = 1;           

  TR0 = 1;

   

 

}

 

void time0_isr() interrupt 1

{

static unsigned char i = 0;

    TH0 = (65536 - 200) / 256;

  TL0 = (65536 - 200) % 256;    

  i++;

  

if(flag)

{

if(50 == i)

{

i = 0;

miao++;

if(60 == miao)

{

 

miao = 0;

fen++;

if(60 == fen)

{

fen = 0;

shi++;

if(24 == shi)

{

shi = 0;

}

}

}

}

}

TempData[0] = duanma[shi / 10];

TempData[1] = duanma[shi % 10];

TempData[2] = 0x40;

TempData[3] = duanma[fen / 10];

TempData[4] = duanma[fen % 10];

TempData[5] = 0x40;

TempData[6] = duanma[miao / 10];

TempData[7] = duanma[miao % 10];

}

 

void time1_init(void)

{

    EA = 1;                               

  TMOD |= 0x10;                        

  TH1 = (65536 - 2000) / 256;

  TL1 = (65536 - 2000) % 256;          

  ET1 = 1;                            

  TR1 = 1;                             

 

}

 

void time1_isr() interrupt 3             

{

    TH1 = (65536 - 2000) / 256;

  TL1 = (65536 - 2000) % 256; 

    

  display();

}

                

 

void main()

{

  time1_init();

time0_init();

  

  while(1)

{

  

if(0 == start)

{

  while(!start);    //È¥¶¶¶¯

delay_ms(10);

while(!start);

if(0 == flag)

{

flag = 1;

}

else

{

flag = 0;

}

}

if(0 == end)

{

while(!end);         //È¥¶¶¶¯

delay_ms(10);

while(!end);

shi = 0;

fen = 0;

miao = 0;

}

}

}

 

/*****delay.c***********/

void delay_us(unsigned char t)

{

while(--t);

}

 

void delay_ms(unsigned char t)

{

while(t--)

{

delay_us(245);

delay_us(245);

}

}

 

void delay_s(unsigned char t)

{

    while(t--)

{

        delay_ms(200);

delay_ms(200);

  delay_ms(200);

delay_ms(200);

  delay_ms(200);

}

}

 

/****delay.h*******/

#ifndef _DELAY_H_

#define _DELAY_H_

 

extern void delay_us(unsigned char t);

extern void delay_ms(unsigned char t);

extern void delay_s(unsigned char t);

 

#endif


关键字:单片机  码表  驱动程序 引用地址:单片机码表的驱动程序

上一篇:51单片机串口通信的驱动程序
下一篇:单片机之矩阵键盘的驱动程序

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved