单片机大作业报告

发布 2022-09-14 22:13:28 阅读 8068

《单片机》

**题目: 电子实时时钟/万年日历系统。

专业: 学生姓名:

提交日期 : 2009 年 12 月 14 日。

单片机实验报告。

一.实验目的:

课程标志性内容的设计理解和综合运用,鼓励独立性设计和功能扩展的创新实践。

二.功能要求:

1. 基本要求:

1) 显示准确的北京时间(时、分、秒),可用24小时制式;

2) 随时可以调校时间。

3) 增加公历日期显示功能(年、月、日),年号只显示最后两位;

4) 随时可以调校年、月、日;

5) 允许通过转换功能键转换显示时间或日期。

2. 发挥部分:

1) 减少按键个数。

三.方案考虑:

1. 硬件方案

1) 显示器采用6位led数码管(共阳),可分别显示时间或日期;

2) 显示器的驱动采用动态扫描电路形式,以达到简化电路的目的。但要注意所需的驱动电流比静态驱动时要大,因此要增加驱动电路。可采用74ls244或者晶体管;

3) 使用五个按键,分别控制模式、调整、复位。

2. 软件方案

设计思路:a. “时钟”准时间由单片机内部的定时中断提供,定时时间是“秒”的整除数,长短适宜。最长不超过16位定时器的最长定时时间;最短不少于中断服务程序的执行时间。

通常基准时间越短,越有利于提高时钟的运行精确度。我们的实验定时10ms。

b. 用一个计数器(例如用片内ram的41h单元)对定时中断的次数进行计数,从而可以实现“秒”定时,同理可以实现“分”定时和“时”定时,甚至于“日”、“月”、“年”定时。

c. led数码管显示器采用“动态扫描驱动”时要注意:驱动信号的维持时间必须大于“起辉时间”(电流大起辉时间短),而驱动信号的间歇时间必须小于“余辉时间”(电流大余辉时间长),但驱动电流大小受硬件电路能力和led数码管极限功耗的制约。

d. 动态扫描显示方式在更新显示内容时,因led数码管余辉的存在可能会造成显示字符的模糊,新内容写入显示器之前须将所有的led数码管熄灭。

e. 关于自动识别“月大、月小”和“平年、润年”问题的考虑:

月大、月小:

1~7月:逢单月为31天;逢双月为30天,其中2月另行处理。

8~12月:逢单月为30天;逢双月为31天。

平年、闰年:

仅仅处理2月份的天数:平年的2月份天数为28天,闰年的2月份天数为29天。

4、元器件清单。

5、电路图。

6.程序说明:

程序中使用的地址标志说明:

7fh:flag1,当flag1=0时表示显示时间,当flag1=1时表示显示日期。

7eh:flag11,表示选中日期显示的年、月、日中的哪一位的标志位。

30h:flag2,表示选中时间显示的时、分、秒中的哪一位的标志位。

31h:flagn,表示判断平年、闰年的标志位。

32h、33h:与秒的两位显示有关。

34h、35h:与分的两位显示有关。

36h、37h:与时的两位显示有关。

3bh、3ch:与日的两位显示有关。

3dh、3eh:与月的两位显示有关。

3fh、40h:与年的两位显示有关。

38h、39h、3ah:分别存放秒、分、时内容。

43h、44h、45h:分别存放日、月、年内容。

41h:存放秒定时器的计数次数。

42h:用做数码管位选。

以下为程序流程图:

源程序:程序开始。

org0000h初始化入口。

ljmp begian

org 000bh中断入口。

ljmp irq调中断子程序。

org 0020h主程序开始地址。

初始化程序。

将数据区和标志位都进行初始化flag1=0;flag11=0;flag2=0;flagn=0

32h~~~3ah,3ch,3eh,40h都为00h

begian: clr7fhflag1显示日期或者时间的标志取值0,1

clr 7eh

clr 31h

clr 30h

