基于51单片机的数字时钟设计2013(4)

2019-07-13 18:07

5.2 软件仿真电路全图

图7 软件仿真电路全图

此图为时钟显示模式,显示内容为15时9分49秒

图8 软件仿真电路全图

此图为日期和星期显示模式,显示内容为6月4日星期二

5.3 源程序代码

#include

#define uint unsigned int #define uchar unsigned char sfr p0 = 0x80;

16

sfr p1 = 0x90; sfr p2 = 0xA0; sfr p3 = 0xB0;

unsigned char seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char con[8]={0x1,0x2,0x4,0x8,0x10,0x20,0x40,0x80}; unsigned char mm=0; //定义秒初始值 unsigned char ff=0; //定义分初始值 unsigned char hh=0; //定义时初始值

unsigned char sf=0; //定义时和分中间初始值 unsigned char fm=0; //等义分和秒中间初始值 unsigned char yue=1;//定义月初始值 unsigned char ri=1; //定义日初始值

unsigned char xingqi=0;//定义星期初始值,星期日用”0“表示 sbit shijia=P1^0;//定义P1.0按键为调整”时“+和”月“+ sbit shijian=P1^1;//定义P1.1按键为调整”时“-和”日“+ sbit fenjia=P1^2;//定义P1.2按键为调整”分“+和”星期“+ sbit fenjian=P1^3;//定义P1.3按键为调整”分“- sbit xianshiqih=P1^4;//定义P1.4按键为时钟和日期切换按键,当不按下此按键时数

码显示时钟,当按下此按键时数码管显示日期和星期

unsigned char count=100;

void xianshi();//定义显示子程序 void tiaoshi();//定义调整子程序 void delay(uint z);//定义延时子程序

void main() {

TMOD=0x01; TH0=-10000>>8; TL0=-10000; EA=1; ET0=1; TR0=1; while(1); }

void isr_time0()interrupt 1 {

TMOD=1;

TH0=-10000>>8; TL0=-10000; count--;

if(count==0) {

count=100; mm++;

17

if(mm==60) {

mm=0;ff++; if(ff==60) {

ff=0;hh++; if(hh==24) {

hh=0;ri++;xingqi++; if(ri==32) {

ri=1;yue++;

if(yue==13){yue=1;} }

if(xingqi==7){xingqi=0;} if(yue==2) {

if(ri==29){ri=1;yue++;} }

if(yue==1||yue==3||yue==5||yue==7 ||yue==8||yue==10||yue==12) {

if(ri==32){ri=1;yue++;} }

if(yue==4||yue==6||yue==9||yue==11) {

if(ri==31){ri=1;yue++;} } } } } }

tiaoshi(); xianshi(); }

void xianshi() //显示时间或日期程序 {

if(xianshiqih==1)//显示时间 {

unsigned int i=0,j; unsigned char time[8];

time[0]=hh/10;time[1]=hh; time[2]=sf/10;time[5]=fm;

18

time[3]=ff/10;time[4]=ff; time[6]=mm/10;time[7]=mm; for(i==0;i<8;i++) {

p2=con[i]; if(i==2||i==5) p0=0xbf;

else p0=seg[time[i]]; for(j=100;j>0;j--); } }

if(xianshiqih==0)//显示日期和星期 {

unsigned int i=0,j; unsigned char time[8];

time[0]=yue/10;time[1]=yue; time[2]=sf/10;time[5]=fm; time[3]=ri/10;time[4]=ri;

time[6]=xingqi/10;time[7]=xingqi; for(i==0;i<8;i++) {

p2=con[i]; if(i==2||i==5) p0=0xbf;

else if(i==6)p0=0xff; else p0=seg[time[i]]; for(j=100;j>0;j--); } } }

void tiaoshi() //调时程序 {

if(xianshiqih==1) {

if(shijia==0) {

hh++; mm=0;

delay(400);

if(hh==24){hh=0;} }

if(shijian==0) {

hh--;

19

mm=0;

delay(400);

if(hh==0){hh=23;} }

if(fenjia==0) {

ff++; mm=0;

delay(400);

if(ff==60){ff=0;} }

if(fenjian==0) {

ff--; mm=0;

delay(400);

if(ff==0){ff=59;} } }

if(xianshiqih==0) {

if(shijia==0) {

yue++;

delay(400);

if(yue==13){yue=1;} }

if(shijian==0) {

ri++;

delay(400);

if(ri==32){ri=1;} }

if(fenjia==0) {

xingqi++; delay(400);

if(xingqi==7){xingqi=0;} } } }

void delay(uint z) //延时程序 {

uint x,y;

20


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

下一篇:关于精品店市场的调查报告最终版

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

马上注册会员

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