倒数计数器报告_第1页
倒数计数器报告_第2页
倒数计数器报告_第3页
倒数计数器报告_第4页
倒数计数器报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖南涉外经济学院课程设计报告课程名称:单片机原理及应用报告题目:倒数计数器学生姓名:吴俊腾所在学院:信息科学与工程学院专业班级:电信1102班学生学号:072指导教师:廖亦凡 黄科2013年 12月23日课程设计任务书报告题目倒数计数器完成时间12.23学生姓名吴俊腾专业班级电信1102班指导教师黄科廖亦凡职称学生总体设计要求和技术要点利用AT89C51单片机设计一个简易的倒数计数器,可用来煮方便面、煮开水或小睡片刻等。做一小段时间倒计数,当倒计数为0时,则发出声响通知倒计数终了。 (1)显示格式为“分分:秒秒”。(2)用4个按键操作来设置当前想要倒计数的时间。一旦按下键则开始倒计数,当计数为

2、0时,发出一阵音乐声。(3)程序执行后工作指示灯LED闪动,表示程序开始执行,按下操作键K1K4动作如下。n K1可调整倒计数的时间160分钟。n K2设置倒计数的时间为5分钟,显示“0500”。n K3设置倒计数的时间为10分钟,显示“1000”。n K4设置倒计数的时间为20分钟,显示“2000”。工作内容及时间进度安排第15周:周1-周3 :立题、论证方案设计周4-周5 :程序设计第16周:周1-周3 :仿真实验周4-周5 :验收答辩课程设计成果1与设计内容对应的软件程序2课程设计总结报告摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快

3、。而51单片机是各单片机中最为典型和最有代表性的一种。本实验是基于MCS51系列单片机所设计的,可以实现键盘按键与数字动态显示并可以用倒数的计数器。本设计基于单片机技术原理,以单片机芯片STC89C52作为核心控制器,通过硬件电路的制作以及软件程序的编制,设计制作出一个计数器,包括以下功能:输出时间,按下键就开始计时,并将时间显示在LED数码管显示器上。当倒计数为0时,蜂鸣器就发出音乐声响等等。该计数器系统主要由计数器模块、数码管显示器模块、蜂鸣器模块、键盘模块、复位模块等部分组成。关键词:STC89C52、键盘、LED数码管显示、蜂鸣器目录课程设计任务书2一、项目概述和要求11.单片机基础知

4、识12.单片机的发展趋势1二、系统设计21. 框图设计22.设计方案的选择及论证33.电路原理图44.元件清单4三、软件设计71. 程序流程图72.工作方式设计9四、系统的仿真与调试101. 硬件调试102. 软件调试103. 软硬件调试10五、总结11六、参考文献12附录程序:13一、项目概述和要求1.单片机基础知识单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲,一块芯片就成了一台计算机。单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、

5、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。 现在,这种单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。单片机能大大地提高这些产品的智能性,易用性及节能性等主要性能指标,给我们的生活带来舒适和方便的同时,在工农业生产上也极大地提高了生产效率和产品质量。单片机按用途大体上可分为两类,一种是通用型单片机,另一种是专用型单片机。MCS-51单片机是美国INTEL公司于1980年推出的产品,与MCS- 48单片机相比,它的结构更先进,功能更强

6、,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MSC-51单片机作为代表进行理论基础学习。MCS-51系列单片机主要包括8031、8051和8751等通用产品。2.单片机的发展趋势 单片机现在可以说是百花齐放,百家争鸣的时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供了广阔的天地。纵观单片机的发展过程,可以预示单片机

7、的发展趋势,大致有: 一、微型单片化现在常规的单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将数码管(LED)驱动电路都集成在单一的芯片上,这样单片机包含的单元电路就更多,功能就越强大。甚至单片机厂商还可以根据用户的要求量身定做,制造出具有自己特色的单片机芯片。此外,现在的产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小。现在的许多单片机都具有多种封装形式,其

8、中SMD(表面封装)越来越受欢迎,使得由单片机构成的系统正朝微型化方向发展。二、低功耗CMOS化MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。CMOS虽然功耗低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗的特点,这些特征,更适合于要求低功耗像电池供电的应用场合。所以这种工艺将是今后一段时期单片机发展的主要途径。 三、

