单片机课程论.docx
- 文档编号:7988015
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:17
- 大小:103.46KB
单片机课程论.docx
《单片机课程论.docx》由会员分享,可在线阅读,更多相关《单片机课程论.docx(17页珍藏版)》请在冰豆网上搜索。
单片机课程论
塔里木大学信息工程学院
《单片机原理与电路》课程论文
题目:
基于单片机的电子表设计
姓名:
叶尔波里.赛依楼
学号:
5011107102
班级:
计算机科学与技术15-1班
摘要:
随着电子技术飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高。
电子表已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使电子表具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的电子表集成电路芯片出售,价格便宜、使用也方便,但鉴于电子表电路的基本组成包含了数字电路的主要组成部分,因此进行电子表的设计是必要的,用汇编语言设计电子表显示程序,要求根据输入程序显示电子表画面。
研究电子表及扩大其应用,有着非常现实的意义。
关键词:
LED,单片机电子秒表,仿真。
目录
1绪论3
1.1课题背景及研究意义3
1.2国内外现状3
1.3课题的设计目的4
1.4课题的主要工作4
2系统概述4
2.1方案论证4
2.2系统设计原理5
3系统硬件设计7
3.1主控电路设计7
3.2电路设计思路7
4系统软件设计8
4.1主程序设计8
4.2LCD初始化10
4.3仿真结果10
结论11
参考文献12
附录A系统整体电路13
附录B全部程序清单15
1绪论
1.1课题背景及研究意义
电子表是采用发光二极管(LED)直接显示时、分、秒的高精度计时设备,应用十分广泛,具有直观性强,操作方便,实用性强的特点。
一提到表,大家一定会想起振动。
机械表利用的是机械振动,电子表当然是利用电学振荡。
最早的振荡电路是由电感器和电容器构成,称为LC电路,但其频率稳定性却不大好,后来,科学家们用石英晶体代替LC振荡器,就大大提高了频率稳定性。
石英为规则的六边形晶体。
在石英晶体上按一定方位切割下的薄片叫做石英晶片。
石英晶片有一个奇妙的特性:
若晶片上加以机械力,则在相应的方向上就会产生电场。
这种物理现象称为"压电效应"。
当在石英晶片的极板上接上交流电场。
当外加交变电压的频率与石英晶片的固有频率相等时,就会产生共振。
这种现象称为"压电共振"。
利用这种稳定的振荡特性,人们就创造出了精度极高的电子表。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如按时自动打铃、时间程序自动控制、秒表等。
所有这些,都是以钟表数字化为基础的。
因此,研究秒表及扩大其应用,有非常现实的意义。
电子秒表是一种用数字电路技术实现秒数计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
1.2国内外现状
我国开始使用单片机是在1982 年,短短五年时间里发展极为迅速。
1986 年在上海召开了全国首届单片机开发与应用交流会,有的地区还成立了单片微型计算机应用协会,那是全国形成的第一次高潮。
截止今日,单片机应用技术飞速发展,我们上因特网输入一个“单片机”的搜索,将会看到上万个介绍单片机的网站,这还不包括国外的。
与它相应的专业杂志现在也有很多,比如由单片机界的权威何立民主编的《单片机与嵌入式系统应用》杂志现以风靡电子界,在2003年7月,在上海、广州、北京等大城市所做的一次专业人才需求报告中,单片机人才的需求量位居第一。
现在可以说单片机是百花齐放的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,它们各具特色,互成互补,为单片机的应用提供广阔的天地。
纵观单片机的发展过程,可以预示单片机的发展趋势。
现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。
甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。
此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。
现在的许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。
1.3课题的设计目的
(1)通过本次的课程设计提高我们对单片机的电路设计,以及巩固自己的单片机设计能力,充实自己在本学期学到的单片机知识。
(2)通过本次的课程设计阶段来提高个人的查阅能力和文献搜索能力,以及提高个人的自学能力。
(3)通过对课题设计方案来提高我们在各方面的知识,提高个人的软件设计能力和硬件设计能力。
(4)在进一步熟悉单片机基础知识的同时,学会单片机应用系统的设计、制作方法和开发过程,初步具备运用所学知识分析和解决实际问题的能力,能够独立地完成一个简单应用系统的设计与开发。
1.4课题的主要工作
本人的所设计的题目是一种基于单片机的电子表,主要工作如下:
1.电子表从000.0开始计时。
最小计时单位为0.1秒,也就是100毫秒。
2.由于时钟电路采用的晶振的频率为12MHz,故机器周期为12/12MHZ=1us。
3.程序设计采用定时500us,因此要产生500us/1us=500个脉冲。
4.定时器采用的是定时器0工作在方式1定时,方式1(16位方式)。
5.初始值C=10000H-500B=FE0CH,高位装入TH,低位装入TL。
2系统概述
2.1方案论证
利用80C51内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。
配合软件监控实现运行,停止,调时,调分,调秒。
该方案节省硬件成本,且能够使人在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,但是使用单片机内部定时器来设计的电子表不能显示实时时间,且时间调节逻辑比较复杂,程序容易出错,所以在本次设计中不予以采用。
(1)系统结构
整个电子时钟系统电路可分为五大部分:
中央处理单元(CPU)、电源电路部分、显示部分、键盘输入部分。
(2)显示部分
显示部分是整个电子时钟最为重要的部分,它随时间显示的,共需要8位LED显示器。
采用动态显示方式,所谓动态显示方式是时间(或温度)数字在LED上一个一个逐个显示,它是由于这些LED数字显示之间的时间非常的短,使的人眼看来它们是一起显示时间数字的,并且动态显示方式所用的接口少,节省了CPU的管脚。
由于端口的问题以及动态显示方式的优越性,在此设计的连接方式上采用共阴级接法。
显示器LED有段选和位选两个端口,首先说段选端,它由LED八个端口构成,通过对这八个端口输入的不同的二进制数据使得它的时间显示也不同,从而可以得到我们所要的显示时间。
(3)实现数字时钟
原理为:
在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,没产生一次中断,存储器内相应的秒数值加1:
;若秒值达到60,则将其清零,并将相应的分字节值加1若分值;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。
该方案具有硬件电路简单的特点。
由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
2.2系统设计原理
1.电路实际应用意义
本设计中的数字秒表的核心是AT89C52单片机,其内部带有8KB在线可编程Flash存储器的单片机,无须外扩程序存储器,硬件电路主要由四部分构成:
时钟电路,复位电路,键盘以及显示电路。
时钟电路是秒表硬件电路的核心,没有时钟电路,电子表将无法正常工作计时。
本系统时钟电路采用的晶振的频率为12MHz,定时器采用的是定时器0工作在方式1定时。
键盘可对电子表进行调微秒启动、停止、清除设置。
显示电路由1个四位一体共阴级LED数码管构成,它的段控端口和位控端口通过与80C51单片机的I/O口相连,显示器可使秒表显示出秒、毫秒。
数字秒表的计时原理为:
上电后,电子表显示,电子表从000.0开始计时。
最小计时单位为0.1秒,也就是100毫秒。
由于时钟电路采用的晶振的频率为12MHz,故机器周期为12/12MHZ=1us,程序设计采用定时500us,因此要产生500us/1us=500个脉冲;定时器采用的是定时器0工作在方式1定时,方式1(16位方式):
初始值C=10000H-500B=FE0CH。
2.时钟电路工作原理:
下图所示为时钟电路原理图,在80C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
系统基本方框图
3.显示电路工作原理:
四位一体数码管是段控端连接在一起,共用8根数据线,。
假设段控端有段码输入时,每个数码管的段控端口都收到了段码,但只有一位控线有效的数码管才能显示数据,反之亦反。
共阳极数码管段控端口为低电平有效,一位控端口的高电平有效,共阴极数码管恰恰相反。
四位一体数码管用于动态扫描,即把数码管能显示数据的段控数据分时送到其对应的段控端口。
当一位段控码被送到段控端口时,显示此段控码数据的数码管,它的位控端置有效电平,数码管点亮;而其他数码管的位控端送无效电平,数码管不亮。
持续点亮一段时间,再送其它的段控码,依次把显示段控码的数码管,使其位控端为有效电平,其他数码管的位控端为无效电平,就这样数码管依次被点亮。
此外,电路中还用了MAX7221作为显示电路的驱动器。
3系统硬件设计
3.1主控电路设计
系统所涉及到的硬件元件设备由图所示:
元件
数量
80C51
1
Max7221
1
7SERGN
1
按键
2
电阻
1
电解电容
3
3.2电路设计思路
1)时钟电路
原理为:
在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器与软件结合实现1秒定时中断,没产生一次中断,存储器内相应的秒值加1:
;若秒值达到60,则将其清零,并将相应的分字节值加1若分值;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
图1时钟电路
2)显示电路
时间显示及校正模块:
能正确显示时间,并能对时间进行设定和修改。
在时钟正常运行时,不可以调整时钟,在运行时,以4位数码管的高2位显示小时,低2位显示分钟,发光二极管每秒闪烁一次,表明时钟的运行,需要调整时间时,发光二极管停止闪烁,此时通过按键实现时间的调整。
图2显示电路
3)硬件调试:
硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。
用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。
为了保护芯片,应先对各IC座(尤其是电源端)电位进行检查,确定其无误后再插入芯片。
4系统软件设计
4.1主程序设计
1.主程序流程图
2.跑秒流程图
3.软件调试:
软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。
程序的调试应逐个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,最后逐步将各子程序连接起来总调。
联调需要注意的是,各程序模块间能否正确传递参数,寄存器组是否有冲突,特别要注意各子程序的现场保护与恢复。
4.故障:
(1)系统不工作。
其原因主要有晶振不起振(晶振损坏、晶振电路不正常导致晶振信号太弱等),或脚没有接高电平(接地或悬空)等。
(2)系统工作时好时坏。
这主要是由干扰引起的。
由于本系统没有传感输入通道和控制输出通道,干扰源相对较少且简单,因此,在电源、总线处对地接滤波电容一般可以解决问题。
4.2LCD初始化
按照显示方式,有LED数码管显示与LCD液晶显示之分。
而数码管显示又有动态显示与静态显示之分。
如果采用静态显示,则6位数码管就需要42个I/O口控制,所以不能采用。
如果采用动态显示,6位数码管也需要12个I/O口,且显示有很大的局限性,并且取字模,写动态扫描程序都比较麻烦,所以在此也没有采用。
在此系统中显示部分是由液晶显示屏来显示时钟和跑秒的数据的。
具有可显示字符多、外观漂亮、易操作等优点。
具体电路图如下图所示:
4.3仿真结果
图4-3仿真1
结论
这次课程设计整体来说是成功的,但我也发现了自己许多错漏和不足之处。
譬如,最简单的程序没写好就想着写的更复杂的程序,做事还是缺乏耐性和细心,当有时遇到问题时,总觉得无从下手,对于课本上的知识不能很好的组织起来。
在编写各功能程序时,特别是后来增添的比较复杂的程序。
现在电子领域、不同的行业极为广泛,对于我们学电子专业的人来说,学好课本上的知识仅仅是基础,要掌握一门技术必须还得更深层的学习,并且亲自动手去做,这样才能达到事半功倍的效果,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,更加强了团队合作的意识,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。
经过调试,和多次改进,本设计达到了预期的效果。
本系统可以正常的实验数字时钟和跑秒的功能,并且数字钟在系统掉电的情况下系统时间还不会停,也就是说本系统能够显示实时时间,不管系统什么时候开启,它所显示的时间都是正确的北京时间。
在此之外,本系统的跑秒功能是与电子时钟相独立的,时间显示在液晶屏的第一行,跑秒显示在液晶屏的第二行,互不影响。
通过这次对电子时钟的设计,让我明白了如何设计程序,并且对各种硬件及软件有了进一步的掌握,尤其让我了解了AT89S52单片机和DS1302时钟芯片的工作原理。
但是对于写一篇好的设计报告仍然很难,自己对于在设计中所遇到的那些问题总结不了那么多经验教训。
做本课程设计之前以为自己什么都了解了,掌握了,弄懂了,一旦做起来,漏洞百出,不显眼的错误却造成了失败。
这次课程设计真的让我懂得了一个道理:
“坐而言不如立而行”,做事情要全力以赴,做学问要严谨治学。
参考文献
[1]、曹巧媛主编,《单片机原理及应用》北京:
电子工业出版社,1997.7。
[2]、赵秀珍,单永磊主编,《单片微型计算机原理及其应用》北京:
中国水利水电出版社,2001.8。
[3]、张毅刚,修林成,胡振江编著《MCS-51单片机应用设计》哈尔滨:
哈尔滨工业大学出版社,1990.8。
[4]、张洪润,兰清华编著《单片机应用技术教程》北京:
清华大学出版社,1997.11。
[5]、陈景初主编《单片机应用系统设计与实践》北京:
北京航空航天大学出版社,1999.6。
[6]、马家辰主编《MCS-51单片机原理与接口技术》哈尔滨:
哈尔滨工业大学出版社,2002.8。
[7]、李群芳,张士军,黄建编著《单片微型计算机与接口技术(第2版)》
北京:
电子工业出版社,2007.1。
附录A系统整体电路
图1-2表详细的截图
图1-3(元件布局截图)
图1-4(3D阅览截图)
附录B全部程序清单
#include
sbitkey0=P3^6;
sbitkey1=P3^7;
sbitDIN=P3^0;
sbitCLK=P3^2;
sbitLOAD=P3^1;
unsignedintcount;
voiddelay(unsignedintus)
{
while(us--);
}
voidtime0_initial()
{
count=0;//秒清零
TMOD=0x21;//T0T1工作于方式1
TL0=60;
TH0=176;//50ms定时初值
ET0=1;//允许T1中断
EA=1;//开中断
TR0=1;//T1开始计时
}
voidint50ms()interrupt1
{
TR0=0;//关定时器T0
TL0=0xff;
TH0=0xff;//赋定时初值
TR0=1;//开定时器T0
count++;//50ms计数加1
}
unsignedintdecSec,centSec,sec,mSec;
voidsend(unsignedcharadd,unsignedchardat)//发送16字节子函数。
{
unsignedcharADS,i,j;
LOAD=0;
i=0;
while(i<16)
{
if(i<8)
{
ADS=add;
}
else
{
ADS=dat;
}
for(j=8;j>=1;j--)
{
DIN=ADS&0x80;
ADS=ADS<<1;
CLK=1;
CLK=0;
}
i=i+8;
}
LOAD=1;
}
voidinitial_max7219()
{
//send(0x0c,0x01);//初始化MAX7219;
//send(0x0b,0x07);
//send(0x0a,0xf5);
//send(0x09,0xff);
send(0x09,0xff);
send(0x0a,0x08);
send(0x0b,0x03);
send(0x0c,0x00);
send(0x0f,0x00);
send(0x0c,0x01);
}
///*---显示数码子函数---*/
//voiddisp(unsignedcharhour,unsignedcharmin,unsignedcharsec)
//{
////send(0x08,sec-sec/10*10);
////send(0x07,sec/10);
////send(0x06,10);//显示"-"
////send(0x05,min-min/10*10);//前四位显示
//send(0x04,sec/100);
//send(0x03,(sec-sec/100*100)/10);//显示"-"
//send(0x02,sec-(sec-sec/100*100)-(sec-sec/100*100)/10*10);
//send(0x01,mSec);
//}
voidtimer0()interrupt1
{
TH0=60;
TL0=176;
count++;
if(count%2==0)
{
//count=0;
mSec++;
if(mSec==10)
{
mSec=0;
}
}
if(count==20)
{
count=0;
sec++;
if(sec==10)
{
sec=0;
decSec++;
if(decSec==10)
{
decSec=0;
centSec++;
if(centSec==10)
centSec=0;
}
}
}
}
voidadjust_time()
{
if(key0==0)
{
TR0=!
TR0;
}
if(key1==0)
{
TR0=0;
sec=0;
mSec=0;
decSec=0;
centSec=0;
}
}
voidmain()
{
sec=0;
mSec=0;
time0_initial();
TR0=0;
//voiddelay(unsignedint);
//voidsend(unsignedchar,unsignedchar);
//voidinitial_max7219();
//voiddisp(unsignedchar,unsignedchar,unsignedchar);
initial_max7219();
while
(1)
{
adjust_time();
send(0x04,mSec);
send(0x03,sec|0x80);
send(0x02,decSec);
send(0x01,centSec);
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程