实用操作之基于单片机的秒表设计.docx_第1页
实用操作之基于单片机的秒表设计.docx_第2页
实用操作之基于单片机的秒表设计.docx_第3页
实用操作之基于单片机的秒表设计.docx_第4页
实用操作之基于单片机的秒表设计.docx_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的秒表设计目录 一、 设计的内容、要求及目的 . 1 二、 系统总体方案选择与说明 . 2 三、 系统方框图与工作原理 . 4 四、 各部分方案选定、功能及计算 . 4 4.1 按键部分 . 4 4.2 显示部分 . 5 五、 器件说明 . 6 六、调试说明、使用说明 . 6 心得体会 . 错误未定义书签。5 参考文献 . 8 附录 . 9 附录A 系统原理图 . 9 附录B 程序清单 . 10 0 一、 设计的内容、要求及目的 设计内容 我设计的是以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单片机,有按键部分和显示部分。 1 二、 系统总体方案选择与说明 此次课程设计题目是秒表,由于此次课程设计要求是秒表,则在定时时要求比较精确,所以采用硬件的定时器定时时比较准确的;由于秒表的定时程序是很小的,在利用软件定时占用的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单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。引脚排列如图所示 2 主要特性: ?与MCS-51 兼容 ?4K字节可编程FLASH存储器 ?寿命:1000写/擦循环 ?数据保留时间:10年 ?全静态工作:0Hz-24MHz ?三级程序存储器锁定 ?1288位内部RAM ?32可编程I/O线 ?两个16位定时器/计数器 ?5个中断源 ?可编程串行通道 ?低功耗的闲置和掉电模式 ?片内振荡器和时钟电路 3 三、 系统方框图与工作原理 秒表采用的是AT89C51单片机,单片机的P1口连接着按键,实现按键功能;P0、P2、P3口连接着显示器,实现显示功能。如图3.1所示: AT89C51 P0 显 示按键 P1 P2 器 P3 图3.1秒表总体系统方框图 四、 各部分方案选定、功能及计算 4.1 按键部分 K1和单片机的P1.0口相连,实现启动/停止功能,按下K1键,开启计时功能,再按一下,即停止计时;K2和单片机的P1.1相连,实现记录功能,按下K2键,开启记录功能,共有3个可以记录;K3和单片机的P1.2相连,实现重置功能按下K3,即清零重置。如图4.1所示: 4 图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显示部分 5 五、 器件说明 ,1, MCS-51单片机实验操作台1台, ,2, PC机及单片机调试软件, ,3, 单片机应用系统板1套, ,4, 制作工具1套, ,5, 系统设计所需的元器件。 六、调试说明、使用说明 编好的程序在Keil中有许多错误,这些错误在平时的实验中也碰到过很多。例如,字母开头忘了加0,零和字母搞错了,有些标号用了几次,CJNE写成了CJNZ等等,幸好这些错误在平时实验中遇到很多次了,所以改正很快的。除了常见错误,还有些错误在平时没遇到过的。如:AJMP指令跳转不回指定的地位,是由于跳转的长度大于AJMP跳转的长度,最后只有用LJMP跳转后跳到指定的位置。在几天的调试和修改程序中,我的知识也得到了巩固,使我对单片机的知识更加的渴望。 在Proteus编辑窗口中单击开始仿真按钮,开始仿真,按启动按钮,开始读秒,按记录按钮记录数据,可以记录3个数据,最后按重置按钮,重置数据。如图6.1所示: 6 图6.1 心得体会 通过这次课程设计秒表计时器,使我又重新开始学习C语言,因为C语言是大一学的,至从学完就再也没用过,所以开始很陌生,我又找了有关资料来了解,才有了一点眉目。刚开始以为可以用汇编很容易就写出来,以为学的很明白了,但是用汇编时才发现原来都不怎么熟练,编了一会程序发现只有一种感觉举步维艰啊还是放弃汇编选择C语言吧对于单片机,我们课本学习的是80C51,但是这次做课程设计用的是89C51,这样不仅使我们掌握了80C51,而且对89C51也有了一定的了解了,在课堂上学习的都理论的,跟实际永远有一定的差距,不实践就不会发现问题。而且我还更加熟练的应用了proteus和keil两个软件。通过这次课程设计使我把课堂上学习的东西都用到了实践中,例如:定时/计7 数器的应用与中断。学习的时候不怎么理解,但是在实践中应用了以后就自然了解了。这次课程设计使我受益匪浅,而且都是实际的东西。 最后,还要感谢本次课程设计的老师,也是我们单片机的老师,感谢在老师悉心的指导下,完成了本次课程设计。 参考文献 1、单片机原理与应用 王迎旭等编 机械工业出版社 2、51系列单片机设计实例 楼然苗等编 北京航空航天大学出版社 3、计算机硬件技术基础实验教程 黄勤等编 重庆大学出版社 4、微型计算机接口技术及应用 刘乐善主编 华中科技大学出版社 5、单片微型计算机原理及接口技术陈光东等 华中科技大学出版社 8 附录 附录A 系统原理图 9 附录B 程序清单 #include #include char status=0,c=0,c_r=1; char save1_m,save1_s,save2_m,save2_s,save3_m,save3_s,save4_m,save4_s; sbit 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行 行+2 display_HZ(0xba,0x50,HZ3); /程 display_FH(0xba,0x60,FH0); /: /* / Display_FiveNum(0xba,0xA8,lc); 10 /display_FH(0xba,0xB0,FH2); /k display_FH(0xba,0xB4,FH3); /m display_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; void 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; void init(void) TMOD=0x01; TH0=(65536-16600)/256; 11 TL0=(65536-16600)%256; EA=1; ET0=1; TR0=0; void main(void) ui t=1000; init(); iniLCD(); ClearScreen(2); initshow(); Display_FiveNum(0xb8,0x80,m,s); while(1) /键盘扫描程序 led=led; if(scan_key1()=1) TR0=TR0; else if(scan_key2()=1&TR0=1) led1=led1; flag=1; c+; save_second(c); if(c=4)c=50; else if(scan_key3()=1) TR0=0; ClearScreen(2); initshow(); Display_FiveNum(0xb8,0x80,0,0); m=0;s=0; c=0; void timer0(void) interrupt 1 TH0=(65536-16600)/256; TL0=(65536-16600)%256; 12 ad_time(); if(flag=1) flag=0; TR0=0; if(c=1)Display_FiveNum(0xba,0x80,save1_m,save1_s); else if(c=2)Display_FiveNum(0xbc,0x80,save2_m,save2_s); else if(c=3)Display_FiveNum(0xbe,0x80,save3_m,save3_s); TR0=1; Display_FiveNum(0xb8,0x80,m,s); 按键 #include #define uchar unsigned char sbit key1=P10; bit f_k1=1; sbit key2=P11; bit f_k2=1; sbit key3=P12; bit f_k3=1; sbit key4=P13; bit f_k4=1; sbit key5=P14; bit f_k5=1; void delay(char i) while(i-); char scan_key1(void) if(key1=0) delay(100); if(key1=0) f_k1=0; return 0; 13 else return 0; else if(f_k1=0) f_k1=1; return 1; else return 0; char scan_key2(void) if(key2=0) delay(100); if(key2=0) f_k2=0; return 0; else return 0; else if(f_k2=0) f_k2=1; return 1; else return 0; char scan_key3(void) if(key3=0) 14 delay(100); if(key3=0) f_k3=0; return 0; else return 0; else if(f_k3=0) f_k3=1; return 1; else

温馨提示

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

评论

0/150

提交评论