没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论


















2012-10-31
烟台大学
软件课程设计
基于 KEIL4 和 C52 的时钟设计 |
##

第一章
第二章
第三章
第四章
第一章 设计思想
在电子设计的初级世界里,万年历是最常拿来试手的程序,也有着丰富多
彩新颖的设计火花,基于 keil4 和单片机的万年历设计大多是用 DS1302 加锂电
池,我用延时程序和定时器写,只是精度不太好,节约了成本!用 DS12CR887
写的万年历克服了需要锂电池搭配的缺点。希望以后能加入 18B20 模块和自动对
时模块。
第二章 制作方法
第一种方法—— 延时程序和定时器
1、 设备:keil4,c52 单片机带 lcd 显示屏(图片见电子版)
2、 源程序:(有视频详解)
/*可调时钟*/
#include<reg52.h>
#define ui unsigned int
#define uc unsigned char
uc code table[]=" 2012-01-01 MON"; //设置显示初值,初值函数
中对应的变量赋值要一致
uc code table1[]=" 00:00:00";
int num,i,s,f,m,n,y,r,w,s1num;
sbit dula=P2^6;
sbit wela=P2^7; //数码管位选和段选
sbit lcden=P3^4; //LCD 使能信号
sbit lcdrs=P3^5; //LCD 数据、命令选择端
sbit s1=P3^0;
sbit s2=P3^1;
sbit s3=P3^2; //键盘
sbit rd=P3^7; //使能
void delay(ui y) //延时函数,y=1 时 1ms
{
ui x;
for(y;y>0;y--)
for(x=110;x>0;x--);
}
void write_date(uc date) //写数据
1
软件课程设计——基于 KEIL4 和 C52 的时钟设计
序言
设计思想…………1
制作方法…………1-22
演示………………22
心得体会…………23

{
lcdrs=1;
lcden=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_com(uc com) //写命令
{
lcdrs=0;
lcden=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void chuzhi() //初值
{
dula=0;
wela=0;
lcden=0;
n=2012;
y=1;
r=1;
w=1;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<16;num++) //显示位置及数据
{
write_date(table[num]);
delay(5);
}
write_com(0x80+0x40);
for(num=0;num<13;num++)
{
write_date(table1[num]);
delay(5);
}
2

TMOD=0x01; //定时器 0 工作方式 1
TH0=0x4c;
TL0=0x00; //赋初值、50ms
EA=1;
ET0=1;
TR0=1;
i=0;
}
void write_sfm(uc add,uc date) //时分秒
{
uc shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x40+add);
write_date(0x30+shi); // 详见标准字符库 ,地址已经自动加了一位
write_date(0x30+ge);
}
void write_yr(uc add,uc date) //月日
{
uc shi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+add);
write_date(0x30+shi);
write_date(0x30+ge);
}
void write_n(uc add,ui date) //年
{
uc qian,bai,shi,ge;
qian=date/1000;
bai=date%1000/100;
shi=date%100/10;
ge=date%10;
write_com(0x80+add);
write_date(0x30+qian);
write_date(0x30+bai);
write_date(0x30+shi);
write_date(0x30+ge);
}
void write_w(ui add,ui date) //星期
{
ui w;
write_com(0x80+add);
w=date;
3

switch(w)
{
case 1:{
write_date(0x4d); //MON
write_date(0x4f);
write_date(0x4e);
}
break;
case 2:{
write_date(0x54);
write_date(0x55);
write_date(0x45);
}
break;
case 3:{
write_date(0x57);
write_date(0x45);
write_date(0x44);
break;
}
case 4:{
write_date(0x54);
write_date(0x48);
write_date(0x55);
break;
}
case 5:{
write_date(0x46);
write_date(0x52);
write_date(0x49);
break;
}
case 6:{
write_date(0x53);
write_date(0x41);
write_date(0x54);
break;
}
case 7:{
write_date(0x53);
write_date(0x55);
write_date(0x4e);
}
break;
4
//WED
//THU
//FRI
//TUE
//STA
//SUN
剩余23页未读,继续阅读
资源评论

xxpr_ybgg
- 粉丝: 3205
- 资源: 3万+

上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
