求单片机时钟设计!!要求:时钟可调 日历可调 闹钟可调 带温度检测 LCD1602显示 带D

求单片机时钟设计!!要求:时钟可调日历可调闹钟可调带温度检测LCD1602显示带DSN仿真图及完全程序程序带说明!带报告!!高分悬赏!!求单片机时钟设计!!带程序!!要求... 求单片机时钟设计!!要求:时钟可调 日历可调 闹钟可调 带温度检测 LCD1602显示 带DSN仿真图及完全程序 程序带说明!带报告!!高分悬赏!!
求单片机时钟设计!!带程序!!要求:闹钟! 时分秒可调!!年月日可调!!!最好带上温度显示!LCD1602显示!!!

有的话可以Q聊614205963或发来邮箱AA324316@163.com灰常感谢!!!
展开
 我来答
零下一度tm
2011-11-27
知道答主
回答量:15
采纳率:0%
帮助的人:18.8万
展开全部
这个程序比较好用,用的是12864,比较有用希望对你有帮助

#include <reg51.h>
#include <intrins.h>
#include <stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar shijian[6]={0x1,0x1,0x0,0x2,0x5,0x8};
uchar zi[]={"时分秒"};
uchar j,key;
char z,z1;
uchar m,mark=0,bz=0;
uint k=4000;
uchar i;
/* 端口定义*/
#define LCD_data P0 //数据口
sbit inter_0=P3^2;
sbit LCD_RS = P2^7; //寄存器选择输入
sbit LCD_RW = P2^6; //液晶读/写控制
sbit LCD_EN = P2^5; //液晶使能控制
sbit LCD_PSB = P2^4; //串/并方式控制
void delay_1ms(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++);
}
/*******************************************************************/
/* */
/*写指令数据到LCD */
/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */
/* */
/*******************************************************************/
void write_cmd(uchar cmd)
{
LCD_RS = 0;
LCD_RW = 0;
LCD_EN = 0;
P0 = cmd;
delay_1ms(5);
LCD_EN = 1;
delay_1ms(5);
LCD_EN = 0;
}
/*******************************************************************/
/* */
/*写显示数据到LCD */
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */
/* */
/*******************************************************************/
void write_dat(uchar dat)
{
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delay_1ms(5);
LCD_EN = 1;
delay_1ms(5);
LCD_EN = 0;
}
/*********************************************************/
/* */
/* 设定显示位置 */
/* */
/*********************************************************/
void lcd_pos(uchar X,uchar Y)
{
uchar pos;
if (X==0)
{X=0x80;}
else if (X==1)
{X=0x90;}
else if (X==2)
{X=0x88;}
else if (X==3)
{X=0x98;}
pos = X+Y ;
write_cmd(pos); //显示地址
}

