ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:125.38KB ,
资源ID:3562624      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3562624.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(重庆邮电大学自动化电气与工程类 工程实训实验报告单片机最小系统实验报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

重庆邮电大学自动化电气与工程类 工程实训实验报告单片机最小系统实验报告.docx

1、重庆邮电大学自动化电气与工程类 工程实训实验报告单片机最小系统实验报告 自动化电气与工程类工程实训实验报告单片机最小系统实验报告 基于PROTEUS仿真平台的51系列单片机最小系统的设计、应用实验一、实验目的和性能指标1、实验目的学习掌握PROTEUS仿真软件的基本使用,熟悉KEIL软件的使用。并且对单片机最小系统进行仿真设计,实现1.在电路上实现秒表计时、暂停、清零功能。2.同时实现计时器功能,显示时、分、秒,能够修改时、分、秒。3.用单片机及外围接口电路实现对键盘的扫描,并用八位数码管显示结果。2、性能指标 秒表计时要求能精确至0.01秒,计时器要求能循环显示,格式为时分秒,并能实现时间的

2、调整,包括时间的增加和减小,对键盘的扫描实现4*4矩阵键盘的扫描,并能循环显示。二、硬件系统设计STC89c51单片机的硬件资源包含:一个8位CPU、振荡器和时钟电路、至少128字节的内部数据存储器,可寻址外部程序存储器和数据存储器个64k字节,21个特殊功能寄存器,4个并行I/O接口,2个16位定时/计数器,至少5个中断源,提供两级中断优先级,可实现两级中断服务程序嵌套。具有有位寻址功能,有较强的布尔处理能力。各功能单元(包括IO端口和定时器/计数器等)都由特殊功能寄存器(SFR)集中管理。中央处理器、ROM、RAM、定时/计数器和I/O口等,各个功能由内部的总线连接起来,从而实现数据通信。

3、单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。1、单片机最小系统单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。主控芯片选取AT89C52芯片,因其具有良好的性能及稳定性,价格便宜应用方便。晶振选取12MHz,晶振旁电容选取30pF。采用按键复位电路,电阻分别选取10K,电容选取10F。 2、键盘接口电路共计16个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行采用端口P3.0P3.3,四列采用端口P3.4P3.7,通过8个端口的的高低电平完成对矩阵键盘的控制和扫描。通过对16个按键进行编码,从而得到键盘的口地址,我们就可以

4、得到是哪个键按下,从而完成键盘的功能。3、数码管显示电路采用八位一体的数码管对计算数据和结果进行显示,这里选取共阴极数码管,使用P0口对数码管进行段选控制,用P2口对数码管进行位选控制,方便实现动态显示的效果。三、系统设计方案按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、八位数码管显示模块、键扫描接口电路共三个主要模块组成。主控芯片使用AT89C52单片机,键盘电路采用4*4矩阵键盘电路,并附有三位功能选择键模块,显示模块采用八位一体共阴极数码管。51系列单片机定时器的结构及工作原理:组成:两个16位的定时器T0和T1,以及他们的工作方式寄存器TMOD和控制寄存器TCON等组成。

5、内部通过总线与CPU相连。定时器T0和T1各由两个8位特殊功能寄存器TH0、TL0、TH1、TL1构成。工作方式寄存器TMOD:用于设置定时器的工作模式和工作方式;控制寄存器TCON:用于启动和停止定时器的计数,并控制定时器的状态;单片机复位时,两个寄存器的所有位都被清0。四、软件仿真单片机最小系统电路图如图五、程序#include#define uchar unsigned char#define uint unsigned short intsbit p14=P14;sbit p15=P15;sbit p16=P16;sbit p17=P17;uchar code table1=0x3f,

6、0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,0x40;/定义显示段码uchar num,temp;short int x1=0,x2=0;uchar operateFlag=0,a=1,b=1,c=1,d=1,e=1,f=1,g=1,h=1;bit result=0,keyDown=0,affirm=0; uchar time=0,seconds=0,minutes=0,hours=0,choice=0;void delay(uchar k)/定义延时函数 uchar i,j; for

7、(i=k;i0;i-) for(j=124;j0;j-); void TIME0_INT() /初始化定时器0 TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; a=b=d=e=g=h=0; c=f=16; EA=1; ET0=1; TR0=1;void timer0() interrupt 1/定时器中断0服务函数 TH0=(65536-10000)/256; TL0=(65536-10000)%256; time+;void AllInitial()/每种功能的初始化 if(choice=0|affirm=0) a=h=16;

8、 b=c=g=f=16; d=0; e=choice; EA=0; else if(choice=1&affirm=1) h=g=f=e=0; a=b=c=d=16; time=seconds=minutes=hours=0; else if(choice=2&affirm=1) time=seconds=minutes=hours=0; c=f=17; EA=1; else if(choice=3&affirm=1) a=b=c=d=e=f=g=16; h=num=0; EA=0; char keyscan() keyDown=0; P3=0xfe; temp=P3; temp=temp&0

9、xf0; while(temp!=0xf0) delay(5); while(temp!=0xf0) temp=P3; switch(temp) case 0xee: num=1; break; case 0xde: num=2; break; case 0xbe: num=3; break; case 0x7e: operateFlag=0x01; break; while(temp!=0xf0) /判断按键是否松开 temp=P3; temp=temp&0xf0; keyDown=1; P3=0xfd; temp=P3; temp=temp&0xf0; while(temp!=0xf0)

10、delay(5); while(temp!=0xf0) temp=P3; switch(temp) case 0xed: num=4; break; case 0xdd: num=5; break; case 0xbd: num=6; break; case 0x7d: operateFlag=0x02; break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; keyDown=1; P3=0xfb; temp=P3; temp=temp&0xf0; while(temp!=0xf0) delay(5); while(temp!=0xf0) temp=

11、P3; switch(temp) case 0xeb: num=7; break; case 0xdb: num=8; break; case 0xbb: num=9; break; case 0x7b: break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; keyDown=1; P3=0xf7; temp=P3; temp=temp&0xf0; while(temp!=0xf0) delay(5); while(temp!=0xf0) temp=P3; switch(temp) case 0xe7: num=0; break; case 0xd7

12、: num=0; break; case 0xb7: break; case 0x77: break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; keyDown=1; return num;void smg(uchar a, uchar b, uchar c, uchar d, uchar e,uchar f, uchar g, uchar h) P0=0; P2=0xfe; P0=table1a; delay(1); P2=0xff; P0=0; P2=0xfd; P0=table1b; delay(1); P2=0xff; P0=0; P2=0x

13、fb; P0=table1c; delay(1); P2=0xff; P0=0; P2=0xf7; P0=table1d; delay(1); P2=0xff; P0=0; P2=0xef; P0=table1e; delay(1); P2=0xff; P0=0; P2=0xdf; P0=table1f; delay(1); P2=0xff; P0=0; P2=0xbf; P0=table1g; delay(1); P2=0xff; P0=0; P2=0x7f; P0=table1h; delay(1); P2=0xff; void jishu(uchar num1) if(h=0&g=16)

14、 h=num1; else if(g=16) g=h; h=num1; else if(f=16) f=g; g=h; h=num1; else if(e=16) e=f; f=g; g=h; h=num1; else if(d=16) d=e; e=f; f=g; g=h; h=num1; else if(c=16) c=d; d=e; e=f; f=g; g=h; h=num1; else if(b=16) b=c; c=d; d=e; e=f; f=g; g=h; h=num1; else if(a=16) a=b;b=c;c=d;d=e;e=f;f=g;g=h;h=num1; else

15、 a=b;b=c;c=d;d=e;e=f;f=g;g=h;h=num1; void calculator() num=keyscan(); if(keyDown=1) jishu(num); num=0; smg(a,b,c,d,e,f,g,h);/*秒表程序*void mbcs() num=keyscan(); if(keyDown=1) if(operateFlag=0x01) EA=!EA; if(operateFlag=0x02) time=seconds=minutes=0; if(time=100) time=0; +seconds; if(seconds=60) seconds=

16、0; +minutes; if(minutes=60) minutes=0; h=time%10; g=time/10; f=seconds%10; e=seconds/10; a=b=c=d=16; smg(a,b,c,d,e,f,g,h); /*时钟程序*void szcs() num=keyscan(); if(keyDown=1) if(num=1) +hours; else if(num=4) -hours; else if(num=2) +minutes; else if(num=5) -minutes; else if(num=3) +seconds; else if(num=6

17、) -seconds; num=0; if(time=100) seconds+; time=0; /增长溢出 if(seconds=60) minutes+; seconds=0; if(minutes=60) +hours; minutes=0; if(hours=24) hours=minutes=seconds=0; if(minutes=60) +hours; minutes=0; if(hours=24) hours=minutes=seconds=0; if(hours=24) hours=minutes=seconds=0;/消减溢出 if(seconds=255) secon

18、ds=59;-minutes; if(minutes=255) minutes=59;-hours; if(hours=255) hours=minutes=seconds=0; a=hours/10; b=hours%10; d=minutes/10; e=minutes%10; g=seconds/10; h=seconds%10; smg(a,b,c,d,e,f,g,h);void singal(int wei,int duan,int timeSpan) P0=0; P2=wei; P0=duan; delay(timeSpan); P2=0xff; void mainKey()/扫描

19、按键的功能变化 if(p14=0) delay(5); if(p14=0) choice=1; e=choice; while(!p14); else if(p15=0) delay(5); if(p15=0) choice=2; e=choice; while(!p15); else if(p16=0) delay(5); if(p16=0) choice=3; e=choice; while(!p16); if(p17=0) delay(5); if(p17=0&choice!=0) affirm=!affirm; AllInitial(); while(!p17); smg(a,b,c,

20、d,e,f,g,h);void main() TIME0_INT(); EA=0; AllInitial(); while(1) /主循环 mainKey(); if(affirm=1) switch(choice) case 1:mbcs();break;case 2:szcs();break;case 3:calculator();break; 软件设计好后,在KEIL上面进行编译,把编译得到的hex文件加载到Proteus里面进行仿真,得到Proteus仿真电路图如图。时钟秒表清零键盘选择六 实验心得通过本次单片机最小系统的设计、应用实验的学习,收获颇丰,对单片机最小系统有了一定的认识和了解。基本掌握了利用Protus软件仿真电路的方法。并为电路编写程序,实现一定的功能。巩固了单片机课上所学的知识,而且也学到了很多在书本上所没有学到过的知识,使我懂得了理论与实际相结合是很重要的,在今后的学习实践中,要加强知识与实践相结合的运用。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1