人人范文网 范文大全

单片机课程设计

发布时间:2020-03-02 22:31:50 来源:范文大全 收藏本文 下载本文 手机版

中北大学单片机原理及接口技术课程设计说明书

1 绪论

电子钟已成为人们日常生活中必不可少的物品,广泛用于个人、家庭以及车站、影院、办公室等公共场所,给人们的生活、学习、工作带来了极大的方便。随着电子技术的发展,人们已不再满足于钟表原先最简单的报时,希望出现一些新的功能,诸如日历的显示、闹钟的非接触式止闹、秒表功能、重要日期倒计时显示等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究数字电子钟及其扩展应用,有着非常现实的意义和实用价值。

单片机是指将微处理器、一定容量的RAM和ROM以及I/O口、定时器等电路集成在一块芯片上的完整计算机系统。89C51单片机是一种低功耗、高性能的,它采用CMOS工艺和高密度非易失性存储器(NURAM)技术,其输出引脚和指令系统都与MCS-51兼容;片内的Flash ROM允许在系统内改编程序或用常规的NURAM编程器来编程。因此,89C51是一种功能强、灵活性高,而且价格合理的单片机,可以方便的利用AT89C51定时器和6位7段数码管,设计一个电子时钟。显示格式位 “XX XX XX”,从左向右分别是:时、分、秒。 1.1 设计目的

利用MCS-51芯片及相关芯片设计数字钟。 1.2 设计内容 1)硬件设计

设计数字钟的电路原理图,用PROTEUS绘制硬件电路。制作实物。 2)软件设计

(1)时、分、秒的设置及显示; (2)画出程序框图; (3)调试与分析。用PROTEUS仿真。

第 1 页

共1 页 中北大学单片机原理及接口技术课程设计说明书

2 硬件设计

2.1 设计的总体思路

硬件系统主要由单片机最小应用系统、LED数码管显示模块、晶振模块、按键模块等组成。在使用单片机的过程中必定会使用单片机的最小系统,由于我购买的单片机内部没有晶振,所以设计了外接的晶振模块。鉴于本次课程设计要求制作数字钟,所以使用了六位7段数码管来显示“XX XX XX”,从左向右分别是:时、分、秒。除了能上电复位,还设计了用三个按键实现时、分、秒的调制,使用方便灵活。 2.2 单片机最小系统

对51系列单片机来说,单片机+晶振电路+复位电路,便组成了一个最小系统。见图2.1。

图2.1 2.3 晶振模块

在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1(19脚),输出端为引脚XTAL2(18脚)。而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。见图2.2。

第 2 页

共2 页 中北大学单片机原理及接口技术课程设计说明书

图2.2 2.4 按键模块

用三个按键实现对时分秒的设置,其中一个按键实现对时分秒的控制,接P1.4口,另外两个按键接单片机的P1.5和P1.6口实现加一和减一的功能。 2.5 LED数码管显示模块

本次课程设计由于要显示时、分、秒,所以采用广泛使用的数码管动态显示接口。动态驱动是将所有数码管的8个显示笔划\"a,b,c,d,e,f,g,dp\"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

将数码管的位选信号接P2口的六个位,段选信号接P0口的八个位。再通过Keil软件以及51C语言编程实现数字钟的功能。本系统利用6位LED数码管显示时间,共阴极结构,当要显示某个数字时只要将数字所对应的引脚送入低电平。 2.6 硬件连接图

通过对设计电路的各个模块的分析,可以用PROTEUS绘制硬件电路。如图2.3所示。

第 3 页

共3 页 中北大学单片机原理及接口技术课程设计说明书

图2.3 2.7制作实物

(见附录A)

第 4 页

共4 页 中北大学单片机原理及接口技术课程设计说明书

3 软件设计

单片机最主要的功能是通过程序来实现各种功能,有了硬件的描述,再加上软件的编程,通过不断的调试与修改程序就能实现本次课程设计的目的。 3.1 程序流程图

系统总的流程图,见图3.1。

图3.1 3.2 调试与分析

由于在焊接实物之前,我大量查阅了资料,弄明白了此次课程设计任务的基本原理,对原理有了基本的认识后,就开始了焊接工作。虽然焊接花费了我大量的时间,但是在焊好以后上电时,所有的数码管都亮,说明焊接连线没有短路情况。

硬件连接好以后就是软件编程,但是编写程序中遇到了挺多问题,比如:编写程序是没有消除抖动。在同学的帮助下,使得数码管能正常实现数字钟的功能。 3.3 源程序

(见附录B)

第 5 页

共5 页 中北大学单片机原理及接口技术课程设计说明书

4 心得与结论

本次课程设计以AT89C51为核心部件,实现时间的设置功能。通过六位7段数码管显示可方便地校对时间,利用Keil软件编程完成时钟的功能。

通过实物的焊接以及软件的仿真和编写程序基本完成了数字电子钟的功能,尽量做到了硬件电路简单稳定,减小电磁干扰和其它环境干扰,充分发挥了软件编程的优点,减小了因器件精度不够引起的误差。由于时间有限和本身知识水平的局限,我认为此次设计还有需要改进和提高的地方,例如选用更高精度的元器件,硬件电路更加精确稳定等。

第 6 页

共6 页 中北大学单片机原理及接口技术课程设计说明书

参考文献