9、主流与多品种共存 现在虽然单片机的品种繁多,各具特色,但仍以89C51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的Winbond系列单片机。所以89C51占据了半壁江山。而Microchip公司的PIC精简指令集合(RISC)也有着强劲的发展势头,中国台湾的HOLTEX公司近年的单片机产量与日俱增,与其底价质优的优势,占据一定的市场份额。此外还有MOTOROLA公司的产品,日本几大公司的专用单片机。在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补、相辅相成、共同发展的道路。九十年代以后,单片机在

10、结构上采用双CPU或内部流水线,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片内带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以及局域网等方面得到大量应用。这类单片机有NEC公司的MPD7800,MITSUBISHI公司的M,REVKWELL公司的R6500。二、系统设计1. 框图设计框图设计是为了能够从整体上把握系统的各个大的模块以及各个模块之间的联系。同时罗列出需要主要使用到的各个器件,以方面系统开发中器件的选取。通

11、过框图设计,让设计者从整体上把握系统的开发。本系统设计的框图如下图1 所示。 复位电路LED数码管 AT89C51键盘蜂鸣器图1 系统结构框图2.设计方案的选择及论证2.1 预置时间方案选择方案一:由于设计要求倒数时间输入可调并译码显示,比较经典的方案是使用8279 芯片:40 个引脚的8279 芯片是由Intel 于80 年代首先推出的,参考资料较多,应用比较成熟。优点:最为通用,输入时间使用键盘方便、易操作。缺点:元器件多,面积大,电路复杂,需要较好的编程能力才能灵活运用,其综合成本较高,而且本系统只用到其键盘输入单个功能,不能充分利用它的强大功能。方案二:即本设计系统所选方案,由STC8

12、9C51为核心芯片,由4X4矩阵键盘输入相应的信息,LED数码管作显示器件。本方案结构简单,成本低。修改方便。2.2 提示信号发生电路单片机驱动能力有限,不能直接驱动蜂鸣器,本方案利用三极管作蜂鸣器的驱动器件。2.3 电路总体工作流程开电源 复位清零 设置时间T 按输入确认键,确认输入按开始键则进入倒计时,此时计数工作灯绿灯亮 剩余时间提示(T10min时,倒数至5分钟提示;T10min,倒数至1min提示)短提示音 倒数至0时发出长4s的提示音,同时亮黄灯 若计时未完则进入超时计数,直到超时1min时给出长4s的较急促的提示音,同时亮红灯警告,且计时停止,数码管显示1分钟不变直到主持人复位清

13、零 若计时在超时1min之前完成按复位键清零停止计数3.电路原理图电路原理图如图2所示。图2 电路原理图4.元件清单4.1 AT89C51芯片STC89C52芯片图如下图3所示。图3 AT89C51芯片图主要性能:与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、 1000次擦写周期、全静态操作:0Hz33Hz 、三级加密程序存储器 、 32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、 低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针、掉电标识符 。功能特性描述:STC89C52 是一种低功耗、高性能CMOS8位微控

14、制器,具有 8K 在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 STC89C52具有以下标准功能: 8k字节Flash,256字节RAM, 32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软

15、件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。8 位微控制器 8K字节在系统可编程 Flash4.2 LED数码管LED数码管如下图4所示。图4 LED数码管图LED数码管通常有8条引脚线或12条引脚线的LED数码管,多出来的4条线是分别控制4个数码管的现象线。数码管A、B、C、D、E、F、G、DP接8051的P00P07口进行控制,数码管1、2、3、4口接驱动电路4.3 按键控制模块按键用于控制数码显示、LED数码管显示、扬声器等模块的工作。通过

