單片機數碼管#擴展三位數碼管電路,完成0-999遞增或遞減計數功能,遞減間隔200ms左右

這次給大家分享一個三位數碼管實現0-999倒計時器

所需元器件如下:

AT89C51芯片 *1
12MHz晶振 *1
33pF電容 *2
10uF電解電容 *1
10K電阻 *1
200Ω電阻 *21
單位7段數碼管 *3

代碼如下:

#include"reg51.h"//此文件中定義了單片機的一些特殊功能寄存器

void DelayMs(unsigned int x);//延時函數聲明
unsigned char code Ledcode[16]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};//定義字符型數組

void DelayMs(unsigned int x)//定義延時函數
{
	unsigned char i;
	while(x--)
	{
		for(i=0;i<120;i++);//大約1ms
	}
}

void main()
{
	unsigned int i,disp;//定義兩個無符號整型變量i 和 disp
	while(1)
	{
		disp=999;//設置999的倒計時
		for(i=0;i<1000;i++)
		{
			P0=Ledcode[disp/100];//把百位數的值賦給P0口,即第一位數碼管
			P2=Ledcode[disp/10%10];//把十位數的值賦給P2口,即第二位數碼管
			P3=Ledcode[disp%10];	//把個位數的值賦給P3口,即第三位數碼管				
			disp--;//實現倒計時自減
			DelayMs(200);//延時200ms
		}
	}
}

仿真電路圖如下:
在這裏插入圖片描述
程序可以稍做修改,改變disp的值可以實現想要任何數值的初始值,還可以把倒計時改成累加器的形式,只需要改變disp的初始值,還有把disp–改成disp++,數值隨着時間的變化有序增加,改變DelayMs的值可以實現時間間隔的增減。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章