单个数码管循环显示1

您所在的位置:网站首页 plc如何编程使数码显示数学为5 单个数码管循环显示1

单个数码管循环显示1

#单个数码管循环显示1| 来源: 网络整理| 查看: 265

一、实验要求 使用51单片机控制单个数码管,使其循环显示0-9. 二、实验原理 数码管(Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。 数码管原理图数码管共阴极接法数码管共阳极接法led字型显示代码表 三、仿真图 1、proteus仿真图 在这里插入图片描述2、proteus仿真效果图 在这里插入图片描述四、程序

#include #include #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]= { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F }; void DelayMS(uint x) { uchar t; while(x--) for(t=120;t>0;t--); } void main() { uchar i=0; P0=0x00; while(1) { P0=DSY_CODE[i]; i=(i+1)%10;/*显示0-9*/ DelayMS(400); } }

解析:

1、由于仿真图采用的是共阴极数码管,故代码也需要保持一致,采用共阴极字形代码;当然也可以采用共阳极字形代码,但最会需要取反,使其变成共阴极:

P0=~DSY_CODE[i];// ~是取反的标志。

2、这里需要用到延时函数。

void DelayMS(uint x)

{

uchar t;

while(x–)

for(t=110;t>0;t–);

}

这个延时函数的核心是一个whiLe和for循环嵌套,例如让x=10,cpu会在这里循环10*10次,这些时间大概就是10ms(但并不精确)。

关注公众号电子荣耀,回复“数码管”即可获得此实验proteus仿真图源文件和程序。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3