片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx

上传人:b****3 文档编号:27038608 上传时间:2023-06-26 格式:DOCX 页数:24 大小:130.29KB
下载 相关 举报
片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx_第1页
第1页 / 共24页
片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx_第2页
第2页 / 共24页
片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx_第3页
第3页 / 共24页
片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx_第4页
第4页 / 共24页
片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx

《片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx》由会员分享,可在线阅读,更多相关《片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx(24页珍藏版)》请在冰豆网上搜索。

片单机课程设计lcd12864液晶显示电子钟设计大学论文.docx

片单机课程设计lcd12864液晶显示电子钟设计大学论文

 

长沙学院

 

《单片机原理及应用》

课程设计说明书

题目

LCD12864液晶显示电子钟设计

系(部)

专业(班级)

姓名

学号

指导教师

起止日期

《单片机原理及应用》课程设计任务书

系(部):

专业:

课题名称

LCD12864液晶显示电子钟设计

设计内容及要求

1、课题内容:

设计一种基于AT89S52单片机的液晶显示电子时钟,要求如下:

(1)、能正确显示时间、日期和星期显示格式为:

时间:

XX小时:

XX分:

XX秒;日期:

XX年:

XX月:

XX日;星期:

X。

(2)、时间能够由按键调整,误差小于1S。

(3)、闹钟功能:

时间运行到与闹钟设定时间时,闹钟响(持续响3秒)。

(4)、报时功能:

时间运行到正点时间时,闹钟响,几点钟就响几声(每

声持续响2秒,每两声之间时间间隔1秒)。

液晶显示器第一行显示“数字电子钟”;第二行显示“当前时间”;第三

行显示日期和星期;第四行显示最近一个闹钟的设定时间。

2、要求:

完成该系统的硬件和软件的设计,在Proteus软件上仿真通过,并提交一篇课程设计说明书。

设计工作量

1、汇编或C51语言程序设计;

2、程序调试;

3、在Proteus上进行仿真成功,进行实验板下载调试;

4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序

分析、仿真分析、调试过程,参考文献、设计总结等。

进度安排

起止日期

设计内容(或预期目标)

备注

第一天

课题介绍,答疑,收集材料,C51介绍

第二天

设计方案论证,练习编写C51程序

第三天——第六天

程序设计

第六天——第八天

程序调试、仿真

第九天——第十天

系统测试并编写设计说明书

教研室意见

 

年月日

系(部)主管领导意见

年月日

目录

一、整体方案设计5

1、单片机的选择5

2、单片机结构5

二、前期准备6

三、程序设计8

1、键盘约定8

2、界面显示9

3、全局变量的定义9

4、系统时钟9

5、闹钟控制时间的设定9

四、总结与体会10

参考文献11

 

一、整体方案设计

1、单片机的选择

单片微型计算机主要由微处理器、存储器、I/O接口电路等组成。

鉴于在本学期的学习和实习中主要是以MCS——51系列的单片机为对象,故而本次课程设计选择以AT89C51为主的单片机。

2、单片机结构

单片机主要包括中央处理器、程序存储器、数据存储器、定时/计数器、并行接口、串行接口和中断系统等几大处理单元和地址总线、数据总线、控制总线等三大总线。

芯片内部包括下列硬件资源:

(1)、8位CPU。

(2)、4KB的片内程序存储器ROM、可寻址64KB程序存储器和64KB外部数据存储器。

(3)、128B内部RAM.

(4)、21个SFR.

(5)、4个8位并行I/O口。

(6)、一个全双工的异步串行口。

(7)、两个16位定时/计数器。

(8)、5个中断源,两个优先级。

如下图1是51单片机的简化结构框图

图1

二、前期准备

为了更好的完成课程设计,设计之初我们并没有直接进行设计课题的设计,而是对单片机的各种功能先做了一定的了解和系统仿真,为课题研究打下基础。

系统仿真主要包括三大部分,第一部分是对串行输出、按键计数、输出方波、彩灯花样的仿真,第二部分是对LCD1206显示和12864显示的仿真,第三部分是对点阵显示的仿真。

第一部分的准备比较简单,基于单片机实验已经做过类似的实验,仿真做的比较成功。

如下图图2所示是输出周期为20ms的方波波形。

 

图2

第二部分的准备相对复杂些,主要是了解LCD1602和12864的显示功能。

仿真显示的内容采用了有个人特色的姓名、学号、班级等信息的显示。

如下图3所示利用LCD1602显示了姓名拼音、班级和学号;

图4(a)、(b)所示利用12864显示了姓名、学号、班级,并且用按键切换的方式分页显示了我比较喜欢的一首柳宗元的古诗《江雪》。

