单片机课程设计家用多功能定时器设计与制作Word文件下载.docx

上传人:b****3 文档编号:6491968 上传时间:2023-05-06 格式:DOCX 页数:18 大小:223.55KB
下载 相关 举报
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第1页
第1页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第2页
第2页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第3页
第3页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第4页
第4页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第5页
第5页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第6页
第6页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第7页
第7页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第8页
第8页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第9页
第9页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第10页
第10页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第11页
第11页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第12页
第12页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第13页
第13页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第14页
第14页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第15页
第15页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第16页
第16页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第17页
第17页 / 共18页
单片机课程设计家用多功能定时器设计与制作Word文件下载.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机课程设计家用多功能定时器设计与制作Word文件下载.docx

《单片机课程设计家用多功能定时器设计与制作Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计家用多功能定时器设计与制作Word文件下载.docx(18页珍藏版)》请在冰点文库上搜索。

单片机课程设计家用多功能定时器设计与制作Word文件下载.docx

2.3系统硬件总电路

系统总体电路图

第三章系统软件设计

3.1系统软件流程图

主程序流程图

主程序在初始化参数后进入while循环,不断调用子程序进行刷新缓冲区,刷新显示LED,定时时间检测,按键处理等操作。

定时器0中断计时子程序流程图:

定时器0中断计时子程序流程图

定时器0中断主要用于计时,首先设定一次中断所需的时间,这里为50MS,故初始值为TH0=0x3C;

TL0=0xB0;

检测50ms计数单元是否加满10次,若是,则LED取反闪烁,若不是则跳过。

检测50ms计数单元是否加满20次,若是,则秒计数单元+1,若不是则结束。

检测秒计数单元是否加满60次,若是,则分计数单元+1,若不是则结束。

检测分计数单元是否加满60次,若是,则时计数单元+1,若不是则结束。

检测时计数单元是否加满24次,若是,则时计数单元清零,若不是则结束。

结束返回主程序

定时器1中断计时子程序流程图

定时器1中断主要用于刷新缓冲区按键扫描记录

重装定时器初值后,判断扫描显示位NUM

送相应数码管低电平点亮,同时检测P2^1与P2^2是否出现低电平,

若有则结合当前数码管低电平列线唯一确定一个按键,并将赋予它的键值记录下来

最后NUM++,结束返回主程序。

刷新缓冲区子程序流程图:

根据当前状态STATE判断应刷新哪个缓冲区,例如:

Case1:

刷新时分显示缓冲区

Case2:

刷新定时时间显示缓冲区

Case3:

刷新年月日显示缓冲区

这样做的好处是:

1,条理清晰,一目了然。

2,不用刷新没有变化的缓冲区,如定时时间单元在非定时状态下。

3,提高程序效率,为单片机省电。

LED显示子程序:

根据当前状态选择LED显示方式,例如:

LED1半秒取反,其他不变。

LED2常亮,其他不变。

LED3常亮,其他不变。

数码管显示子程序:

根据当前状态选择数码管显示方式,例如:

显示时分缓冲区的值。

显示定时时间缓冲区的值。

显示年月日缓冲区的值。

按键处理子程序:

根据当前状态选择按键处理方式,例如:

时分状态下按键处理。

定时状态下按键处理。

年月日状态下按键处理。

定时检测子程序:

定时检测,定时开始时间到后,启动相应定时报警状态;

定时结束时间到后,关闭相应定时报警状态.

3.2系统程序设计

3.2.1系统主程序

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

/*主程序*/

voidmain(void)

{

P1=0x00;

STATE=12;

EA=1;

TMOD|=0x01;

//定时器0计时50msin12Mcrystal

TH0=0x3C;

//初值

ET0=1;

TR0=1;

TMOD|=0x10;

//定时器1用于动态扫描

TH1=0xFa;

TL1=0xF0;

ET1=1;

TR1=1;

while

(1)

{

RefreshTab();

LED_Display();

SetTime_test();

if(!

Line1||!

Line2){Delay(300);

Key_Process();

}

}

3.2.2定时中断子程序

/*定时器0中断用于计时*/

voidTimer0(void)interrupt1

TH0=0x3C;

//重新赋值50ms溢出

TL0=0xB0;

count++;

if(count==10&

&

STATE!

=13)

LED1=~LED1;

if(count==20)

count=0;

second++;

//秒加1

if(second==60)

second=0;

minute++;

//分加1

if(minute==60)

{

minute=0;

hour++;

//时加1

if(hour==24)

hour=0;

day++;

if(day==30)

{

day=0;

month++;

if(month==12)

{

month=0;

yearL++;

if(yearL==99)

yearL=0;

}

}}

}

}

/*定时器1中断扫描显示+键值判断*/

voidTimer1(void)interrupt3

//定时1ms显示下一个数码管

switch(num)

case0:

P2=0x0f;

//点亮第一个数码管

if(!

Line2)

{

if(!

Line1)Keyno=1;

Line2)Keyno=2;

Keyage_Record();

}elseKEYT=0;

SEG_Display();

break;

case1:

P2=0x1f;

//点亮第二个数码管

Line1)Keyno=3;

Line2)Keyno=4;

}

case2:

P2=0x2f;

//点亮第三个数码管

Line1)Keyno=5;

Line2)Keyno=6;

case3:

P2=0x3f;

//点亮第四个数码管

Line1)Keyno=7;

Line2)Keyno=8;

case4:

P2=0x4f;

Line1)Keyno=9;

Line2)Keyno=10;

case5:

P2=0x5f;

Line1)Keyno=11;

Line2)Keyno=12;

default:

break;

num++;

//计数循环

if(num==6)

num=0;

第四章实验结果和分析

3.1实验使用的仪器设备

直流电源,万用表,烧程器,螺丝刀等

3.2测试结果分析

1,上电以后,开机显示字幕及初始化显示时间均正常。

2,按键调时,定时均有效。

3,3,定时时间到后相应灯点亮,继电器吸合。

4,开机状态长按shift键关机后,数码管,LED均熄灭。

5,关机状态长按shift键开机后,数码管,LED均正常显示。

测试结果:

与预期相符合。

结束语

通过本次课程设计,基本完成了设计任务,并且达到了预期目标。

本次课程设计主要收获集中在编程方面:

1,编程序,多练是王道。

编程序要求逻辑严密,滴水不漏,任何思路上的不清晰都会导致一些莫名其妙的错误,非常耽误调试时间。

这种情况下就要求多上机实践,多用开发板实验。

2,编程序就是画程序流程图。

没有从整体到局部的程序思路,上机就敲耗时耗力,往往弄得一团糟。

正确的做法是画程序流程图,程序流程图出来了再敲上机就是直接将图形转化为代码,清晰易懂。

3,编程序,相互交流很重要。

同一个功能可以用很多不同的方法实现,多听听别人的意见有助于拓展思路,发现思维漏洞;

给别人讲代码有助于自己深入理解程序,理清条理。

 

参考文献

[1]张俊谟.单片机中级教程。

北京航空航天大学出版社。

2006.

[2]夏路易,石宗义。

电路原理图与电路板设计教程。

希望电子出版社。

2002

[3]杨欣,电子设计从零开始。

清华大学出版社。

2005

[4]BrianW.Kernighan,DennisM.Ritchie.TheCProgrammingLanguage.

ChinaMachinePress.2010

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2