单片机课程设计报1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机课程设计报告基于单片机的数字钟

班级:自动111

姓名:汪利庆

学号:112207201125

指导老师:章红

设计时间:21013年6月

目录

1、引言 (2)

2、课程设计目的 (3)

3、课程设计题目描述和要求 (3)

4、设计总体思路和程序设计总流程 (4)

5、程序设计细节 (5)

6、总结与收获 (15)

单片机课程设计正文

一、引言

现代社会科技飞速发展,人们生活节奏加快,时间就是金钱,时间就是生命。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。

20世纪末,电子技术得到飞速发展,各类电子产品相继出现在市场,电子产品主要朝着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。数字化电子产品已渗入到人类生活的方方面面。

单片计算机即单片微型计算机(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多输入输出口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产品和工业自动化上。而52 单片机是51单片机的升级版,功能更强大。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

基于以上发展与现实需要本次设计课题就是基于单片机的设计-----基于单片机的多功能数字钟。数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

二、课程设计目的:

1、巩固和加深对单片机原理知识的理解和运用;

2、进一步提高学生综合运用所学知识的能力;

3、培养学生综合分析问题、发现问题和解决问题的能力

三、课程设计题目描述和要求:

1、方案论证 确定总体电路原理图。

2、元器件选择 设计PCB图 或用万能电路实验板搭线 。

3、绘制程序流程图 编写C语言源程序。

4、安装调试 实现数字时钟的基本功能 即能正确显示时、分、秒 可调整时间 秒闪功能

四、设计总体思路和程序设计总流程思路:

1、总体思路:

用51单片机、端口扩展芯片8522、6个七段码显示器等主要元件实现逐步实现多功能电子钟的计时、调时、闹钟、秒表等功能模块

2、硬件的连接图:

3、程序设计总流程:

五、程序设计细节:

1、计时部分:

设置计时器0工作与方式1计时模式,并设置计时初值N=50000,使每次中断时间为50ms,再设置全局变量在循环中实现分表记录秒,分,时。

void time0_int(void) interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; timer=timer+1; if(timer>=20) { second=second+1;

timer=0;

if(second==60)

{ minute=minute+1;

second=0;

if(minute==60)

{ hour=hour+1;

minute=0;

if(hour==24)

{hour=0;}

}

2、检查和读出键值部分:

键值设为全局变量key,首先通过置行全为0检查列是否全为1判断是否有按键按下,在通过延时消再检测消震动,如有键按下着在逐行输入0检测哪一行不为1,最后行值作为高四位列值作为底四位赋值给keyt,通过keyt值与键值代码比较得出键值。void keyscan()

{ unsigned char code_h,code_l,i1,i2;

P1=0x00;

code_l=PC8255;

code_l=code_l&0x0f;

if(code_l!=0x0f)

{ dl_ms();

code_l=PC8255;

code_l=code_l&0x0f;

if(code_l!=0x0f)

{ code_h=0x0e;

for(i1=0;i1<4;i1++)

{ P1=code_h;

code_l=PC8255;

code_l=code_l&0x0f;

if(code_l==0x0f)

{

code_h=(code_h<<1)|0x01;

}

else break;

}

}

code_h=code_h<<4;

keyt=code_h|code_l;

for(i2=0;i2<16;i2++)

{ if(keyt==keytable[i2])

key=i2;

}

}

}

相关文档
最新文档