基于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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
ytttr8735 小时前
基于STM32和W5500芯片的Modbus TCP协议栈实现
stm32·嵌入式硬件
上大科技蔡生6 小时前
CS5715:2.7V~26V宽输入,单节锂电池适用,最高36V输出,省掉电感电流检测电阻,软启动时间可调,异步升压DCDC控制器
单片机·嵌入式硬件·dcdc
CQ_YM6 小时前
51单片机(1)
单片机·嵌入式硬件·51单片机
qq_401700417 小时前
单片机之ADC(模拟数字转换器)
单片机·嵌入式硬件
无事好时节7 小时前
51 单片机GPIO / 按键 / 中断 / 定时器 / PWM
单片机·嵌入式硬件
一枝小雨9 小时前
【OTA专题】17 打通Bootloader与App逻辑之间的通信
stm32·单片机·嵌入式·流程图·freertos·ota·bootloader
2401_8633186311 小时前
基于单片机的家庭防盗报警系统
单片机·嵌入式硬件
一枝小雨11 小时前
【OTA专题】18 OTA性能优化:优化bootloader存储空间与固件完整性校验(CRC)
stm32·单片机·性能优化·嵌入式·freertos·ota·bootloader
iYun在学C11 小时前
驱动程序(注册字符设备)
linux·嵌入式硬件
尼喃11 小时前
PW2605Z,专为系统安全护航的高可靠性负载开关
stm32·单片机·嵌入式硬件