单片机==数码管用delay函数显示时钟(5)

来源:互联网 发布:看电影视频软件 编辑:程序博客网 时间:2024/05/20 20:03

目的

在数码管上显示时钟

包含的文件

//seg.c#include <reg52.h>#include <intrins.h>#include "delay.h"#define SEGPORT P0sbit bit_select = P2^0;sbit seg_select = P2^1;unsigned char bitdata[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char segdata[8] = {0x3f,0x3f,0x40,0x3f,0x3f,0x40,0x3f,0x3f};unsigned char changedata[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void main(){      unsigned char i;      unsigned char j;      unsigned char sec = 0;      unsigned char min = 0;      unsigned char hour = 0;      while(1)      {            for(i = 0; i < 63; i++)            {                for(j = 0; j < 8; j++)                {                    SEGPORT = 0x0;                    seg_select = 1;                    seg_select = 0;                    SEGPORT = 0xff;                    bit_select = 1;                    bit_select = 0;                    SEGPORT = segdata[j];                    seg_select = 1;                    seg_select = 0;                    SEGPORT = bitdata[j];                    bit_select = 1;                    bit_select = 0;                    delay_ms(2);                }         }         sec++;                      if(sec < 60)         {              segdata[7] = changedata[sec % 10];              segdata[6] = changedata[sec / 10];     }         else         {             segdata[7] = 0x3f;             segdata[6] = 0x3f;             sec = 0;             min++;         }         if(min < 60)         {                segdata[4] = changedata[min % 10];                segdata[3] = changedata[min / 10];         }         else         {                segdata[4] = 0x3f;              segdata[3] = 0x3f;              min = 0;              hour++;         }         if(hour < 24)         {              segdata[1] = changedata[hour % 10];              segdata[0] = changedata[hour / 10];         }         else         {              segdata[1] = 0x3f;              segdata[0] = 0x3f;              hour = 0;         }     }}
//delay.cvoid 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_Hextern void delay_us(unsigned char t);extern void delay_ms(unsigned char t);extern void delay_s(unsigned char t);#endif
0 0