[1] 杨文龙.单片机原理及应用[M].西安电子科技大学出版社,1993.[2] 李朝青.单片机原理及接口技术[M].北京航空航天大学出版社,2003.[3] 胡汉才.单片机原理及系统设计[M].清华大学出版社,2003.[4] 杨忠煌,黄博俊,李文昌.单芯片8051实务与应用[M].中国水利水电出版社,2001.[5] 王守中,51单片机开发入门与典型实例[M].人民邮电出版社.[6] 黄文梅.系统分析与仿真:MATLAB语言及应用[M].国防科技大学出版社,1999.[7] 阎石.数字电子技术(第五版)[M].北京高等教育出版社,2006.[8] 蔡明文,冯先成.单片机课程设计[M].华中科技大学出版社,2007.[9] 陈明萤.8051单片机课程设计实训材料[M].清华大学出版社,2004.[10] 李可为.数字钟电路及应用[M].电子工业出版社,1996.[11] 夏继强,沈德金.单片机实验与实践教程

(二)[M]北航出版社,2001.[12] 张红润,蓝清华.单片机应用技术教程[M]清华大学出版社,1997.[13] 周立功.单片机实验与实践[M]北京航空航天大学出版社,2004.[14] 何立民.单片机应用文集

(一)[M].北京航空航天大学出版社,1991.[15] 方大千,鲍俏伟.使用电子控制电路[M].国防科技出版社,2003.[16] 曾繁泰.EDA工程概论[M].清华大学出版社,2002.[17] 谭会生,张昌凡.EDA技术及应用[M].西安电子科技大学出版社,2004.[18] 李强.键盘接口程序计数[J].电子设计出版社,2003.[19] 肖来胜.单片机技术实用教程[M].华中科技大学出版社,2004.[20] 杨晓川.Portel设计指导教程[M].清华大学出版社,2003.

第 7 页

共7 页 中北大学单片机原理及接口技术课程设计说明书

致谢

首先,很感谢学院给我们电气工程及其自动化专业的学生一次把理论加深的机会,使得我们更好的理解《单片机原理及接口技术》这门课程,通过实物的焊接以及软件仿真使得自己的动手能力有了一定的提高;其次,虽然这次课程设计是每个人制作一个实物,但是大家一起讨论,分析,最终调试成功,使大家的思维更加开阔;最后,感谢余老师的研究生给予我们焊接工具的支持。

第 8 页

共8 页

中北大学单片机原理及接口技术课程设计说明书

附录A

制作的实物照片

第 9 页

共9 页 中北大学单片机原理及接口技术课程设计说明书

附录B

源程序清单 #include #define uint unsigned int #define uchar unsigned char uint hhh,mmm,; uint status; //函数声明

void delayMS(uint t) ; void keyproce(unsigned char key); void display(); void timer0(); main() //主函数 { ucharsegcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0,1,2,3,4,5,6,7,8,9 uchar dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};//数码管位选码 buffer[]={0,0,0,0,0,0,0,0}; bit keyrel; uchar buf; uchar keyin; keyrel=1; buf=0xff; TMOD=0x01; //T0工作在方式1,16位计数器 TH0=(65536-1000)/256;// 定时器0设置延时1ms中断初始值 TL0=(65536-1000)%256; TR0=1; IE=0x82; //开定时器0中断

第 10 页

共10 页 中北大学单片机原理及接口技术课程设计说明书

status=0; //延时函数

void delayMS(uint t) // 晶振频率12MHZ { uint i;

while(t--)

for(i=0;i

{ keyin=P1&0xf0; if(keyin!=0xf0) {

delayMS(10);

if(keyin!=0xf0)

{

if(keyrel==1)

{

keyrel=0;

buf = keyin;

}

else

{ keyrel=1; keyproce(buf); //

buf = 0xff; } } else

用来暂时存放键值

调用按键处理函数

第 11 页共11 页 //buf

中北大学单片机原理及接口技术课程设计说明书

{

keyrel=1; keyproce(buf); buf=0xff; } display(); } } //按键处理函数

void keyproce(unsigned char key) //键值处理,正常计时,设置时分秒 { switch (key) { case 0xe0:status++; //按下设置键 if (status>=4) status = 0;

break; case 0xd0:switch(status) //按下加1键,3种模式下加1

{

case 0x01:if(hhh

else hhh=0; break; case 0x02:if(mmm

else mmm=0; break; case 0x03:if(

else =0; break; } break; case 0xb0:switch(status) //按下减1键 { case 0x01:if(hhh>0) hhh--;

else hour=23; break;

第 12 页

共12 页 中北大学单片机原理及接口技术课程设计说明书

case 0x02:if(mmm>0) mmm--;

else min=59; break;

case 0x03:if(>0) --;

else =59; break;

} break; default:break; } } //数码管显示函数 void display() { uchar i;

//正常计时显示

{

buffer[0]=hhh/10; // 显示时的十位

buffer[1]=hhh%10 // 显示时的个位

buffer[2]=mmm/10; // 显示分的十位

buffer[3]=mmm%10; // 显示分的个位

buffer[4]=/10; // 显示秒的十位

buffer[5]=%10; // 显示秒的个位

for(i=0;i

{

P0=segcode[buffer[i]];

P2=dispbit[i];

delayMS(1); //防止数码管显示的时候闪动

P2=0xff; //

P0=0xff;

}

第 13 页共13 页

中北大学单片机原理及接口技术课程设计说明书

} } //定时器0中断函数

void timer0() interrupt 1 using 2 { static uint count; TH0=(65536-1000)/256; // 定时器0设置初始值1ms中断初始值 TL0=(65536-1000)%256; TR0=1; count++; //正常计时

if(count>=1000) // 定时 1S 到,以下为时钟的正常走钟逻辑 { count=0; ++; if(>60) { =0; mmm++; if(mmm>60) { mmm=0; hhh++; if(hhh>24) { hhh=0; }

} } }

}

第 14 页共14 页

单片机课程设计

单片机课程设计

单片机课程设计

单片机课程设计

单片机课程设计

单片机课程设计

单片机课程设计

单片机课程设计

单片机课程设计

单片机课程设计

单片机课程设计
《单片机课程设计.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档