8个数码管动态显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南昌大学实验报告

学生姓名:王崇伙学号:6103413026 专业班级:生医131

实验类型:□验证□综合 设计□创新实验日期:2015/10/9 实验成绩:实验二、8个数码管动态显示1~8

一、实验目的

1、掌握汇编查表法实现动态数码管显示。

2、熟练使用proteus仿真工具。

二、实验工具

1、PC机

2、keil程序编辑工具

3、proteus仿真工具

三、实验原理

八路七段数码管动态显示原理其实和一个数码管显示0~F原理相同,不同在于显示数字的数码管有一个一次变成八个显示0~8,P0控制段选,P1控制位选,由本次实验使用八路共阴极数码管(如下图),当P0=0x7F (8)时,位码P1=0xfe既选通第八个数码管其余位选高电平不导通,结果就为第八个数码管显示8,依次P0段选‘1’时P1位选第一个数码管结果就为第一个数码管显示‘1’,延时0.2s再依次循环输入1~8位选依次选一~八达到八位数码管循环显示1~8。

四、实验程序框图

五、实验程序

#include<stc15.h>

#include<intrins.h>

#include<gpio.h>

#define uchar unsigned char

sbit P_HC595_SER=P0^0;

sbit P_HC595_RCLK=P2^4;

sbit P_HC595_SRCLK=P0^3;

uchar code SEG7[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0 X39,0X5E,0X79,0X71,0x00};

uchar code Scon_bit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

uchar data Dis_buf[]={16,16,16,16,16,16,16,0};

void Delay1ms()

{

unsigned char i,j;

_nop_();

_nop_();

_nop_();

i=11;

j=190;

do

{

while(--j);

}

while(--i);

}

void F_Send_595(uchar x)

{

uchar i;

for(i=0;i<8;i++)

{x=x<<1;

P_HC595_SER=CY;

P_HC595_SRCLK=1;

P_HC595_SRCLK=0;

}

}

void display(void)

{

uchar i;

for(i=0;i<8;i++)

{

F_Send_595(Scon_bit[i]);

F_Send_595(SEG7[Dis_buf[i]]);

P_HC595_RCLK=1;

P_HC595_RCLK=0;

Delay1ms();

}

}

六、实验结果

六、实验总结

通过本次实验让我加深了对数码管显示功能的理解,并进一步也掌握了使用proteus 仿真

相关文档
最新文档