资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
0目 录一、 设计的内容、要求及目的 .1二、 系统总体方案选择与说明 .1三、 系统方框图与工作原理 .2四、 各部分方案选定、功能及计算 .24.1 按键部分 .24.2 显示部分 .3五、 器件说明 .4六、调试说明、使用说明.4心得体会.5参考文献.5附录.6附录 A 系统原理图 .6附录 B 程序清单 .71一、一、设计的内容、要求及目的设计的内容、要求及目的设计内容设计内容我设计的是以 51 单片机为核心的秒表,显示“00.00”,第 1 次按下 1 按钮后就开始计时;第 2 次按 1 按钮后,计时停止;然后按 2 按钮可以记录;最后按 3 按钮,计时归零。通过液晶显示器显示秒十位、个位、小数点后一位和两位,最小单位为0.01 秒,在设计过程中用一个存储单元作为秒计数单元,当一秒钟到来时,就让秒计数单元加 1,当秒计数达到 59.59 时,就自动返回到 00.00,重新开始秒计数。设计要求设计要求1. 设计方案要合理、正确;2. 系统硬件设计;3. 完成必要元器件选择;4.系统软件设计及调试;5. 写出设计报告。设计目的设计目的本次设计的是秒表,为了更好的完成课程设计,采用的是硬件定时,即用单片机内部的定时器 T0。先将时钟初始化,赋入初值 50ms 定时,循环 20 次来进行 1 秒定时。采用的是 AT89C51 单片机,有按键部分和显示部分。2二、二、系统总体方案选择与说明系统总体方案选择与说明此次课程设计题目是秒表,由于此次课程设计要求是秒表,则在定时时要求比较精确,所以采用硬件的定时器定时时比较准确的;由于秒表的定时程序是很小的,在利用软件定时占用的 CPU 并不是很多,不能显现出来,但真正大程序时会很占用资源的,所以在用定时中断过程中是非常节省资源的由课程设计的要求和任务,我采用的C 语言编程,设计秒表要求一秒定时,采用了定时器,即用单片机内部的定时器 T0。先将时钟初始化,赋入初值 50ms 定时,循环 20 次来进行 1 秒定时。然后由定义的变量 second 来进行加一运算,然后将其值通过 P2 口在数码管上进行显示。其中数码管的显示时,我在程序中首先定义了一个关于数码管显示的字形码定义,以便在显示时调用即可。本次采用的是 AT89C51 单片机:AT89C51 是一种带 4K 字节 FLASH 存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称单片机。AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除 1000 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚排列如图所示3主要特性:与 MCS-51 兼容 4K 字节可编程 FLASH 存储器寿命:1000 写/擦循环数据保留时间:10 年全静态工作:0Hz-24MHz三级程序存储器锁定1288 位内部 RAM32 可编程 I/O 线两个 16 位定时器/计数器5 个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路4三、三、系统方框图与工作原理系统方框图与工作原理秒表采用的是 AT89C51 单片机,单片机的 P1 口连接着按键,实现按键功能;P0、P2、P3 口连接着显示器,实现显示功能。如图 3.1 所示:按键显示器AT89C51P0P1 P2P3图 3.1 秒表总体系统方框图四、四、各部分方案选定、功能及计算各部分方案选定、功能及计算4.1 按键部分按键部分K1 和单片机的 P1.0 口相连,实现启动/停止功能,按下 K1 键,开启计时功能,再按一下,即停止计时;K2 和单片机的 P1.1 相连,实现记录功能,按下 K2 键,开启记录功能,共有 3 个可以记录;K3 和单片机的 P1.2 相连,实现重置功能按下 K3,即清零重置。如图 4.1 所示:5图 4.1 按键部分4.2 显示部分显示部分单片机的 P2.0 到 P2,7 分别和显示器的 D0 到 D7 相对应连接;单片机的 P0.0 到 P0.3分别和显示器的 CS1、CS2、RW 和 RS 相对应连接;单片机的 P3.4 和显示器的 E 相对应连接。以上是实现显示功能,如图 4.2 所示:图 4.2 显示部分五、五、器件说明器件说明(1) MCS-51 单片机实验操作台 1 台;(2) PC 机及单片机调试软件;6(3) 单片机应用系统板 1 套;(4) 制作工具 1 套;(5) 系统设计所需的元器件。六、调试说明、使用说明六、调试说明、使用说明编好的程序在 Keil 中有许多错误,这些错误在平时的实验中也碰到过很多。例如,字母开头忘了加 0,零和字母搞错了,有些标号用了几次,CJNE 写成了 CJNZ 等等,幸好这些错误在平时实验中遇到很多次了,所以改正很快的。除了常见错误,还有些错误在平时没遇到过的。如:AJMP 指令跳转不回指定的地位,是由于跳转的长度大于AJMP 跳转的长度,最后只有用 LJMP 跳转后跳到指定的位置。在几天的调试和修改程序中,我的知识也得到了巩固,使我对单片机的知识更加的渴望。在 Proteus 编辑窗口中单击开始仿真按钮,开始仿真,按启动按钮,开始读秒,按记录按钮记录数据,可以记录 3 个数据,最后按重置按钮,重置数据。如图 6.1 所示:图 6.17心得体会心得体会通过这次课程设计秒表计时器,使我又重新开始学习 C 语言,因为 C 语言是大一学的,至从学完就再也没用过,所以开始很陌生,我又找了有关资料来了解,才有了一点眉目。刚开始以为可以用汇编很容易就写出来,以为学的很明白了,但是用汇编时才发现原来都不怎么熟练,编了一会程序发现只有一种感觉举步维艰啊!还是放弃汇编选择 C 语言吧!对于单片机,我们课本学习的是 80C51,但是这次做课程设计用的是 89C51,这样不仅使我们掌握了 80C51,而且对 89C51 也有了一定的了解了,在课堂上学习的都理论的,跟实际永远有一定的差距,不实践就不会发现问题。而且我还更加熟练的应用了 proteus 和 keil 两个软件。通过这次课程设计使我把课堂上学习的东西都用到了实践中,例如:定时/计数器的应用与中断。学习的时候不怎么理解,但是在实践中应用了以后就自然了解了。这次课程设计使我受益匪浅,而且都是实际的东西。最后,还要感谢本次课程设计的老师,也是我们单片机的老师,感谢在老师悉心的指导下,完成了本次课程设计。参考文献参考文献1、 单片机原理与应用 王迎旭等编 机械工业出版社2、 51 系列单片机设计实例 楼然苗等编 北京航空航天大学出版社3、 计算机硬件技术基础实验教程 黄勤等编 重庆大学出版社4、 微型计算机接口技术及应用 刘乐善主编 华中科技大学出版社5、 单片微型计算机原理及接口技术陈光东等 华中科技大学出版社8附录附录附录附录 A A 系统原理图系统原理图附录附录 B 程序清单程序清单 #include #includechar status=0,c=0,c_r=1; char save1_m,save1_s,save2_m,save2_s,save3_m,save3_s,save4_m,save4_s;9sbit led1=P34; sbit led2=P35; sbit led3=P36; sbit led=P30; bit flag=0; bit reset=0; ui dj,zj,lc; uc m=0,s=0; extern scan_key1(); extern scan_key2(); extern scan_key3(); extern scan_key4(); extern scan_key5(); void delay(uc a) uc i; while(a-) for(i=100;i0;i-); void initshow() /0xb80xbf 表示第 07 页(64 行); 0x01_表 示行(0x400x3f)display_HZ(0xb8,0x40,HZ0); /单display_HZ(0xb8,0x50,HZ1); /价display_FH(0xb8,0x60,FH0); /:/* display_HZ(0xb8,0xB0,HZ8); /元 */display_HZ(0xba,0x40,HZ2); /里:一个汉字占 2 行 行+2display_HZ(0xba,0x50,HZ3); /程 display_FH(0xba,0x60,FH0); /: /* / Display_FiveNum(0xba,0xA8,lc);/display_FH(0xba,0xB0,FH2); /kdisplay_FH(0xba,0xB4,FH3); /mdisplay_HZ(0xbc,0x40,HZ4); /总display_HZ(0xbc,0x50,HZ1); /价display_FH(0xbc,0x60,FH0); /:/ Display_FiveNum(0xbc,0xA8,zj);display_HZ(0xbc,0xB0,HZ8); /元 void ad_time(void) s+;if(s=60)s=0; m+;if(m=60)m=0;10void save_second(char i) if(i=1)save1_m=m;save1_s=s;else if(i=2)save2_m=m;save2_s=s;else if(i=3)save3_m=m;save3_s=s;void recover_second(char i) if(i=1)m=save1_m;s=save1_s;else if(i=2)m=save2_m;s=save2_s;else if(i=3)m=save3_m;s=save3_s;else if(i=4)m=save4_m;s=save4_s;
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号