16、扫描按键是否按下,来设定各模块的工作情况,使各模块可以在按键的控制下,有序地进行工作。设计中使用单个按键实现单个功能,属于较为简单的控制方式。在多功能系统设计的试验中我们使用四个按键分别与单片机的P34、P35、P36、P37相连。通过按下相应的按键来处理相应的程序。如下图5所示。图5 按键控制模块图4.4蜂鸣器蜂鸣器的功能是对输入的不同频率的方波进行播放形成音乐,持续送出工作脉冲可以推动喇叭发出哔的声响,当工作频率越高时,声音越清脆,工作频率低时,声音则较低沉。使用8051的P15口进行控制,如图6所示。图6 蜂鸣器模块图4.5 其它元件 其它元件图如下图7所示。图7 其它元件图三、软件设计

17、1. 程序流程图主程序开始初始化,然后扫描键盘、复位电路和计数器。当键盘按键有按下时,调整计数器值,数码管显示新值。当复位键有按下时,计数器复位为开机画面,当计数器值倒计为0时,蜂鸣器发出声音,计数器停止倒计,程序结束。1.1主程序流程图如图8所示。倒计时时间是否Y主程序开始初始化变量及LED接口初始化定时器LED灯闪动表示程序开始执行LED扫描显示器更新倒数时间数据,检查闹铃时间是否到了是否按K1,K2,K3,K4键K1:调整倒数时间K2:倒数计时时间为5MINK3:倒数计时时间为10MINK4:倒数计时时间为20MINYNN退出图8 主程序流程图1.2 LED数码管显示流程图如图9所示。开

18、始否 是否有程序执行是 LED数码管亮否 是否有键按下是 数码管显示时间否复位键是否按下是数码管显示倒计时分钟秒数否是否有按键按下是数码管显示相应的画面退出图9 LED数码管显示流程图1.3按键流程图如图10所示。退出开始初始化按键扫描有键按下按键处理,确定模式时间显示模式根据按键状态显示相应时间段时间修改模式根据按键状态修改时间NONOYESYES图10 按键流程图2.工作方式设计C语言比起汇编语言具有简洁紧凑、灵活方便、语法限制不太严格、程序设计自由度大等特点,本例采用C语言进行程序编写。用到了定时器0和1,初始时开T0而关闭T1。其中定时器0用来控制倒计时的实现,即当时间到达50ms(定

19、时器时间)*20(循环次数)时,执行中断0将显示时间减一,同时判断计时是否减为0,当扫描但定时时间为0时,则关闭定时器0,而打开定时器1,控制音乐的播放。四、系统的仿真与调试1. 硬件调试 硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。调试步骤是:首先把电路分为若干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的范围内;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。2. 软件

20、调试软件调试是通过对程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。3. 软硬件调试软硬件联调是指把调试无误的软件程序烧制进单片机芯片内部,通上电源后,检查硬件工作是否有预期的效果,如果没有则需要检测软件是否在实现功能上有欠缺。若有错误,通过改写软件来调试,直至达到预期效果,则设计圆满成功。本课程设计调试结果如下图11所示。图11 调试结果图五、总结经过将近两个星期的课程设计,简单带有LED数码管显示的倒数计数器基本完成,系统基本功能基本实现,测试运行也基本正常。该系统基本上完成了计数闹时的功能。这次课程设计的时间虽然不算很长,但使我对很多东西有了更深刻的认识。

21、平时在课堂上无法掌握的集体操作都有了一定的进步。总结如下:1. 查阅资料和阅读相关文献的重要性。2. 向同学请教的重要性,团结协作的重要性。3. 勤动手的重要性,自己动手,丰衣足食!以前很多时候一遇到问题常常都会问同学,但是通过这次设计,我学会了自己努力解决困难,提高了自己解决问题的能力。4. 对待任何事情都要有耐心和恒心,遇到问题要冷静地思考,积极找出症结所在,逐个解决。5. 做事情要步步为营,不能一蹴而就,就像焊接电路,只有确保每一部都真确,才有可能实现整个电路正常工作。通过本次课程设计,我更深刻的认识到了教学实践在大学课程中的重要性,同时也发觉到了自己在学习方面存在的许多不足之处,在以后

