欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

使用51单片机实现从99到00的倒计时秒表仿真设计

最编程 2024-02-05 21:56:19
...

基于51单片机倒计时秒表99-00仿真设计

这里写目录标题

  • 基于51单片机倒计时秒表99-00仿真设计
    • 讲解视频
    • 功能说明:
    • 仿真电路
    • 程序
      • 主函数
      • 数码管显示
    • 百度云下载链接

(源码+仿真)

仿真原版本:proteus 7.8

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:S0017

讲解视频

仿真讲解+代码讲解

基于51单片机的反向计时倒计时秒表protues仿真设计

功能说明:

该设计为99-0秒反向计时的秒表,能够通过数码管或液晶显示读秒,该系统主要包括单片机最小系统、显示单元、定时计数器设计。

系统要求启动秒表后,从99开始计时,计到0秒停止,中途可以通过按键控制暂停/继续读秒,复位后能够重新从99开始读秒。

仿真电路

倒计时开始

img

倒计时到62秒

img

程序

主函数

主要完成定时器,外部中断的初始化和循环显示倒计时数值。

void main()
{
	EA=1;	//开总中断
	EX0=1;//外部中断0
	EX1=1;//外部中断1
	IT0=1;//设置下降沿触发中断0
	IT1=1;//设置下降沿触发中断1
	TMOD=0X01;//T0的工作模式为模式1
	TH0=(65536-50000)/256;	 
	TL0=(65536-50000)%256;//12M晶振 定时器1定时50毫秒溢出初值
	ET0=1; //允许定时器1中断
	TR0=1;//启动定时器0  
	sec_cnt =0;
	while(1)
	{	
		led_sacn();				  		//数码管显示,时刻刷新

		if(flag1s&&state)						//一秒执行一次
		{
			flag1s=0;
			if(sec_cnt<99){
			  sec_cnt++;			//秒数递增
			}

		}
	}
}

数码管显示

void led_sacn()
{

		
	seg_disp(sec_cnt/10,0);//显示W0控制的数码管 时刻刷新
	seg_disp(sec_cnt%10,1);//显示W1控制的数码管


}

void seg_disp(uchar number,uchar wei)//数码管动态显示程序 wei代表数码管W0 W1 W2 W3的位选
{
	P0=0XFF;//清零,防止重影
	if(wei == 0){//显示第一位
		W0=0;
		W1=1;
		P0=seg_du[number];
		delay_ms(2);
		W0=1;
	}
	if(wei == 1){//显示第二位
		W0=1;
		W1=0;	
		P0=seg_du[number];
		delay_ms(2);
		W1=1;
	}

}

void delay_ms(ms)	  //延时 大概精度
{
	uchar value=ms,i;
	while(value--) 
	for(i=0;i<110;i++);
}

百度云下载链接

  1. 常见使用问题及解决方法–必读!!!!
  2. 源程序
  3. proteus仿真
  4. 功能说明
  5. 讲解视频
  6. 开题报告
    Altium Designer 安装破解
    KEIL+proteus 单片机仿真设计教程
    KEIL安装破解
    Proteus元器件查找
    Proteus安装
    Proteus简易使用教程
    单片机学习资料
    相关数据手册
    答辩技巧
    设计报告常用描述
    鼠标双击打开嘉盛单片机51 STM32单片机课程毕业设计.url
    在这里插入图片描述

----下载----