基于at89c51单片机的电子抢答器设计内容摘要:

,只要当键盘上有键盘闭合时就产生中断请求,向 CPU 申请中断后,立即对键盘上有操作的键盘进性扫描,识别闭合键,并做相应的处理。 如图 22所示。 图 24b 行列式 盘 0 1 2 3 4 5 6 7 8 9 A B C D E F P P P P P P P P 洛阳理工学院毕业设计(论文) 10 根据以上的论述,采用方案一,在本系统中采用了独立式键盘,其按键比较少,且键盘中各个按键的工作互不干扰。 蜂鸣器及 选择 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机,打印机,复印机,报警器,电子玩具,汽车电子设备,电话机,定时器等。 电子产品中做发声器件,主要分为压电式蜂鸣器和电磁式蜂鸣器两种类 型。 蜂鸣器有两类 3 大品种一类是压电式,一类是电磁式,电磁式又有两大品种,铁振膜式和动圈式,二者原理一样只是结构不同。 所有蜂鸣器都有两种类型;纯蜂鸣器和带驱动的蜂鸣器,蜂鸣器都是因音频信号驱动的,通上支流电就可工作而已。 压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。 有的压电式蜂鸣器外壳上还装有发光二极管。 多谐振荡器由晶体管或集成电路构成。 当接通电源后( — 15 支流工作电压),多谐振荡器起振,输出 — 的音频信号,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由铅钛酸铅式铌镁酸铅压电陶瓷材料制成。 电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。 振荡膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 根据以上的叙述,本设计采用方案二。 模块的最终方案 主控制器模块:采用 AT89C51 单片机控制。 抢答器显示模块:数码管显示。 电源方案的选择:三端稳压器电路。 抢答器键盘模块:独立式键盘。 蜂鸣器的选 择:电磁式蜂鸣器。 洛阳理工学院毕业设计(论文) 11 第 3 章 抢答器电路原理图设计 电源电路设计 由于单片机工作时需要的 +5V电压,所以在设计电源电路时,需要一个电子元件能够提供 +5V电压,本设计采用最典型的 7805提供的电压,即在7805的 1脚和公共接地端之间接入 ,在公共接地端和三脚 +5V电压输出端之间接入。 复位电路设计 AT89C51的复位输入引脚 RST为 AT89C51提供了初始化的手段,可以使程序从指定处开始执行,在 AT89C51的时钟电路工作后,只要 RST引脚上出现 超过两个机器周期以上的高电平时,即可产生复位的操作,只要 RST保持高电平,则 AT89C51循环复位,只有当 RST有高电平变低电平以后, AT89C51才从 0000H地址开始执行程序,本系统采用按键复位方式的复位电路。 时钟电路设计 AT89C51的时钟可以由两种方式产生,一种是内部方式,利用芯片内部的振荡电路;另外一种为内部方式,本论文根据实际需要和方便,采用内部振荡方式。 AT89C51内部有一个用于构成振荡器的高增益方向放大器,引脚 ATAL1和 XTAL2分别是此放大器的输入端和输出端,这个放大器 与作为反馈元件的片内晶体或陶瓷谐振器一起构成一个自激振荡器。 AT89C51虽然有内部振荡电路,但要形成时钟,必须外接元件所以实际构成的震荡时钟电路,外接晶体以及电容 C1和 C2构成并联谐振电路接在放大器的反馈电路中。 对接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低、振荡器的稳定性、起针的快速性和温度的稳定性。 晶 体频 率可在 间任 选,电 容 C1C2的典型值 在20pF100Pf 之间任选,考虑到本系统对于外接晶体的频率稳定性要求不高,所以采取比较廉价的 12MHz陶瓷 谐振器,根据调试电容选择 30pF。 洛阳理工学院毕业设计(论文) 12 输入模块电路设计 抢答器输入信号由四个小按钮控制。 当有键按下的时候,就产生了有效地输入信号,本文使用了上拉电阻把输入信号先嵌位在高电平,当有按键按下的时候便使与这个按键相连的引脚变为低电平,产生一个低电平的输入信号,本模块有 4个 10K的电阻和 4个按钮构成。 显示模块电路设计 该模块由 4个共阴极 7段 LED数码管和 MAX7219锁存器构成,其位选线分别连接于 MAX7219的 DIG0DIG3,此数据驱动线路置显示器共阴极为低电平。 关闭时 7219此管脚输出高电 平。 每位的段选线( adp)分别于 MAX7219的输出连接,显示字符一确定,相应锁存器的段码输出将维持不变,直到送入另一个段码为止,且显示的亮度高;静态显示时,较小的电流能得到较高的亮度且字符不闪烁,所以可有 MAX7219的输出口直接驱动。 声光电路 这里的声音电路是指实现报警的,本设计使用的是一个蜂鸣器报警器,当莫一按键按下蜂鸣器报警,当用人抢答时同时报警警告。 抢答器同时供 4名选手或 4个代表队比赛,分别用 4个按钮 S1~S4表示。 设置一个系统清除和抢答控制 按扭 ,该 按扭 由主持人控制。 抢答器具有锁存 与显示功能。 即选手按动按钮,锁存相应的编号,并在 LED数码管上显示,同时扬声器发出报警声响提示。 选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。 洛阳理工学院毕业设计(论文) 13 第 4 章 抢答器软件系统设计 单片机使用资源 本设计利用了单片机的复位电路以及晶振电路,并且使用了 P0 口来控制数码管的段选, P1口作抢答按键接口和 外接蜂鸣器 , 分别控制抢答的开始和停止。 各模块功能简要介绍 显示模块 首先在主程序中启动定时器显示 P PP,再通过判断是否是正常抢答 ,是则显示选手号及时间,否则显示 * PP,*为选手号,所以可通过显示来判断抢答状态及总体情况。 定时模块 设计中, 一开始就运行定时器 ,以开始显示 ,重置TH1/TL1 就可以了。 主持人按下开始抢答按钮,倒计时 60S,这里我们采用的用定时器 1 工作方式 1 定时 50ms,在中断程序设置变量叠加的方法,来得到一秒的基本定时,定时器定时一秒之后,单片机通过数码管显示出来。 中断模块 中断是对定时器完成基本定时溢出时的处理,即硬件自动将定时器相应的溢出标志位清零,完成基本 定时的叠加来得到 60S 定时时间。 洛阳理工学院毕业设计(论文) 14 图 41 抢答器主程序流程图 图 42 抢答器定时器中断流程图 洛阳理工学院毕业设计(论文) 15 图 43 外部中断程序图 主程序 我们组所设计的抢答器的程序采用的是 C 程序设计, C 语言的显著特点是 用二进制来编写程序 ,程序的各个部分除了必要的信息交流外彼此 之间相互 独立。 这种结构化方式可使程序层次清晰 , 便于使用、维护以及调试。 C 语言是以函数形式提供给用户的 ,这些函数可方便的调用 ,并具有多种循环、条件语句控制程序流向 ,从而使程序完全结构化。 虽然 C 语言也是强类型语言,但它的 语法比较灵活,允许程序编写者有较大的自由度。 本次设计的 主程序中包括时钟设计程序,定时器中断子程序, LED 显示程序以及按键控制子程序,程序设计如下: include sbit k0=P1^0。 sbit k1=P1^1。 sbit k2=P1^2。 sbit k3=P1^3。 sbit d0=P1^4。 sbit d1=P1^5。 洛阳理工学院毕业设计(论文) 16 sbit d2=P1^6。 sbit d3=P1^7。 sbit B0=P3^7。 sbit l0=P2^0。 sbit l1=P2^2。 sbit l2=P2^3。 sbit l3=P2^4。 sbit kz=P3^0。 unsigned char qiangdanum=0x3f。 unsigned char code table[]={0x3f,0xxx,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}。 unsigned char ge=0,shi=0。 unsigned int num=0,time=0。 void display()。 /*显示函数 */ void delay(unsigned int)。 main() { TMOD=0X01。 /*采用方式一,即十六位计数器 */ TH0=(6553650000)/256。 /*设置初始值 */ TL0=(6553650000)%256。 IT0=0。 EA=1。 ET0=1。 /*开启总中断源 */ EX0=1。 /*启动外部中断 0*/ {while(1) {display()。 if(kz==0) TR0=1。 /*开启定时器 0 中断 */ if(num==20) { num=0。 洛阳理工学院毕业设计(论文) 17 time++。 if(time==60) /*60 秒的计时 */ time=0。 } } } } void exter0() interrupt 0 /*外部中断程序 */ {EA=0。 l0=0。 if(k0==0) /*开关 0 按下 */ {d0=0。 qiangdanum=1。 B0=1。 }/* 1 号选手抢答成功,数码管显示 1,蜂鸣器响,第 1 个二极管亮 */ if(k1==0) /*开关 1 按下 */ {d1=0。 qiangdanum=2。 B0=1。 }/* 2 号选手抢答成功,数码管显示 2,蜂鸣器响,第 2 个二极管亮 */ if(k2==0) /*开关 2 按下 */ {d2=0。 qiangdanum=3。 B0=1。 }/* 3 号选手抢答成功,数码管显示 3,蜂鸣器响,第 3 个二极管亮 */ if(k3==0) /*开关 3 按下 */ {d3=0。 qiangdanum=4。 B0=1。 }/* 4 号选手抢答成功,数码管显示 4,蜂鸣器响,第 4 个二极管亮 */ } void time0() interrupt 1 {num++。 TH0=(6553650000)/256。 TL0=(6553650000)%256。 } /*1 秒定时函数 */ void delay(unsigned int z) 洛阳理工学院毕业设计(论文) 18 {unsigned int x,y。 for(x=z。 x0。 x) for(y=110。 y0。 y)。 } /*延迟函数 */ void display(void) {shi=time/10。 ge=time%10。 P2=0xef。 P0=table[ge]。 delay(5)。 P2=0xf7。 P0=table[shi]。 delay(5)。 P2=0xFE。 P0=table[qiangdanum]。 delay(5)。 } /*显示函数:来显示 060 的计数*/ 洛阳理工学院毕业设计(论文) 19 第 5 章 系统的仿真 proteus 软件的介绍及使用 什么是 Proteus 软件 Proteus 软件是 Labcenter Electronics 公司的一款电路设计与仿真软件,它包括 ISIS、 ARES 等软件模块, ARES 模块主要用来完成 PCB 的设计,而 ISIS 模块用来完成电路原理图的布图与仿真。 Proteus 的软件仿真基于 VSM 技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如 MCS51 系列、 PIC 系列等等,以及单片机外围电路,比如键盘、 LED、 LCD 等等。 通过 Pro。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。