单片机课程设计—万年历[1](3)

2019-02-14 22:30

电路、显示电路、时钟电路、晶振电路、复位电路及电源指示电路。

仿真正确显示了时间,在LCD1602中正确显示了当前日期、时间,通过按按键K1,就可以开始设置时间,依次按K1依次在年、月、日、时、分之间切换,,按K2键用于加1操作,K3键用于减1操作,K4是确定按钮。仿真正确显示了时间和日期,符合设计的要求。

图(13) 电子万年历硬件电路图

结论与心得:

在这学期的课程序设计中,收获知识的同时,还收获了阅历,收获了成熟,通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、 动手制作的能力,在各种其它能力上也都有了提高。更重要的是,在课程序设计里,我们学会了很多学习的方法,知道了理论和实践的巨大差别。而这是以后最实用的,真的是受益匪浅。要面 对

11 / 23

社会的挑战,只有不断的学习、实践,再学习、再实践。同时在与老师和同学的交流过程中,互动学习,将知识融会贯通。通过自己的努力,做出了一个万年历,对以后的学习是一个莫大的鼓舞,激起了我的学习兴趣和开发创新思维。

参考文献

图书类:[1] 张毅坤 陈善久, 单片微型计算机原理及应用 西安电子科技大学出版社

[2] 张毅刚,,彭喜元,单片机原理与应用设计 电子工业出版社 [3] 赵建领 薛园园 ,零基础学单片机C语言程序设计 机械工业出版社 [4] 周向红 51单片机课程设计 华中科技大学出版社,

[5] 郭天祥 51单片机C语言教程-入门,提高,开发,拓展全攻略, 电子工业出版社 [6] 赵亮 侯国锐. 单片机C语言编程与实例 人民邮电出版社

附实验源程序: #include #include #include #define uint unsigned int #define uchar unsigned char

sbit IO= P1^0; //DS1302数据线 sbit SCLK = P1^1; sbit RST = P1^2;

sbit RS = P2^0; sbit RW = P2^1; sbit EN = P2^2;

//DS130时钟线 //DS1302复位线

//LCD数据/命令选择端 //LCD读/写控制 //LCD使能端

12 / 23

sbit K1=P3^4; sbit K2=P3^5; sbit K3=P3^6;

//选择 //加 //减

sbit K4=P3^7; //确定

uchar tCount=0;

uchar MonthsDays[]={0,31,0,31,30,31,30,31,31,30,31,30,31}; uchar *WEEK[]={%uchar LCD_DSY_BUFFER1[]={\显示格式 uchar LCD_DSY_BUFFER2[]={%uchar DateTime[7]; //所读取的日期时间

char Adjust_Index=-1; //当前调节的时间对象:,,分,是,日,月,年

(1,2,3,4,6)

uchar Change_Flag[]= \ //(分,时,日,月,年)(不调节秒

与周)

/*---------延时程序------------------*/ void DelayMS(uint ms) {

uchar i;

while(ms--){for(i=0;i<120;i++);} }

//-----------向DS1302写入一字节------------------// void Write_A_Byte_TO_DS1302(uchar x) { uchar i;

for(i=0;i<8;i++){

IO=x&0x01; //每一位与1与存入IO中

13 / 23

} }

SCLK=1;SCLK=0; x>>=1;

//一个高脉冲将数据送入液晶控制器

// 右移

//-----------从DS1302读取一字节------------------// uchar Get_A_Byte_FROM_DS1302() { uchar i,b=0x00; for(i=0;i<8;i++){ }

return b/16*10+b; //返回BCD码 }

//-----------从DS1302指定位置读数据------------------// uchar Read_Data(uchar addr) {

uchar dat;

RST = 0;SCLK=0;RST=1;

//RST高电平时读/写

b |= _crol_((uchar)IO,i); SCLK=1;SCLK=0;

//每一个高脉冲读取一位数据

Write_A_Byte_TO_DS1302(addr); //先写入地址

dat = Get_A_Byte_FROM_DS1302();

SCLK=1;RST=0;

return dat; }

//---------向DS1302某地址写入数据--------------------// void Write_DS1302(uchar addr,uchar dat) { SCLK=0;RST=1;

14 / 23

Write_A_Byte_TO_DS1302(addr); Write_A_Byte_TO_DS1302(dat); SCLK=0;RST=0; }

//--------------设置时间----------------// void SET_DS1302() { uchar i;

//写控制字,取消写保护 Write_DS1302(0x8E,0x00); //分时日月年依次写入 for(i=1;i<7;i++)

{ //分的起始地址10000010(0x82),后面依次是时,日,月,周,年,写

入地址每次递增2

}

Write_DS1302(0x8E,0x80); //加保护 }

//----------读取当前日期时间------------// void GetTime() {uchar i;

for(i=0;i<7;i++){ DateTime[i]=Read_Data(0X81+2*i);} }

//-----------读LCD状态------------------// uchar Read_LCD_State() { uchar state; RS=0;RW=1;EN=1;

//高脉冲写入数据

Write_DS1302(0x80+2*i,(DateTime[i]/10<<4)|(DateTime[i]));

//输出:D0~D7=状态字

15 / 23


单片机课程设计—万年历[1](3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:理工院校大学生跨文化交际能力的现状及培养策略研究 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: