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

相关推荐
iCxhust27 分钟前
Proteus8.3打开前期项目版本的方法和步骤
proteus
xyx-3v2 小时前
SPI四种工作模式
stm32·单片机·嵌入式硬件·学习
qiuiuiu4132 小时前
正点原子RK3568学习日志6-驱动模块传参
linux·c语言·开发语言·单片机·学习
BreezeJuvenile3 小时前
实验二 呼吸灯功能实验
stm32·单片机·嵌入式系统·流水灯·实验
北京阿尔泰科技厂家6 小时前
CPCIe-76F1G控制器:国产化高性能嵌入式解决方案
嵌入式硬件·控制器·工业自动化·数据采集卡·国产化控制器
Truffle7电子6 小时前
STM32【H7】理论——通信
stm32·单片机·嵌入式硬件
zhonghaoxincekj6 小时前
晶体管的定义,晶体管测量参数和参数测量仪器
功能测试·单片机·学习·测试工具·单元测试·制造
MAR-Sky6 小时前
keil5使用STlink下载程序到stm32后不自动运行的解决办法
stm32·单片机·嵌入式硬件
Blossom.1186 小时前
把AI“浓缩”到1KB:超紧凑型决策树在MCU上的极限优化实战
人工智能·python·单片机·深度学习·决策树·机器学习·数据挖掘
深圳市青牛科技实业有限公司8 小时前
在电力系统、电子设备制造等领域,变压器测试感量,电桥内阻如何选择
嵌入式硬件·音视频·制造·立体声收录机·盒式录音机·电子烟