课程设计(论文)基于定时器的单片机仿真和C语言开发

上传人:仙*** 文档编号:33288423 上传时间:2021-10-16 格式:DOC 页数:17 大小:173.50KB
收藏 版权申诉 举报 下载
课程设计(论文)基于定时器的单片机仿真和C语言开发_第1页
第1页 / 共17页
课程设计(论文)基于定时器的单片机仿真和C语言开发_第2页
第2页 / 共17页
课程设计(论文)基于定时器的单片机仿真和C语言开发_第3页
第3页 / 共17页
资源描述:

《课程设计(论文)基于定时器的单片机仿真和C语言开发》由会员分享,可在线阅读,更多相关《课程设计(论文)基于定时器的单片机仿真和C语言开发(17页珍藏版)》请在装配图网上搜索。

1、 武汉理工大学能力拓展课程设计课程设计说明书 课程设计任务书学生姓名: 专业班级: 电信0804 指导教师: 工作单位: 信息工程学院 题 目: 基于定时器的单片机仿真和C语言开发 初始条件:本课程设计,要求用使用Proteus仿真软件进行系统设计与仿真。 要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、课程设计工作量:1周内完成对系统的设计、仿真。2、技术要求:1)试用定时器中断方式或查询定时器溢出标志方式从P口输出给定周期的方波。要求进行电路仿真实验,并使用C语言进行程序的开发。 2)要求学生主动思考,自主发挥,实现系统的特色功能。3、查阅至少5篇参考

2、文献。按武汉理工大学课程设计工作规范要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。提交报告的主要内容:(使用Proteus 7.5 sp3)1) 题目2) 仿真所完成的主要功能和特色简介摘要(特别是自己扩展的功能,根据特色功能评优)3) Proteus仿真的基本流程4) 所使用芯片以及引脚功能简介(需要提供对应芯片DataSheet的下载链接)5) 设计方案与工作原理,给出仿真电路图6) 实验记录与结果分析时间安排:1) 2011 年 7 月 910 日, 查阅相关资料,学习设计原理。2) 2011 年 7 月 1112 日, 方案选择和电路设计仿真。3) 2011 年 7 月 1

3、3 日, 设计说明书撰写。4) 2011 年 7 月 14 日 上交报告,同时进行答辩。指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录1 摘要2 Proteus软件和Keil软件简介 2.1 Proteus软件简介 2.2 Keil软件简介3 设计过程 3.1 设计原理及拓展内容说明 3.2 所用主要元器件 3.3 设计仿真电路 3.4 C语言代码4 仿真结果及分析5 心得体会6 参考文献7 本科生课程设计成绩评定表1 摘要基本要求:1)本课设的主要目的是应用Proteus软件和嵌入式C语言编程工具,结合单片机原理及应用、微机原理与接口技术等专业课程,强化和巩固专业理论基

4、础,掌握Proteus仿真的技巧和嵌入式C语言编程工具,提高单片机开发能力,并为嵌入式开发打下基础。 2)本次课设我做的第五套题的题目是基于定时器/计数器的单片机仿真和C语言开发,其主要内容是试用定时器中断方式或查询定时器溢出标志方式从P口输出给定周期的方波。要求进行电路仿真实验,并使用C语言进行程序的开发。特色功能,本人在基本要求的基础上,增添了两个特色功能: 1)增加了led显示的功能,8个led循环显示。 2)增加了对输出方波可调整的功能。2 Proteus软件和Keil软件简介 2.1 Proteus软件简介PROTEUS是英国LabCenter Electronics公司开发的电路分

5、析与实物仿真软件。PROTEUS不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,更是目前世界上最先进的、最完整的多种型号微控制器系统的设计与仿真平台。它真正实现了在计算机上完成从原理图设计、电路分析与仿真、单片机代码及调试与仿真、系统测试与功能验证到形成PCB的完整的电子设计、研发过程。PROTEUS从1989年问世至今。经过了近20年的使用、发展和完善,功能越来越强,性能越来越好。PROTEUS该软件具有以下特点:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LC

6、D系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC系列、Z80系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51等软件。具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。2.2 Keil软件简介本次编程所用到的C编译器为Keil C51。Keil C

7、51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后

8、生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短、运行速度高、所需存储空间小、符合C语言的ANSI标准,生成的代码遵循INTEL目标文件格式,而且可与A51汇编语言目标代码混合使用。应用C51编程具有以下优点:(1)C51管理内部寄存器和存储器的分配,编程时,无需考虑不同寄存器的寻址和数据类型等细节问题。(2)程序由若干函数组成,具有良好的模拟结构。(3)有丰富的子程序可直接引用,从而大大减少用户编程的工作量。(4)C语言

