使用单片机的定时器0和中断实现9到0的倒计时功能,并用数码管显示
来源:互联网 发布:js 字符串函数大全 编辑:程序博客网 时间:2024/05/16 01:35
C程序代码源程序如下:
/*
本程序使用单片机的定时器0和中断实现9到0的倒计时功能,并用数码管显示*/
#include <reg52.h>
#define uchar unsigned char //宏定义
#define uint unsigned int
uchar num1=9,shu;
uchar num;
sbit dula = P2^6; //段选,申明U1锁存器的锁存端,锁存器使用的是74HC573
sbit wela = P2^7; //位选,申明U2锁存器的锁存端,锁存器使用的是74HC573
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71}; //数组,用于数码管显示数字的数字集,从0到F
/*
延时函数
*/
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/*
数码管显示函数
*/
void display(uchar x)
{
dula = 1; //打开U1锁存器,用于控制显示的数据
P0 = table[x];//送入数据到锁存器U1,送入段选信号,显示什么数字
dula = 0; //关闭U1锁存器
P0 = 0xff; //消影,因为P0口任然保持上次的数据
wela = 1; //打开U2锁存器,用于控制哪个数码管亮
P0 = 0xfe; //让最左边的数码管亮
wela = 0; //关闭U1锁存器
delayms(5); //延时五个毫秒
}
/*
主函数
*/
void main()
{
TMOD = 0x01; //设置定时器0在工作方式1
TH0 = (65536-45872)/256;//装初值,50ms申请一次中断
TL0 = (65536-45872)%256;
EA = 1; //开总中断
ET0 = 1; //开定时器0中断
TR0 = 1; //启动定时器0
while(1) //程序在这里不停的对数码管动态扫描同时等待中断发生
{
display(shu);
}
}
/*
中断函数
*/
void T0_time() interrupt 1 //1号中断,定时器0的中断号
{
TH0 = (65536-45872)/256;//装初值,50ms申请一次中断
TL0 = (65536-45872)%256;
num++; //申请一次中断num加1一次
if(num==20) //num加到20时,50*20=1000ms,说明一秒钟到了
{
num=0;
num1--;
if(num1==0)
num1=9;
shu=num1; //把num赋给shu,送给display(shu)数码管显示子函数
}
}
1 0
- 使用单片机的定时器0和中断实现9到0的倒计时功能,并用数码管显示
- 用单片机定时器和数码管实现的电子时钟
- PIC单片机-利用Timer2定时器的溢出中断实现动态扫描数码管
- 单片机编程:让led数码管显示数字0到9
- lesson3~数码管的静态显示&定时器&中断的应用
- 单片机:按键(使用中断)控制数码管的数字加减(c语言实现)
- 单片机控制的数码管显示
- 51单片机 数码管的静态显示和动态显示
- 单片机实验——0到60秒的计时器(使用硬件中断方式实现)
- 单片机 数码管0~F显示
- 51单片机的定时器0和串口同时使用问题
- 外部中断和数码管动态显示的应用
- 【数码管/定时器/中断】一个定时器控制数码管显示
- 数码管流动显示(自己的单片机)
- 单片机之数码管秒表的动态显示
- C51单片机数码管的显示代码
- 51单片机 数码管的显示与译码器
- 51单片机数码管的动态显示
- tornado入门 - 模板
- Virtualbox-debian 8 调整屏幕分辨率
- hdu1846——Brave Game(巴什博奕)
- 单例
- Hackerrank :Gena Playing Hanoi
- 使用单片机的定时器0和中断实现9到0的倒计时功能,并用数码管显示
- Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.
- 39-Remove Duplicates from Sorted Array
- Hibernate实现数据的增删改查(CRUD)操作
- 【HUSTOJ】1000: 一个伟大的题
- 搜索数据库某列名
- Hdu 1372 Knight Moves
- 笔记3:FileWebRequest 与 FileWebResponse
- css3 实现3D导航栏