当前位置:
文档之家› 基于单片机的简易抽签器的设计
基于单片机的简易抽签器的设计
本该抽签器的设计,可以进行某一种题目的题号抽签,并且最多 可以扩展到两种题号的随机抽取,例如某一课程考试的上机考试题目以 及理论考试题目。
1 ATmega16 单片机介绍 本设计采用的单片机属于美国 ATMEL 公司的 AVR 系列单片机。 AVR 系列单片机主要是在 51 型单片机内核的基础上,结合 ATMEL 公 司的 FLASH 存储技术发展而来的。其主要型号有低档机 ATtiny、中档 机 AT90 以及高档机 ATmega 系列。ATmega 系列单片机继承了 AT90 系列单片机的优点,另外增加了一些接口的功能,同时在稳定性、 抗干扰性以及节约能耗方面更加完善。本设计采用高档机 ATmega 系 列中的 ATmega16 单片机为控制核心。ATmega16 属于 ATmega 系 列单片机的一个子集 (ATmega 系列主要包括 ATmega8/ATmega16/ ATmega32/ATmega64/ATmega128 等几个子集),其内部集成了较 大容量的存储器和丰富的硬件电路,且支持 C 语言编程。 ATmega16 是基于增强的 AVR RISC 结构的低功耗 8 位 CMOS 微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达 1MIPS/MHz,从而可以减缓系统在功耗和 处理速度之间的矛盾。 ATmega16 单片机内核具有丰富的指令集和 32 个通用工作寄存 器。所有的寄存器都直接与运算逻辑单元 (ALU) 相连接,使得一条指 令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提 高了代码效率,并且具有比普通的 CISC 微控制器最高至 10 倍的数据 吞吐率。 2 硬件电路设计 首先,利用单片机的外中断功能,采用按键进行抽签器的题号抽 取。ATmega16 单片机共设有 3 个外部中断源,分别是 INT0、INT1 和 INT2,这 3 个外中断源对应的外部引脚分别是 PD2、PD3 和 PB2 引脚。根据接口节约的原则,本设计中使用 INT0 和 INT1,分别占用 PD2 和 PD3 两个引脚连接两个按钮,一个抢答按钮,一个复位按钮。 另外,抢答题号需要由显示装置显示出来,本设计采用数码管进行题号 的显示。由于采用数码管动态扫描显示需要占用单片机的两个接口,分 别控制数码管的字形和字位的显示,所以分配 PA 口为数码管的字形控 制端口,PB 口为字位控制端口。 下图为本设计的硬件电路连接示意图。
36 2012 年 9 月( 上 )
{ PORTB=0xFF; DDRB=0xFF; PORTD=0x00; DDRA=0xFF; PORTA=0x00; TCCR0=0x02; //T/C0 采用普通模式工作,采用 8 分频 TCNT0=0x06; // 计数初始值 GICR|=0xC0; // 外中断 INT0 和 INT1 允许进行中断 MCUCR=0x0A;//INT0 和 INT1 的中断触发有效形式均为下降沿 触发中断 MCUCSR=0x00; GIFR=0xC0; TIMSK=0x01; // 定时器中断允许 #asm("sei") // 全局中断开放 while(1) { bcd(); display(); };// 数码管动态扫描显示 } 4 结语 利用单片机为主控核心设计的简易抽签器,具有设备简单、操作 方便、价格低廉等优点,可以广泛应用于比赛顺序的确定、上机考试题 号的抽取等场合。
基于单片机的简易抽签器的设计
作者: 作者单位: 刊名:
英文刊名: 年,卷(期):
王新娜, 孙新凤 保定电力职业技术学院,河北保定 071051
科技风 Technology Wind 2012(17)
本文链接:/Periodical_kjf201217019.aspx
时器有两个,分别是 T/C0 和 T/C2,而 T/C1 是 16 位的定时器 / 计数
器。T/C0 和 T/C1 都具有定时、计数、PWM 功能,而 T/C2 具有定时、
实时时钟、PWM 等功能。本设计选择使用 8 位定时器 T/C0 进行定时
控制,使 T/C0 工作于溢出计数方式下,定时时间为 10 微秒 (该时间
(下转第 36 页)
26 2012 年 9 月( 上 )
第六步:保温反应 1h 后加入循环母液冷却结晶,在凝固点以上 1 ~2℃加入晶种,缓慢冷却至 25℃左右,经抽滤或离心分离制得产品。
3) 结晶釜的分程控制系统: 将备用氯化液抽入结晶釜,在结晶釜内先开蒸汽阀升温到 85~90 ℃,启动搅拌,用冷却水阀 1 将料温降至 60 ℃时,向釜内加入晶种约 10kg,关闭冷却水阀 1,自然搅拌降温,并根据釜内料液情况,再加母 液 700~800kg。当料温降至 48℃时,开水冷阀 2 却直至物料降至 25 ℃时,即可被离心分离使用。 4) 反应釜压力监测,正常状况下压力为 39.997~46.663kPa,当 压力超过 59.995 kPa时,为非正常状态,系统报警,并设定联动阀门 控制。 6 自动化完备度 对照 《国家安全监管总局关于公布首批重点监管的危险化工工艺 目录的通知》,生产装置自动化控制系统完备度如下所述。 6.1 反应釜温度和压力的报警和联锁 控制情况: 1) 氯化反应为气液接触放热反应,放热主导因素为氯气进量,通 过控制氯气流速可实现控制反应釜温度。氯乙酸氯化反应釜温度采用 Pt100 一体化温度变送器,通过单回路自适应 PID 控制算法,控制液氯 汇流排出口气动控制阀开闭,达到控制反应釜温度的目的。当温度超过 设定值时,自动切断液氯汇流排出口阀门和氯气分配器进口管道阀门。 2) 氯化反应釜压力信号采用压力变送器,自适应 PID控制算法控 制压力目标值,采用限位控制方式控制液氯汇流排出口气动控制阀开闭 和氯气分配器控制阀开闭。液氯汇流排出口及氯气缓冲罐出口采用气动 调节阀配 DKZ 系列执行器。当温度超过高限设定值时,发出报警信号, 若釜内压力继续升高达到高高限设定值时,自动切断液氯汇流排出口阀 门。 3) 氯气缓冲罐顶设压力变送器,自适应 PID 控制算法控制压力目 标值,采用限位控制方式控制液氯汇流排出口气动控制阀开闭。液氯汇 流排出口采用气动式控制阀。完备度好。
可以根据具体的题目的数量进行调整),即每隔 10 微秒显示一个题号,
使题库的题号轮流滚动显示。采用溢出方式工作的定时器,需TIMSK 等几个寄存器,同时还与系统
的时钟频率以及预分频器的分频值密切相关。寄存器 TCCR0 用于确定
T/C0 的工作模式和分频情况,TCNT0 用于确定 T/C0 的计数初始值,
(上接第 26 页) interrupt[TIM0_OVF]voidtimer0_ovf_isr(void) // { TCNT0=0x06; // 重新赋初始值 i++; if(i==4) // 中断次数 {i=0;k++;} m=th[k]; // 提取题号 if(k==21)k=0; } void bcd(void) {ledbuff[0]=table[m%10]; // 题号个位数字的字型码 ledbuff[1]=table[m/10%10];// 题号十位数字的字型码 } voiddisplay(void) // 显示子函数 { for(a=0;a<2;a++) {PORTA=ledbuff[a]; // 字形显示控制 PORTB=(1<<a); // 字位显示控制 delay_ms(1);} } void main(void)
charledbuff[]={0,0};
interrupt[EXT_INT0]voidext_int0_isr(void) //INT0 外中断
{ TIMSK=0x00; } // 定时器中断屏蔽
interrupt[EXT_INT1]voidext_int1_isr(void) //
{ TIMSK=0x01; } // 器中断允许
#include <delay.h>
inti,k,a,m;
char
table
[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};// 字型码
intth[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};// 题号
基于单片机的简易抽签器的设计
王新娜 孙新凤
(保定电力职业技术学院,河北保定 071051)
[摘 要] 本文介绍了一种简易抽签器的设计,以 ATmega16 单片机作为主控器件,利用单片机内部的定时器和外部中断实现随机抽取题号的 功能。 [关键词] 抽签器;ATmega16 单片机;定时器;外中断
常用的抽签经常采用手动、计算机抽签等形式。手动抽签具有操 作麻烦、需要制作随机抽签工具等弊端,而计算机抽签程序虽然操作简 单快捷,但需要有计算机硬件条件以及专门抽签软件支持。如果使用单 片机制作抽签器,不但操作简单,而且成本低廉。另外,还可通过对程 序的修改,随机对抽签的题号进行调整和修改,对于需要简单抽签的场 合,非常适用。
MCUCR、MCUCSR 以及 SREG 等几个寄存 器。其中 MCUCR、
MCUCSR 两个寄存器用于控制外中断的信号触发有效形式;GICR 寄
存器用于控制外中断的屏蔽或允许;SREG 用于控制全局中断的开放与
否,全局中断开放还可以用汇编语句“#asm("sei")”进行控制。
ATmega16 单片机中共设有 3 个定时器 / 计数器,其中 8 位的定
而定时器中断屏蔽寄存器 TIMSK 用于控制定时器中断屏蔽或允许。本
设计采用 8MHz 的系统时钟,系统频率经过预分频器 8 分频。根据这
些已知条件根据计算可以确定初始值为 6,溢出中断次数为 4,此时定
时时间为 10 微秒。
根据以上分析,使用 CVAVR 编程软件,该设计的参考程序如下:
#include <mega16.h>