图3

(a)

(b)

图4(a)、(b)

第三部分的准备相对第二部分又稍显简单,主要还是对点阵显示的了解和掌握。

如下图5(a)、(b)、(c)所示,利用点阵显示了我的姓名。

(a)(b)

(c)

图5(a)、(b)、(c)

三、程序设计

做好了前期准备,接下来就是针对12864液晶电子钟显示的程序编写。

考虑到之前的实习焊接了单片机最小系统和按键模块,正好在此次设计中可以用到,故而此次设计跟之前的仿真跟有所不同,针对实物来编写和设计程序。

整个系统需要一个系统时钟,作为控制器的时钟标准。

控制输出的时间设定、系统时钟的校准、控制输出准许与否等,都需要输入设备,这里以四个独立式按键为输入设备。

1、键盘约定

按键0为时间调整键,按键1为闹钟时间调整键,

按键2为数字加键,按键3为数字减键。

2、界面显示

(1)、走时:

系统在没有操作之前为走时状态,显示界面样式为00。

(2)、设置系统时间:

功能键为按键0,显示界面样式为00时00分00秒、00年00月00日、00。

最后显示的是星期。

(3)、控制输出的设定:

功能键为按键1,显示界面为00时00分00秒。

当闹铃时间设定好了之后,最后再按一下直至数字稳定不闪烁即设置成功。

当闹铃时间到时,蜂鸣器会发出声音。

3、全局变量的定义

走时系统需要使用5个变量:

S010.1秒计数单元

y3秒计数单元

y2分计数单元

y1小时计数单元

4、系统时钟

在时间控制系统中,系统时钟完成两件事,一是“走时”,提供标准时钟;二是为显示界面提供闪烁的秒信号。

这个程序可以通过Timer_A中断来实现。

所使用的变量单元在主程序中有定义,为全局变量。

5、闹钟控制时间的设定

在系统中设置闹铃时间,每当走时时间与设置的闹铃控制时间相同且允许闹铃时,则输出到蜂鸣器。

程序编译成功后下载到芯片,实物显示如下图6(a)、(b)所示。

图6(a)(b)

四、总结与体会

在此次课程设计中,收获自然是不必多说,我觉得最主要的是在其中应用知识的过程体会、新知识的了解和自身理论知识的不足的感悟。

在设计过程中,我觉得巩固最深的就是中断,让我对中断的理解层次提高了。

中断技术是计算机的一个很重要的技术,在自动检测、实时控制、应急处理等方面都要用到。

某一中断源申请中断有效时,系统硬件叫自动置位TCON或者SCON中的有关相应标志位。

在编程时要注意其标志位的变化的影响。

在之前我一直认为中断是系统硬件内部才能够实现。

但是此次实践改变了我的错误认知,外部中端可借用定时器溢出中断扩展也可以采用查询法扩展,还可采用8259等多功能芯片扩展外部中断源。

这时我就想到了一句古话“温故而知新”和一个成语“坐井观天”。

复习也是学习新知识的一个主要环节,没有对旧知识的复习,新学的知识就会缺少源头,导致我们没办法对所学新知识的理解的和掌握。

我想在复习中也能深化自己对知识的理解。

在温故的基础上通过领会贯通,通过举一反三,通过比照分析,通过联想分析,就会有新的发现,新的领悟,新的启示,从而进入新的境界,掌握新的知识。

而且我们都知道知识只有真正的理解了,真正的弄懂了,运用到实践中去了,证实了,才算是学会了,掌握了,这时才可以说你已经把这门知识学到手了。

这正是课程设计的目的之一。

我想我在某些学习方面不是个主动的人,但是,经过此次课程设计,我觉得我必须去主动地去探求,而不是被动地接受。

在学习之上加上我自己的思考,加上我自己的判断,加上我自己的总结。

阅历和经历决定了一个人的视野,一个人要想开阔视野必须要走出去实践,拓宽眼界,发挥想象思维,认识世界。

受此影响,我想我以后的视野一定能够拓宽很多。

 

 

参考文献

【1】曾屹.刘辉主编.《单片机原理与应用》[M].中南大学出版社.2012年第2版

【2】臧春华.邵杰.魏小龙主编.《综合电子系统设计与实践》.[M].北京航空航天大学出版社2009.11

【3】李华主编.《MCS——51系列单片机实用接口技术》[M].北京航空航天大学出版社1993.8

 

程序清单

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitrs=P2^6;

sbiten=P2^7;

sbitwd=P2^0;

sbitbeet=P2^2;

sbitkey1=P1^0;

sbitkey2=P1^1;

sbitkey3=P1^2;

