0设计课题:多路抢答器学院:电气与信息工程学院专业:电气工程及其自动化班级:学号:姓名:1目录一、任务及设计要求………………………………………………21.任务…………………………………………………………22.要求…………………………………………………………2二、系统原理图……………………………………………………2三、硬件原理图……………………………………………………61.元器件清单…………………………………………………62.硬件设计……………………………………………………63.软件设计……………………………………………………114.性能分析……………………………………………………13四、流程图…………………………………………………………151.总体流程图…………………………………………………152.抢答器模块…………………………………………………163.北京时间模块流程图………………………………………17五、程序……………………………………………………………18六、产品使用说明书………………………………………………271.功能…………………………………………………………272.使用说明……………………………………………………28七、心得体会………………………………………………………29八、参考文献,教师评语…………………………………………302一、任务及设计要求1、任务设计一多路抢答器,每组设计一抢答按扭供选手使用2、要求(1)设计一多路数字抢答器(2)设置一个系统清除和抢答控制开关,该开关由主持人控制(3)抢答器具有锁存与显示功能。选手按动按扭,锁存相应的编号,并在LED数码管或LCD上显示,同时系统报警。优先抢答选手的编号一直保持到主持人将系统信号清除为止(4)抢答器具有定时抢答功能。当主持人启动“开始”键后,计时器进行计时,同时绿灯亮(可蜂鸣器替代或显示对应标志)。参赛选手在设定时间内进行抢答,抢答有效,定时器停止工作,绿灯灭,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止,如果定时时间已到,无人抢答,本次抢答无效,系统报警。中途可以暂停。(5)显示定时时间,可倒数显示(6)定时时间进入最后十秒时,可用蜂鸣器提醒(7)显示北京时间,可调整二、系统原理图硬件原理:3ADUC848管脚图如下图所示。4Pin1~4:(P1.0~P1.3)作为矩阵式键盘或独立按键的输入,P1口只能用于输入,默认用于模拟输入,作为数字输入使用时应先往P1口相应引脚写0,这里可以用P0&=0xf0。若P2、P3、P0口要作为输入,则应往相应引脚写1。Pin5、6:AVDD、AGND,模拟电源输入。Pin7、8:外部参考电压接入,Pin7接AGND。片内DAC有2.5V内部参考,ADC有1.25V内部参考。Pin9、10:(P1.4、P1.5)两路AD输入,可做差分输入,需要设置ADC的寄存器。Pin11、12:(P1.6、P1.7)各200uA激励电流源,可配合RTD等做应用。Pin13:两路AD输入做普通输入时的电压参考端,AD输入电压不能低于此引脚电压。Pin14:片内DAC输出。Pin15:复位引脚。Pin16、17:单片机RS232接口的RXD(P3.0)TXD(P3.1)。Pin18:(P3.2)外部中断0,用于红外接收和PS/2接口。Pin19:(P3.3)LCD1602,LCD12864A的EN引脚,控制第一位数码管。Pin20、21:DVDD、DGND数字电源输入。Pin22:(P3.4)PS/2接口的data信号。Pin23:(P3.5)LCD1602和LCD12864A的RW。5Pin24:(P3.6)LCD1602和LCD12864A的RS。Pin25:LCD12864A的CS1。Pin26:IIC接口时钟信号。Pin27:IIC接口data信号。Pin28:(P2.0)SPI接口时钟信号。Pin29:(P2.1)SPI接口MOSI信号、控制第6位数码管的位码。Pin30:(P2.2)SPI接口MISO信号、控制第7位数码管的位码。Pin31:(P2.3)SPI接口SS信号、控制第8位数码管的位码;P2.0~3也作为4X4矩阵式键盘的扫描输出信号、步进电机的控制信号、数码管第数码管第6、7、8位位码。但是SPI、4X4矩阵式键盘、步进电机、数码管第6、7、8位功能不能同时实现。Pin32、Pin33:接外部32.768KHz晶振。Pin34、Pin35:DVDD、DGND。Pin36:(P2.4)LCD12864A的CS2。Pin37:(P2.5)内部PWM模块输出,控制红外LED。Pin38:(P2.6)内部PWM模块输出,控制蜂鸣器。Pin39:(P2.7)内部PWM模块的外部时钟输入(也可以用内部时钟)。Pin40:EA,低电平有效,正常使用时拉低。Pin41:PSEN,在此引脚电平为低时按复位键进入debug模式,可以下载和调试程序。Pin42:ALE。6Pin47、Pin48:DGND、DVDD。Pin43、44、45、46、49、50、51、52:P0口、LCD1602和LCD12864的数据总线,数码管的段码。三、硬件原理图1.元器件清单:MCU:选用ADUC848芯片,coreclock为1.572864MHz。带有PWM脉宽调制功能。数码管:五个共阴极的数码管,用作显示数据。由于I/O的驱动能力有限,因此是用PNP来驱动数码管的段,用NPN来进行数码管的位选。段码在低电平有效,位码在高电平有效键盘:使用矩阵键盘,使用16个按键,最多可以满足13名选手进行抢答。LED:一个绿色的LED,正极接P2^5,阴极接地。无源蜂鸣器:采用PWM控制发声。下载程序芯片:与PC机的通信使用RS232协议,使用的通信芯片是MAX2322.硬件设计:(1)电源模块7共有如下3种供电方式:①5V电源适配器供电(开关往上拨、插针1下面两脚接跳线帽)。将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第1、2脚(插针1下面两脚)接跳线帽,DVDD直接连接到电源适配器输入端,即为5V电源适配器供电模式。②7~12V电源适配器供电(开关往上拨、插针1上面两脚接跳线帽)将开关sw4第2、3脚接通(开关往上拨),电源网络DVDD连接到插针1第2脚的输出,将插针1的第2、3脚(插针1上面两脚)接跳线帽,DVDD连接到稳压芯片7805的输出,而7805的输入端连接到电源适配器输入端,即为7~12V的电源适配器经7805给学习板供电的模式。③USB供电(开关往下拨)。将开关sw4第1、2脚接通(开关往下拨),电源网络DVDD连接到USB电源输入端。8(2)数码管①DS0~7:数码管段码。②BIT0~7:数码管位码。③MOTORA~D:步进电机驱动信号。④DISCTRL0~4:显示控制信号,控制数码管低5位。⑤D0~8:单片机P0口。(3)8路LED98个LED接P0口,低电平时LED亮,这样不会影响P0口逻辑电平。LED限流电阻取4.7K,通过LED电流约为0.8mA,在P0口驱动能力范围之内。插针配置:使用该模块,可以接通插针2,(4)蜂鸣器本设计中采用无源电磁式蜂鸣器,蜂鸣器由PWM1(P2.6)控制。PWM1和PWM0均为片内PWM模块的输出。蜂鸣器采用普通NPN三极管。插针配置:使用蜂鸣器,可以接通插针3。(5)按键模块10由于P1口(用于行扫描)内部无上拉电阻,为使无键按下时行信号为高电平,故将行信号接上拉电阻,电阻大小10K即可。引脚复用:P2.0~P2.3为4X4矩阵式键盘列扫描信号,又复用作步进电机控制信号,SPI信号、P2.1~P2.3还复用为数码管第5、6、7位位码控制信号。参与复用的一项功能使用时,其他参与复用的功能则不能使用。插针配置:插针10上面两脚接跳线帽,4X4矩阵式键盘输入,行扫描信号为P1.0~P1.3,列扫描信号为P2.0~2.3。插针10下面两脚接跳线帽,独立按键输入,该模式有4个独立按键可用,按键扫描所用端口为P1.0~P1.3。这4个按键为4X4矩阵键盘的左边4个按键。(6)复位与下载复位与下载电路如图进入下载或调试模式的步骤为:①按住BTN1(downordebug按键)不要放开;②按下BTN2(reset按键),然后放开BTN2(reset按键);11③放开BTN1(downordebug按键)。这样单片机就进入了调试模式,可以下载或调试程序(7)下载程序芯片(MAX232)3.软件设计(1)软件设计:分析了产品需要具有功能及工程任务和指标。这个多路抢答器功能有多路抢答器,北京时间,及其抢答过程中主持人的开始、暂停、清零,报警器的发声,LED显示。因此将抢答器这个小工程分成X个模块:LED显示模块,发声模块及PWM控制模块,数码管显示模块,按键扫描模块,功能选择模块。(2)数码管扫描:采用动态扫描法。先选中位选,再将七段码送出,延时一段时间,接着是点亮下一个,完成一轮后则扫描程序结束。全过程由display(unsignedcharduan,unsignedcharwei)函数实现。但是,12关键在于延时选择多长时间,延时太短则数码管点不亮或是不清晰,延时太长则会不连续或是影响后面的程序的执行如键盘扫描,而这个时间是需要调试的。(3)键盘扫描:aduc848芯片比较特殊性,其P1口不具备驱动能力只能读入,而且读入前要先将P1口置0,这点与AT89C51完全不同,如果不仔细阅读说明书,按键的的扫描将是永远无解。键盘还有另一个问题,就是使用“闭环”还是“开环”。“闭环”的按键就是等待按键直到有按键按下才会退出按键扫描,而“开环”则不需要等到按键,只要没有按键就执行其后面的程序但是有一点,他必须用在循环中,而且一般是用在while(1)之中,进行循环扫描。关于延时程序,也是要考虑的,如果程序写了但是没有调用就会占用code和data区,而data区直接寻址仅仅128B,故延时选择合适的延时时间作为单位。(4)北京时间:运用定时器0,16位计数方式实现。计数器是加一计数器,当加到65535,即1s钟时定时器产生中断,同时对现实的时间进行刷新。由于在本产品的设计中我们只采用了一个中断,因此不存在中断的优先级,中断的嵌套。因此不会对中断的发生时间产生影响。同时coreclock的稳定,保证了时钟的稳定可靠。(5)倒计时与报警提示:倒计时采用延时程序完成,利用1ms延时函数delay1ms(unsignedchar),执行1000后延时就为1s。每个1s对数13码管显示的段码进行刷新。报警功能通过蜂鸣器实现,在特定的时间给蜂鸣器占空比为50%的,频率不相同的脉冲波,发出不同的报警提示音。抢答开始提示有一盏绿色的LED来反映。但允许抢答时刻,给抢答器的控制引脚送高电平,抢答器发光,当抢答暂停、抢答时间到、已抢答中任一种情况发生时,绿灯熄灭。4.性能分析(1)通过按键实现选手的抢答,主持人的开始,暂停,清零,北京时间调节信号。由于按键是有限的,用较少的按键实现这些功能则需要按键的复用,也就是不同模块中按键的功能是不同的。选手抢答需要在检测到按键时,通过行扫描法分析判断抢答成功选手的按键编号。主持人开始按键按下时倒计时开始。暂停按键按下时,程序进入死循环,同时倒计时暂停,跳出死循环的方法就是按下开始按键。清零按键按下时,抢答程序结束,屏幕显示北京时间,等待下一次抢答。北京时间调节,通过四个按键实现时和分的加减,同时不影响定时器工作。(2)警告声音是采用无源蜂鸣器发声。利用PWM给蜂鸣器不同频率的占空比都为50%的脉冲波,再通过延时发出声音。为了声音的不同,采用了不同的频率,有1000Hz,500Hz,333Hz,200Hz.(3)北京时间功能采用T0计时器中断来实现。ADuC848的coreclock频率默认为1.572864MHz,定时器0的时钟为coreclock,1572864=65536*24。故将定时器0设置为16位计数模式,且初值为