9、和汇编语言可以交叉使用,汇编语言程序代码短、运行速度快,但复杂运算编程耗时。如果用汇编语言编写与硬件有关的部分程序,用C语言编写与硬件无关的运算部分程序,充分发挥两种语言的长处,可以提高开发效率。3 设计过程3.1 设计原理及拓展内容说明 首先题目的基本功能要求是利用试用定时器中断方式或查询定时器溢出标志方式从P0口输出给定周期的方波,在实际设计中我用的是中断方式(利用的是T1定时器),而不是查询方式。至于P0口我选择了P0.0口用来输出方波,输出方波的原理是:先对P0.0口置初值1,T1中断时间一转到中断服务程序执行:首先利用次中断服务程序对P0.0口取反,转回中断等待,下次再执行中断程序时

10、再将P0.0取反,这样就产生了所需要的方波,至于方波的周期则需要控制中断时间,因此就是需要对定时器的计数初值做改变。下面会做介绍。 对于拓展部分,我设计了两个拓展:1) 利用定时器定时周期来循环显示8个led,用于led显示在每次中断服务程序中,让数码管下移显示并循环显示,即对P1口的输入值做改变。2) 如何改变P0.0口输出方波的周期,主要是对P0.0口取反的时间间隔,即T1定时器定时周期,即T1定时器的计数初值,那么只要改变计数初值即可,在这里我设置了两个数组a,b,a里面存放的是T1定时器TH1内容,b里面存放的是T1定时器TL1的内容(T1定时器采用定时方式1 ),再设立两组指针ap,

11、bp分别指向a,b两个数组,改变指针指向即可(本设计中我设立了两级变频,即数组中有三组数据)。对于变频,我采用的是外部中断方式0来控制:外部中断程序执行的内容是对指针做修改3次以后再循环,这样就控制了频率。3)整个程序由C来编写,Keil来编译,proteus仿真,由于设计得比较简洁,所以程序内容不多,简洁明了。3.2 所用主要元器件AT89C52单片机,如下图所示:图1 AT89C52芯片图 VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/

12、地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收;P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上

13、拉的缘故;P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口作为AT89C51的一些特殊功能口:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两

14、个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周

15、期两 /PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA / VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。LCD液晶显示:图2 LCD液晶显示P2口用于输出显示,初始状态显示DIAN XIN 0804 01208093104053.3 设计仿真电路图3

16、设计总图3.4 C语言代码#include#include #define uchar unsigned char#define uint unsigned intuchar code table=DIAN XIN 0804 ;uchar code table1=0120809310405 ;uchar code table2=f=10Hz ;uchar code table3=f=16Hz ;uchar code table4=f=25Hz ;char *ap;char *bp;char b3=0x3c,0x63,0xb0;char a3=0xb0,0xc4,0xe0;sbit d1=P00

17、;sbit rs=P37;sbit rw=P36;sbit en=P35;uchar temp;uchar num;uint i;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)rs=0;P2=com;delay(5);en=1;delay(5);en=0;void write_data(uchar date)rs=1;P2=date;delay(5);en=1;delay(5);en=0;void init()en=0;write_com(0x38);write_com(0x

18、0e);write_com(0x06);write_com(0x01);write_com(0x80+0x00);void main() init();for(num=0;num15;num+)write_data(tablenum);delay(20);/write_com(1);write_com(0x80+0x40);for(num=0;num15;num+)write_data(table1num);delay(20); IE=0x81; /允许INT0中断 IT0=1; /下降沿触发 TMOD=0x10; /T1工作于方式1 EA=1;ET1=1; /开总中断,允许T1中断 d1=1

19、; P1=0xfe; /第一盏LED亮 i=0; while(1) timer1()interrupt 3 using 1 d1=d1;P1=P11;P1=P1|0x01;if(P1=0xff)P1=0xfe;if(i=1) TH1=0x3c;TL1=0xb0;if(i=2) TH1=0x63;TL1=0xc4;if(i=0) TH1=0xb4;TL1=0xe0;/重新装入计数初值void ex_int0()interrupt 0 TR1=1; /开启T1 switch(i)case 0 : write_com(0x80); for(num=0;num15;num+)write_data(ta

20、ble2num);delay(20); break; case 1 : write_com(0x80); for(num=0;num15;num+)write_data(table3num);delay(20);break;case 2 : write_com(0x80); for(num=0;num2)i=0;4 仿真结果及分析输出波形控制记录(2级变频):1) 初始频率波形:图3 初始方波2) 一次变频波形:图4 一次变频方波3) 二次变频方波:图5 二次变频方波仿真分析:我对本次仿真主要有一下几点说明:对于led循环显示部分记录不够明显,所以没有截图;外部中断是下降沿触发,用开关控制;变

21、频可循环,只要一直按开关即可不断变换。5 心得体会6 参考文献【1】李群芳 张士军 单片微型计算机与接口技术 电子工业出版社2008版【2】李群芳 肖看 单片机原理接口与应用 清华大学出版社2005版【3】谢瑞和等 串行技术大全 清华大学出版社2003版【4】张迎新 单片微型计算机原理、应用及接口技术 国防工业出版社1999版【5】陈光东 单片微型计算机原理与接口技术 华中科技大学出版社1999版本科生能力拓展训练成绩评定表姓 名性 别男专业、班级电信0804题 目: 基于定时器的单片机仿真和C语言开发答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 年 月 日- 16 -

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!