22、的学习中我会努力改进这些不足,不断提高自己的动手实践能力。这次设计是我第一次独自一人完成从写开题报告、到画原理图、画pcb、然后学习了C并且编写了程序的整个设计过程,虽然没有制板,这也许是个遗憾,但我还是学到了非常多的东西。比如弄懂了数码管的原理,按键扫描的原理,熟悉了中断的应用以及初步了解了音乐的设计。在这个设计中,遇到了非常多的问题,最后都通过自己的努力以及老师同学的帮助而获得解决。也明白了理论要在实践中才能深刻的理解,这也是我以后要努力的方向。六、参考文献1 张毅刚.单片机原理及应用.高等教育出版社,北京,2010年2 谭浩强,C程序设计解题与上机指导,清华大学出版社,北京,2007年附

23、录程序:#include#include#define LED_code_port P0 / 段码数据口#define LED_segmnet_port P1 / 位码数据口sbit KEYL3=P15;sbit KEYH1=P37;sbit KEYH2=P36;sbit KEYH3=P35;sbit KEY1=P34;/四个按键数据口unsigned int flag;unsigned char time_data3=00,10,0;unsigned char code table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,

24、0x83,0xC6,0xA1,0x86,0x8E ;/段码数组unsigned char n=0; / n为节拍常数变量 unsigned char code music_tab = 0x18, 0x30, 0x1C , 0x10, /格式为 频率常数, 节拍常数, 频率常数, 节拍常数, 0x20, 0x40, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x10, 0x1C, 0x10, 0x18 , 0x40, 0x1C, 0x20, 0x20 , 0x20, 0x1C, 0x20, 0x18 , 0x20, 0x20, 0x80, 0xFF , 0x20, 0x30

25、, 0x1C, 0x10 , 0x18, 0x20, 0x15, 0x20 , 0x1C, 0x20, 0x20, 0x20 , 0x26, 0x40, 0x20, 0x20 , 0x2B, 0x20, 0x26, 0x20 , 0x20, 0x20, 0x30, 0x80 , 0x00 ; sbit S=P15; /蜂鸣器 void delay (unsigned char m) / 控制频率延时 unsigned char i=3*m; while(-i); void delayms(unsigned char a) / 毫秒延时子程序 while(-a); / 采用while(-a) 不

26、要采用while(a-); void KILL() /播放音乐函数 unsigned char p,m; / m为频率常数变量 unsigned char i=0; TMOD =0x10; TH1=0xd8;TL1=0xef; ET1=1;EA=1;ES=1; play: while(1) a: p=music_tabi; if(p=0x00) i=0, delayms(1000); goto play; / 如果碰到结束符,延时1秒,回到开始再来一遍 else if(p=0xff) i=i+1;delayms(100),TR1=0; goto a; / 若碰到休止符,延时100ms,继续取下

27、一音符 else m=music_tabi+, n=music_tabi+; / 取频率常数 和 节拍常数 TR1=1; / 开定时器1 while(n!=0) S=S,delay(m); /等待节拍完成, 通过P1口输出音频 TR1=0; /关定时器1 void delay_ms(unsigned int x) / 延时毫秒级unsigned int a=0,b=0,c=0;for(a=x;a0;a-)for(b=5;b0;b-)for(c=64;c0;c-);void LED_display(unsigned char seg_code,unsigned char shuju)if(seg

28、_code4) seg_code=1;if(shuju15) shuju=15;LED_segmnet_port=(LED_segmnet_port|0x0f)&_crol_(0xfe,seg_code-1); / 送入位码LED_code_port=tableshuju; / 送入段码delay_ms(2); / 保持显示2毫秒LED_segmnet_port=LED_segmnet_port|0x0f; / 关掉所有数码管void display_time()LED_display(1,time_data0/10);LED_display(2,time_data0%10);LED_display(3,time_data1/10);LED_display(4,time_data1%10);void time_initial()TMOD=0x01; /定时器,方式1TH0=0x4c; /写入初值高8位TL0=0; /写入初值低8位EA=1; / 开总中断ET0=1; / 定时中断允许TR0=1; / 开启定时器void int0() interrupt 3 / 采用中断1 控制节拍 TH1=0xd8; TL1=0xef; n-; void main() /按键time_initial();TR1=0;while(1)KEYL3=0;display_time

温馨提示

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

评论

0/150

提交评论