⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 digitalscanningsubroutine.txt

📁 四位数码管扫描子程序
💻 TXT
字号:
/*************************************************************************
          半小时的倒计时程序,四位数码管扫描子程序
***************************************************************/
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uint shu;//因为定时四位数最多可以定时9999秒,所以要定义uint型的变量
uchar tt;
uchar code leddata[11]={0xc0,0xf9,0xa4,0xb0,	// 0, 1, 2, 3
	0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off 字型码
void delay(uint z);//延时程序声明
void xianshi();//显示子程序声明
void main()//进入主程序
{
	shu=1800;//倒计时初值(开始时间),单位秒。1800秒=1分钟(60秒)X30分=半小时。:)
    tt=0;
	EA=1;	//开主中断
  	TMOD=0x01;//设置定时器0为工作方式1
	TH0=(65536-50000)/256; //高8位装入65536-50000对256求莫的数值
   	TL0=(65536-50000)%256; //低8位装入65536-50000对256求余的数值
	ET0=1;//开中断0
	TR0=1;//运行控制位,为1时T0开始工作,为0时T0停止工作
	while (1)
	{
		xianshi();//调用显示子程序
	}	
	
}
//中断服务程序//定时器服务程序
void exter0() interrupt 1  //和中断写法一样,最后的标号不同。1和3是计数器/定时器;0和2是外部中断。
	{
		TH0=(65536-50000)/256;//高8位装入65536-50000对256求莫的数值
   		TL0=(65536-50000)%256;//低8位装入65536-50000对256求余的数值
		tt++;//定时器计时到了就给tt+1
	} 
/**************延时程序***************/
void delay(uint z)//延时程序
	{
		uint x,y;
		for(x=z;x>0;x--)
			for(y=11;y>0;y--);
	}
/****四位数码管扫描显示子程序*********/
void xianshi()//显示子程序
	{
		uchar qian,bai,shi,ge;//定义四个变量qian,bai,shi,ge。
		qian=shu/1000;//千位显示的是shu对1000求莫
		bai=shu%1000/100;//百位
        shi=shu%100/10;
  		ge=shu%10;
		
		P2=0xef;		//开千位位选   11101111
		P0=leddata[qian];//千位段码
        delay(2);//延时
        P0=0xff;//消隐

        P2=0xdf;         //开百位  11011111
        P0=leddata[bai];
        delay(2);
		P0=0xff;//消隐
        P2=0xbf;            //10111111
        P0=leddata[shi];
        delay(2);
		P0=0xff;//消隐
        P2=0x7f;
        P0=leddata[ge];
        delay(2);
		P0=0xff;//消隐		
	
		if(tt==20)//如果tt等于20(定时器定时1秒)就给tt清零并给shu减一。
        {	
			tt=0;
			shu--;	
 		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -