欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于定时计数器的单片机实验和C语言开发教材.docx

    • 资源ID:15869119       资源大小:1.78MB        全文页数:26页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于定时计数器的单片机实验和C语言开发教材.docx

    1、基于定时计数器的单片机实验和C语言开发教材课程设计任务书学生姓名: 黄 蓉 专业班级:电信1204班 指导教师: 陈德军 工作单位:信息工程学院 题 目: 基于定时器/计数器的单片机实验和C语言开发 初始条件:具备单片机的理论知识;具备proteus仿真能力;了解定时器及计数器应用;提供仿真所需要的计算机一台要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、用定时器中断方式或查询定时器溢出标志方式从P口输出给定周期的方波2、我们在此基础上扩展实现了矩阵键盘调节方波频率和占空比时间安排:一周,其中3天程序设计,2天程序调试指导教师签名: 年 月 日 系主任(或责

    2、任教师)签名: 年 月 日 摘 要本次单片机课程设计是基于定时计数器的单片机实验与C语言开发,要求用定时器中断方式或查询定时器溢出标志方式从P口输出给定周期的方波。以此为基础,我们进行了一些拓展,通过4乘2矩阵键盘,使其能实现输出方波的频率和占空比可调。通过两个按键调节频率,两个按键调节占空比,以此实现定时器中断方式从P口输出给定周期的方波。关键字:定时器 方波 中断 占空比1.概述单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还

    3、包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。单片机(Microcontrollers)诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电

    4、子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。单片机(Microcontrollers)有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机以采用程序存储器和数据存储器截然分开的结构为多。 本课题讨论的方波发生器的核心是目前应用极为广泛的 51系列单片机。其内部包括:(1) 一个8位的CPU;(2) 4KB程序存

    5、储器ROM;(3) 128字节RAM数据存储器;(4) 两个16位定时/计数器;(5) 可寻址64KB外部数据存储器和64KB外部存储空间的控制电路;(6) 32条可编程的I/O线(4个8位并行I/O端口);(7) 一个可编程全双工串行口;(8) 具有两个优先级嵌套接口的5个中断源2.设计方案2.1 方案简介本方案中,微处理器模块使用STC89C52RC。通过键盘扫描,输入四输入与门,实现外部中断0的中断。本设计中用到两个定时器,定时器0和定时器1,其中定时器0工作在定时方式1下,通过扫描键盘S1,S2是否按下及按下次数调节方波频率;定时器1同样工作在定时方式1下,用于设定占空比。键盘的操作是

    6、通过外中断与单片机共同来控制的,键盘操作来完成按要求对频率与占空比进行调节。P2.0为方波输出口,它连接一个示波器即可观察输出的方波了。2.2 方波发生器原理与功能方波发生器原理框图如图2.1所示:频率与占空比调节输出方波 示波器AT89C51 单片机 键盘图2.1 方波发生器原理框图由于系统的要求不高,比较单一的,再加上我们是通过定时器来调节频率的,而非电阻,因此实现起来就相对简化了。仅用键盘、AT89C51及示波器便可完成设计,达到所要求实现的功能。初始化后,主程序扫描键盘,将设置信息输入,处理后,输出到示波器显示。单片机的晶振为11.0592MHz,用到了两个定时器,即定时器0与定时器1

    7、,分别进行频率与占空比的定时,两个定时器都是工作在方式1。根据计算定时器初值的公式: (式2-1)计算出定时器0与定时器1所要装入的初值,然后将工作方式控制字写入TMOD寄存器,再将和寄存器赋初值,最后启动定时器,即将置位。同时打开外部中断0。置位EA(中断总开关)及(允许定时/计数器中断),并编中断服务程序。键盘是由一个状态键,四个功能键(调节频率与占空比的增减)组成,其特殊之处在于利用外部中断实现键盘扫描。当按下S0时,输出频率为10HZ;按下S1时,频率加1HZ,当频率大于1000HZ时,恢复方波频率为10HZ;按下S2时,频率减1HZ,当频率小于10HZ时,恢复方波频率为1000HZ;

    8、按下S3时,占空比加1%,当占空比大于50%时,将占空比置为1%;按下S4时,占空比减1%,占空比小于1%时,恢复占空比为50%。3.系统硬件设计3.1 STC89C52RC简介图3.1 STC89C52RC管脚图单片机是在一块芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O口等计算机所需要的基本部件的大规模集成电路,又称MCU。其以体积小、功能全、性价比等诸多优点而独具特色,在工业控制、尖端武器、通信设备、家用电器等嵌入式应用领域中独占鳌头。如果说C语言程序设计课程设计的基础课,那么单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计基础课。其管脚图如图

    9、3.1所示。 3.2 时钟电路8XX51单片机的时钟信号通常用两种电路形式得到:内部振荡方式和外部振荡方式。因为此次课设我们用到的是内部振荡方式,所以只对前者进行简单介绍。如图3.2所示,在引脚XTAL1和XTAL2外接晶体振荡器或陶瓷振荡器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。晶振通常选用6MHz、12MHz、24MHz。图中C2和C3起稳定振荡频率,快速起振的作用。电容值一般为530pF。图3.2 内部振荡电路3.3 复位电路图3.3 复位电路复位操作完成单片机内电路的初始化,使单片机从一确定的状态开始运行。当8

    10、XX51单片机的复位引脚RST出现5ms以上的高电平时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序,因此要求单片机复位后能脱离复位状态。图3.3所示的为上电且开关复位电路,上电后电容充电,使RST持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择。3.4 按键接口电路小键盘如图3.4所示。它包括8个键,系统中用到的键只有5个,分别为S0键,S1键,S2键,S3键,S4键。其中S0键是初始键,按下时初始频率为10HZ;另外4个键为功能键,是用来调节频率与占空比的。小键盘中引出的6根线依次分别接单片机的P1.0、P1.1、P1.2、P1.3、

    11、P1.4、P1.5口。其中P1.0P1.3是为键盘列线,P1.4和P1.5是键盘行线。当某个键按下时,由行扫描值和列回馈信号共同形成键编码。图3.4 按键接口电路如上所介绍的,按键接口电路采用的是外部中断控制,如图3.5所示,P1.0P1.4为4输入与门输入端,输出端接外部中断0控制端,当有某一键按下时,由于输入端电平的变化会导致进入的电平也发生变化,由此将会产生外部0中断,达到按键控制的作用。图3.5 按键控制外部中断电路4.系统软件设计方波发生器的软件设计包括主程序、延时子程序、系统初始化程序、键盘扫描程序、定时器中断子程序。其中主程序用来控制整个程序的执行,它与各子程序紧密相联,共同实现

    12、方波发生器各种功能的执行。4.1 系统初始化程序void init( )KEY=0x0f;TIME0_L=176;TIME0_H=60;TL0=176;TH0=60;TMOD=0x11;/定时计数器0与定时计数器1均工作在方式1ET1=1;EX0=1;/外部中断0允许ET0=1;EA=1;TR0=1;TR1=1;在系统初始化程序中,给键盘扫描口赋初值、设定定时计数器0与定时器1的工作方式,写入计数初值,启动了定时器0与定时器1,打开了外部中断。4.2 定时器中断子程序void Timer0() interrupt 1/定时器0中断TL0=TIME0_L;TH0=TIME0_H;TR1=1;Ou

    13、tPut=1;void Timer1() interrupt 3/定时器1中断TH1=TIME1_H;TL1=TIME1_L; TR1=0; OutPut=0;定时器中断子程序中有定时器0与定时器1中断,定时器0中与定时器1控制频率与占空比流程图分别如图4.1和图4.2所示。其过程为:(1)定时器0遇中断执行的操作有复位,启动自身进行频率定时,同时启动定时器1,进行占空比定时,输出高电平。(2)定时器1遇中断,停止自身的计时,输出低电平。如此循环进行从而达到输出方波的目的。图4.2 占空比定时器0中断流程图4.1 频率定时器0中断流程 4.3 键盘扫描程序void KeyScan() inte

    14、rrupt 0/键盘扫描uchar scancode,keycode,i;float TC0,TC1,temp;EX0=0;/关外部中断0delayms(5);scancode=0xef;while(scancode!=0xff)KEY=scancode;keycode=KEY;if(keycode&0x0f)!=0x0f) break; /有键按下,breakscancode=(keycode1)|0x0f; /无键按下,扫描下一行keycode=keycode;/取反得键值for(i=0;i1000)/大于1000HZ时恢复10HZfre=10;if(i=2)/按下S2,频率减1fre-;

    15、if(fre50) zkb=1;/占空比大于50%时,恢复占空比为1if(i=4)/按下S4时,占空比减1%zkb-;if(zkb1) zkb=50;/占空比小于1%时,恢复占空比为50%if(i=3|i=4)/当按下S3或S4时,计算定时器1计数初值,装入初值temp=length-fosc/24.0/fre;TC1=(1-zkb/100.0)*length+temp*zkb/100.0;TIME1_L=(uint)TC1/256;TIME1_H=(uint)TC1%256;KEY=0x0f;EX0=1;键盘扫描用外中断0实现,采用的是线反法,键盘扫描采用逐行扫描的方法。当频率可调时,占空比

    16、保持原状不变,反之亦然,只能进行单一变量的调节,当按下S0,S1,S2可以进行初始化、加1Hz、减1Hz操作。如果按住某个键不放,便会执行连续加值或减值操作。这里的频率的最大值为1000Hz,当频率增至最大值时,还按增值键,此时频率会自动跳到10Hz开始继续增加。同理,频率的最小值为10Hz,当减频率减至最小值时,再按减频率键,则频率会跳到1000Hz。频率保持不变,进行占空比调节。只可进行加1与减1操作,分别由S3键、S4键控制。要注意的是占空比的初值是50,我们定义的zkb为50(百分比的分子部分,为一整数),故调节占空比时,zkb会进行加1,减1操作。zkb的最大值为50,当增到最大值时

    17、,便会返回到值1,如此循环。为了减轻单片机的工作量,在软件设计中采取了这样的措施,在修改参数确定后才进行定时器初值TC0、TC1的计算。键盘中断处理子程序流程图与键处理流程图分别如图4.3、图4.4所示: 是否为抖动 图4.4 键处理流程图 4.4 主函数void main()init();/初始化while(1);/等待按键,外部中断5.软件仿真5.1 keil编译器生成HEX文件由于这次能力拓展使用的C语言编程,所以不能用WAVE软件进行仿真,于是我们选用keil编译器进行仿真。主要介绍C程序生成hex文件的方法:(1)双击打开Keil uVision3,选择project新建工程并保存,

    18、在出现的CPU对话框中选择ATMEL中的AT89C51芯片。(2)点击确定生成工程,在file菜单中选择新建,新建一个文件,在里面输入自己写的程序代码,并保存。(3)在左面的工程上右击选择add files to group,将刚开的文件添加的工程,然后同样右键target选择options for target,打开设置,在output选项中选择create hex fil这一项。(4)点击编译,以及它后面的生成选项,便可在工程目录下生成hex文件。5.2 proteus软件仿真在生成*.HEX文件后,进入Protues软件,此时软件已自动打开一新建项目。我们可直接在其中构建电路图,点击板面

    19、左侧按键P,在弹出的Pick devices对话框中进行元器件的选择,文件要求必须是HEX文件。然后可以点击运行观察现象,看与自己设置的符合否,如果不相符在查找错误进行修改,一般的错误都是程序中的,所以要认真的读取程序的每一个部分。在元器件都找到后,我们可以先进行排版再按照电路图连接,如连接好后如下图所示:图5.1 仿真电路图当完成以上步骤后,就可以点击开始按钮进行仿真了,原始方波输出如图5.3所示:图5.3 输出原始波形图当仿真开始后,按一次S1,可以进行频率的调整,频率调整后波形输出如下图所示:图5.3 频率调整后的波形输出再按S1将Flag状态调整为状态2,此时可以对波形的占空比进行调整

    20、,调整占空比后的波形如下图所示:图5.5 占空比调整后的输出波形6.硬件调试6.1 电路板焊制及测试元器件焊接顺序依次为:电阻器,电容器,二极管,三极管,集成电路,大功率管,其他元器件为先小后大。焊接时,要使焊点周围都有锡,将其牢牢焊住,防止虚焊。焊接完成后,检查是否所有线已连接,并用万用表检查。6.2 电路板调试 将程序烧写入STC89C52RC芯片,接入+5V电源,将示波器探头接到P2.0口,按键盘,观察输入波形,分别如下: 图6.1 原始波形 图6.2 频率增加波形 图6.3 频率减小波形 图6.4 占空比改变后波形7.心得体会完成本次课程设计的过程,是一个从无到有的过程,经历了兴奋、自

    21、信、失落、奋发、所悟、完成几个过程。刚做做课程设计时,仔细阅读设计的题目和要求,以为没什么困难的,所用的知识书上都有。可是当我动手开始做的时候,才发现其中的算法,设计是那么繁琐。经过一天的努力,毫无结果。失落的心情油然而生。于是,再到图书馆和网上查找资料,在经过借鉴很多类似的资料,文献后,总算是有点眉目了。埋头苦干的过程是痛苦的,尤其是在思考算法和程序框架时,迷茫,烦躁,特别是当苦思出来一个结果,又被自己推翻,心痛的无法言绘。在痛苦中挣扎,建立,推翻,参考别人的思路,建立,再次在推翻,在这不断循环中,终于最后完善了程序。其中的煎熬是很痛苦的,深刻明白攻克自己“未知领域”的困难。但当课程设计完成

    22、时,那感觉是甜蜜的,没有耕耘,哪来得收获的喜悦,不懂付出怎么能知道回报的快乐,一分耕耘一分收获,有付出才会有回报,就在这样的痛与快乐的交换中,我学到了知识, 学到了做人的道理。单片机设计是一门很实用,很难的设计。这个设计用到了单片机,电路等方面的知识,通过这次课程设计,使我对单片机及其附属电路有了一定的了解,对课本上的知识有了近一步的掌握,也深刻明白了自己的不足。参考文献1 何立民.MCS51单片机应用系统设计M.北京:北京航空航天大学出版社,2003.2 徐君毅.单片微型机原理与应用M.上海:上海科技出版社,19953 公茂法.单片机人机接口实例集M.北京:航空航天大学出版社,1998.4

    23、沈红卫.基于单片机的智能系统设计与实现M.北京:电子工业出版社, 2005.5 李广弟,朱月秀等.单片机基础M.北京:北京航空航天大学出版社, 2003.附录:源程序代码#include#define uchar unsigned char#define uint unsigned int#define KEY P1 sbit OutPut=P20;float fosc=12000000;float length=65536;long int fre=10,zkb=50;uchar TIME0_L,TIME0_H,TIME1_L,TIME1_H;uchar code tabl218=0x11,

    24、0x12,0x14,0x18,0x21,0x22,0x24,0x28;void delayms(uint n) uint i,j;for(i=n;i-;i0)for(j=110;j-;j0);void init( )KEY=0x0f;TIME0_L=176;TIME0_H=60;TL0=176;TH0=60;TMOD=0x11;/定时计数器0与定时计数器1均工作在方式1ET1=1;EX0=1;/外部中断0允许ET0=1;EA=1;TR0=1;TR1=1;void KeyScan() interrupt 0/键盘扫描uchar scancode,keycode,i;float TC0,TC1,t

    25、emp;EX0=0;/关外部中断0delayms(5);scancode=0xef;while(scancode!=0xff)KEY=scancode;keycode=KEY;if(keycode&0x0f)!=0x0f) break; /有键按下,breakscancode=(keycode1)|0x0f; /无键按下,扫描下一行keycode=keycode;/取反得键值for(i=0;i1000)/大于1000HZ时恢复10HZfre=10;if(i=2)/按下S2,频率减1fre-;if(fre50) zkb=1;/占空比大于50%时,恢复占空比为1if(i=4)/按下S4时,占空比减

    26、1%zkb-;if(zkb1) zkb=50;/占空比小于1%时,恢复占空比为50%if(i=3|i=4)/当按下S3或S4时,计算定时器1计数初值,装入初值temp=length-fosc/24.0/fre;TC1=(1-zkb/100.0)*length+temp*zkb/100.0;TIME1_L=(uint)TC1/256;TIME1_H=(uint)TC1%256;KEY=0x0f;EX0=1;void Timer0() interrupt 1/定时器0中断TL0=TIME0_L;TH0=TIME0_H;TR1=1;OutPut=1;void Timer1() interrupt 3/定时器1中断TH1=TIME1_H;TL1=TIME1_L; TR1=0; OutPut=0;void main()init();/初始化while(1);/等待按键,外部中断本科生课程设计成绩评定表姓 名性 别 别 专业、班级课程设计题目:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 年 月 日


    注意事项

    本文(基于定时计数器的单片机实验和C语言开发教材.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开