单片机课设报告.docx
《单片机课设报告.docx》由会员分享,可在线阅读,更多相关《单片机课设报告.docx(21页珍藏版)》请在冰豆网上搜索。
单片机课设报告
目录
1设计目的1
1.1设计题目1
1.2题目分析1
2设计原理或方法2
2.151单片机2
2.2STC89C51/52单片机芯片2
2.3定时/计数器的控制3
2.3.1TMOD3
2.3.2TCON4
2.4单片机中断4
2.4.1定时器中断4
2.4.2外部中断4
2.5Proteus软件5
2.6Keil软件5
3系统硬件线路设计图6
3.1对于外部中断的使用6
3.2LED连接6
3.3晶振电路7
4基于51单片机的程序代码与分析8
4.1程序框图8
4.2C51代码8
5基于Proteus软件的仿真11
5.1电路图11
5.2结果展示12
5.3结果分析13
6实物设计步骤和展示14
6.1设计步骤14
6.1.1元件清单14
6.1.2焊接15
6.1.3调试15
6.2实物运行展示16
6.3优点和问题16
7心得体会17
1设计目的
1.1设计题目
使用51单片机设计一个由8个发光二极管组成的可控动态闪烁系统、要求8个发光二极管初始状态为全灭,然后每间隔1秒,从右向左依次点亮一个发光二极管,当8个发光二极管全被点亮后,再回到全灭状态,循环进行。
硬件平台要求如下:
1.需要具有可驱动点亮的8个发光二极管;
2.设计“+”和“—”等2个按键;
软件要求实现:
1.设计1秒定时的实现方式;
2.初始化程序:
系统初始状态,中断及定时计时器的初始化;
3.主程序:
2个键的扫描,按一下“+”键,移动速度加快一级(量级自定),按一下“—”键,移动速度减慢一级;并指出快慢一级的时间是多少?
4.定时计时器中断服务程序:
动态闪烁控制。
1.2题目分析
在本设计题目中,发现了以下的要点:
1.中断
2.定时
中断可以利用本身的定时器和外部中断类型。
发现如果需要设计1秒定时,则对于一个6MHz晶振芯片来说,其机器周期为2us,按照T0的工作方式1来看,其最大的计数数据为2^16=65536,而实际上,其定时初值不可能这么大,需要500000才可以计时1秒。
于是在程序中实现一个循环,使其变成一种25*40ms=1s的情况,即使T0能够循环中断25次才会有LED的状态变化。
2设计原理或方法
2.151单片机
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
2.2STC89C51/52单片机芯片
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供灵活有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
图2.1芯片引脚图
2.3定时/计数器的控制
2.3.1TMOD
图2.2TMOD各位功能描述
2.3.2TCON
图2.3TCON各位功能描述
2.4单片机中断
中断装置和中断处理程序统称为中断系统。
中断系统是计算机的重要组成部分。
实时控制、故障自动处理、计算机与外围设备间的数据传送往往采用中断系统。
中断系统的应用大大提高了计算机效率。
中断过程分为中断请求、中断执行、中断返回。
2.4.1定时器中断
在本题中,使用的是定时器T0的工作方式1(16位定时计数),在此方式中,以T0计数溢出为一个中断请求。
2.4.2外部中断
在本题中,使用两个按键分别触发两个外部中断口(INT0、INT1)低电平来请求中断。
其中一个“+”按键表示提高led的频率、一个“-”按键表示减少led的频率。
2.5Proteus软件
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前比较好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
本次使用的是Proteus7.8版本。
2.6Keil软件
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。
3系统硬件线路设计图
3.1对于外部中断的使用
图3.1外部中断的两个按键设置
3.2LED连接
图3.2LED的连接
3.3晶振电路
XTAL1和XTAL2指的是8051系单片机上常见的用于接“晶振”(晶体谐振器-CrystalResonator”)的两个引脚。
从原理上来说,这两个引脚和MCU内部一个反相器相连接。
这个反相器与外部的“晶振”组成一个构成一个皮尔斯振荡器(Pierceoscillator)。
因为这个振荡器集成在器件内部的组件比较简单:
一个反相器和一个电阻。
适于各种数字IC的设计制造流程。
图3.3晶振电路
4基于C51的程序框图与代码
4.1程序框图
开始
N
Y
优先
N
Y
4.2C51代码
#include
unsignedchari=0;
unsignedchara=0,k;
charled_mod[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0xff};//九个亮灭状态
bitT1S_flag;
int0()interrupt0//定义外部中断0程序
{
a++;//如果外部中断0被响应(-按钮按下),则状态周期变化50ms
}
int1()interrupt2//定义外部中断1程序
{
a--;//如果外部中断1被响应(+按钮按下),则
}
time0()interrupt1//定义定时器T0中断程序
{TH0=(65536-20000-1000*a)/256;//对T0高位置数40ms(a=0时)
TL0=(65536-20000-1000*a)%256;//对T0低位置数
k++;//机器周期2us,则设置的40ms需要循环25次才可以
if(k==25)//k为25时表示已经计数到1s
{
T1S_flag=1;
k=0;
}
}
voidmain(void)
{
TMOD=0x01;//T0工作于方式1(16位定时计数)
TH0=(65536-20000-1000*a)/256;//为T0高位置数
TL0=(65536-20000-1000*a)%256;//为T0低位置数
k=0;//k赋初值
IT0=1;//外部中断0低电平中断方式
IT1=1;//外部中断1低电平中断方式
EX0=1;//允许外部中断0
EX1=1;//允许外部中断1
PX0=1;//INT0的中断优先级别高,若两键同时按下则响应外部中断0
ET0=1;//允许T0中断
EA=1;//开总中断
TR0=1;//启动定时器T0
while
(1)//循环按照led_mod规定的LED亮灭九种情况
{
if(T1S_flag==1)
{
T1S_flag=0;
P1=led_mod[i];//输出使LED对应亮灭
i++;
if(i==9)i=0;//产生循环
}
}
}
5基于Proteus软件的仿真
5.1电路图
图5.1仿真电路图
5.2结果展示
图5.2Proteus仿真展示
(1)
图5.3Proteus仿真展示
(2)
5.3结果分析
在此电路图中,可以看到一种比较符合预想的结果,首先开始调试后,所有的LED会按照1秒规定的时间亮灭改变状态,且按键也会对LED的变化快慢产生规定的影响。
每按下按键,其都会相应变化50ms的快慢。
6实物设计步骤和展示
6.1设计步骤
6.1.1元件清单
图6.1仿真中元件清单
注:
在采购元件时,我们使用了STC89C52芯片、220Ω电阻以及6MHz晶振。
6.1.2焊接
图6.1焊接效果
6.1.3调试
经过调试,实物从烧入程序、灯的亮灭和按键的作用都是正常的,程序完整且实物可以使用。
6.2实物运行展示
图6.2实物运行展示
6.3优点和问题
本实物中需要冷启动写入程序,且断电仍能保证其程序存在。
LED亮度符合要求,且会按照仿真结果定时换状态。
只是时间不会按照理论上的变化。
在反复检查了电路后,为了能够达到要求我适当调大了程序中的k值并且反复烧入单片机芯片进行测试。
电路中只需要烧入程序,下一次可以直接通电使用而不需要再次烧入程序。
7心得体会
这个学期的单片机课已经早早的上完了,但是理论纯属理论,没有与实践的结合总让我们学的不踏实,感觉没有达到学以致用的效果。
关于这次课程设计,我们小组花费了比较多的心思,分工合作,既是对课程理论内容的一次复习和巩固,还让我们丰富了更多与该专业相关的其他知识,比如软件应用等。
我觉得在设计课程过程中遇到问题是很正常。
除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了,发现、提出、分析、解决问题和实践能力的提高都将受益于我在以后的学习、工作和生活中。
此次的设计,其实也是我们所学知识的一次综合运用,让我深深的认识到了学习单片机要有一定的基础,要有电子技术方面的数字电路和模拟电路等方面的理论基础,特别是数字电路;也要有编程语言的汇编语言或C语言。
要想成为单片机高手,我们首先要学好汇编语言,然后转入C语言学习,所以我们不能学到后面就忘了前面的知识,更应该将所学的知识紧紧的结合在一起,综合运用,所谓设计,就是要求创新,只有将知识综合运用起来才能真正的设计好。
单片机是一门应用性很强的学科,课程设计是培养我们综合运用所学知识,发现问题,分析问题和解决问题,实践操作的重要环节。
通过本次课程设计,我们小组四人分工合作,从设计方案,到编程上机,再到硬件连线,总体调试,每个人都参与了进来。
加深了单片机的实物和软件及C51等语言的理解和认识。
本次课程设计主题思想是模块化实现系统。
每个模块完成他的子功能,把一个大的复杂的问题分解成了几个较为容易的小问题,减轻了工作负担,提高了效率,并且使做出的东西效果更好。
这种思想对我们今后的学习和工作都有很大的帮助,在设计思路上有很好的作用,值得我们反复学习,反复实践。
参考文献
1.李群芳,肖看,关新,张士军.单片微型计算机与接口技术[M].北京:
电子工业出版社,2015.
2.宋雪松.手把手教你学51单片机[M].北京:
清华大学出版社,2015.
3.皮大能.单片机课程设计指导书[M].北京:
北京理工大学出版社,2010.
4.朱丹,谢云.单片机系统设计基础及应用[M].北京:
北京理工大学,2017.
5.[美]Stephen,Prata.C++PrimerPlus[M].北京:
人民邮电出版社,2017.