云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 万年历课程设计报告

万年历课程设计报告

  • 62 次阅读
  • 3 次下载
  • 2025/5/7 16:58:34

sbit ACC7=ACC^7;

uchar time; //设置全局变量,专门用于严格延时 static uchar x=0x08,y=30; uchar t_sec,sec1,sec2; uchar t_min,min1,min2; uchar t_hour,hour1,hour2; uchar t_mon,mon1,mon2; uchar t_day,day1,day2; uchar t_year,year1,year2; uchar week,week1; uchar com,inf;

void tixing(unsigned char mm,unsigned dd); void show();

void delay1(uchar t) {

uchar a,b;

for(a=t;a>0;a--) for(b=110;b>0;b--); }

/***************************************************** 函数功能:延时1ms

(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒 ***************************************************/ void delay1ms() {

uchar i,j;

for(i=0;i<10;i++) for(j=0;j<33;j++) ; }

/***************************************************** 函数功能:延时若干毫秒 入口参数:n

***************************************************/ void delaynms(uchar n) {

uchar i;

for(i=0;i

/***************************************************** 函数功能:判断液晶模块的忙碌状态

返回值:result。result=1,忙碌;result=0,不忙

***************************************************/

21

bit BusyTest(void) {

bit result;

RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1;

E=1; //E=1,才允许读写 _nop_(); //空操作 _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间 result=BF; //将忙碌标志电平赋给result E=0; //将E恢复低电平 return result; }

/***************************************************** 函数功能:将模式设置指令或显示地址写入液晶模块 入口参数:dictate

***************************************************/ void WriteInstruction (uchar dictate) {

while(BusyTest()==1); //如果忙就等待

RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0;

E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲, // 就是让E从0到1发生正跳变,所以应先置\ _nop_();

_nop_(); //空操作两个机器周期,给硬件反应时间 P0=dictate; //将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间 E=1; //E置高电平 _nop_(); _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令 }

/***************************************************** 函数功能:指定字符显示的实际地址 入口参数:x

***************************************************/ void WriteAddress(unsigned char x)

22

{

WriteInstruction(x|0x80); //显示位置的确定方法规定为\地址码x\ }

/***************************************************** 函数功能:将数据(字符的标准ASCII码)写入液晶模块 入口参数:y(为字符常量)

***************************************************/ void WriteData(uchar y) {

while(BusyTest()==1);

RS=1; //RS为高电平,RW为低电平时,可以写入数据 RW=0;

E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲, // 就是让E从0到1发生正跳变,所以应先置\ P0=y; //将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间 E=1; //E置高电平 _nop_(); _nop_(); _nop_();

_nop_(); //空操作四个机器周期,给硬件反应时间

E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令 }

/***************************************************** 函数功能:对LCD的显示模式进行初始化设置

***************************************************/ void LcdInitiate(void) {

delaynms(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间

WriteInstruction(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口

delaynms(5); //延时5ms ,给硬件一点反应时间 WriteInstruction(0x38);

delaynms(5); //延时5ms ,给硬件一点反应时间 WriteInstruction(0x38); //连续三次,确保初始化成功

delaynms(5); //延时5ms ,给硬件一点反应时间

WriteInstruction(0x0c); //显示模式设置:显示开,无光标,光标不闪烁 delaynms(5); //延时5ms ,给硬件一点反应时间 WriteInstruction(0x06); //显示模式设置:光标右移,字符不移 delaynms(5); //延时5ms ,给硬件一点反应时间

23

WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除 delaynms(5); //延时5ms ,给硬件一点反应时间 }

void write_com(uchar com)//向1602写指令 {

RS=0; RW=0; P0=com;

delaynms(10); E=1;

delaynms(10); E=0; }

/***************************************************** 函数功能:将DS18B20传感器初始化,读取应答信号 出口参数:flag

***************************************************/ bit Init_DS18B20(void) {

bit flag; //储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在

DQ = 1; //先将数据线拉高

for(time=0;time<2;time++) //略微延时约6微秒 ;

DQ = 0; //再将数据线从高拉低,要求保持480~960us for(time=0;time<200;time++) //略微延时约600微秒

; //以向DS18B20发出一持续480~960us的低电平复位脉冲 DQ = 1; //释放数据线(将数据线拉高) for(time=0;time<10;time++)

; //延时约30us(释放总线后需等待15~60us让DS18B20输出存在脉冲) flag=DQ; //让单片机检测是否输出了存在脉冲(DQ=0表示存在) for(time=0;time<200;time++) //延时足够长时间,等待存在脉冲输出完毕 ;

return (flag); //返回检测成功标志 }

/***************************************************** 函数功能:从DS18B20读取一个字节数据 出口参数:dat

***************************************************/ uchar ReadOneChar(void) {

uchar i=0;

uchar dat; //储存读出的一个字节数据 for (i=0;i<8;i++)

24

搜索更多关于: 万年历课程设计报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

sbit ACC7=ACC^7; uchar time; //设置全局变量,专门用于严格延时 static uchar x=0x08,y=30; uchar t_sec,sec1,sec2; uchar t_min,min1,min2; uchar t_hour,hour1,hour2; uchar t_mon,mon1,mon2; uchar t_day,day1,day2; uchar t_year,year1,year2; uchar week,week1; uchar com,inf; void tixing(unsigned char mm,unsigned dd); void show(); void delay1(uchar t) { uchar a,b; for(a=t;a>

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com