8个数码管动态显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 仿真