sbitkey4=P1^3;

charhour=23,minute=59,second=58,count=0;

charshi=0,fen=0,miao=0,hm;

intyear=2013;

charmonth=12,day=30,mm=0,cc=7;

uinttemp;

floatf_temp;

ucharcodetable1[]={"数字电子钟"};

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--);

for(y=110;y>0;y--);

}

voidfengmingqi()

{

beet=0;delay

(1);beet=1;delay

(1);

}

voidxieling_shu(ucharaa,ucharbb)

{

if(aa==1){rs=0;}

if(aa==0){rs=1;}

P0=bb;delay

(1);

en=1;delay

(1);

en=0;delay

(1);

}

voidxieludizhi(ucharx,uchary)

{

switch(x)

{

case1:

xieling_shu(1,0x80+y);return;

case2:

xieling_shu(1,0x90+y);return;

case3:

xieling_shu(1,0x88+y);return;

case4:

xieling_shu(1,0x98+y);return;

}

}

voidxiezifuchuan(uchar*dd)

{

while(*dd!

='\0')

{

xieling_shu(0,*dd++);

}

}

voidqingping()

{

xieling_shu(1,0x01);

xieling_shu(1,0x01);

xieling_shu(1,0x01);

delay(20);

}

voidinit_12864()

{

xieling_shu(1,0x30);

xieling_shu(1,0x30);

xieling_shu(1,0x0C);

xieling_shu(1,0x01);

xieling_shu(1,0x06);

}

voidinit_zifu()

{

xieludizhi(1,0);xiezifuchuan("数字电子钟");delay

(1);

xieludizhi(2,0);xiezifuchuan("时分秒");delay

(1);

xieludizhi(3,0);xiezifuchuan("年月日星期");delay

(1);

xieludizhi(4,0);xiezifuchuan("闹钟时分秒");delay

(1);

}

voiddisplay()

