8个数码管动态显示

更新时间:2023-03-15 12:53:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

南昌大学实验报告

学生姓名:王崇伙学号: 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。

四、实验程序框图

开始 初始化端口 设置断码表、位码表 设定i=0,i++ N 显示i指向的内容 Y i<8? 五、实验程序

#include #include #include

#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,0X39,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) {

uchari;

for(i=0;i<8;i++) {x=x<<1;

P_HC595_SER=CY; P_HC595_SRCLK=1; P_HC595_SRCLK=0; } }

void display(void) {

uchari;

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(); } }

六、实验结果

六、实验总结

延时0.2S,8个数码管动态显示1~8 通过本次实验让我加深了对数码管显示功能的理解,并进一步也掌握了使用proteus仿真

本文来源:https://www.bwwdw.com/article/v87v.html

Top