📄 01234567.txt
字号:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255
uchar code dis_code[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, //段码表
// 0 1 2 3 4 5 6 7 //对应内容
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
// 8 9 a b c d e f
void main()
{
uchar data i = 0x00; // 循环控制变量兼偏移量,初值为0
uchar data j = 0xfe; // 位码(选通各位数码管),初值为11111110
while(1)
{
P2 = j; // 位码送入P2口显示
P0 = dis_code[i]; // 段码表中取值送P0口
delay_ms(1); // 动态显示各位间隔为1ms
j = _crol_(j,1); // 位码循环左移1位选通下一数码管
i++; // 偏移量加1取下一段码(循环控制加1)
i &= 0x07; // 偏量增到8时自动归0(控制在0~7之间循环)
}
}
void delay_ms(uchar ms) // 延时毫秒@12M,ms最大值255
{
uchar i;
while(ms--)
for(i = 0; i < 124; i++);
}
--------------------------------------------------------------------------------
/**************************************************************************
* 标题: 多位数码管动态显示软延时实现(C51)
* 作者: wentao http://blog.liuwentao.net
http://wentao.programfan.com
* 日期: 2007.2.21
* 软件: Keil C51 V8.02
* 芯片: AT89X51
* 说明: 实验板实测通过,数码管为8位共阳,循环用for
* 声明: 自用存档!另仅供需要的朋友参考,请勿用做不道德转载及商业用途!
**************************************************************************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255
uchar code dis_code[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, //段码表
// 0 1 2 3 4 5 6 7 //对应内容
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
// 8 9 a b c d e f
void main()
{
uchar data i = 0x00; // 循环控制变量兼偏移量,初值为0
uchar data j = 0xfe; // 位码(选通各位数码管),初值为11111110
while(1)
{
for(i = 0; i < 8; i++)
{
P2 = j; // 位码送入P2口显示
P0 = dis_code[i]; // 段码表中取值送P0口
delay_ms(1); // 动态显示各位间隔为1ms
j = _crol_(j,1); // 位码循环左移1位选通下一数码管
}
}
}
void delay_ms(uchar ms) // 延时毫秒@12M,ms最大值255
{
uchar i;
while(ms--)
for(i = 0; i < 124; i++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -