基于STC89C52人机界面数码管显示.docx
- 文档编号:7365354
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:13
- 大小:108.10KB
基于STC89C52人机界面数码管显示.docx
《基于STC89C52人机界面数码管显示.docx》由会员分享,可在线阅读,更多相关《基于STC89C52人机界面数码管显示.docx(13页珍藏版)》请在冰豆网上搜索。
基于STC89C52人机界面数码管显示
福建电力职业技术学院
课程设计
课程名称:
《智能仪器》
题目:
基于STC89C52人机界面——数码管显示
专业班次:
姓名:
学号:
指导教师:
学期:
2011-2012学年第2学期
日期:
2012.2
1.引言
1.1本设计意义
科技的进步需要技术不断的提升。
一块大而复杂的模 拟电路花费了您巨大的精力,繁多的元器件增加了您的成本。
而现在,只需要一块几厘米见方的单片机,写入简单 的程序,就可以使您以前的电路简单很多。
相信您在使用并掌握了单片机技术后,不管在您今后开发或是工作上,一定会带来意想不到的惊喜。
我们首先从它的构成说起:
单片机,亦称单片微电脑 或单片微型计算机。
它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口 (I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
计算机的产生加快了人类改造世界的步伐,但是它毕 竟体积大。
微计算机(单片机)在这种情况下诞生了,它为我们改变了什么?
纵观我们现在生活的各个领域,从导 弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据 处理,以及我们生活中广泛使用的各种智能IC 卡、电子宠物等,这些都离不开单片机。
以前没有单片机时,这些 东西也能做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高,并且由于长期使用, 元器件不断老化,控制的精度自然也会达不到标准。
在单片机产生后,我们就将控制这些东西变为智能化了,我们 只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。
这样产品的体积变小了,成 本也降低了,长期使用也不会担心精度达不到了。
所以,它的魔力不仅是在现在,在将来将会有更多的 人来接受它、使用它。
据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于 世界市场我国的占有率还不到1%。
特别是沿海地区的玩具厂等生产产品多数用到单片机,并不断地辐射向内地。
所以,学习单片机在我国是有着广阔前景的。
单片机最大的特点可以单独完成现代工业控制所要求的智能化控制功能。
单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化。
数码管显示4X4矩阵键盘按键号是按下任意键时,数码管都会显示其键的序号,通过AT89C51单片机的程序处理,扫描程序首先判断按键发生在哪一列,然后根据所发生的行附加不同的值,从而得到按键的序号。
关键词:
STC89C52单片机、数码管显示4X4矩阵键盘按键号、数码管、键盘
1.2本设计任务和主要内容
?
?
?
?
?
1、在系统掌握单片机相应基础知识的前提下,熟悉单片机应用系统的设计方法及系统设计的基本步骤。
2、完成所需单片机应用系统原理图设计绘制的基础上完成系统的电路图设计。
3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。
5、用STC89C52设计出题目所要求的数码管动态循环显示,并针对实际设计过程中软、硬件设计方面出现的问题提出相应解决办法。
6、通过单片机应用系统的设计将所学的知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力;领会单片机应用系统的软、硬件调试方法和系统的研制开发过程,为进一步的科研实践活动打下坚实的基础。
2.硬件设计
2.1系统框图
本文所设计的数码管显示系统由STC89S52单片机及其最小系统、复位电路、矩阵键盘、晶振电路、数码管显示等部分组成。
其硬件原理图如图2.1所示。
图2.1?
?
?
?
2.2最小系统
1简要介绍STC89C52单片机及其最小系统如图:
2.2
图2.2
STC89C52是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
STC89C52是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-52指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的STC89C52是一种高效微控制器,STC89C52是它的一种精简版本。
2、主要特性:
(1)与MCS-C52兼容4K字节可编程闪烁存储器寿命:
1000写/擦循环数据保留时间
(2)10年全静态工作:
三级程序存储器锁定128*8位内部RAM32
(3)可编程I/O线两个16位定时器/计数器5个中断源可编程串行通道低功耗的闲置和掉电模式
(4)片内振荡器和时钟电路其包含中央处理器(CPU)、存储器(程序存储器ROM和数据存储器RAM)、定时/计数器、并行I/O接口(P1、P2、P3、P0共4个8位口)、一个双工串行接口和5个中断源等几大单元及数据总线、地址总线和控制总线三大总线等结构组成.
3复位电路:
复位电路是单片机正常运行的一个必要部分,复位电路应保证单片机在上点瞬间进行一次有效的复位,在单片机正常工作时將RST引脚置低。
此外通过一个按键进行手动复位,在单片机运行不正常时使用。
4
(1)电源:
单片机使用的是5V电源,其中正极接40引脚负极接20引脚,在电路中VCC、GND识符;
(2)晶振电路:
单片机是一中时序电路,必须提供脉冲信号才能正常工作,使用晶体震荡器
2.3矩阵键盘与独立键盘的区别
1矩阵键盘与独立键盘区别
(1)独立键盘:
编程简单,但是浪费IO口,毕竟单片机系统的IO资源很有限。
矩阵键盘:
编程复杂,但是节省IO口。
2.3.1矩阵键盘扫描方法
确定矩阵式键盘上按键被按下介绍一种“行扫描法”。
行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。
1、判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。
只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。
若所有列线均为高电平,则键盘中无键按下。
2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。
其方法是:
依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。
在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。
若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。
2.4数码管阴极阳极
所谓共阳共阴,是针对数码管的公共脚而言的。
一个1位典型的数码管,一般有10个脚,8个段码(7段加1个小数点),剩下两个脚接在一起。
各个段码实际上是一个发光二极管,既然是发光二极管,就有正负极。
所谓共阳,也就是说公共脚是正极(阳极),所有的段码实际上是负极,当某一个或某几个段码位接低电平,公共脚接高电平时,对应的段码位就能点亮,进而组合形成我们看到的数字或字母。
共阴刚好相反,也就是公共脚是负极(阴极),段码位是阳极,当公共脚接地,段码位接高电平时,对应段码位点亮。
1位数码管是这样,更多位的数码管也基本跟这个原理类似。
共阴共阳与电路接线密切相关,决定了驱动电路的接法,因此在电路设计前要考虑好数码管的类型,否则就不能实现显示的效果了。
2.4.1数码管简介
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。
led数码管常用段数一般为7段有的另加一个小数点,还有一种是类似于3位“+1”型。
。
2.4.2数码管显示原理
我们最常用的是七段式数码管,八段比七段多了一个小数点,其他的基本相同。
所谓的八段就是指数码管里有八个小LED发光二极管,通过控制不同的LED的亮灭来显示出不同的字形。
数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。
而共阳极就是将八个LED的阳极连在一起
其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,共阳数码管将其接正5伏电源。
一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。
显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。
数码管的8段,对应一个字节的8位,a对应最低位,dP对应最高位。
所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000即0xc0。
如图2.4
图2.4
3软件设计
3.1程序流程图如图3.1所示
图3.1
说明:
主程序刚开始时初始化,判断是否有按键按下,是的话就执行下一语句,否则结束语句,若有按键按下则在清除按键标识对按键的判断做进一步的处理,无限循环,直到满足为止,最后显示所有按键值。
3.2单片机结构原理及外部引脚结构如图3.2
图3.2
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在编程时,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的一些特殊功能口,如图3.3
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
INTO(外中断0)
P3.3
INT1(外中断1)
P3.4
T0(定时/计数器0)
P3.5
T1(定时计数器1)
P3.6
WR(外部数据存储器写选通)
P3.7
RD(外部数据存储器读选通)
图3.3P3口特殊功能表
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持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:
来自反向振荡器的输出。
3.3单片机系统设计步骤
1、理解设计任务要求(通过阅读有关资料及调查研究);
2、对总体方案进行分析、论证,验证其可行性;
3、系统硬件电路的设计,使用Protel软件制作硬件电路图。
4、系统控制软件的设计:
1)以功能明确、相互界面能清晰分割的软件程序为基础,确定主程序流程框图;
2)以主程序流程框图为基础,确定各模块程序算法及实现的功能,进一步确定各模块程序流程框图;
3)根据软件流程框图,用汇编语言或C语言编写主程序和延时子程序;
4)系统软件仿真、硬件制作、硬件的调试;
5)编写课程设计说明书,答辩验收。
3.4调试结果
通过多次的调试,基本上完成了矩阵键盘控制数码管并显示其按键值。
3.5序设计
voidmain(void)
{
chari,key;
while
(1){
display();
key=keyboard();
if(key<16)
{
disp_buff[4]=disp_buff[3];
disp_buff[3]=disp_buff[2];
disp_buff[2]=disp_buff[1];
disp_buff[1]=disp_buff[0];
disp_buff[0]=key;
for(i=0;i<20;i++)display();
while(key<16)
{
key=keyboard();
display();
}
}
}
}
4.设计小结
由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。
这次实训提高了我们的设计能力与及对电路的分析能力.同时在软件的编程方面得到更到的提高,对编程能力得到加强.同时对所学的知识得到很大的提高与巩固.本次实验熟悉了单片机的使用和功能,经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计的功能,熟悉了KeiluVision3进行程序调试
在整个设计过程中,发挥团队精神,分工合作,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。
较好的完成了作品。
相互学习、相互讨论、研究。
完了最初的设想。
程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同组员的讨论,理清了思路,反而得心应手。
在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。
也练就了我们的耐心,做什么事都在有耐心。
总之,我们的能力得到了全方位的提高。
参考文献
[1]刘勇编数字电路电子工业出版社2004
[2]陈正振编电子电路设计与制作广西交通职业技术学院信息工程系2007
[3]杨子文编单片机原理及应用西安电子科技大学出版社2006
[4]王法能编单片机原理及应用科学出版社2004
附录:
课程设计程序清单
#include
chardisp_buff[]={0,0,0,0,0,0,0,0};delay1ms(unsignedintt){
unsignedinti,j;
for(i=0;i } voiddisplay(void) { charcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; charcodewei[]={0xf7,0xfb,0xfd,0xfe};chari; for(i=0;i<8;i++) { P2=0; P0=table[disp_buff[i]]; P2=wei[i]; delay1ms (2); } } unsignedcharkeyboard(void) { chari,j,temp,Buffer[4]={0xef,0xdf,0xbf,0x7f}; for(j=0;j<4;j++) { P1=Buffer[j];temp=0x01;for(i=0;i<4;i++) { if(! (P1&temp))return(i+j*4); temp<<=1;} } return16;} voidmain(void) { chari,key; while (1) { display(); key=keyboard();if(key<16) { disp_buff[4]=disp_buff[3]; disp_buff[3]=disp_buff[2]; disp_buff[2]=disp_buff[1]; disp_buff[1]=disp_buff[0]; disp_buff[0]=key; for(i=0;i<20;i++)display();while(key<16) {key=keyboard(); display(); } } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STC89C52 人机界面 数码管 显示
![提示](https://static.bdocx.com/images/bang_tan.gif)