1 诸论1.1摘要本设计是一个基于MCS-51单片机实现的万年历。
单片机中央处理系统的方案设计,选用80C52单片机作为中央处理器,如图所示。该单片机除了拥有MCS-51系列单片机的所有优点外,内部还具有8K的在系统可编程FLASH存储器,低功耗的空闲和掉电模式,极大的降低了电路的功耗,还包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。整个系统结构紧凑,抗干扰能力强,性价比高。
1.2单片机发展概况单片机的发展历史可大致分为4个阶段。
第一阶段(1974年-1976年):单片机初级阶段。因工艺限制,单片机采用双片的形式而且功能比较简单。1974年12月,仙童公司推出了8位的F8单片机,实际上只包括了8位CPU、64B RAM和2个并行口。
第二阶段(1976年-1978年):低性能单片机阶段。1976年,Intel公司推出的MCS-48单片机(8位单片机)极大地促进了单片机的变革和发展;1977年,GI公司推出了PIC1650,但这个阶段的单片机仍然处于低性能阶段。
第三阶段(1978年-1983年):高性能单片机阶段。1978年,Zilog公司推出了28单片机;1980年,Intel公司在MCS-48单片机的基础上推出了MCS-51系列,Mortorola公司推出了6801单片机;这些产品使单片机的性能及应用跃上了一个新的台阶。此后,各公司的8位单片机迅速发展起来。这个阶段推出的单片机普遍带有串行I/O口、多级中断系统、16位定时器/计数器,片内ROM、RAM容量加大,且寻址范围可达64 KB,有的片内还带有A/D转换器。由于这类单片机的性能价格比高,所以被广泛应用,是目前应用数量最多的单片机。
第四阶段(1983年-现在):8位单片机巩固、发展及16位单片机、32位单片机推出阶段。16位单片机的典型产品为Intel公司生产的MCS-96系列单片机。而32位单片机除了具有更高的集成度外,其数据处理速度比16位单片机提高许多,性能比8位、16位单片机更加优越。20世纪90年代是单片机制造业大发展的时期,这个时期的Mortorola、Intel、ATMEL、德州仪器(TI)、三菱、日立、Philips、LG等公司也开发了一大批性能优越的单片机,极大地推动了单片机的应用。近年来,又有不少新型的高集成度单片机产品涌现出来,出现了单片机产品丰富多彩的局面。目前,除了8位单片机得到广泛应用之外,16位单片机、32位单片机也得到广大用户的青睐。
1.3单片机原理及应用简介 单片机是单片微型计算机的简称,指在一块大规模或超大规模集成电路芯片上制成的微型计算机。单片机具有体积小、功耗低、性价比高、应用灵活等优点,可以作为一个部件嵌入到各种装置和产品中。现代生活中,从通信设备、家用电器、办公应用到工业控制、仪器仪表、汽车电子、航空航天,几乎每件电子和机械产品中都有单片机在工作,单片机的用量早已远远超过包括个人计算机在内的其他计算机的总和。以其嵌入到实际产品中发挥的控制作用或所处的地位,单片机又被称为微控制器或嵌入式微控制器。
单片机的种类繁多、功能各异。Intel公司的MCS-51系列8位单片机,以其完善的结构、丰富的功能、开放的体系,盛行30多年而不衰。众多半导体厂商(如Atmel、Dallas Semi、Infineon、Philips/Signetics等)获得Intel公司的授权后,在保持代码兼容性的前提下,融合各自先进技术,针对不同市场需求,在时钟、存储器、定时器/计数器、I/O接口、串行总线控制等方面进行了改进、裁剪,使得在任何实际产品的设计中都有最恰当的芯片可供选择,也给这一单片机家族提供了旺盛的生命力。本书选择MCS-51系列单片机作为主讲机型,系统全面地介绍MCS-51单片机内部的功能结构、软硬件资源的原理与应用,以及使用外部电路进行功能扩展的方法。 单片机是单片微型计算机的简称,指在一块大规模或超大规模集成电路芯片上制成的微型计算机。单片机具有体积小、功耗低、性价比高、应用灵活等优点,可以作为一个部件嵌入到各种装置和产品中。现代生活中,从通信设备、家用电器、办公应用到工业控制、仪器仪表、汽车电子、航空航天,几乎每件电子和机械产品中都有单片机在工作,单片机的用量早已远远超过包括个人计算机在内的其他计算机的总和。以其嵌入到实际产品中发挥的控制作用或所处的地位,单片机又被称为微控制器或嵌入式微控制器。
单片机的种类繁多、功能各异。Intel公司的MCS-51系列8位单片机,以其完善的结构、丰富的功能、开放的体系,盛行30多年而不衰。众多半导体厂商(如Atmel、Dallas Semi、Infineon、Philips/Signetics等)获得Intel公司的授权后,在保持代码兼容性的前提下,融合各自先进技术,针对不同市场需求,在时钟、存储器、定时器/计数器、I/O接口、串行总线控制等方面进行了改进、裁剪,使得在任何实际产品的设计中都有最恰当的芯片可供选择,也给这一单片机家族提供了旺盛的生命力。本书选择MCS-51系列单片机作为主讲机型,系统全面地介绍MCS-51单片机内部的功能结构、软硬件资源的原理与应用,以及使用外部电路进行功能扩展的方法。
2 系统方案2.1系统功能1:LCD显示年、月、日、时、分、秒、星期、温度信息;
2:用按键可以调整日期和时间、星期;
3:可以设置闹铃时间,到闹铃响起;
2.2系统总体方案本设计分为编程,仿真,调试开发板等步骤。以单片机为主体,利用单片机的诸多功能来控制外部设备的正常运行。
显示器为LM016L,通过PO口将数据传输到显示器上。时钟信号的发生靠的是DS1302,将时钟信号传到单片机用于显示时间以及定时的功能。利用DS18B20检测外部环境温度,实时检测,将温度数据及时的传输到单片机。
2芯片简介2.2.180C52芯片80C52芯片结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。
80C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,80C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。80C52有PDIP(40pin)和PLCC(44pin)两种封装形式。
8051片内有 ROM,无须外接外存储器和373,更能体现“单片”的简练。但是你编的程序你无法烧写到其ROM中,只有将程序交芯片厂代你烧写,并是一次性的,今后你和芯片厂都不能改写其内容。
2.2.2实时时钟芯片DS1302美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路DS1302的结构、工作原理及其在实时显示时间中的应用。它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。
DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。
X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数据输入输出端(双向),后面有详细说明。
SCLK为时钟输入端。
2.2.3DS18B20单总线数字温度计DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。[
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。[
2.2.4Lcd1602液晶显示器1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
1602采用标准的16脚接口,其中:
第1脚:GND为电源地
第2脚:VCC接5V电源正极
第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:RW为读写信号线,高电平(1)时进行读操作,
低电平(0)时进行写操作。
第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳
变时执行指令。
第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电
源。15脚背光正极,16脚背光负极。+
3 系统软件设计
在多功能模块化程序设计中,主程序的作用时设置系统运行的一些初始状态及系统运行的环境,并将各种功能子程序按要求连接起来组成一个功能强大的系统。本系统主程序的流程图如图。在本程序中,LCD1602初始化:8位数据接口,两行显示,5*7点阵字符,显示开,关光标,光标移动为增量式。
LCD1602的初始化已被写成一个函数LCD——INITIAL(),直接调用就可完成LCD1602的初始化。
4 PROTUES软件仿真4.1 仿真过程- 仿真:打开keil uVision2,建立工程,输入所编写的源程序并对程序进行编译,在软件的帮助下检查其中的错误并进行反复修改,知道编译正确侯运行,生成相应的HEX文件,并进行保存,保存时给其命名,以便将来载入程序时容易找到。
- 打开PROTUES软件,并出画单片机电子万年历具体运行电路图。
- 检查所画电路运行图,确保没有错误以后,在PROTUES下对原理图进行加载keil uVision下的源程序。
4.2 仿真结果5 开发板调试结果…
6 程序流程图7 心得体会课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,回顾此次单片机课程设计,我感觉受益良多,其中编程,仿真,调试开发板等步骤。这次课程设计是我懂得理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学知识和实践相结合起来,从理论中得出结论,才能真正让所学的知识服务于我们的生活,服务于我们的社会,从而提高我们的实际动手能力和独立思考的能力,同时加强了与同学的合作和与老师的沟通,收获很多大!这次课程设计也让我发现了自己的不足之处,对以前学过的理论知识理解得不够深刻,掌握得不够牢固,对单片机汇编语言掌握得不好,一定要把以前的知识温故而知新。
8 待解决问题1:仿真部件所属的库
2:程序中一则警告无法消除
9 附录
单片机源程序如下: