Proteus8+Keil5仿真 用AT89C51实现共阴极四位数码管显示数字0 您所在的位置:网站首页 professional元件 Proteus8+Keil5仿真 用AT89C51实现共阴极四位数码管显示数字0

Proteus8+Keil5仿真 用AT89C51实现共阴极四位数码管显示数字0

2024-07-01 18:38| 来源: 网络整理| 查看: 265

最开始本来是想着让 i 循环 10000 次,然后通过 dp[i % 10] dp[i / 10 % 10] dp[i / 100 % 10] dp[i / 1000 % 10] 来取到每位数码管上的要展示的数字,但是写完代码发现数码管上的数字变化的特变快,然后就想着在最后加一个delay(500)进行延迟但结果是四位数字一起闪烁(就像快速的眨眼睛)。消影的延迟又不能动于是就想到了让i扩大同时扩大取每位数的方式使得循环总次数增加,经过不断调试找到了比较好的实现方式

代码如下:

#include #include #define uint unsigned int #define uchar unsigned char //定义0-9的16进制 uchar code dp[10] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; // 延迟函数 void delay(uchar ms) { uchar i, j; for (i = 0; i < ms; ++i) { for (j = 0; j < 120; ++j); } } void main() { uint i = 0; while(1){ P1 = 0xfe; P2 = dp[i / 20 % 10]; delay(5); P1= 0xff; P1 = 0xfd; P2 = dp[(i / 200) % 10]; delay(5); P1= 0xff; P1 = 0xfb; P2 = dp[(i / 2000) % 10]; delay(5); P1= 0xff; P1 = 0xf7; P2 = dp[(i / 20000) % 10]; delay(5); P1= 0xff; delay(100); if(i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有