用定时器以间隔500MS在6位数码管上依次显示0到F 联系客服

发布时间 : 星期五 文章用定时器以间隔500MS在6位数码管上依次显示0到F更新完毕开始阅读24131eefaa00b52acec7ca00

用定时器以间隔500MS在6位数码管上依次显示0,1,2,3….C,D,E,F 说明:本程序是基于郭天祥老师的TX-1C实验板设计,晶振值为12MHZ

#include //52系列单片机头文件

#define uint unsigned int #define uchar unsigned char

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; sbit dula=P2^6; //声明U1锁存器的锁存端 sbit wela=P2^7; //声明U2锁存器的锁存端 uchar t0,a;

void intt(); //声明初始化函数 void display(); //声明显示子函数 void delay(uint x) //延时 { uint i,j; for(i=x;i>0;i--) for(j=100;j--;j>0); }

void main() {

a=0; //设初值 intt(); while(1) { }

void intt() //初始化函数 {

TMOD=0x01;

//设置定时器0为工作方式

}

TH0=(65536-50000)/256; //装初值50ms一次中断 TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1; }

void T0_timer()interrupt 1 {

TH0=(65536-50000)/256; //重装初值

//开总中断

//开定时器0中断

//启动定时器0

TL0=(65536-50000)%6; t0++; {

// 如果到了10次,说明500ms时间到

if(t0==10) {

t0=0; //把t0清0重新再计20次

display(); //调用显示子函数

a++;

if(a==16) //a=16,说明已经显示到F a=0;

//重新从0开始显示

}

} }

void display() {

dula=1;

P0=table[a]; //送段选数据 dula=0; P0=0xff; wela=1; P0=0xc0;

//送位选数据

//显示子函数

}

wela=0; delay(5);