没有合适的资源?快使用搜索试试~ 我知道了~
万年历制作带生肖.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 164 浏览量
2021-10-05
11:35:46
上传
评论
收藏 104KB DOC 举报
温馨提示
试读
29页
万年历制作带生肖.doc
资源推荐
资源详情
资源评论
. -
#include <REG52.h>
#include <string.h>
#include <intrins.h>
#dene uint unsigned int
#dene uchar unsigned char
/
******************************LCM12864**************************************
/
#dene LCM_data P0
sbit LCM_RS=P2^6; //定义 12864 液晶 RS 端,存放器选择信号 H:数据存放器 L:指令存
放器
sbit LCM_RW=P2^5; //定义 12864 液晶 RW 端,读/写信号 H:读 L:写
sbit LCM_EN=P2^7; //定义 12864 液晶 LCDEN 端, 片选信号 下降沿触发,锁存数据
sbit LCM_PSB=P3^2; //定义 12864 液晶 PSB 端, H:并行 L:串行
sbit LCM_RST=P3^7;
sbit KEY_1 = P1^0; //确认
sbit KEY_2 = P1^1; //设置
sbit KEY_3 = P1^2; //加
sbit KEY_4 = P1^3; //减
//定义 DS1302 时钟接口
sbit DS1302_CLK = P3^6; //实时时钟时钟线引脚
sbit DS1302_IO = P3^4; //实时时钟数据线引脚
sbit DS1302_RST = P3^5; //实时时钟复位线引脚
//定义累加器 A 中的各位
sbit ACC0 = ACC^0;
sbit ACC7 = ACC^7;
//****************************************************************************/
sbit beep = P3^6;
sbit BL = P0^0; //定义背光控制口
/*****************************************************************************/
//温度传感器定义
sbit DQ = P3^5; //ds18B20
/*****************************************************************************/
//定义全局变量
unsigned char yy,mo,dd,xq,hh,mm,ss,e; //定义时间映射全局变量〔专
用存放器〕
unsigned char nz_shi=12,nz_fen=0,nz_miao=0; //闹钟时分秒变量
bit alam_on=1; //默认开启闹钟
bit c_moon;
unsigned char year_moon,month_moon,day_moon,week;
bit w = 0; //调时标志位
unsigned char menu = 0;//定义静态小时更新用数据变量
. .zj.
. -
unsigned char keys = 0;//定义静态小时更新用数据变量
unsigned char timecount = 0;//定义静态软件计数器变量
unsigned char count0,BLsecond;
uchar code tab1[]=
{
"----万年历------"
"制作人: "
"指导人: "
"阳光总在风雨后 "
};
/****************************************************************************/
void DelayM(unsigned int a) //延时函数 1MS/次
{
unsigned char i;
while( --a != 0)
{
for(i = 0; i < 125; i++); //一个 ; 表示空语句,CPU 空转从 0 加到 125,CPU
大概就耗时 1 毫秒?
}
}
/****************************************************************************/
//函数声明
void LCM_WriteString(unsigned char *str) ; // 写字符 例:LCM_WriteString("您
好!");
void LCM_WriteDatOr(bit ,unsigned char ); //〔0,指令〕 〔1,数据〕
void LCM_w_byte(unsigned char bbyte); //写一个字节给 LCM
void delaynms(unsigned int di); //延时
void LCM_init(void); //LCM 初始化
void LCM_clr(void); //清屏
void Delay(int num);
bit get_moon_day(uchar month_p,uint table_addr);
void Conversion(bit c,uchar year,uchar month,uchar day);
void nl();
/*****************************************************************************/
//初始化 LCM
void LCM_init(void)
{
LCM_PSB=1; //并口方式
LCM_RST=0; //复位
Delay(50);
LCM_RST=1;
LCM_WriteDatOr (0,0x30); /*30---根本指令动作*/
LCM_WriteDatOr (0,0x01); /*清屏,地址指针指向 00H*/
. .zj.
. -
Delay (100);
LCM_WriteDatOr (0,0x06); /*光标的移动方向*/
LCM_WriteDatOr(0,0x0c); /*开显示,关游标*/
}
//====================================
//LCD 忙检测函数
bit lcm_busy()
{
bit result;
LCM_RS=0;
LCM_RW=1;
LCM_EN= 1;
result=(bit)(LCM_data & 0x80);
LCM_EN=0;
return result;
}
/
******************************************************************************/
//写指令或数据 〔0,指令〕 〔1,数据〕
void LCM_WriteDatOr(bit dat_,uchar content)
{
//=====================================
//液晶写命令函数
if(dat_==0)
{
while(lcm_busy());
LCM_RS=0; //选择指令存放器
LCM_RW=0; //写
LCM_EN=0;
LCM_data=content; //指令值赋给数据口
Delay(5);
LCM_EN=1;
Delay(5);
LCM_EN=0;
}
//=====================================
//液晶写一个字符数据函数
else
{
while(lcm_busy());
LCM_RS=1; //选择数据存放器
LCM_RW=0; //写
. .zj.
. -
LCM_EN=0;
LCM_data=content; //数据值赋给数据口
Delay(5);
LCM_EN=1;
Delay(5);
LCM_EN=0;
}
}
/
*******************************************************************************
**/
void chn_disp (uchar code *chn)
{
uchar i,j;
LCM_WriteDatOr (0,0x30);
LCM_WriteDatOr (0,0x80);
for (j=0;j<4;j++)
{
for (i=0;i<16;i++)
LCM_WriteDatOr (1,chn[j*16+i]);
}
}
/*****************************************************************************/
//清屏函数
void LCM_clr(void)
{
LCM_WriteDatOr (0,0x30);
LCM_WriteDatOr (0,0x01);
Delay (180);
}
/*****************************************************************************/
//向 LCM 发送一个字符串,长度 64 字符之内。
void LCM_WriteString(unsigned char *str)
{
while(*str != '\0')
{
LCM_WriteDatOr(1,*str++);
}
*str = 0;
}
/
******************************************************************************/
void Delay(int num)//延时函数
{
. .zj.
. -
while(num--);
}
/
******************************************************************************/
void Init_DS18B20(void)//初始化 ds1820
{
unsigned char x=0;
DQ = 1; //DQ 复位
Delay(8); //稍做延时
DQ = 0; //单片机将 DQ 拉低
Delay(80); //准确延时 大于 480us
DQ = 1; //拉高总线
Delay(14);
x=DQ; //稍做延时后 如果 x=0 那么初始化成功 x=1 那么初始化失败
Delay(20);
}
/
******************************************************************************/
unsigned char ReadOneChar(void)//读一个字节
{
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
if(DQ)
dat|=0x80;
Delay(4);
}
return(dat);
}
/
******************************************************************************/
void WriteOneChar(unsigned char dat)//写一个字节
{
unsigned char i=0;
for (i=8; i>0; i--)
{
DQ = 0;
DQ = dat&0x01;
Delay(5);
. .zj.
剩余28页未读,继续阅读
资源评论
pyhm63
- 粉丝: 6
- 资源: 20万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 设计1.ms14
- vscode-1.64.1.tar源码文件
- vscode-1.64.0.tar源码文件
- vscode-1.52.0.tar源码文件
- Music-Player +PlayerActivity+ rockplayer+ SeeJoPlayer 播放器JAVA源码
- vscode-1.46.0.tar源码文件
- 最近很火植物大战僵尸杂交版2.08苹果+安卓+PC+防闪退工具V2+修改工具+高清工具+通关存档整合包更新
- 超级好用的截图工具PixPin,可录制Gif图
- Screenshot_2024-05-21-17-06-42-64_2332cb9b27b851b548ba47a91682926c.jpg
- 毕业设计参考 - 基于树莓派、OpenCV及Python的人脸识别
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功