龙空技术网

单片机入门-C51语言采用定时器中断方法设计LCD电子钟解说

灵思致远IT学苑 198

前言:

目前看官们对“c语言电子钟”大概比较关切,大家都需要剖析一些“c语言电子钟”的相关资讯。那么小编同时在网摘上汇集了一些有关“c语言电子钟””的相关资讯,希望姐妹们能喜欢,我们一起来学习一下吧!

单片机入门-C51语言采用定时器中断方法设计LCD电子钟视频教程如下:

视频加载中...

本文采用定时器中断的方法先产生50毫秒的信号,计数20次得到1秒的时钟信号,作为电子钟设计的基础。

采用中断法的定时器/计数器的运用总结如下:

1。计算计数初值:

计数值=定时的时间/机器周期 50ms/1us=50000

初值X=最大计数值M-计数值; 65536-50000=15536 (0x3cb0)

2.TMOD寄存器的设置:

GATE C/T M1 M0 GATE C/T M1 M0

0 0 0 0 0 0 0 1 (0x01)

3.TCON寄存器的设置:

主要关注TR1/TR0 TR0=1

4.打开中断(含定时器中断和总中断)

5。中断服务函数的编程

代码如下:

#include "lcd12864.h"

unsigned char count=0;

unsigned char hour=15,minute=59,second=34;

unsigned char CLOCK[]="15:59:34";

void timer0() interrupt 1

{

TH0=0x3c;//T0 15536-->65536 =50ms

TL0=0xb0;

count++;

if(count==1)//1S

{

count=0;

second++;

if(second==60)

{

second=0;

minute++;

if(minute==60)

{

minute=0;

hour++;

if(hour==24)

{

hour=0;

}

}

}

}

}

void main()

{

TMOD=0x01;

TH0=0x3c;//T0 15536-->65536 =50ms

TL0=0xb0;

ET0=1;//T0

EA=1;

TR0=1;//启动定时器

lcd_init(); //液晶初始化

lcd_clr();

while(1)

{

CLOCK[0]=hour/10+0x30;

CLOCK[1]=hour%10+0x30;

CLOCK[3]=minute/10+0x30;

CLOCK[4]=minute%10+0x30;

CLOCK[6]=second/10+0x30;

CLOCK[7]=second%10+0x30;

printchars(0,0,CLOCK,0);

}

}

标签: #c语言电子钟