/*******************************************************************/
/* */
/* LCD初始化设定 */
/* */
/*******************************************************************/
void lcd_init()
{
LCD_PSB = 1; //并口方式
write_cmd(0x30); //基本指令操作
delay_1ms(5);
write_cmd(0x0C); //显示开,关光标
delay_1ms(5);
write_cmd(0x01); //清除LCD的显示内容
delay_1ms(5);
}
/*********************************************************/
/* */
/* 主程序 */
/* */
/*********************************************************/
main()
{ uchar x;

IT0=1;EX0=1;EA=1;
P1=0XF0;
TMOD=0X2;
TH0=0X6;
TL0=0X6;
EA=1;ET0=1;TR0=1;
i=0;

delay_1ms(10); //延时
lcd_init();

lcd_pos(0,1);

write_dat(zi[0]);
write_dat(zi[1]);
lcd_pos(0,3);

write_dat(zi[2]);
write_dat(zi[3]);
lcd_pos(0,5);
write_dat(zi[4]);
write_dat(zi[5]);
while(1)
{

z=1;
z1=0;
P1=0XF0;
lcd_pos(0,0);
i = 0;
while(i<2)
{
write_dat(shijian[i]+0x30);
i++;
}

lcd_pos(0,2);
while(i<4)
{
write_dat(shijian[i]+0x30);
i++;
}

lcd_pos(0,4);
while(i<6)
{
write_dat(shijian[i]+0x30);
i++;
}

if(mark)
{TR0=0;

lcd_pos(0,0);delay_1ms(5);
write_cmd(0x0f);
delay_1ms(5);
bz=0;
while(!bz);
while(mark)
{
if(key==12)
{z--;write_cmd(0x10);delay_1ms(5);write_cmd(0x10);delay_1ms(5);bz=0;if((2*(z-1)+(z1-1))==-3){for(x=0;x<6;x++){write_cmd(0x14);delay_1ms(5);}z=3;z1=0;}}
else if(key==13)
{z++;write_cmd(0x14);delay_1ms(5);write_cmd(0x14);delay_1ms(5);bz=0;if((2*(z-1)+(z1-1))>=5){for(x=0;x<6;x++){write_cmd(0x10);delay_1ms(5);}z=1;z1=0;}}
else if(key<=9)
{z1++;write_dat(key+48);delay_1ms(5);shijian[2*(z-1)+(z1-1)]=key;if((2*(z-1)+(z1-1)<5)&&(z1%2==0)){write_cmd(0x14);delay_1ms(5);}else if(2*(z-1)+(z1-1)>=5){for(x=0;x<5;x++){write_cmd(0x10);delay_1ms(5);}z=1;z1=0;}bz=0;}
else if(key==15)
{write_cmd(0x0c);delay_1ms(5);mark=0;}
while(!bz);
}
bz=0;
TR0=1;
}
}

}
/*************************************/
count0 (void) interrupt 1
{
k--;
if(k==0x0)
{++shijian[5];k=4000;
if (shijian[5]==0x0a)
{shijian[5]=0x0;
++shijian[4];
if(shijian[4]==0x6)
{shijian[4]=0x0;
++shijian[3];
if (shijian[3]==0x0a)
{shijian[3]=0x0;
++shijian[2];
if(shijian[2]==0x6)
{shijian[2]=0x0;
++shijian[1];
if((shijian[0]==0x0)&&(shijian[1]==0x0a))
{shijian[1]=0x0;
++shijian[0];
}
else if((shijian[0]==0x1)&&(shijian[1]==0x2))
{shijian[1]=0x0;
shijian[0]=0x0;
}
}
}
}
}
}
}
/*******************************************/
int_0(void) interrupt 0
{delay_1ms(15);
if(inter_0==0)
{uchar n=0,m=0,temp;
uchar scan[4]={0xfe,0xfd,0xfb,0xf7};
uchar table[4][4]={0x7e,0xbe,0xde,0xee,0x7d,0xbd,0xdd,0xed,0x7b,0xbb,0xdb,0xeb,0x77,0xb7,0xd7,0xe7};
uchar num[4][4]={12,1,4,7,0,2,5,8,13,3,6,9,11,10,15,14};
while(n<4)
{P1=scan[n];temp=P1;m=0;
while(m<4)
{if(temp==table[n][m])
goto next;
else
m++;

}
n++;
}

next: key=num[n][m];
bz=1;
if(key==14)
mark=1;

}
P1=0XF0;
}
追问
谢谢  可惜不是我想要的  再说了你这也没有图
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
深圳市兴威帆电子技术有限公司
2023-06-12 广告
实时时钟模块可以找深圳市兴威帆电子技术有限公司,本公司具有经验丰富的开发工程师和应用工程师,致力于公司自主知识产权IC等产品的研发和技术支持,已开发出多款成熟的产品并大量生产、销售及出口,我公司高精度实时时钟模块产品获得多项国家专利,打破了... 点击进入详情页
本回答由深圳市兴威帆电子技术有限公司提供
安徽京准电钟
2011-11-24 · 超过17用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:25.2万
展开全部
HR-906卫星同步时钟是我公司开发研制的应用GPS技术授时的标准时间显示和发送的装置,该装置以美国全球定位系统(GLOBAL POSITIONING SYSTEM,缩写为GPS)为时间基准,可以同时跟踪12颗卫星,对时精度达0.1μS。
该装置采用SMT表面贴装技术生产,以高速芯片进行控制,无硬盘和风扇设计,精度高、稳定性好、功能强、无积累误差、不受地域气候等环境条件限制、性价比高、操作简单、全自动智能化运行,免操作维护,适合无人值守。
装置有标准RS232、RS422/485、脉冲、IRIG-B、DCF77、NTP/SNTP网络对时等接口形式,可以适应各种不同设备的对时需要,广泛应用于电力、金融、通信、交通、广电、安防、石化、冶金、水利、国防、医疗、教育、政府机关、IT等领域。
追问
混蛋
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
六十七年
2011-11-30 · TA获得超过493个赞
知道小有建树答主
回答量:293
采纳率:57%
帮助的人:93.8万
展开全部
你直接可以到网上搜郭天祥的视频,里面专门有一节教你写时钟程序的(用的好像是ds12c887),你可以参考一下,等别人发答案来,还不如自己去找。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-11-24
展开全部
给你推荐个网站,工程师威客网,那里有这方面的高手,全免费的,百度搜索工程师威客网
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lonic1981
2011-11-24
知道答主
回答量:23
采纳率:0%
帮助的人:7万
展开全部
找本书看看吧,很多单片机的教程
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式