范文无忧网面试笔试简历简介

跪求单片机c51一个多功能时钟设计要闹钟调整时间秒表就行

02月24日 编辑 fanwen51.com

[基于单片机的数字温度计设计]下面是小编整理的关于基于单片机的数字温度计设计的论文,欢迎大家借鉴!摘要:随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。介绍一...+阅读

//给你发一个数码管输出的可调节时钟的程序,在最后#include #include //定义共阳极字型码0123456789-unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};unsigned char time[]={0,0,0,0,0,0,0,0};//用来储存时间unsigned char date[]={0,0,0,0,0,0,0,0};//用来储存日期SYSTEMTIME time1; //在ds1302。 h文件中已经定义了一个名字为SYSTEMTIME的结构体,在这里我们定义一个变量名 //为time的SYSTEMTIME结构体 void delay(unsigned char i) //延时子程序 { unsigned char j; while((i--)!=0) { for(j=123;j>0;j--); }}unsigned char button_time(n,x,y) //时钟调整子程序unsigned char n,x,y;{ if(P1_7==0) { delay(50); if(P1_7==0) { n ; if(n==x) n=0; while(P1_7==0); } } if(P1_5==0) { delay(50); if(P1_5==0) { if(n==0) n=y; else n--; while(P1_5==0); } } return n;}unsigned char button_date(n,x,y) //日期调整子程序unsigned char n,x,y;{ if(P1_7==0) { delay(50); if(P1_7==0) { n ; if(n==x) n=1; while(P1_7==0); } } if(P1_5==0) { delay(50); if(P1_5==0) { if(n==1) n=y; else n--; while(P1_5==0); } } return n;}void display(second10,second1,minute10,minute1,hour10,hour1) //显示子程序unsigned char second10,second1,minute10,minute1,hour10,hour1; { P2=0xfe; P0=dispcode[second10];//显示秒的十位 delay

(1); P2=0xfd; P0=dispcode[second1]; //显示秒的个位 delay

(1); P2=0xfb; P0=dispcode[10]; //显示"-" delay

(1); P2=0xf7; P0=dispcode[minute10];//显示分的十位 delay

(1); P2=0xef; P0=dispcode[minute1]; //显示分的个位 delay

(1); P2=0xdf; P0=dispcode[10]; //显示"-" delay

(1); P2=0xbf; P0=dispcode[hour10]; //显示时的十位 delay

(1); P2=0x7f; P0=dispcode[hour1]; //显示时的个位 delay

