单片机原理实验报告441476.docx
《单片机原理实验报告441476.docx》由会员分享,可在线阅读,更多相关《单片机原理实验报告441476.docx(12页珍藏版)》请在冰豆网上搜索。
单片机原理实验报告441476
重庆科技学院
独立实验课程总结报告
院(系):
________专业班级:
__________
学生姓名:
_________________学号:
__________
实验地点:
____________________
报告题目:
__单片机系统综合训练——
报告日期:
201年月日
成绩:
_____________
评阅教师(签字):
_____________________
前言
随着电子技术的飞速发展,单片机已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为”。
由于单片机集成度高、功能强、可靠性高、体积小、功耗低、使用方便、价格低廉等一系列优点,单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC机外围以及网络通讯等广大领域。
经过了一个月左右的努力,终于完成了这次实训。
在实训过程中回顾了所学课本知识,提高了多单片机的了解。
在实训中也遇到过很多困难和问题,不过都在老师和同学的帮助下一一解决。
本次实训的任务是用89c51单片机板子做个时钟,其具有显示北京时间和闹钟功能,以及时间调整,闹钟设置,整点报时功能。
本次用了数码管和中断计时器还有爱建查询来完成这次实训任务的功能实现。
一步一个小问题的解决,成功完成了实训任务。
目录
1.功能描述4
1.1设计一个多功能数字电子钟4
2.方案设计4
2.1系统分析4
2.2器件选择5
2.2.1微处理器5
2.2.2显示器5
2.2.3按键5
3.硬件电路设计5
3.1最小系统5
3.2显示器设计6
3.3按键电路设计7
4.软件设计8
4.1操作功能设计8
4.2程序编制思想8
4.3主程序9
4.4按键检查模块9
5.程序调试10
6.技术小结10
7.心得体会10
8.参考文献11
附录1:
电路原理图12
附录2:
程序参考清单(注意整理、排版,去掉多余的空行)13
设计报告
1.功能描述
1.1设计一个多功能数字电子钟
1)实时显示当前北京时间(时,分)
2)整点闹钟提示
3)闹钟显示
4)设置时间和闹钟
5)秒表
2.方案设计
2.1系统分析
根据系统功能要求,可将系统组成结构分成四大部分:
1)计时:
通过中断系统计时。
2)显示:
通过动态显示的方法,在数码管上显示;
3)调整:
通过按键多时间和闹钟进行调整
4)切换
切换时间,闹钟,秒表模式,
图1.1系统结构框图
2.2器件选择
2.2.1微处理器
市场上微处理器种类很多。
这里,选取微处理器从多方面考:
经济,性能等等。
这里,选取89c51芯片。
因为既便宜有实用
2.2.2显示器
常见的显示器件LED数码管和LCD液晶器件。
LED数码管能够显示响应速度可以达到纳秒级,也可以用作显示,比如点阵,但是分辨率稍低于液晶材料。
因为其功率较大,可以用于照明,大量发光二极管用作照明时,要做好散热设计。
数码管实际就是做成了具体显示形式的发光二极管,可以显示某些预先设置的图像,显示成本低于发光二极管点阵,但是显示内容基本不可变。
LCD液晶显示器件,驱动电压低、功耗微小、可靠性高、显示信息量大、彩色显示、无闪烁、对人体无危害、生产过程自动化、成本低廉、可以制成各种规格和类型的液晶显示器,便于携带等。
但是需要有背光照明,且可视角度有限制。
系统显示主要还是数字,根据这两种显示器件的特性,选取LED数码管器件。
由于系统要求显示小时和分钟,采用四位数码管显示即可。
2.2.3按键
按键是用来模式改变,加减,选位。
这里采用动态显示,选用原则:
以最少的按键,实现尽可能多的功能。
所以这里,设置4个按键:
mode键、up键、down键、ENT键。
3.硬件电路设计
系统由89c51芯片,以及时钟电路复位电路和4个数码管4个按键,这几个部分组成,时钟显示模块,时钟调整模块,计时模块。
3.1最小系统
单片机最小系统89c51单片机,时钟电路,复位电路。
单片机最小系统原理图如图3.1所示。
图3.1最小系统
3.2显示器设计
为了输出显示,需要4个数码管。
显示电路由4个数码管组成,分别于单片机的P0(位选),P2(段选)相接。
显示电路接口图如图3.2所示。
图3.2显示器设计
3.3按键电路设计
为了控制、调整,需要4个按键,按键电路有4个按键组成,分别于单片机的P20(mode)P21(up)P22(down)P32(ENT)相接。
按键电路接口如图3.3所示。
图3.3按键电路设计
4.软件设计
4.1操作功能设计
根据系统功能描述,可以将功能大致分成三类:
北京时间功能、闹铃功能、秒表功能。
系统设有四个数码管,四个按键。
采用菜单式人机对话,便于操作。
所以可分成多种菜单,功能键切换菜单,UP或DOWN键设置时间。
菜单设计如下:
()
菜单1:
北京显示:
显示格式为:
小时.分钟(如:
09.50,为9点50分)
菜单2:
闹铃显示:
显示格式为:
小时.分钟(如:
09.50,为9点50分的闹钟)
菜单3:
秒钟显示:
显示格式为:
秒.毫秒(如:
09.82,为9秒82毫秒)
在1,2种菜单下,ENT键设为用来选择要修改的数码管、UP键设为用来加、DOWN键设为用来减。
4.2程序编制思想
数码管采用动态扫描原理。
另一方面,按键接普通IO口,所以按键管理程序所涉及到的识键、译键均需采用软件扫描的方法。
这里选用定时扫描控制方式。
所以,程序编制思想为:
用循环函数完成数码管动态扫描,并对按键进行扫描。
扫描到相应的按键时,如功能键,则执行相应的操作,如,切换菜单。
切换菜单的方法,主要是通过程序定义一个变量,变量不同的值表示不同的菜单。
在进行切换菜单后,在按键处理子程序中,需对菜单变量重新赋值,并更新数码管显示内容。
另外,系统有北京时间和表秒功能。
4.3主程序
主程序主要初始化计时器和无限循环执行主操作函数。
主程序流程图如图4.1所示。
图4.1
4.4按键检查模块
按键检测模块实现通过按键检测,用计数的方法实现一键多用。
按键检测模块流程图如图4.2所示。
图4.2按键检测子程序流程图
5.程序调试
在程序编制当中易出现问题:
定时器中断的用法、动态扫描的过程、按键与显示的对应,按键的消抖动等。
6.技术小结
本次实训,用到了单片机,及数码管的动态显示,按键查询,按键消抖等。
用到了定时器t0的中断系统来计时。
用到了4个LED灯来表示闹钟的闹铃,因为没有蜂鸣器。
7.心得体会
实训中要用到很多书本上的基础知识,还要自己有软件调试的基础,一步一步实现小模块,把整个系统细化,这是工程的做法。
课程设计确实是一门很复杂、很严密的课程,能很好的提高一个人的实践创新能力、思维能力。
本次的设计使我从中学到了一些很重要的东西,我通过所学的知识,以及上网和图书馆查资料,同时在查找资料的过程中我学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。
学会了应用单片机的知识,理论与实践结合,用单片机设计电子时钟,在资料的帮助下再加上同学间的思想设计了一个简单电子时钟。
通过这次的设计,我对单片机有了更深的了解,发现自己还有许多不足,我们应该不断完善自己的知识储备,在未来的工作和学习的道路上走的更加深远!
8.参考文献
[1]沈红卫.单片机的智能系统设计与实现[M].北京电子工业出版社.2005.
[2]张毅刚。
单片机原理及接口技术[M].人民邮电出版社.2011
[1]李全利.单片机原理及接口技术.2版.北京:
高等教育出版社,2009.1 [2]欧阳文.ATMEL89系列单片机的原理与开发实践.北京:
中国电力出版社,2007.
[3]李学海.标准80C51单片机基础教程—原理篇.北京:
北京航空航天大学出版社,2006.
[4]李群芳.单片机微型计算机与接口技术.2版.北京:
电子工业出版社,2005. [5]胡学海.单片机原理及应用系统设计.北京:
电子工业出版社,2005. [6]李朝青.单片机原理及接口技术.3版.北京:
北京航空航天大学出版社,2007.
[7]陈光东.单片机微型计算机原理与接口技术.武汉:
华中理工大学出版社,1999.
[8]张毅刚.MCS-51单片机应用设计.哈尔滨:
哈尔滨工业大学出版社,1995
附录1:
电路原理图
附录2:
程序参考清单(注意整理、排版,去掉多余的空行)
1、主程序
voidmain()
{TMOD=0x01;EA=1;ET0=1;TH0=(65536-48483)/256;TL0=(65536-48483)%256;TR0=1;count=0;hour=0;
minute=0;second=0;ahour=0;aminute=0;while
(1){m_operation();}
}
2、按键检测模块
intkey_mode()
{if(mode==0){delay(200);if(mode==0){while(mode==0);return0;}return1;}return1;}
intkey_up()
{if(up==0){delay(200);if(up==0){while(up==0);return0;}return1;}return1;}
intkey_down()
{if(down==0){delay(200);if(down==0){while(down==0);return0;}return1;}return1;}
intkey_ENT(){if(ENT==0){delay(200);if(ENT==0){while(ENT==0);return0;}return1;}return1;}
3、数码管动态显示
voidmode3()
{
nta,b,c,d;button1=1;
while(button1){a=second/10;b=second%10;c=(int_time*5)/10;d=(int_time*5)%10;count++;count=count%4;switch(count){case0:
{P2=0xff;P0=table[d];P2=dis_buf[count];}break;case1:
{P2=0xff;P0=table[c];P2=dis_buf[count];}break;case2:
{P2=0xff;P0=table[b]|0x80;P2=dis_buf[count];}break;
case3:
{P2=0xff;P0=table[a];P2=dis_buf[count];}break;P2=0xff;}if(!
mode){button1=0;P2=0xff;}}}