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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

自动化电气与工程类工程实训实验报告——单片机最小系统实验报告基于PROTEUS仿真平台的51系列单片机最小系统的设计、应用实验一、实验目的和性能指标1、实验目的2学习掌握PROTEUS仿真软件的基本使用,熟悉KEIL软件的使用。并且对单片机最小系统进行仿真设计,实现1.在电路上实现秒表计时、暂停、清零功能。2.同时实现计时器功能,显示时、分、秒,能够修改时、分、秒。3.用单片机及外围接口电路实现对键盘的扫描,并用八位数码管显示结果。2、性能指标秒表计时要求能精确至0.01秒,计时器要求能循环显示,格式为时—分—秒,并能实现时间的调整,包括时间的增加和减小,对键盘的扫描实现4*4矩阵键盘的扫描,并能循环显示。二、硬件系统设计STC89c51单片机的硬件资源包含:一个8位CPU、振荡器和时钟电路、至少128字节的内部数据存储器,可寻址外部程序存储器和数据存储器个64k字节,21个特殊功能寄存器,4个并行I/O接口,2个16位定时/计数器,至少5个中断源,提供两级中断优先级,可实现两级中断服务程序嵌套。具有有位寻址功能,有较强的布尔处理能力。各功能单元(包括IO端口和定时器/计数器等)都由特殊功能寄存器(SFR)集中管理。中央处理器、ROM、RAM、定时/计数器和I/O口等,各个功能由内部的总线连接起来,从而实现数据通信。单片机最小系统主要由电源、复位、振荡电路以及扩展部分等部分组成。1、单片机最小系统单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。主控芯片选取AT89C52芯片,因其具有良好的性能及稳定性,价格便宜应用方便。晶振选取12MHz,晶振旁电容选取30pF。采用按键复位电路,电阻分别选取10KΩ,电容选取10μF。2、键盘接口电路共计16个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行采用端口P3.0~P3.3,四列采用端口P3.4~P3.7,通过8个端口的的高低电平完成对矩阵键盘的控制和扫描。通过对16个按键进行编码,从而得到键盘的口地址,我们就可以得到是哪个键按下,从而完成键盘的功能。3、数码管显示电路采用八位一体的数码管对计算数据和结果进行显示,这里选取共阴极数码管,使用P0口对数码管进行段选控制,用P2口对数码管进行位选控制,方便实现动态显示的效果。三、系统设计方案3按照系统设计的功能的要求,初步确定设计系统由单片机主控模块、八位数码管显示模块、键扫描接口电路共三个主要模块组成。主控芯片使用AT89C52单片机,键盘电路采用4*4矩阵键盘电路,并附有三位功能选择键模块,显示模块采用八位一体共阴极数码管。51系列单片机定时器的结构及工作原理:组成:两个16位的定时器T0和T1,以及他们的工作方式寄存器TMOD和控制寄存器TCON等组成。内部通过总线与CPU相连。定时器T0和T1各由两个8位特殊功能寄存器TH0、TL0、TH1、TL1构成。工作方式寄存器TMOD:用于设置定时器的工作模式和工作方式;控制寄存器TCON:用于启动和停止定时器的计数,并控制定时器的状态;单片机复位时,两个寄存器的所有位都被清0。四、软件仿真单片机最小系统电路图如图五、程序#includereg52.h#defineucharunsignedchar#defineuintunsignedshortintsbitp14=P1^4;sbitp15=P1^5;sbitp16=P1^6;sbitp17=P1^7;ucharcodetable1[]=4{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0,0x40};//定义显示段码ucharnum,temp;shortintx1=0,x2=0;ucharoperateFlag=0,a=1,b=1,c=1,d=1,e=1,f=1,g=1,h=1;bitresult=0,keyDown=0,affirm=0;uchartime=0,seconds=0,minutes=0,hours=0,choice=0;voiddelay(uchark)//定义延时函数{uchari,j;for(i=k;i0;i--)for(j=124;j0;j--);}voidTIME0_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;}voidtimer0()interrupt1//定时器中断0服务函数{TH0=(65536-10000)/256;TL0=(65536-10000)%256;time++;}voidAllInitial()//每种功能的初始化{if(choice==0||affirm==0){a=h=16;b=c=g=f=16;d=0;e=choice;EA=0;}elseif(choice==1&&affirm==1){h=g=f=e=0;a=b=c=d=16;time=seconds=minutes=hours=0;}elseif(choice==2&&affirm==1){time=seconds=minutes=hours=0;c=f=17;EA=1;}elseif(choice==3&&affirm==1){a=b=c=d=e=f=g=16;h=num=0;EA=0;}}charkeyscan(){keyDown=0;P3=0xfe;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P3;switch(temp){5case0xee:num=1;break;case0xde:num=2;break;case0xbe:num=3;break;case0x7e:operateFlag=0x01;break;}while(temp!=0xf0)//判断按键是否松开{temp=P3;temp=temp&0xf0;}keyDown=1;}}P3=0xfd;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P3;switch(temp){case0xed:num=4;break;case0xdd:num=5;break;case0xbd:num=6;break;case0x7d: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=P3;switch(temp){case0xeb:num=7;break;case0xdb:num=8;break;case0xbb:num=9;break;case0x7b:break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}keyDown=1;}}6P3=0xf7;temp=P3;temp=temp&0xf0;while(temp!=0xf0){delay(5);while(temp!=0xf0){temp=P3;switch(temp){case0xe7:num=0;break;case0xd7:num=0;break;case0xb7:break;case0x77:break;}while(temp!=0xf0){temp=P3;temp=temp&0xf0;}keyDown=1;}}returnnum;}voidsmg(uchara,ucharb,ucharc,uchard,uchare,ucharf,ucharg,ucharh){P0=0;P2=0xfe;P0=table1[a];delay(1);P2=0xff;P0=0;P2=0xfd;P0=table1[b];delay(1);P2=0xff;P0=0;P2=0xfb;P0=table1[c];delay(1);P2=0xff;P0=0;P2=0xf7;P0=table1[d];delay(1);P2=0xff;P0=0;P2=0xef;P0=table1[e];delay(1);P2=0xff;P0=0;P2=0xdf;P0=table1[f];delay(1);P2=0xff;P0=0;P2=0xbf;P0=table1[g];delay(1);P2=0xff;P0=0;P2=0x7f;P0=table1[h];delay(1);P2=0xff;}voidjishu(ucharnum1){if(h==0&g==16)7{h=num1;}elseif(g==16){g=h;h=num1;}elseif(f==16){f=g;g=h;h=num1;}elseif(e==16){e=f;f=g;g=h;h=num1;}elseif(d==16){d=e;e=f;f=g;g=h;h=num1;}elseif(c==16){c=d;d=e;e=f;f=g;g=h;h=num1;}elseif(b==16){b=c;c=d;d=e;e=f;f=g;g=h;h=num1;}elseif(a==16){a=b;b=c;c=d;d=e;e=f;f=g;g=h;h=num1;}else{a=b;b=c;c=d;d=e;e=f;f=g;g=h;h=num1;}}voidcalculator(){num=keyscan();if(keyDown==1){jishu(num);num=0;}smg(a,b,c,d,e,f,g,h);}//*******秒表程序**********voidmbcs(){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=0;8++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);}//********时钟程序**********voidszcs(){num=keyscan();if(keyDown==1){if(num==1)++hours;elseif(num==4)--hours;elseif(num==2)++minutes;elseif(num==5)--minutes;elseif(num==3)++seconds;elseif(num==6)--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){seconds=59;--minutes;}if(minutes==255){minutes=59;

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功