{

xieludizhi(3,0);

xieling_shu(0,0x30+hour/10);

xieling_shu(0,0x30+hour%10);

xieludizhi(0,':

');

xieling_shu(0,0x30+minute/10);

xieling_shu(0,0x30+minute%10);

xieludizhi(0,':

');

xieling_shu(0,0x30+second/10);

xieling_shu(0,0x30+second%10);

xieludizhi(2,0);

xieling_shu(0,0x30+year/1000);

xieling_shu(0,0x30+year%1000/100);

xieling_shu(0,0x30+year%100/10);

xieling_shu(0,0x30+year%10);

xieludizhi(2,3);

xieling_shu(00,0x30+month/10);

xieling_shu(00,0x30+month%10);

xieludizhi(2,5);

xieling_shu(00,0x30+day/10);

xieling_shu(00,0x30+day%10);

}

voiddisplay1()

{

xieludizhi(3,0);

xieling_shu(0,0x30+shi/10);

xieling_shu(0,0x30+shi%10);

xieling_shu(0,':

');

xieling_shu(0,0x30+fen/10);

xieling_shu(0,0x30+fen%10);

xieling_shu(0,':

');

xieling_shu(0,0x30+miao/10);

xieling_shu(0,0x30+miao%10);

}

voidxingqi()

{

switch(cc)

{

case1:

xieludizhi(3,7);xiezifuchuan("01");return;

case2:

xieludizhi(3,7);xiezifuchuan("02");return;

case3:

xieludizhi(3,7);xiezifuchuan("03");return;

case4:

xieludizhi(3,7);xiezifuchuan("04");return;

case5:

xieludizhi(3,7);xiezifuchuan("05");return;

case6:

xieludizhi(3,7);xiezifuchuan("06");return;

case7:

xieludizhi(3,7);xiezifuchuan("07");return;

}

}

voidanjian()

{

if(key4==0){delay

(1);hm=-hm;while(key4==0);}

if(key1==0)

{

delay

(1);mm++;

if(hm!

=0){if(mm>=4)mm==0;}

if(mm==1){xieludizhi(3,3);xieling_shu(0,0x5f);}

if(mm==2){TR0=1;xieludizhi(3,2);xieling_shu(0,0x5f);}

if(mm==3){xieludizhi(3,0);xieling_shu(0,0x5f);}

if(mm==4){xieludizhi(2,5);xieling_shu(0,0x5f);}

if(mm==5){xieludizhi(2,3);xieling_shu(0,0x5f);}

if(mm==6){xieludizhi(2,1);xieling_shu(0,0x5f);}

if(mm==7){xieludizhi(3,7);xieling_shu(0,0x5f);}

if(mm==8){xieludizhi(2,7);xieling_shu(0,0x02);}

if(mm>=9){xieludizhi(2,7);xieling_shu(0,0x02);mm=0;}

while(key1==0);

}

if(mm==1&&key2==0)

{

if(hm==0){TR0=0;delay

(1);if(key2==0){second++;if(second>=60){second=0;}}}

if(hm!

=0){delay

(1);if(key2==0){miao++;if(miao>=60){miao=0;}}}

while(key2==0);

}

if(mm==1&&key3==0)

{

if(hm==0){TR0=0;delay

(1);if(key3==0){second--;if(second<=-1){second=59;}}}

if(hm!

=0){delay

(1);if(key3==0){miao--;if(miao<=-1){miao=59;}}}

while(key3==0);

}

if(mm==2&&key2==0)

{

if(hm==0){delay

(1);if(key2==0){minute++;if(minute>=60){minute=0;}}}

if(hm!

=0){delay

(1);if(key2==0){fen++;if(fen>=60){fen=0;}}}

while(key2==0);

}

if(mm==2&&key3==0)

{

if(hm==0){delay

(1);if(key3==0){minute--;if(minute<=-1){minute=59;}}}

if(hm!

=0){delay

(1);if(key3==0){fen--;if(fen<=-1){fen=59;}}}

while(key3==0);

}

if(mm==3&&key2==0)

{

if(hm==0){delay

(1);if(key2==0){hour++;if(hour>=24){hour=0;}}}

if(hm!

=0){delay

(1);if(key2==0){shi++;if(shi>=24){shi=0;}}}

while(key2==0);

}

if(mm==3&&key3==0)

{

if(hm==0){delay

(1);if(key3==0){hour--;if(hour<=-1){hour=23;}}}

if(hm!

=0){delay

(1);if(key3==0){shi--;if(shi<=-1){shi=23;}}}

while(key3==0);

}

if(mm==4&&key2==0)

{

delay

(1);if(key2==0){day++;if(day>=31){day=1;}}

while(key2==0);

}

if(mm==4&&key3==0)

{

delay

(1);if(key3==0){day--;if(day<=0){day=31;}}

while(key3==0);

}

if(mm==5&&key2==0)

{

delay

(1);if(key2==0){month++;if(month>=13){month=1;}}

while(key2==0);

}

if(mm==5&&key3==0)

{

delay

(1);if(key3==0){month--;if(month<=0){month=12;}}

while(key3==0);

}

if(mm==6&&key2==0)

{

delay

(1);if(key2==0){year++;}

while(key2==0);

}

if(mm==6&&key3==0)

{

delay

(1);if(key3==0){year--;}

while(key3==0);

}

if(mm==7&&key2==0)

{

delay

(1);if(key2==0){cc++;if(cc>=8){cc=1;}}

while(key2==0);

}

if(mm==7&&key3==0)

{

delay

(1);if(key3==0){cc--;if(cc==0){cc=7;}}

while(key3==0);

}

}

voiddsreset(void)

{

uinti;

wd=0;

i=103;

while(i>=0)i--;

wd=1;

i=4;

while(i>0)i--;

}

bittempreadbit(void)

{

uinti;

bitdat;

wd=0;i++;

wd=1;i++;i++;

dat=wd;

i=8;

while(i>0)i--;

return(dat);

}

uchartempreadvoid()

{

uchari,j,dat;

dat=0;

for(i=1;j<=8;i++)

{

j=tempreadbit();

dat=(j<<7)|(dat>>1);

}

return(dat);

}

voidtempwritebyte(uchardat)

{

uinti;

ucharj;

bittestb;

for(j=1;j<=8;j++)

{

testb=dat&0x01;

dat=dat>>1;

if(testb)

{

wd=0;

i++;i++;

wd=1;

i=8;while(i>0)i--;

}

else

{

wd=0;

i=8;while(i>0)i--;

wd=1;

i++;i++;

}

}

}

voidmain()

{

ucharbuff[4];

TMOD=0x01;

EA=1;

ET0=1;

TR0=1;

TH0=50000/256;

TL0=50000%256;

init_12864();

init_zifu();

hm=0;

if(hm==0)display();

elsedisplay1();

anjian();

xingqi();

if(minute==59&&second==59)

{

fengmignqi();

}

if(shi==hour&&fen==minute&&miao>=second&&miao<=second+3)

{

fengmignqi();

}

}

voidtime()interrupt1

{

TH0=-5000/256;

TL0=-5000%256;

count++;

if(count==20)

{

count=0;

second++;

if(second==60)

{

second=0;

minute++;

if(minute==60)

{

minute=0;

hour++;

if(hour=24)

{

hour=0;

day++;

cc++;

if(cc===8)cc=1;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 考试认证 > 司法考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1