摘要
单片机作为应用最广泛的控制系统之一,具有体积小,易于控制,价格便宜,安全可靠等等优良的性能而被广泛的关注。无论是小到儿童玩具,到工业控制系统,大到航天航空系统的设计与操作之中,随处可见单片机的踪影。大学电子专业,电气专业,通信等专业开设单片机课程,对人才的培养无疑是有着重大的意义的。
学习单片机最重要的方法就是实现理论与实践相结合的学习方法。有些工程师说过,能利用单片机设计并实现电子时钟,技能基本上掌握单片机的使用。所以设计电子时钟的真正目的不在于设计出成品而投入使用,而是在于熟悉单片机的基本功能与编程来实现单片机的控制。作为大学生,以后出去就业或是继续学业,都要有一定的动手能力和实践能力,而这,便是电子计时器设计的另一个目的。
电子计时器是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。他的计时周期为24小时,显示满刻度为23时59分59秒。秒信号产生器时整个系统 的计时信号,它直接决定计时系统的精度,一般用晶振加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每个六十秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用六十进制计数器,每累计六十分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。
关键字:单片机;电子计时器;分计数器;时计数器;秒计数器
目 录
1 单片机简介 1.1 单片机概述 1.2 单片机基本结构 1.3 单片机应用分类 2 电子计时器简介 2.1 电子计时器原理 2.2 电子计时器应用 3 电子计时器硬件设计 3.1 功能框图
3.2 单片机复位与晶振电路 3.3 1602显示电路 3.4总体电路设计 3 电子计时器软件设计 4.1程序流程框图 4.2程序源代码 参考文献
1 单片机简介
1.1 单片机概述
单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit), 常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。它最早是被用在工业控制领域。
由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,当时的单片机都是8位或4
位的。其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列单片机系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARM已经发展出了32位的主频超过300M的高端单片机,直到目前基于8031的单片机还在广泛的使用。在很多方面单片机比专用处理器更适合应用于嵌入式系统,因此它得到了广泛的应用。事实上单片机是世界上数量最多处理器,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。 汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。
1.2单片机基本结构
单片机由运算器、控制器、存储器、输入输出设备构成。
1.3单片机应用分类
单片机作为计算机发展的一个重要分支领域,根据目前发展情况,从不同角度单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。
通用型/专用型
这是按单片机适用范围来区分的。例如:80C51是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。 总线型/非总线型
这是按单片机是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接,另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。 控制型/家电型
这是按照单片机大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。
2 电子计时器简介
2.1 电子计时器原理
电子计时器的核心是电子振荡器,由电子振荡器的频率确定时间基数,在此基础上实现数字显示或者指针运动。振荡器的频率的精度决定计时精度。常用的电子振荡器是晶体振荡器。
电子计时器是一个将“时”、“分”、“秒”显示于人的视觉器官的计时装置。他的计时周期为24小时,显示满刻度为23时59分59秒。秒信号产生器时整个系统 的计时信号,它直接决定计时系统的精度,一般用晶振加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每个六十秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用六十进制计数器,每累计六十分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用24进制计时器,可实现对一天24小时的累计。
2.电子计时器应用
电子计时器他有点很多,比如:小巧精致、价格低廉、使用简便等等。所以在电子计时器在很多领域都有广泛运用。比如:体育竞技类比赛中所用的专业计时器,家用的电子时钟,还有高科技用的一些精密的电子计数设备、一些高尖端武器和科学研发、产品技术等,都需要用到这样的紧密计数器来实现。
3 电子计时器硬件设计
3.1 功能框图
11.0592MHZ晶振 复位电路设计 提供外部 时钟振荡 单片机 USB 5V电压 控制 至1602液晶 电脑供电 模块 显示 模块 图3.1 电子计时器功能
显示模块 上面的功能框图可由3个部分组成。如下:
第一部分:通过USB的物理特性,再通过芯片MAX232实现在线提供单片机5V电压。
第二部分:单片机控制模块,有编写程序控制单片机引脚点位的变化来时时控制
1602的显示。
第三部分:显示模块,为1602液晶显示。
3.2 单片机复位与晶振电路
单片机的工作需要外部固定提供的频率,才能使单片机正常的工作,复位电路是为
了方便单片机调试的时候便于恢复。
晶振频率一般有11.0592MHZ、12MHZ、6MHZ等等。
图3.2 晶振电路
图3.3 复位电路
3.3 1602显示电路
本实验使用的1602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCII字符集子库,只有并行接口,无串行接口。其接口信号说明如表3.1所示。
图 3.4 1602液晶显示
表3.1 1602液晶接口信号说明
如果想要将电子计时器的程序编写好,掌握1602液晶的写操作时序是很有必要的。其写操作时序图如下:图 3.5。由1602液晶显示屏的各引脚功能以及时序图容易知道,在使用1602时:
(1)1号引脚接地GND。
(2)2号引脚接到电源正极(5V)。
(3)3号引脚为一电位器,可使用滑动变阻器来实现其功能。
(4)4.、5、6号引脚为液晶的控制信号,EA=1,打开液晶显示;RS为数据/指令写入端,RS=1,写入数据,RS=0则写入指令。
(5)7-14脚为数据或指令入口,与单片机的一个I/O口相连。
图 3.5 1602液晶写操作时序图
3.4 总体电路设计
将电路图的各部分硬件设计好,总体电路图就不难设计 了,其总体电路图设计如图3.6。
图3.6 电子计时器总体电路图
4 电子计时器软件设计
4.1 程序流程框图
开始 N
初始化 60妙到? Y 开始计时
N 1 秒到?
Y 秒加1
N 60 妙到?
Y 分加1 秒清零
N 60妙到?
Y 时加1 分清零
图4.1 电子计时器流程框图
归00:00:00 结束
4.2 程序源代码 #include #define uchar unsigned char #define uint unsigned int sbit rs=P3^5; sbit lcden=P3^4; sbit wr=P3^6; sbit wela=P2^6; sbit dula=P2^7; void com(uchar); void date(uchar); void delay(uchar); void clock();
void display(uchar,uchar); void init();
uchar temp,miao,fen,shi;
uchar code table0[]=\"00 : 00 : 00\"; uchar code table1[]=\"01234567\"; void main() {
init(); while(1) {
clock(); } }
void com(uchar a) {
rs=1; rs=0; wr=1; wr=0; lcden=1; P0=a; lcden=0;
delay(5); }
void date(uchar b) {
rs=0; rs=1; wr=1; wr=0; lcden=1; P0=b; lcden=0; delay(5); }
void init() {
uchar e; wela=0; dula=0; temp=0; miao=0; fen=0; shi=0;
com(0x01); com(0x38); com(0x0c); com(0x06); com(0x80+2); for(e=0;e<12;e++) {
date(table0[e]); delay(1); }
EA=1; ET0=1;
TMOD=0X01;
TH0=(65536-50000)/256; TL0=536-50000)%256; TR0=1; }
void delay(uchar z) {
uint i,j;
for(i=z;i>0;i--) for(j=110;j>0;j--); }
void clock() {
if(miao==60) {
miao=0; fen++;
if(fen==60) {
fen=0; shi++;
if(shi==24) {
shi=0; }
display(2,shi); }
display(7,fen); }
display(12,miao); }
void timer() interrupt 1 {
TH0=(65536-50000)/256; TL0=(65536-50000)%256;
temp++;
if(temp==20) {
temp=0; miao++;
} }
void display(uchar add,uchar dat) {
uchar shi,ge; shi=dat/10; ge=dat%10; com(0x80+add); date(table1[shi]); date(table1[ge]); }
参考资料
【1】李华.MCS-51系列单片机实用接口技术(第2版) 北京航空航天大学出版社 2001. 【2】单片机实验与实践教程 北京航空航天大学出版社 何立民等2004年7月. 【3】求是科技.单片机典型模块设计实例导航(第2版) 人民邮电出版社,2008. 【4】THKSCM-1型单片机实验系统实验指导书、KEIL 软件,WAVE 软件. 【5】数字控制与PLC实验室”THKSCM-1型单片机实验系统”.