/**********************************************************************************
* 标题: 试验数码管上显示数字( 单片机直接实现位选 共阴极) *
* *
* 连接方法:P0与J12 用8PIN排线连接 P1与JP16 用排线连接 *
***********************************************************************************
* *
* 请学员认真消化本例程,用573锁存器控制和单片机脚直接位选控制(非译码器控制)数码管 *
***********************************************************************************/
#include <reg51.h>
void delay(unsigned int i); //函数声名
char DelayCNT;//定义变量
//此表为 LED 的字模, 共阴数码管 0-9 -
unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制
//此表为8个数码管位选控制, 共阴数码管 1-8个 -
unsigned char code dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制 查表的方法控制
/************主函数**********************/
main()
{
unsigned int i,LedNumVal=1 ; //变量定义
unsigned int LedOut[10]; //变量定义
DelayCNT=0;
while(1)
{
if(++DelayCNT>=20) //控制数字变化速度
{
DelayCNT=0; //20个扫描周期清零一次
++LedNumVal; //每隔20个扫描周期加一次
}
LedOut[0]=Disp_Tab[LedNumVal%10000/1000];
LedOut[1]=Disp_Tab[LedNumVal%1000/100]|0x80;
LedOut[2]=Disp_Tab[LedNumVal%100/10];
LedOut[3]=Disp_Tab[LedNumVal%10];
LedOut[4]=Disp_Tab[LedNumVal%10000/1000]; //千位
LedOut[5]=Disp_Tab[LedNumVal%1000/100]|0x80; //百位带小数点
LedOut[6]=Disp_Tab[LedNumVal%100/10]; //十位
LedOut[7]=Disp_Tab[LedNumVal%10]; //个位
for( i=0; i<8; i++)
{
P0 = LedOut[i];
P1 = dispbit[i]; //使用查表法进行位选
/* switch(i) //使用switch 语句控制位选
{
case 0:P1 = 0x7F; break;
case 1:P1 = 0xbF; break;
case 2:P1 = 0xdF; break;
case 3:P1 = 0xeF; break;
case 4:P1 = 0xf7; break;
case 5:P1 = 0xfb; break;
case 6:P1 = 0xfd; break;
case 7:P1 = 0xfe; break;
} */
delay(150); //扫描间隔时间 太长会数码管会有闪烁感
}
}
}
/*******************延时函数**********************************************/
void delay(unsigned int i)
{
char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
数码管流动显示(自己的单片机)
原创
©著作权归作者所有:来自51CTO博客作者蓬莱仙羽的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
51单片机中断系统编程
51单片机中断系统编程
数码管 #define 初始化 51单片机 中断系统 -
Keil uVersion 4单片机开发指南
MDK Keil uVersion 4使用教程,基于STC8H8K64U单片机
Keil 单片机 stc8h8k64u -
【单片机】数码管应用
【单片机】数码管应用一、操作目的二、代码详解(简单应用)三、代码详解(60进制)一、操作目的(1)简单的数码管应用。(2)60进制操作练习。二、代码详解(简
单片机 #define 初始化 #include -
【单片机】数码管显示器仿真
proteus接线Process为实现循环播放0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、
i++ #include 循环播放 -
51单片机学习笔记6 数码管显示
74HC245是一款常用的8位双向电平转换器,也被称为总线驱动器。高速:74HC245具有较高的数据传输速率,
51单片机 学习 笔记 数码管 引脚 -
5020-单片机数码管显示(仿真+程序)
1、51+Proteus8.10;2、学习MAX7221驱动八位数码管显示;
单片机 嵌入式硬件 i++ #include 数码管 -
单片机之动态数码管篇
思来想去还是决定要出这期教程,因为我看很多同学在这个数码管的问
单片机 编程语言 代码规范 数码管 引脚 -
51单片机入门 - 数码管动态显示实验
设计要求:在8位8端的数码管上动态显示76543210,快速显示时人眼看到的效果为同时亮起
数码管 动态显示 #include