好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

数码管动态显示实验报告.docx

3页
  • 卖家[上传人]:m****
  • 文档编号:556453140
  • 上传时间:2023-01-13
  • 文档格式:DOCX
  • 文档大小:75.92KB
  • / 3 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 实验四数码管动态显示实验一一、实验要求1. 在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2. 在电路中增加四个7段数码管(共阳/共阴自选),将P1 口作数据输出口与7段数码 管数据引脚相连,P2.0~P2.3引脚输出选控制信号3. 在Keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1, 2, 3, 4二、实验目的1. 巩固Proteus软件和Keil软件的使用方法2. 学习端口输入输出的高级应用3. 掌握7段数码管的连接方式和动态显示法4. 掌握查表程序和延时等子程序的设计三.实验说明本实验是将单片机的 P1 口做为输出口,将四个数码管的七段引脚分别接到 P1.0 至 P1.7由于电路中采用共阳极的数码管,所以当P1端口相应的引脚为0时,对应的数码管 段点亮程序中预设了数字0-9的段码由于是让四个数码管显示不同的数值,所以要用扫 描的方式来实现因此定义了 sean函数,接到单片机的p2.0至p2.3在实验中,预设的数字段码表存放在数组TAB中,由于段码表是固定的,因此存储类型 可设为code在Proteus软件中按照要求画出电路,再利用Keil软件按需要实现的功能编写c程序, 生成Hex文件,把Hex文件导到Proteus软件中进行仿真。

      为了能够更好的验证实验要求, 在编写程序时需要延时0.5s,能让人眼更好的分辨;89C51的一个机器周期包含12个时钟 脉冲,而我们采用的是12MHz晶振,每一个时钟脉冲的时间是1/12us,所以一个机器周期 为1us在keil程序中,子函数的实现是用void delay_ms(int x),其中x为1时是代表 1ms四、硬件原理图及程序设计(一)硬件原理图设计电路中P1.0到P1.7为数码管七段端口的控制口,排阻RP1阻值为220Q, p2.0到p2.3 为数码管的扫描信号AT89c51单片机的9脚(RST)为复位引脚,当RST为高电平的时间 达到2个机器周期时系统就会被复位;31引脚(EA)为存取外部存储器使能引脚,当EA为 高电平是使用单片机内部存储器,当EA为低电平时单片机则使用外部存储器18、19引脚 是接晶振脚而接地和电源端在软件中已经接好,所以不用在引线如下图所示:::. :: P? : ;, ; : ;Q2 「I. 「;Q1■bgiEI ■]:£.-inml*3.TnWpu.Ci-irnrrP3J.T1P3.4.Tn p^^niiTimrviuiD■ 17■mn■ 1ZTin■CH E> -AF | -■..*厂尸丄巴-TtoW寸 BIV5TAL.1ElfP.QT1O.WTEKT?'1B'■■STAUS-XTAL1PZ.T^AIS P2JSA1* Hzsi'.H.ia rz.w.H.iz p*z jfm i PZ^fAID rz.iCAS rziVAB□ 口 .7^AD7FD.GTA[>>= rn ii'XDff P口.皿D丄FOUADS 『口 HA.DNPO.VAD1FDIYADa~=7srTzT■ ■■■■■■■ ~ 33P .(二)流程图与程序设计声明驱动 信号数组1『声明延时函数扫描数组的值读取数组数据及 数据处理三)程序设源代码#include //定义 8051 寄存器头文件#define SEG7P P1//定义扫描信号的位置#define SCANP P2//定义数码管的位置char code TAB[10]={0xc0, 0xf9, 0xa4, 0xb0, 0x99,//数字 0~4的码值0x92, 0x83, 0xf8, 0x80, 0x98 };//数字 5~9的码值char disp[4]={1,2,3,4};//定义要显示的数值void delay_ms(int x);//声明延时函数char scan[4]={0xfe,0xfd,0xfb,0xf7};//定义扫描char i,j;//定义变量 i,jmain()r//主函数的开始{while(1)//无限循环{ for(i=0;i<4;i++)//从{j=disp[3-i];//取出显示的数值SCANP =scan[i];//扫描的顺序SEG7P =TAB[j];〃将TAB的数值赋给数码管delay_ms(4);//延时 4ms}}}void delay_ms(int x){int i,j;for (i=0;i

      问题二:重新运行后,数码管只显示其中的一部分解决的方法:检查程序,发现是延时时间的问题,在改动延时时间后,重新编译后在次 运行电路,电路正常显示,符合要求通过本次的实验,在前两个实验的基础上让我复习了知识点,也让我在次掌握了新的知 识在完成这次实验后,让我想到可以用多个按键控制多个数码管实现加减和暂停和开始 我觉得这次的课程实验让我知道,一次次的失败,并不会让我放弃去追求,相反它会引领着 我去发现问题,从而解决问题,完成更深入的探索也让我明白理论知识的重要性,并且与 实际相结合,多动手,在实践中成长所以我会很重视每一次的实验我坚信:每次实验都 会给我自身很大帮助慢慢的积累点滴的知识,到最后就会多的。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.