(1);} void main(){ unsigned char flag; Initial_DS1302(); //初始化DS1302这个时钟芯片, while

(1) { DS1302_GetTime(&time1); //读取时间参数 time[5]=(time1。 Second); //把秒的个位数据存入time[5] time[4]=(time1。Second)/10; //把秒的十位数据存入time[4] time[3]=(time1。 Minute); //把分的个位数据存入time[3] time[2]=(time1。Minute)/10; //把分的十位数据存入time[2] time[1]=(time1。 Hour); //把时的个位数据存入time[1] time[0]=(time1。Hour)/10; //把时的十位数据存入time[0] date[5]=(time1。 Day); date[4]=(time1。Day)/10; date[3]=(time1。Month); date[2]=(time1。Month)/10; date[1]=(time1。 Year); date[0]=(time1。Year)/10; if(P1_4==0) //如果按下Time Start键一下,时钟开始正常显示时间,再按一下,显示日期 { delay(50); if(P1_4==0) { flag ; if(flag>1) { flag=0; } } while(P1_4==0); } if(P1_6==0) //如果按下Time Set键一下,开始显示日期,再按一下进入日期跟时钟的调节模式 { delay(50); if(P1_6==0) { flag ; if(flag>7) { flag=0; } } while(P1_6==0); } switch(flag) { case 0:display(time[0],time[1],time[2],time[3],time[4],time[5]); //调用子函数display,把存入数组time的数据给显示出来 break; case 1:display(date[0],date[1],date[2],date[3],date[4],date[5]); //调用子函数display,把存入数组date的数据给显示出来 break; case 2:time1。 Year=button_date(time1。Year,100,99); //调整年 DS1302_SetTime(0x8c,time1。Year); display(date[0],date[1],10,10,10,10); break; case 3:time1。 Month=button_date(time1。Month,13,12); //调整月 DS1302_SetTime(0x88,time1。Month); display(10,10,date[2],date[3],10,10); break; case 4:time1。 Day=button_date(time1。Day,32,31); //调整日 DS1302_SetTime(0x86,time1。Day); display(10,10,10,10,date[4],date[5]); break; case 5:time1。 Hour=button_time(time1。Hour,24,23); //调整时 DS1302_SetTime(0x84,time1。Hour); display(time[0],time[1],10,10,10,10); break; case 6:time1。 Minute=button_time(time1。Minute,60,59); //调整分 DS1302_SetTime(0x82,time1。Minute); display(10,10,time[2],time[3],10,10); break; case 7:time1。 Second=button_time(time1。Second,60,59); //调整秒 DS1302_SetTime(0x80,time1。Second); display(10,10,10,10,time[4],time[5]); break; } }}//DS1302。 H#ifndef _REAL_TIMER_DS1302_2003_7_21_#define _REAL_TIMER_DS1302_2003_7_21_#include sbit DS1302_CLK = P1^0; //实时时钟时钟线引脚 sbit DS1302_IO = P1^1; //实时时钟数据线引脚 sbit DS1302_RST = P1^2; //实时时钟复位线引脚sbit ACC0 = ACC^0;sbit ACC7 = ACC^7;typedef struct __SYSTEMTIME__{ unsigned char Second; unsigned char Minute; unsigned char Hour; unsigned char Week; unsigned char Day; unsigned char Month; unsigned char Year; unsigned char DateString[9]; unsigned char TimeString[9];}SYSTEMTIME; //定义的时间类型#define AM(X) X#define PM(X) (X 12) // 转成24小时制#define DS1302_SECOND 0x80 //秒寄存器 #define DS1302_MINUTE 0x82 //分寄存器#define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A #define DS1302_...

延伸阅读:

单片机控制的交通灯系统设计毕业设计论文要求:设计一个十字路口3.交通灯 要求: (1) 完成一个十字路口的交通灯控制,基本功能实现双向直行; (2) 每个方向用2位数码管显示倒计时,倒计时时间最大为99秒; (3) 能修改每个方向的红、绿灯时间。 扩展...

单片机控制类毕业设计做什么好啊基于20-sim软件的非线性电路仿真 摘要:利用20-sim软件的功能,可以对非线性电路进行直接面向方程的仿真分析,也可以在现有非线性电路的基础上,转 换成相应的键合图模型,利用键合图...

单片机程序设计编程题那就做做我的毕业设计题目吧~! 有很多个 ! 我只做了其中一个 单片机类的毕业设计题目及要求 1,题目:计算器 要求:能够进行8位数的加减乘除运算,设置不同的按键输入数据、运算符号...

毕业设计单片机把你的邮箱给我,我把图给你发过去1系统总体结构原理 粮食在储藏期间,由于受环境、气候和通风条件等因素的变化,粮仓内温度或湿度会发生异常,这极易造成粮食的霉烂、或发生虫害。...

求多功能数字钟的毕业设计要求家用多功能时钟的设计要求基于单片第一章 绪论 1.1 数字电子钟的背景…………………………………………………………………… 1 1.2 数字电子钟的意义……………………………………………………………………...

毕业设计:基于单片机的污水处理系统模糊控制器的设计希望高手帮基于单片机的污水处理系统模糊控制器的设计 【摘要】:为了获得安全可靠、高效经济的污水处理监控系统,可以利用单片机作为整个监控系统的下位机,通过RS485串口通信协约实现与中...

跪求毕业周记基于单片机的步进电机控制系统的设计ORG 00H START: MOV P2,#0FFH JNB P2.0,LOOP1 JNB P2.1,LOOP2 JMP START LOOP1: SETB P3.6 CLR P3.7 MOV R0,#70 DJNZ R0,$ JMP LOOP1 LOOP2: CLR P3.6 SETB P3.7 MOV R0,#7...

推荐款数码相机卡片机就行你好! 推荐今年初上市的佳能IXUS 115 HS。 佳能全新的IXUS 115 HS,是一款针对入门家用卡片机市场的机型,由于价钱低廉,做工不俗,成为不少学生朋友和工薪阶层的首选机型,而这次升级...

单片机毕业设计摘要翻译This paper describes a kind of AT89C51 and DTMF decoder IC ng to the core , through the telephone lines Remote Intelligent Remote Multi-channel controller. The...

推荐阅读
图文推荐
栏目列表