电气与自动化工程学院课程设计评分表
课程设计题目:微机原理与接口技术课程设计
班级:Y102101 学号:Y10210120姓名:王圣爽
指导老师:
年 月 日
常熟理工学院电气与自动化工程学院
课程设计说明书
课程名称: 微机原理与接口技术课程设计
设计题目: 四人抢答器设计
班级: Y102101
姓名: 王 圣 爽
学号: Y10210120
指导老师:
设计时间: 2013-7-1
目 录
第一章 引言.............................................................................1
第二章 方案设计与论证............................2第
三章 硬件电路具体设计.....................................................3
3.1抢答器电路框图...................................................3 3.2单元电路设计.......................................................3
第四章 系统的软件设计与实现......................11
4.1系统软件简介...........................11 4.2程序设计...............................11 4.3流程图.................................12
第五章 四人抢答器的调试..........................14
第六章 收获体会..................................15
参考文献.........................................16
附录1...........................................17
附录2...........................................18
《单片机技术》课程设计任务书
题目:四人抢答器设计
一、课程设计任务
本课题要求应用以51单片机为核心设计一四人抢答器,由1个主持人按键、4个抢答按键、用于显示号码的数码管、用于渲染气氛的LED和蜂鸣器组成。
二、课程设计目的
通过本次课程设计使学生掌握:1)掌握以单片机为核心的控制系统的分析和设计的基本方法;2)控制程序的设计及实现方法;3)提高学生对单片机实时控制系统的设计和调试能力。
三、课程设计要求
开机后,LED渲染气氛,在主持人按下“开始”键后,渲染气氛LED停止,数码管显示抢答剩余时间(初始10s);甲、乙、丙、丁4人可按下抢答,当有人按下键后,蜂鸣器响(可播放一段音乐),同时显示位号后,渲染气氛LED从停止的位置继续显示,回到初始状态。
本课题要求采用protues或实验箱实现。用实验箱做的话,倒计时显示可采用74LS164芯片驱动数码管实现。
四、课程设计内容
1、人机对话“界面”的设计;
2、内存端口及外设的设置;
3、硬件电路原理图、软件清单。
五、课程设计报告要求
报告中提供如下内容:
1、目录
2、正文
(1)课程设计任务书;
(2)总体设计方案
(3)针对人机对话“界面”要有操作使用说明,以便用户能够正确使
用本产品;
(4)硬件原理图(可手画也可用protel软件),以便厂家生成产品;
(5)程序流程图及清单(子程序不提供清单,但应列表反映每一个子程
序的名称及其功能);
(6)调试、运行及其结果;
3、收获、体会
4、参考文献
六、课程设计进度安排
1.引 言
抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以四路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-10s设定;可以显示是哪位选手有效抢答,正确按键后有响铃提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
2.方案设计与论证
方案:该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个
系统具有极其灵活的可编程,能方便地对系统进行功能的扩张和更改。
MCS-51单片机特点如下:
可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。
单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。
控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。
原理框如图:
3.硬件电路具体设计
1、 抢答器的电路框图
如图所示为电路框图。其工作原理为:接通电源后,渲染灯循环亮歇,抢答器处于禁止状态,主持人将开关置“开始”状态,宣布“开始”抢答器工作。定时器倒计时,渲染等停住,选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作
图为四路抢答器框图
2、单元电路设计
(1) 芯片的选择及介绍
AT89C51芯片简介
1、 主要元器件介绍
单片机主控电路的主要元件是AT89C51,
AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技能生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的处理方案。
AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规要领执行 编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 2、管脚说明:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH执行 校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器执行 存取时,P2口输出地址的高八位。在给出地址“1”时,它运用 内部上拉优势,当对外部八位地址数据存储器执行 读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3
口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
ST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要留心的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管能不能有内部程序存储器。留心加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出
图为AT89C51芯片
(2)抢答器电路
参考电路如图11.2所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一 次抢答。
抢答器电路
(3)时序控制电路设计
时序控制电路是抢答器设计的关键,它要完成以下功能:
a.主持人将控制开关拨到
b.当参赛选手按动抢答键时,扬声器发声,抢答电路停止工作。
(4)复位电路的设计
外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。复位电路如下图示:
图为复位电路
(5)外部震荡电路
外部震荡电路单片机必须在AT89C51的驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元,外部震荡电路如下图。
图为晶振电路
(6)报警电路图
驱动喇叭的信号为各种频率的脉冲。
选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答。如果再次抢答必须由主持人再次作
图为报警电路
(7)显示电路设计
在单片机系统中,常用的显示器有:发光二极管显示器,简称LED;液晶显示器,简称LCD;荧光管显示器。而发光二极管显示又分为固定段显示和可以拼装的大型字段显示,此外还有共阳极和共阴极之分等。
LED段显示器结构与原理
LED显示器是由发光二极管显示字段组成的显示块,有7段和“米”字段之分。这种显示块有共阳极和共阴极两种。此外,显示块中还有一个圆点型发光二
极管(在图中以dP表示)用于显示小数点。通过发光二极管亮、暗的不同组,可以显示多中数字、字母以及其他符号。
LED显示块中的发光二极管共有两种连接方法:
(1)共阳极接法
发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V,这样,阴极端输入低电平的段的发光二极管被点亮,相应的段被显示;而输入高电平的段则不点亮。
(2)共阴极接法
发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样,阳极端输入高电平的段的发光二极管被点亮,相应的段被显示;而输入低电平的段则不点亮。
数码管引脚如图10。
图为 数码管引脚图
共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段dP、g、f、e、d、c、b、a对应于一个字节(8位)的D7、D6、D5、D4、D3、D2、D1、D0,于是用8位二进制码就可以表示欲显示字符的字形代码。例如,对于共阴LED显示器,当公共阴极接地(为零电平),而阳极dP、g、f、e、d、c、b、a各段为0111011时,显示器显示
符的字形代码应为10001100(8CH)。用LED显示器显示十进制转换成十六进制数的字形代码在表2中列出。
表2 LED十六进制的数字代码表
4.系统的软件设计与实现
系统软件设计主要采用模块化设计,叙述了各个模块的程序流程图,并介绍了软件Keil和Proteus的使用方法和调试仿真。
4.1 系统软件简介
此设计需要在Keil软件平台上完成程序的调试,在Proteus软件平台上完成仿真显示。因此简介Keil和Proteus软件。
Keil软件是目前最流行的开发单片机的软件,Keil提供了包括编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
使用Keil Software工具时的项目开发流程和其他软件开发项目的流程极其相似:①创建一个项目,从器件库中选择目标器件,配置工具设置。②用C语言或汇编语言创建源程序。③用项目管理器生成应用。④修改源程序中的错误。⑤测试连接应用。
protues是Labcenter公司出品的电路分析、实物仿真系统,而KEIL是目前世界上最好的51单片机汇编和C语言的集成开发环境。他支持汇编和C的混合编程,同时具备强大的软件仿真和硬件仿真功能。Protues能够很方便的和KEIL、Matlab IDE等编译模拟软件结合。Proteus提供了大量的元件库有RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件,它可以仿真单片机和周边设备,可以仿真51系列、AVR,PIC等常用的MCU,与keil和MPLAB不同的是它还提供了周边设备的仿真,只要给出电路图就可以仿真。
4.2 程序设计
在抢答过程中,有多个信号输入主电路中,有多个信号输入主电路中,单片机内部的寄存器工作,并识别、记录第一个抢答的人,同时内部的定时器开始工作,记录有关的时间信号,在整个抢答过程中,显示电路还要根据现场的实际情况来相应的显示输入信号。采用外部中断一,且为下降源触发,在设计中包括:主程序、查询程序、正常抢答处理程序、显示程序。
流程图:
4.3
5.四人抢答器的调试
(1) 开机
开机后,LED渲染气氛
(2) 准备抢答
在主持人按下“开始”键后,渲染气氛LED停止,数码管显示抢答剩余时间(初始10s)
(3) 抢答
当有人按下键后,蜂鸣器响(可播放一段音乐),同时显示位号后,渲染气氛LED从停止的位置继续显示,回到初始状态。
6.收获体会
经过近两个星期的努力,在老师和同学的商讨和帮助下,我较好的完成了设计任务,通过此次课程设计,我重新认识到了自学的重要性,以及学以致用的道理。我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用。通过此次的抢答器的设计,让我重新拾起了以前所学习的电子知识,及我觉得此次设计让我更加巩固了所学的知识并在设计的过程中学会了与时俱进,克服了编程的枯燥感,让我受益匪浅。在学习单片机这门课程的时候,我们应该好好你的记笔记,课下好好的做练习题才能把C程序设计灵活的运用到单片机程序的设计上,在单片机这门课程的学习上,我们还应该知道一种常用的仿真软件proteus软件,可以让你我们更为清晰的掌握AT89C51系列的实际应用上的设计。在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识。也使我加深了对单片机及接口技术的理解和应用,由于知识水平的局限,设计中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正。
参考文献
[1]51单片机原理与实践/高卫东,辛友顺,韩彦征编著.北京航空航天大学出版
社,2004.1
[2]刘红玲、邵晓根,《微机原理与接口技术》,中国电力出版社,2006年第一版
[3]冯博琴,《微型计算机原理及接口技术》,清华大学出版社
[4]艾德才,《微型计算机原理与接口技术》,高等教育出版社
[6] 任致程,《经典集成电路400例》机械工业出版社,2002
[7] 薛栋梁,《单片机原理及应用》,中国水利水电出版社,2001
[4] 谢筑森,张辉等,《单片机开发与典型应用设计》,中国科学技术大学出版社,
附录1:仿真图
附录2:程序代码
#include
sbit P0_0=P0^0; //端口定义
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P3_2=P3^2;
sbit P3_4=P3^4;
void delayms(int ms);
void send(char date);
void key_scan(void);
char temp;
char ge,shi;
char time;
char zhuchi_flag;
char xuanshou_flag;
char code table[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //显示代码
void main() //主程序
{
TCON=0x01;
IE=0x81;
SCON=0x00;
TMOD=0x01;
TH0=(65536-50000)/256; //定时器初值
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
ES=0;
EA=1;
zhuchi_flag=0;
xuanshou_flag=0;
time=10;
P3_4=0;
while(1)
{
while(zhuchi_flag==0)
{
P1_0=1;P1_1=0;P1_2=0;P1_3=0;
delayms(200);
P1_0=0;P1_1=1;P1_2=0;P1_3=0;
delayms(200);
P1_0=0;P1_1=0;P1_2=1;P1_3=0;
delayms(200);
P1_0=0;P1_1=0;P1_2=0;P1_3=1;
delayms(200);
}
key_scan();
}
}
void delayms(int ms) //延时程序
{
int i;
for(;ms>0;ms--)
{
for(i=0;i
}
}
void timer0_int(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
temp++;
if(temp==20)
{
temp=0;
if(zhuchi_flag==1)
{
ge=time%10;
shi=time/10;
send(ge);
send(shi);
time--;
if(time==-1)
{
TR0=0;
}
}
}
if(xuanshou_flag==1)
{
P3_4=~P3_4;
}
}
void zhichi_key() interrupt 0
{ if(P3_2==0)
{ delayms(10);
if(P3_2==0)
{
zhuchi_flag=1;
}
}
}
void send(char date)
{
SBUF=table[date];
while(TI)
{
TI=0;
}
}
void key_scan(void)
{
if(P0_0==0)
{ delayms(10);
if(P0_0==0)
{
zhuchi_flag=0;
xuanshou_flag=1;
send(1);
send(0);
}
}
if(P0_1==0)
{ delayms(10);
if(P0_1==0)
{
zhuchi_flag=0;
xuanshou_flag=1;
send(2);
send(0);
}
}
if(P0_2==0)
{ delayms(10);
if(P0_2==0)
{
zhuchi_flag=0;
xuanshou_flag=1;
send(3);
send(0);
}
}
if(P0_3==0)
{ delayms(10);
if(P0_3==0)
{
zhuchi_flag=0;
xuanshou_flag=1;
send(4);
send(0);
}
}
}
电气与自动化工程学院课程设计评分表
课程设计题目:微机原理与接口技术课程设计
班级:Y102101 学号:Y10210120姓名:王圣爽
指导老师:
年 月 日
常熟理工学院电气与自动化工程学院
课程设计说明书
课程名称: 微机原理与接口技术课程设计
设计题目: 四人抢答器设计
班级: Y102101
姓名: 王 圣 爽
学号: Y10210120
指导老师:
设计时间: 2013-7-1
目 录
第一章 引言.............................................................................1
第二章 方案设计与论证............................2第
三章 硬件电路具体设计.....................................................3
3.1抢答器电路框图...................................................3 3.2单元电路设计.......................................................3
第四章 系统的软件设计与实现......................11
4.1系统软件简介...........................11 4.2程序设计...............................11 4.3流程图.................................12
第五章 四人抢答器的调试..........................14
第六章 收获体会..................................15
参考文献.........................................16
附录1...........................................17
附录2...........................................18
《单片机技术》课程设计任务书
题目:四人抢答器设计
一、课程设计任务
本课题要求应用以51单片机为核心设计一四人抢答器,由1个主持人按键、4个抢答按键、用于显示号码的数码管、用于渲染气氛的LED和蜂鸣器组成。
二、课程设计目的
通过本次课程设计使学生掌握:1)掌握以单片机为核心的控制系统的分析和设计的基本方法;2)控制程序的设计及实现方法;3)提高学生对单片机实时控制系统的设计和调试能力。
三、课程设计要求
开机后,LED渲染气氛,在主持人按下“开始”键后,渲染气氛LED停止,数码管显示抢答剩余时间(初始10s);甲、乙、丙、丁4人可按下抢答,当有人按下键后,蜂鸣器响(可播放一段音乐),同时显示位号后,渲染气氛LED从停止的位置继续显示,回到初始状态。
本课题要求采用protues或实验箱实现。用实验箱做的话,倒计时显示可采用74LS164芯片驱动数码管实现。
四、课程设计内容
1、人机对话“界面”的设计;
2、内存端口及外设的设置;
3、硬件电路原理图、软件清单。
五、课程设计报告要求
报告中提供如下内容:
1、目录
2、正文
(1)课程设计任务书;
(2)总体设计方案
(3)针对人机对话“界面”要有操作使用说明,以便用户能够正确使
用本产品;
(4)硬件原理图(可手画也可用protel软件),以便厂家生成产品;
(5)程序流程图及清单(子程序不提供清单,但应列表反映每一个子程
序的名称及其功能);
(6)调试、运行及其结果;
3、收获、体会
4、参考文献
六、课程设计进度安排
1.引 言
抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以四路抢答为基本理念。考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-10s设定;可以显示是哪位选手有效抢答,正确按键后有响铃提示;抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
2.方案设计与论证
方案:该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个
系统具有极其灵活的可编程,能方便地对系统进行功能的扩张和更改。
MCS-51单片机特点如下:
可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。
单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。
控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。
原理框如图:
3.硬件电路具体设计
1、 抢答器的电路框图
如图所示为电路框图。其工作原理为:接通电源后,渲染灯循环亮歇,抢答器处于禁止状态,主持人将开关置“开始”状态,宣布“开始”抢答器工作。定时器倒计时,渲染等停住,选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作
图为四路抢答器框图
2、单元电路设计
(1) 芯片的选择及介绍
AT89C51芯片简介
1、 主要元器件介绍
单片机主控电路的主要元件是AT89C51,
AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技能生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的处理方案。
AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规要领执行 编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。 2、管脚说明:VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH执行 校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器执行 存取时,P2口输出地址的高八位。在给出地址“1”时,它运用 内部上拉优势,当对外部八位地址数据存储器执行 读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3
口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
ST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要留心的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管能不能有内部程序存储器。留心加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出
图为AT89C51芯片
(2)抢答器电路
参考电路如图11.2所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一 次抢答。
抢答器电路
(3)时序控制电路设计
时序控制电路是抢答器设计的关键,它要完成以下功能:
a.主持人将控制开关拨到
b.当参赛选手按动抢答键时,扬声器发声,抢答电路停止工作。
(4)复位电路的设计
外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。复位电路如下图示:
图为复位电路
(5)外部震荡电路
外部震荡电路单片机必须在AT89C51的驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元,外部震荡电路如下图。
图为晶振电路
(6)报警电路图
驱动喇叭的信号为各种频率的脉冲。
选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答。如果再次抢答必须由主持人再次作
图为报警电路
(7)显示电路设计
在单片机系统中,常用的显示器有:发光二极管显示器,简称LED;液晶显示器,简称LCD;荧光管显示器。而发光二极管显示又分为固定段显示和可以拼装的大型字段显示,此外还有共阳极和共阴极之分等。
LED段显示器结构与原理
LED显示器是由发光二极管显示字段组成的显示块,有7段和“米”字段之分。这种显示块有共阳极和共阴极两种。此外,显示块中还有一个圆点型发光二
极管(在图中以dP表示)用于显示小数点。通过发光二极管亮、暗的不同组,可以显示多中数字、字母以及其他符号。
LED显示块中的发光二极管共有两种连接方法:
(1)共阳极接法
发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V,这样,阴极端输入低电平的段的发光二极管被点亮,相应的段被显示;而输入高电平的段则不点亮。
(2)共阴极接法
发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样,阳极端输入高电平的段的发光二极管被点亮,相应的段被显示;而输入低电平的段则不点亮。
数码管引脚如图10。
图为 数码管引脚图
共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。8个笔划段dP、g、f、e、d、c、b、a对应于一个字节(8位)的D7、D6、D5、D4、D3、D2、D1、D0,于是用8位二进制码就可以表示欲显示字符的字形代码。例如,对于共阴LED显示器,当公共阴极接地(为零电平),而阳极dP、g、f、e、d、c、b、a各段为0111011时,显示器显示
符的字形代码应为10001100(8CH)。用LED显示器显示十进制转换成十六进制数的字形代码在表2中列出。
表2 LED十六进制的数字代码表
4.系统的软件设计与实现
系统软件设计主要采用模块化设计,叙述了各个模块的程序流程图,并介绍了软件Keil和Proteus的使用方法和调试仿真。
4.1 系统软件简介
此设计需要在Keil软件平台上完成程序的调试,在Proteus软件平台上完成仿真显示。因此简介Keil和Proteus软件。
Keil软件是目前最流行的开发单片机的软件,Keil提供了包括编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
使用Keil Software工具时的项目开发流程和其他软件开发项目的流程极其相似:①创建一个项目,从器件库中选择目标器件,配置工具设置。②用C语言或汇编语言创建源程序。③用项目管理器生成应用。④修改源程序中的错误。⑤测试连接应用。
protues是Labcenter公司出品的电路分析、实物仿真系统,而KEIL是目前世界上最好的51单片机汇编和C语言的集成开发环境。他支持汇编和C的混合编程,同时具备强大的软件仿真和硬件仿真功能。Protues能够很方便的和KEIL、Matlab IDE等编译模拟软件结合。Proteus提供了大量的元件库有RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件,它可以仿真单片机和周边设备,可以仿真51系列、AVR,PIC等常用的MCU,与keil和MPLAB不同的是它还提供了周边设备的仿真,只要给出电路图就可以仿真。
4.2 程序设计
在抢答过程中,有多个信号输入主电路中,有多个信号输入主电路中,单片机内部的寄存器工作,并识别、记录第一个抢答的人,同时内部的定时器开始工作,记录有关的时间信号,在整个抢答过程中,显示电路还要根据现场的实际情况来相应的显示输入信号。采用外部中断一,且为下降源触发,在设计中包括:主程序、查询程序、正常抢答处理程序、显示程序。
流程图:
4.3
5.四人抢答器的调试
(1) 开机
开机后,LED渲染气氛
(2) 准备抢答
在主持人按下“开始”键后,渲染气氛LED停止,数码管显示抢答剩余时间(初始10s)
(3) 抢答
当有人按下键后,蜂鸣器响(可播放一段音乐),同时显示位号后,渲染气氛LED从停止的位置继续显示,回到初始状态。
6.收获体会
经过近两个星期的努力,在老师和同学的商讨和帮助下,我较好的完成了设计任务,通过此次课程设计,我重新认识到了自学的重要性,以及学以致用的道理。我在图书馆查阅了大量的资料,同时也认识到了图书馆的重要作用。通过此次的抢答器的设计,让我重新拾起了以前所学习的电子知识,及我觉得此次设计让我更加巩固了所学的知识并在设计的过程中学会了与时俱进,克服了编程的枯燥感,让我受益匪浅。在学习单片机这门课程的时候,我们应该好好你的记笔记,课下好好的做练习题才能把C程序设计灵活的运用到单片机程序的设计上,在单片机这门课程的学习上,我们还应该知道一种常用的仿真软件proteus软件,可以让你我们更为清晰的掌握AT89C51系列的实际应用上的设计。在今后的学习过程中,应该多到图书馆看一些专业方面的书籍,以丰富自己的知识。也使我加深了对单片机及接口技术的理解和应用,由于知识水平的局限,设计中可能会存在着一些不足,我真诚的接受老师和同学的批评和指正。
参考文献
[1]51单片机原理与实践/高卫东,辛友顺,韩彦征编著.北京航空航天大学出版
社,2004.1
[2]刘红玲、邵晓根,《微机原理与接口技术》,中国电力出版社,2006年第一版
[3]冯博琴,《微型计算机原理及接口技术》,清华大学出版社
[4]艾德才,《微型计算机原理与接口技术》,高等教育出版社
[6] 任致程,《经典集成电路400例》机械工业出版社,2002
[7] 薛栋梁,《单片机原理及应用》,中国水利水电出版社,2001
[4] 谢筑森,张辉等,《单片机开发与典型应用设计》,中国科学技术大学出版社,
附录1:仿真图
附录2:程序代码
#include
sbit P0_0=P0^0; //端口定义
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P3_2=P3^2;
sbit P3_4=P3^4;
void delayms(int ms);
void send(char date);
void key_scan(void);
char temp;
char ge,shi;
char time;
char zhuchi_flag;
char xuanshou_flag;
char code table[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //显示代码
void main() //主程序
{
TCON=0x01;
IE=0x81;
SCON=0x00;
TMOD=0x01;
TH0=(65536-50000)/256; //定时器初值
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
ES=0;
EA=1;
zhuchi_flag=0;
xuanshou_flag=0;
time=10;
P3_4=0;
while(1)
{
while(zhuchi_flag==0)
{
P1_0=1;P1_1=0;P1_2=0;P1_3=0;
delayms(200);
P1_0=0;P1_1=1;P1_2=0;P1_3=0;
delayms(200);
P1_0=0;P1_1=0;P1_2=1;P1_3=0;
delayms(200);
P1_0=0;P1_1=0;P1_2=0;P1_3=1;
delayms(200);
}
key_scan();
}
}
void delayms(int ms) //延时程序
{
int i;
for(;ms>0;ms--)
{
for(i=0;i
}
}
void timer0_int(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
temp++;
if(temp==20)
{
temp=0;
if(zhuchi_flag==1)
{
ge=time%10;
shi=time/10;
send(ge);
send(shi);
time--;
if(time==-1)
{
TR0=0;
}
}
}
if(xuanshou_flag==1)
{
P3_4=~P3_4;
}
}
void zhichi_key() interrupt 0
{ if(P3_2==0)
{ delayms(10);
if(P3_2==0)
{
zhuchi_flag=1;
}
}
}
void send(char date)
{
SBUF=table[date];
while(TI)
{
TI=0;
}
}
void key_scan(void)
{
if(P0_0==0)
{ delayms(10);
if(P0_0==0)
{
zhuchi_flag=0;
xuanshou_flag=1;
send(1);
send(0);
}
}
if(P0_1==0)
{ delayms(10);
if(P0_1==0)
{
zhuchi_flag=0;
xuanshou_flag=1;
send(2);
send(0);
}
}
if(P0_2==0)
{ delayms(10);
if(P0_2==0)
{
zhuchi_flag=0;
xuanshou_flag=1;
send(3);
send(0);
}
}
if(P0_3==0)
{ delayms(10);
if(P0_3==0)
{
zhuchi_flag=0;
xuanshou_flag=1;
send(4);
send(0);
}
}
}