美文网首页
单片机实例---定时器控制点阵显示0~9

单片机实例---定时器控制点阵显示0~9

作者: 飞向深空 | 来源:发表于2018-11-24 11:34 被阅读0次

显示状态:点阵上每隔1s显示一个数字,显示到9又重头显示不断循环

#include<reg52.h>
#include<intrins.h>

typedef unsigned int u16;
typedef unsigned char u8;

u8 flag=0;   //时间标志位

#define lie_io P0    //定义P0端口

sbit RCLKK = P3^5;    
sbit SRCLK = P3^6;
sbit SER = P3^4;   //串行输入

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

unsigned char code hang[10][8] = {
                    
    {0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}, //0

    {0x00,0x00,0x00,0x00,0x21,0x7f,0x01,0x00}, //1

    {0x00,0x00,0x27,0x45,0x45,0x45,0x39,0x00}, //2

{0x00,0x00,0x22,0x49,0x49,0x49,0x36,0x00}, //3

{0x00,0x00,0x0c,0x14,0x24,0x7f,0x04,0x00}, //4

{0x00,0x00,0x72,0x51,0x51,0x51,0x4e,0x00}, //5

{0x00,0x00,0x3e,0x49,0x49,0x49,0x26,0x00}, //6

{0x00,0x00,0x40,0x40,0x40,0x4f,0x70,0x00}, //7

{0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}, //8

{0x00,0x00,0x32,0x49,0x49,0x49,0x3e,0x00}, //9

};



void HC595_sendbyte(u8 dat) //数据发送到HC595
{
    u8 i;
    RCLKK = 0;
    SRCLK = 0;
    for(i=0;i<8;i++){
        SER = dat>>7;
        dat<<=1;

        SRCLK = 1;
        _nop_();
        _nop_();
        SRCLK = 0;
    }
    RCLKK = 1;
    _nop_();
    _nop_();
    RCLKK = 0;
}

void timer0_init() //1ms
{
    
    TMOD |= 0x01;
    TH0 = 0x0fc;
    TL0 = 0x18;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}
void delay(u16 i)
{
    while(i--);
}
void main()
{
    u8 j,i;
    timer0_init();
    while(1){
        if(flag==1)     //flag=1,以为着到1s了
        {
            for(j=0;j<8;j++)     //到1s开始显示数字
            {
                HC595_sendbyte(0x00);   //消隐
                lie_io = lie[j];
                HC595_sendbyte(hang[i][j]);
                delay(200);
            }
            flag=0;    //flag再变为0,为下一次表示1s到做准备
            i++;    //i是用来表示显示哪个数字的
        }

        if(i==10)  //当数组都显示完了,i=0重头不断循环显示
        {
            i= 0;   
        }
    }


}

void timer0() interrupt 1
{
    static u16 i;
    TH0 = 0x0fc;
    TL0 = 0x18;
    i++;
    if(i==1000){  //1000个毫秒等于1s 
        i=0;
        flag = 1; //1秒到了
    }   
}


相关文章

  • 单片机实例---定时器控制点阵显示0~9

    显示状态:点阵上每隔1s显示一个数字,显示到9又重头显示不断循环

  • 实验一-沈正浩-0214

    8*8LED点阵实验——显示SDNU 一、单片机使用过程 使用单片机的LED点阵,将单片机和电脑连接好,且用kei...

  • 实验一 李小东0105

    实验目的:为了进一步掌握单片机中点阵的使用,理解单片机的工作原理,实现在单片机上实现显示 实验器材:keil、单片...

  • 实验一 王慧敏0235

    实验目的:为了进一步掌握单片机中点阵的使用,理解单片机的工作原理,实现在单片机上实现显示 实验器材:keil、单片...

  • 2018-05-13 8*8LED点阵显示的实验——显示I♡S

    8*8LED点阵显示的实验——显示I♡SDNU 教育学部电教本1601柳珏玺 201612030101 一、单片机...

  • 实验一关震0138

    一、实验目的:为了进一步掌握单片机中点阵的使用,理解单片机的工作原理,实现在单片机上实现显示 二、实验器材:kei...

  • 实验1-杨鑫鑫-0211

    实验目的: 为了进一步掌握单片机中点阵的使用 理解单片机的工作原理 实现在单片机上实现显示 I♥U 实验器材: k...

  • 第十三章出题—填空

    在单片机的定时器/计数器中的TMOD用于选择T0、T1的_____和_____,而TCON用于控制T0、T1的__...

  • 第十三章出题—填空

    在单片机的定时器/计数器中的TMOD用于选择T0、T1的_____和_____,而TCON用于控制T0、T1的__...

  • 实验一 卞小倩0217

    一、实验目的 1.了解LED8×8点阵的内部结构。 2.学会编写点阵显示实验的代码程序。 3.连接单片机进行实验结...

网友评论

      本文标题:单片机实例---定时器控制点阵显示0~9

      本文链接:https://www.haomeiwen.com/subject/diieqqtx.html