1、 实验项目: 计数显示器 班 级: C12 电气 2 班 姓 名: 何鲁峥 学 号: 121330310 实验日期: 2014 年 4 月 4 日 0【实验目的】熟悉 51 单片机的基本输入/输出应用,掌握 Proteus ISIS 模块的原 理图绘图方法及单片机系统仿真运行方法。 【实验原理】实验原理图如图 A.1 所示,图中含有如下 5 个分支电路:由共阴数码管 LED1 和 LED2、P0 口、P2 口、上拉电阻 RP1 以及 Vcc 组成的输出电路;由按钮开关 BUT、P3.7 和接地点组成的输出电路;由C1、C2、晶振 X1、引脚 XTAL1、XTAL2 与接地点组成的时钟电路;由
2、C3、R1 引脚 RST 和 Vcc 组成的上电复位电路;由 Vcc 和引脚EA 组成的片内 ROM 选择电路(简称片选电路,下同) 。在编程软件的配合下,该电路可实现如下计数显示功能:可统计按钮 BUT 的按压次数,并将按压结果以十进制形式显示出来;当显示值达到 99 后可自动从 1 开始,无限循环。【虚拟仪器】表 A.1 实验 1 的元件清单元件名称 所属类 所属子类单片机 AT89C51 Microprocessor ICs 8051 Family瓷片电容 CAP Capacitors Generic电解电容 CAP-ELEC Capacitors Generic晶振 CRYSTAL M
3、iscellaneous -电阻 RES Resistors Generic7 段码 LED 7SEG-COM-CAT-GRN Optoelectronics 7-Segment Displays上拉电阻 RESPACK7 Resistors -按钮 BUTTON Switches/数码管 09 显示数字void delay(int ms) /延时函数for(;ms0;ms-);sbit P37=P37;/位定义void main() char count;P2=0x3f; /P2 口初始值显示 0P0=0x3f; /P0 口初始值显示 0while(1) /进入死循环if(P37=0) /P
4、37 口是按钮的位置,当按钮按下时 delay(1000);/延时函数count+;if(count=100)/防止 count 大于 100count=0; /重新使 count 置 0P2=tabecount%10;/P2 显示个位数字P0=tabecount/10;/P0 显示十位数字while(P37=0);3【实验小结】试验难点:如何实现按钮计数、P2 口实现个位数、P0 口实现十位数;试验关键操作:1)在 Proteus ISIS 软件中正确画出电路图;2)用 count 对 10 取余来实现在 P2 口显示个位数,用 count 对 10 取整来实现在 P2 口显示十位数;3)用 if 语句限制 count 不会大于 100,从而保证当显示值达到 99 后可自动从 1 开始。实验改进:可以通过中断定时/计数控制来实现该功能。