1、 题 目: 基于 ATmega16L 单片机的抢答器设计 1 引言 . 3 2 抢答器系统的功能 . 3 3 抢答器的硬件系统 . 3 4 抢答器的软件系统 . 4 5 源程序 . 11 6 结束语 . 19 参考文献 . 20 2 基于 ATmega16L 单片机的 六 路抢答器设计 摘 要: 介绍了一种以 ATmega16L 单片机为核心的八路数字抢答器系统 ,分别从硬件和软件两方面阐述了该控制系统的设计方法 ,并经过调试和运行使 该系统达到预期目标 ,具有反应快、功能齐全、实用性强的特点。 关键词 :抢答器 ;单片机 ; ATmega16L Eight Routes Call ing I
2、mplement Based on ATmega16L Single Chip Controller Abstract : A kind of eight routes digital calling implement is int roduced in the thesis , and the ATmega16L Single chip cont roller is it s hard core1 Also , the design method of the cont rol system was expounded from aspect s of the software and t
3、he hardware1 And after debugging and running , the system reached the expected target , which have many advantages such as fast reaction , all ready function and good practicability1。 Key words : calling implement ; single chip cont roller ;ATmega 3 引言 抢答器是一种广泛应用于企事业单位和商业部门 ,为各种知识竞赛、文娱活动提供公正客观快速裁决的一
4、种常用电子设备 ,也是一种逐渐成型的电子产品 ,但市面上所售抢答器价格一般较贵且多为小规模集成电路构成 ,其性能单一 ,工作起来不够理想。因此 ,提高抢答器的性能 ,使其具有更强的功能 ,使 用可靠方便已为抢答器发展的一个方向。随着集成技术和计算机技术的发展 ,单片机作为其一个分支亦于 20 世纪 80 年代以来获得了飞速发展 ,各种新品不涌现 ,使单片机的应用更加深入 ,灵活性也大大增强。本文介绍一种以 ATmega 单片机为核心的八路抢答器系统 ,它充分利用了单片机系统的优点 ,具有结构简单、功能强大、可靠性好、实用性强的特点。 2 抢答器系统的功能 本抢答系统可实现以下功能 : (1)
5、抢答功能 :通过 六 路按键配合程序来实现抢答功能。当主持人按下抢答键开始抢答后 ,此时任一路按下按钮均闭锁其它各路 ,由程序对键盘 译码并显示最先按下抢答键的路数及其当前时间。 (2) 抢答限时 :主持人按下抢答键后 ,设置 5 秒为抢答时间 (此时间可在 1 99 秒之间修改 ) 。若 5 秒内无人抢答 ,倒计时为 0 时发出报警 ,说明该抢答题目作废。此时闭锁所有抢答按键 ,只有当主持人再次按下抢答键开始下一次抢答方可抢答。 (3) 答题限时 :当主持人按下开始答题按钮时 ,启动倒计时 (此倒计时时间可在1 99 秒之间修改 ) ,若答题时间过长 ,倒计时为 0 时发出报警 ,说明答题时
6、间到 ,显示返回当前台数及其分数为下一步计分作出准备。 (4) 设定功能 :按下设定键后 ,可按顺序设置抢答限时时间 ,答题限时时间和默认计分分值。 (5) 其它可附加功能 :如果采用 蜂鸣器 可实现 声音 报警。 3 抢答器的硬件系统 本抢答器的硬件系统包括以下几个部分 : (1) 抢答按钮和各功能键 : 0 7 八 个按键 (在抢答时 2 7 为抢答键 ,0 和 1 一个开始抢答键、一个开始答题键 。 各键分布电路图如图 1 所示。 4 D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3L C D 1L M 0 1 6 LP A 0 /A D
7、 C 040P A 1 /A D C 139P A 2 /A D C 238P A 3 /A D C 337P A 4 /A D C 436P A 5 /A D C 535P A 6 /A D C 634P B 0 /X CK /T 01P B 1 /T 12P B 2 /I NT 2 /A IN03P B 3 /O C0/ A IN 14P B 4 /S S5P B 5 /M O S I6P B 6 /M IS O7P B 7 /S C K8P A 7 /A D C 733RE S E T9X T A L 113X T A L 212P C0/ S C L22P C1/ S D A23P C
8、2/ T C K24P C3/ T M S25P C4/ T DO26P C5/ T DI27P C6/ T O S C 128P C7/ T O S C 229P D0/ R X D14P D1/ T X D15P D2/ INT 016P D3/ INT 117P D4/ O C 1 B18P D5/ O C 1 A19P D6/ IC P20P D7/ O C 221A V C C30A RE F32U1A T M E G A 1 6A V R 单片机K1K2K3K4K5K6UP KE YM A I NKEY+ 5 V R11kD1L E DR21kD2L E D+ 5 V1602 液晶
9、显示模块C11 0 0 u FL S 1S O UN D E RR31kD3L E DR41kD4L E DR51kD5L E DR61kD6L E DR71kD7L E DR81kD8L E D图 1 抢答器的硬件系统 (2) 显示电路 :显示电路可由 L ED 或 LCD 来实现。此处选用 LCD 方式 ,由LCD 显示器来实现 ,其亮度 好 ,节能, 使用简单方便。 (3) 声光电路 :这里 的声音电路是指实现报警的电路 ,发光电路由发光二极管来实现。 (4) 电源电路 : 电源采用市电经整流稳压来获得 ,其具体电路如图 2 所示。 图 2 电源电路 4 抢答器的软件系统 本抢答器的软件
10、系统主要包括以下几个部分 : (1) 主程序 :主程序的功能主要是完成内部各寄存单元的初始化 ,对 LCD 接5 口电路的初始化 ,内部定时器的初始化 ,中断的初始化及调用显示程序对初始状态的显示以及对外部信号的等待处理 ,也就是说完成前期的准备工作等待随时对外部信号进行响应。 (2) 对开始抢答信号的处理 :当主持人按下开始抢答键后开始抢 答 ,程序 时间 部分采用 定时 中断方式进行处理。在中断处理程序中完成相应操作 ,修改计时单元的数据并使红色指示灯亮。 (3) 键盘扫描子程序 :在程序中采用 读端口 对键盘进行扫描。键盘扫描程序在确定键值后保存等待后续处理。 /按键扫描函数 uchar
11、 get_key(void) uchar key,a=0; if(readkey!=0) /如果读按键不为 0,有键按下 key=readkey; /先保存按键值 /delay_nms(1); /延时消抖 if(readkey=key) /如果键值相等:有效按键 a=key; return(a); (4) 键值处理子程序 :此子程序根据键盘扫描所取得的键值作出相应处理。 在抢答时 ,只有数字键 (代表相应抢答分组 ) K1 K7 按下有效 ,其它键按下无效并且一旦抢答成功 ,只有按开始答题键有效 ,其它键均无效。 开始答题键按下给出相应信号指示。 在抢答前按下“ MAINKEY”键 1S 后
12、可进行抢答限时时间、答题限时时间值的设置。 (5) 显示 子程序 :此程序完成 所有 数据的动态显示。 * Lcd.h v1.0 /lcd1602 显示驱动 * #define LCD_EN_PORT PORTB /以下 2 个要设为同一个口 #define LCD_EN_DDR DDRB #define LCD_RS_PORT PORTB /以下 2 个要设为同一个口 #define LCD_RS_DDR DDRB #define LCD_DATA_PORT PORTB /以下 3个要设为同一个口 #define LCD_DATA_DDR DDRB /一定要用高 4位 #define LCD
13、_DATA_PIN PINB #define LCD_RS (17)|(command /低四位移到高四位 LCD_DATA_PORT /清高四位 LCD_DATA_PORT|=command /写低四位 LCD_en_write(); void LCD_write_data(unsigned char data) /写数据 unsigned char temp; data=(data /低四位移到高四位 LCD_DATA_PORT /清高四位 LCD_DATA_PORT|=data /写低四位 LCD_en_write(); void LCD_set_xy( unsigned char x,
14、 unsigned char y ) /写地址函数 8 unsigned char address; if (y = 0) address = 0x80 + x; else address = 0xc0 + x; LCD_write_command( address); void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) /列 x=015,行 y=0,1 LCD_set_xy( X, Y ); /写地址 while (*s) / 写显示字符 LCD_write_data( *s ); s +; void
15、 LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) /列 x=015,行 y=0,1 LCD_set_xy( X, Y ); /写地址 LCD_write_data( data); void delay_1us(void) /1us 延时函数 asm(“nop“); void delay_nus(unsigned int n) /N us 延时函数 unsigned int i=0; for (i=0;in;i+) delay_1us(); void delay_1ms(void) /1ms 延时函数 unsigned int i; for (i=0;i1140;i+); void delay_nms(unsigned int n) /N ms 延时函数 unsigned int i=0; 9 for (i=0;in;i+) delay_1ms(); unsigned char *Format(unsigned char data,unsigned char *str) str0=tab(data/10)%10; str1=tabdata%10; return str; 部分程序的流程图如图 3 所示
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。