clr amov tmod01h ;设置t0工作方式。

mov r030h ;标志和数据缓冲区清零。

movb11h ;

lop1: mov @r0 , a

incr0djnz blop1

mov 3bh01h ;日期为1日。

mov 43h1

mov 3dh01h ;月份为1月。

mov 44h1

mov 3fh09h ;年份为05年。

mov 45h9

mov 41h100 ;"秒"定时计数器计数初值。

mov th00d8h ;t0定时10ms时间常数。

mov tl00f0h ;(fosc=12mhz)

setb tr0启动t0计数。

setb et0允许t0中断。

setb ea开系统中断。

初始化结束。

检查有无键按下(这里作为主程序)

没有键按下就调用显示子程序;有键按下就判断是哪个键按下,然后调用相应。

子程序,各个子程序返回后重新检查有无键按下;如此循环。

keychk: mov ap1读键盘。

cjne a0ffh , lop2 ;有键按下则转。

lcall display用来显示时间或日期。

sjmp keychk转回去读键盘。

lop2: mov r3a保键号。

wait: movap1

cjne a0ffh , wait没有松键就等。

mov ar3

jnbacc.0 , lop4第零键按下就转。

jnbacc.1 , lop5第一键按下就转。

jnbacc.2 , lop6第二键按下就转。

jnb acc.3 , lop20第三键按下就转。

sjmp keychk不是所要的按键就转。

lop4: lcall key0调第零键功能子程序。

sjmp keychk

lop5: lcall key1调第一键功能子程序。

sjmp keychk

lop6: lcall key2调第二键功能子程序。

sjmp keychk

lop20: lcall key3

sjmp keychk

ret主程序到此结束。

display子程序。

判断flag1,为0就调用ttime子程序;为1就调用date子程序。

display: jb7fhlop7flag1=1就转。

lcall time调用time子程序。

retlop7: lcall date调用date子程序。

retkey0子程序。

按下此键用于切换显示时间或者显示日期。

按一下key0键,flag1取反;接着判flag1是0还是1;然后调用相应子程序。

key0: cpl 7fhflag1取反。

jb7fhlop8flag1=1转去调date

lcall timeflag1=0调time

retlop8: lcall date调用date子程序。

retkey1子程序。

判flag1;为1则flag11取反,返回;为0则flag2加1,接着判flag2>2否?

是的话flag2返回0值返回,否的话直接返回。

key1: jb7fhlop9flag1=1就转。

mov a30h

add a1

mov 30haflag2+1

cjne a3lop10 ;flag2不等3就转。

mov a0flag2大于2则回0

mov 30ha送回flag2标志。

retlop9: mov a, 7eh

add a , #

单片机大作业报告

温度控制系统设计。班级 1302041学号 姓名 陈串串。1设计要求。项目简介 温度的测量和控制对人类日常生活 工业生产 气象预报 物资仓储等都起着极其重要的作用。在许多场合,及时准确获得目标的温度 湿度信息是十分重要的,近年来,温湿度测控领域发展迅速,并且随着数字技术的发展,温湿度的测控芯片也相应...

单片机应用大作业

单片机。大作业报告。目录。一 设计任务和性能指标 1.1设计任务 1.2性能指标 二 设计方案 三 系统硬件设计 3.1主控制器at89c52最小系统 3.2时钟电路ds1302 3.3显示电路的设计 3.4键盘接口的设计 四 系统软件设计 4.1主程序设计 4.2阴历子程序设计 4.3显示子程序设...

《单片机大作业》评分标准

评分标准。优秀 95分 1 内容完整,包含报告要求中提到的全部内容。2 原理图设计 电路功能描述正确。3 对电路进行了 结果能正确说明电路的功能。4 文字通顺,格式及标点规范。5 写作态度认真,按时圆满完成 良好 85分 1 内容完整,包含报告要求中提到的全部内容。2 原理图设计 电路功能描述基本正...