基于AVR128单片机抢答器proteus仿真设计

一、系统方案

二、硬件设计

原理图如下:

三、单片机软件设计

1、首先是系统初始化

void timer0_init() //定时器初始化

{

TCCR0=0x07; //普通模式,OC0不输出,1024分频

TCNT0=f_count; //初值,定时为10ms

TIFR=0x01; //清中断标志位

TIMSK=0x01; //使能定时器0溢出中断

SREG|=0x80; //开启全局中断

}

2、数码管显示程序

void Smg_Dispaly(uchar Value1,uchar Value2,uchar Num)

{

if(SmgCnt == 0)

{

PORTB = 0xFF;

PORTB = Smg_Duan[Value1/10];

PORTA = Smg_Wei[0];

}

else if(SmgCnt == 1)

{

PORTB = 0xFF;

PORTB = Smg_Duan[Value1%10];

PORTA = Smg_Wei[1];

}

else if(SmgCnt == 2)

{

}

else if(SmgCnt == 3)

{

PORTB = 0xFF;

PORTB = Smg_Duan[Value2/10];

PORTA = Smg_Wei[3];

}

else if(SmgCnt == 4)

{

PORTB = 0xFF;

PORTB = Smg_Duan[Value2%10];

PORTA = Smg_Wei[4];

}

else if(SmgCnt == 5)

{

}

else if(SmgCnt == 6)

{

}

else if(SmgCnt == 7)

{

PORTB = 0xFF;

PORTB = Smg_Duan[Num];

PORTA = Smg_Wei[7];

}

if(++SmgCnt >= 8)

SmgCnt = 0;

}

3、按键程序

if(PINC == 0xFF)

{

Kcnt = 0;Kflag = 0;

}

else if(Kflag == 0)

{

if(++Kcnt >= 3)

{

Kflag = 1;Kcnt = 0;timer = 0;

PORTE =~ PORTE;

if(DownCnt == 0)

{

复制代码
		    switch(PINC)
  		    {
              case 0xFE: ValueNum = 1;  ValueFlag = 1;break;
              case 0xFD: ValueNum = 2;  ValueFlag = 1;break;
              case 0xFB: ValueNum = 3;  ValueFlag = 1;break;
              case 0xF7: ValueNum = 4;  ValueFlag = 1;break;
              case 0xEF: ValueNum = 5;  ValueFlag = 1;break;
              case 0xDF: ValueNum = 6;  ValueFlag = 1;break;
              case 0xBF: ValueNum = 7;  ValueFlag = 1;break;
              case 0x7F: ValueNum = 8;  ValueFlag = 1;break;
              default: break;
            }
			
		  } 

4、核心算法程序

#pragma interrupt_handler timer1_ovf_isr:15

void timer1_ovf_isr(void)

{

static uchar cnt = 0;

if(StartFlag == 0)

{

cnt = 0;

}

if(++cnt >= 200)

{

cnt = 0; // 定时器定时5ms,计数200次为1s

if(StartData == 0)

{

SecFlag = 1; // 秒信号

}

}

TCNT1H = (65535-500)/256;

TCNT1L = (65535-500)%256;

Smg_Dispaly(ValueCnt,ValueTmr,ValueNum);

}

四、proteus仿真设计

Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
Zeku7 小时前
20251125 - 韦东山Linux第三篇笔记【上】
linux·笔记·单片机
芯联智造10 小时前
【stm32简单外设篇】- 单路 TTP223 电容式触摸传感器
c语言·stm32·单片机·嵌入式硬件
张工在路上10 小时前
(深入探讨句柄泄漏、内存泄漏检测工具)我将分析可能导致内存泄漏(包括托管内存和非托管内存,如句柄泄漏)
stm32·单片机·嵌入式硬件
工程师平哥12 小时前
APE-01 新建工程
笔记·嵌入式硬件
恒锐丰小吕12 小时前
无锡黑锋 HF6206 系列低压差线性稳压器技术解析
嵌入式硬件·硬件工程
周周记笔记16 小时前
[元器件专题] RC充电电路(七)
嵌入式硬件·测试工具·硬件开发
ACP广源盛1392462567316 小时前
GSV2712@ACP#2 进 1 出 HDMI 2.0/Type-C DisplayPort 1.4 混合切换器 + 嵌入式 MCU
单片机·嵌入式硬件·计算机外设·音视频
沉在嵌入式的鱼16 小时前
STM32--GY906体温检测传感器
stm32·单片机·嵌入式硬件·gy906·体温检测
cooldream200916 小时前
基于 RISC-V VisionFive 的桌面数字时钟项目实战
嵌入式硬件·risc-v·嵌入式开发
小李做物联网17 小时前
26.3基于stm32单片机毕业设计物联网软硬件智能遮阳棚设计
stm32·单片机·嵌入式硬件·物联网