- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机应用技术课程设计—键控秒表课程设计.
《单片机应用技术》
课程设计
题 目∶ 键控秒表 院 系∶ 机电工程系 专业班级∶ 电气 姓 名∶ 学 号∶ 指导教师∶
2013年 10 月18摘要
二十世纪跨越了三个“电”的时代,即电气时代,电子时代和现已进入的电脑时代。但是,实际工作中,并不是需要计算机的场合都需要计算机很高的性能。应用的关键是看能否够用,是否有很好的性能价格比。单片机又称单片微控制器,它不是完成某一个逻辑工程的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一个芯片就成了一台计算机。它的体积小、质量轻、价格便宜,为学习、应用和开发提供了便利条件。
自从1976年问世以来,单片机获得了巨大的发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上的各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,这些都离不开单片机。所以,学习单片机在我国是有着广泛前景的。目录
摘要 1
一、课题研究目的 3
二、实验内容及要求 4
1、实验内容 4
2、实验要求 4
三、仿真原理图 5
四、系统程序 6
五、材料清单 9
六、键控秒表实物图 10
七、心得及体会 11
八、总结 12
九、参考文献 13
一、课题研究目的
1.通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的应用进一步的了解。
2.掌握键控秒表系统的制作,进一步熟悉单片机计数器结构的工作方式,初始值设置和停止等基本应用方法,掌握C语言控制单片机的基本技能。
3.通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。
4.该实验通过单片机的键控原理,设计简单的系统,拥有正确的增一、减一、清零、自动加一功能,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义。
5.通过本次设计,提高自身电路设计能力,并锻炼团队合作精神。
二、实验内容及要求
1、实验内容
利用AT89C52设计一个2位LED数码管显示“秒表”,可显示时间为00~59秒。并设计一个“增一”按键,一个“减一”按键,一个“清零”按键,一个“自动增一”按键。
按键说明:按“增一”按键,系统加一计数,数码管显示数字加一;
按“减一”按键,系统减一计数,数码管显示数字减一;
按“清零”按键,系统清零,数码管显示“00”;
按一下“自动加一”按键,系统自动进行加一循环,并在数码管上显示,再按一下“自动加一”按键,系统会暂停自动加一循环,数码管显示的数字将停留在当前显示值上。
2、实验要求
了解AT89c52芯片的的工作原理和工作方式 ,使用该芯片对LED数码管进行显示控制,实现用单片机的端口控制数码管,显示数字,并能用按键实现秒表增一、减一、清零复位功能。
画出使用单片机控制LED数码管显示的电路图,并编程完成软件部分,最后调试秒表的增一、减一、清零、自动加一。三、仿真原理图
四、系统程序
#include reg51.h
#define uchar unsigned char
#define uint unsigned int
#define duan P0
sbit wei_1=P2^7;
sbit wei_2=P2^6;
sbit key1=P2^0; //加1
sbit key2=P2^1; //减1
sbit key3=P2^2; //清0
sbit key4=P2^3; //按下自动加1,再按停下不变
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳
uchar n=0,num=0;
void display(uchar num1);
void delay(uint xms)
{
uint x,y;
for(x=xms;x0;x--)
for(y=110;y0;y--);
}
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
num++;
if(num==60)
num=0;
while(!key1);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
if(num==0)
num=60;
num--;
while(!key2);
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
num=0;
while(!key3);
}
}
if(key4==0)
文档评论(0)