1、基于51单片机的电子表设计1 绪论 电子表是20世纪50年代才开始出现的新型计时器。最早的一款电子表被称做“摆轮游丝电子表”,它诞生于1955年。这种手表用电磁摆轮代替发条驱动,以摆轮游丝作为振 荡器,微型电池为能源,通过电子线路驱动摆轮工作。它的走时部分与机械手表完全相同,被称为第一代电子手表。1960年,美国布洛瓦公司最早开始出售“音叉电子手表”。这种手表以金属音叉作为振荡器,用电子线路输出脉冲电流,使机械音叉振动。它比摆轮式电子手表结构简单,走时更精确,被称为第二代电子手表。1969年,日本精工舍公司推出了世界上最早的石英电子表。石英电子表的出现,立刻成为了钟表界主流产品,它走时精确,结
2、构简单,轻松地将一、二代电子表,甚至机械表淘汰出局。石英表又称“水晶振动式电子表”,因为它是利用水晶片的“发振现象”来计时的。当水晶受到外部的加力电压,就会产生变形和伸缩反应;如果压缩水晶,便会使水晶两端产生电力。这样的性质在很多结晶体上也可见到,称为“压电效果”。石英表就是利用周期性持续“发振”的水晶,为我们带来准确的时间。单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小
3、而完善的微型计算机系统,在工业控制领域的广泛应用。从上世纪80年代,由当时的4位、8为单片机,发展到现在的32位300M的高速单片机。1.1 单片机的介绍 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。它
4、最早是被用在工业控制领域。1.2单片机应用的特点 控制功能和可靠性高单片机是为了满足工业控制而设计的,所以实时控制功能特别强,其CPU可以对I/O接口直接进行操作,位操作能力更是其它计算机无法比拟的,另外,由于CPU,存储器,以及I/O接口集成在同一芯片内,各部件之间的连接紧凑,数据在传送时受到干扰小,且不易受环境条件的影响,所以单片机的可靠性非常高。 体积小,价格低,易于产品化每一片单片机既是一台完整的微型计算机,对于批量的专用场合,一方面可以在众多的单片机品种间进行匹配选择,同时还可以专门进行芯片设计,使芯片功能与应用具有良好和对应关系。对单片机产品的引脚封装方面,有的单片机引脚已减少到8
5、个或更少,从而使应用系统的印刷板减小,按插件减少,安装简单。在现代的各种电子器件中,单片机具有良好的性能价格比,这正是单片机得以广泛应用的重要原因。1.3单片机的应用领域(1)能仪器仪表单片机用于各种仪表,一方面提高了仪表仪器的使用功能和精度,使仪器仪表智能化,同时还简化了仪器仪表的硬件结构,从而可以方便地完成仪器仪表的升级代换。如各种智能化电气测量仪表,智能传感器等。(2)机电一体化机电一体化产品是集机械技术,微电子技术,自动化技术和计算机技术于一体,具有智能化特征的各种机电产品。单片机在机电一体化产品的开发中可以发挥巨大的作用。典型的产品如:机器人,数控机床,自动包装机,点钞机,医疗设备,
6、打印机,传真机,复印机等。(3)实时工业控制单片机还可以用于各种物理量的采集与控制。电流,电压,温度,液位,流量等物理参数的采集和控制均可以利用单片机方便地实现。在这类系统中,利用单片机作为系统控制器,可以根据被控对象的不同特征采用不同的智能算法,实现期望的控制指标,从而提高生产效率和产品质量。典型应用如电动机转速控制,温度控制,自动生产线等。(4)分布系统的前端模式在较复杂的工业系统中,经常要采用分布式控制系统完成大量的分布参数的采集。在这类系统中,采用单片机作为分布式系统的前端采集模块。系统具有运行可靠,数据采集方便灵活,成本低廉等一系列有点。(5)家用电器家用电器是单片机的又一重要应用领
7、域,前景十分广泛如空调,电冰箱,洗衣机、电饭煲,高档洗浴设备,高档玩具。另外,交通领域中,汽车,火车,飞机,航天等均有单片机的广泛应用。1.4 51系列单片机 51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需
8、要注意的是52系列的单片机一般不具备自编程能力。当前常用的51系列单片机主要产品有:*Intel的:80C31、80C51、87C51,80C32、80C52、87C52等;*ATMEL的:89C51、89C52、89C2051等;*Philips、华邦、Dallas、Siemens(Infineon)等公司的许多产品。目前,国产宏晶STC单片机以其低功耗、廉价、稳定性能,占据着国内51单片机较大市场。 1.5 硬件设计当编写自己的程序信手拈来、阅读别人的程序能够发现问题的时候,说明你的单片机编程水平相当不错了。接下来就应该研究的硬件了。硬件设计包括电路原理设计和PCB板设计。学习做硬件要比学
9、习做软件麻烦,成本更高,周期更长。但是,学习单片机的最终目的是做产品开发-软件和硬件相结合形成完整的控制系统。所以,做硬件也是学习单片机技术的一个必学内容。 电路原理设计涉及到各种芯片的应用,而这些芯片外围电路的设计、典型应用电路和与单片机的连接等在芯片数据手册(DATASHEET)都能找到答案,前提是要看得懂全英文的数据手册。否则,照搬别人的设计永远落在别人的后面,你做的产品就没有创意。电子技术领域的第一手资料(DATASHEET)都是英文,从第一手资料里你所获得的知识可能是在教科书、网络文档和课外读物等所没有的知识。虽然有些资料也都是在DATASHEET的基础上撰写的,但内容不全面,甚至存
10、在翻译上的遗漏和错误。当然,阅读DATASHEET需要具备一定的英文阅读能力,这也是阻碍单片机学习者晋级的绊脚石。良好的英文阅读能力能让你在单片机技术知识的海洋里自由遨游。 做PCB板就比较简单了。只要懂得使用Protel软件或 AltimDesigner软件就没问题了。但要想做的板子布局美观、布线合理还得费一番功夫了。娴熟的单片机C语言编程、会使用Protel软件或 AltimDesigner软件设计PCB板和具备一定的英文阅读能力,你就是一个遇强则强的单片机高手了。1.6 芯片简介AT89C51单片机引脚图如下: 图1.1 AT89C51引脚图 MCS-51单片机是标准的40引脚双列直插式
11、集成电路芯片其各引脚功能如下:VCC:+5V电源。VSS:接地。RST:复位信号。当输入的复位信号延续两个机器周期以上的高电平时即为有效,用完成单片机的复位初始化操作。 XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。P0口:P0口为一个8位漏极开路双向I/O口,当作输出口使用时,必须接上拉电阻才能有高电平输出;当作输入口使用时,必须先向电路中的锁存器写入“1”,使FET截止,以避免锁存器为“0”状态时对引脚读入的干扰。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口它不再需要多路转接电路MU
12、X;因此它作为输出口使用时,无需再外接上拉电阻,当作为输入口使用时,同样也需先向其锁存器写“1”,使输出驱动电路的FET截止。 P2口:P2口电路比P1口电路多了一个多路转接电路MUX,这又正好与P0口一样。P2口可以作为通用的I/O口使用,这时多路转接电路开关倒向锁丰存器Q端。P3口:P3口特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。当作为I/O口使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。当输出第二功能信号时,该位应应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出,具体第二功能如表1所示。2设计
13、方案2.1 主程序设计思路 通过单片机内部的计数/定时器,采用软件编程来实现时钟计数,一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合。采用时钟芯片,它的功能强大,功能部件集成在芯片内部,具有自动产生时钟等相关功能,硬件成本相对较高;软件编程简单,通常用在对时钟精度要求较高的场合。 先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有按键按下时,则转入相应的功能程序。2.2 定时器/计数器T0中断服务程序 T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对
14、50ms计数,计20次则对秒单元加一。秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。在对各单元计数的同时,把他们的值放到存储器单元的指定位置。2.3 示意图 图2.1 程序示意图2.4 按键处理按键设置为:如果没有按键吗,则时钟正常走时。当按下K0键时,进入调分状态,时钟停止走动;按K1和K2按键可以进行加一和减一操作;继续按K0键可以分别进行分和小时的调整;最后按K0键启动计时。3 汇编语言程序ORG 0000H LJMP START ORG 000BH LJMP INIT0 START: MOV
15、R0,#70H ;主程序开始 MOV R7,#0CH INIT: MOV R0,#00H INC R0 DJN Z R7,INIT MOV 72H,#10 ;对连字符进行装值 MOV 75H,#10 MOV TMOD,#01H ;选择定时器/计数器T0的方式1 MOV TL0,#0B0H ;对低位赋初值 MOV TH0,#03CH ;高位赋初值 SETB EA SETB ET0 SETB TR0 START1: LCALL SCAN LCALL KEYSCAN SJMP START1 DL1MS: MOV R6,#14H ;延时1子程序 DL1: MOV R7,#19H DL2: DJNZ R
16、7,DL2 DJNZ R6,DL1 RET DL20MS: ACALL SCAN ;延时20ms子程序 ACALL SCAN ACALL SCAN RET ;数码管显示程序开始 SCAN: MOV A,78H MOV B,#0AH DIV AB ;时间秒的十位送给A,时间秒的个位送B MOV 71H,A ;时间秒要显示的十位 MOV 70H,B ;时间秒要显示的个位 MOV A,79H MOV B,#0AH DIV AB ;时间分的十位送给A,时间分的个位送B MOV 74H,A ;时间分要显示的十位送地址 MOV 73H,B ;时间分要显示的个位送地址 MOV A,7AH MOV B,#0A
17、H DIV AB ;时间时的十位送给A,时间时的个位送B MOV 77H,A ;时间时显示的十位送地址 MOV 76H,B ;时间时要显示的个位送地址 MOV R1,#70H MOV R5,#0FEH MOV R3,#08H SCAN1: MOV A,R5 ;数码管的显示程序 MOV P2,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR ;对字段表取值显示 MOV P0,A MOV A,R5 LCALL DL1MS INC R1 MOV A,R5 RL A MOV R5,A DJNZ R3,SCAN1 MOV P2,#0FFH MOV P0,#0FFH RET ;
18、09和-的字段表TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH ;定时/计数器T0中断程序 INIT0: PUSH ACC PUSH PSW CLR ET0 CLR TR0 MOV TL0,#0B0H MOV TH0,#03CH SETB TR0 INC 7BH MOV A,7BHCJNE A,#14H,OUTT0 ;50ms是否到20次,没有到就继续执行50ms的延时 MOV 7BH,#00 INC 78H MOV A,78HCJNE A,#3CH,OUTT0 ;一秒的延时是否计到60次,没有就继续执行 MOV 78H,#0
19、0 INC 79H MOV A,79H CJNE A,#3CH,OUTT0 MOV 79H,#00 INC 7AH MOV A,7AH CJNE A,#18H,OUTT0 ;60分钟的延时是否计到24次,没有就 继续执行程序 MOV 7AH,#00 OUTT0:SETB ET0 ;启动定时器T0 POP PSW POP ACC RETI ;按键处理程序 KEYSCAN:CLR EA JNB P1.0,KEYSCAN0 ;P1.0有按键按下则跳转到子程序 JNB P1.1,KEYSCAN1 ;P1.1有按键按下则跳转到子程序 JNB P1.2,KEYSCAN2 ;P1.2有按键按下则跳转到子程序
20、 KEYOUT: SETB EA RET KEYSCAN0:LCALL DL20MS ;20ms的延时消抖 JB P1.0,KEYOUT WAIT0: JNB P1.0,WAIT0 ;判断按键是否松手, 松手就往下执行程序 INC 7CH MOV A,7CH CLR ET0 CLR TR0 CJNE A,#03H,KEYOUT ;按下第一次和第二次对时、分选定 MOV 7CH,#00 ;按下第三次时就启动计时 SETB ET0 SETB TR0 SJMP KEYOUT KEYSCAN1:LCALL DL20MS ;按键加一的程序 JB P1.1,KEYOUT WAIT1: JNB P1.1,W
21、AIT1 MOV A,7CH CJNE A,#02H,KSCAN11 ;如果功能键按下则对时加一调整 INC 79H CJNE A,#3CH,KEYOUT ;如果加到60则清零 MOV 79H,#00 SJMP KEYOUT KSCAN11:INC 7AH ;如果功能键是按下第 二次则对分进行加一调整 MOV A,7AH CJNE A,#18H,KEYOUT MOV 7AH,#00 SJMP KEYOUT KEYSCAN2:LCALL DL20MS ;延时消抖程序 JB P1.2,KEYOUT WAIT2: JNB P1.2,WAIT2 ;判断是否放开按键 MOV A,7CH CJNE A,#
22、02H,KSCAN21 ;如果功能键是按下第一次对时进行减一 DEC 79H MOV A,79H CJNE A,#0FFH,KEYOUT MOV 79H,#3BH SJMP KEYOUT KSCAN21:DEC 7AH ;如果功能键是按下第二次则对分进行减一 CJNE A,#0FFH,KEYOUT MOV 7AH,#17H SJMP KEYOUT END4 硬件系统4.1硬件概况硬件系统包括系统的硬件主要包括单片机芯片,数码管显示,按键开关电路等,其运作方式如下图: 晶振复位电路单片机输入模式键输入调整键LED显示 图4.1 单片机时钟的基本框图 片机系统中的时钟是一切与时间有关过程的运行基础
23、,在实时控制系统中尤其如此。钟有绝对时钟和相对时钟两种。绝对时钟是与当地的时钟同步的,有月、日,时、秒等功。相对时钟则与当地时间无关,一般只有时、分、自动控制定时时间长短的功能。MOS-51系列单片机只有T0,T1两个16位定时器,若都用作系统时钟的绝对时钟和相对时钟定时,则当系统再用于通信等需要定时器资源的情况下,会出现定时器不够用的情况.为此,统一设计单片机的时钟系统,用一个定时器完成绝对和相对一个完整的数字钟电路相当于一个简单的系统,每个部分都要设计。MCS51单片机的片内结构由八部分组成。微型处理机(CPU),数据存储器(RAM)。程序存贮器(ROM,EPROM),I/O口,定时器,计
24、数器。中断系统及特殊的功能寄存器(SFR)。 数据存储器和程序存储器的可寻址的范围是:64K地址范围是:0000H-FFFFH扩展的I/O均占用存储器的地址。时钟等多项定时任务是有实际意义的。4.2 protues仿真硬件电路 图4.2 硬件电路图4.3 调试 一、硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。(1) 脱机检查。用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。为了保护芯片,应先对各IC座(尤其是
25、电源端)电位进行检查,确定其无误后再插入芯片检查。 (2) 联机调试。暂时拔掉AT89S51芯片,将仿真器的40芯仿真插头插入AT89S51的芯片插座进行调试,检验键盘/显示接口电路是否满足设计要求。可以通过一些简单的测试软件来查看接口工作是否正常。例如,我们可以设计一个软件,使P1、P2口输出55H或AAH,同时读P0口,运行后用万用表检查相应端口电平是否一高一低,在仿真器中检查读入的P0口低3位是否为1,如果正常则说明8155工作正常。还可设计一个使所有LED全显示“8.”的静态显示程序来检验LED的好坏。如果运行测试结果与预期不符,则很容易根据故障现象判断故障原因并采取针对性措施排除故障
26、。 二、软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。联调需要注意的是,各程序模块间能否正确传递参数,特别要注意各子程序的现场保护与恢复。5 设计总结整个设计过程中遇到的最大问题是软件的编写,由于采用的是汇编语言,其间使用到的各种寄存器、存储器地址、变量很多,很难对程序的整体把握。通过电子钟的设计,对单片机的原理、结构、外围电路进一步的了解。在整个设计过程中学到了团体精神和独立解决问题的重要性。为以后的求职之路打下了基础。 参考资料1 杨文龙.单片机原理及应用.西安:西安电子科技大学出版社,19932 李朝青.单片机原理及接口技术.北京:北京航空航天大学出版社,20033 胡汉才.单片机原理及系统设计.北京:清华大学出版社,20034 杨忠煌,黄博俊,李文昌.单芯片8051实务与应用.北京:中国水利水电出版社,2001
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1