基于单片机电子时钟的设计 - 图文(2)

2019-01-26 14:19

统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被

图5 单片机系统冻结,单片机一切工作停止,直到下一个中断或硬件复位为

止。最高运作频率35MHz,6T/12T可选。 5. 数码管显示电路

将所有数码管的8个显示段码\的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,电路如下图:

图6 数码管显示电路

四、软件设计

本系统的软件系统主要可分为主程序、定时计数中断程序、按键程序、延时程序四大模块。 设计思路:

本系统主要可分为主程序、定时计数中断程序、按键程序、延时程序和共阴极数码管显示程序。定时中断程序是利用单片机内部定时器0实现1秒的定时,然后利用软件延时实现分小时,时间调整程序是利用单片机的内部存贮器,把调整好的时间写到显示时间的存贮单元,然后启动定时器开始计时并显示,延时程

序是利用软件实现延时达到去抖的目的和数码管动态显示的延时。主程序就是利用这些子程序中断程序实现显示、定时等功能。

1.软件流程图

(1)主程序

(2)键盘扫描程序

开始 初始化 键盘扫描 显示 开始 计时满1s 秒加1 满60s 秒清零,分加1 分满60 分清零,时加1

(3)显示程序

时间数据个十位分离 开始

送段选码 送位选码 i>8 ? i=0

2、程序清单

#include

#define uint unsigned int #define uchar unsigned char

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};

结束 消隐

sbit k0=P1^0; sbit k1=P1^1; sbit k2=P1^2;

int s0,s1,min0,min1,h0,h1,shi,fen,miao,count,slnum,a0,a1,b0,b1,c0,c1; void delay(uint z) //延时函数1ms {

uintx,y;

for(x=z;x>0;x--) for(y=90;y>0;y--); }

void init() //初始化函数 {

P0=table[0]; P2=0xff; shi=23;

fen=59; //上电时间23-59-50 miao=50;

s1=miao/10; s0=miao; min1=fen/10; min0=fen; h1=shi/10; h0=shi; //分离出个位十位 TMOD=0x01;

TH0=(65536-50000)/256; TL0=(65536-50000)%6; //基准时间为20ms EA=1; ET0=1; TR0=1; //打开中断定时器 }

void display0() // {

P2=0x80; P0=table[h1]; delay(1);

P0=0x00; //消隐 P2=0x40; P0=table[h0]; delay(1);

P0=0x00; P2=0x20; P0=0x40; delay(1);

P0=0x00;

P2=0x10;

P0=table[min1]; delay(1);

P0=0x00; P2=0x08;

P0=table[min0]; delay(1);

P0=0x00; P2=0x04; P0=0x40; delay(1);

P0=0x00; P2=0x02; P0=table[s1]; delay(1);

P0=0x00; P2=0x01; P0=table[s0]; delay(1);

P0=0x00; }

void display2() {

P2=0x80; P0=table[a1]; delay(1);

P0=0x00; P2=0x40; P0=table[a0]; delay(1);

P0=0x00; P2=0x20; P0=0x40; delay(1);

P0=0x00; P2=0x10; P0=table[b1]; delay(1);

P0=0x00; P2=0x08; P0=table[b0]; delay(1);

P0=0x00; P2=0x04;

//让时分秒中间显示“—”

该显示函数是让闪烁显示函数的子函数


基于单片机电子时钟的设计 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第5讲 资本主义政治制度在欧洲大陆的扩展

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: