历史上的今天
今天是:2025年07月26日(星期六)
2021年07月26日 | 51单片机学习笔记【三】——数码管实验
2021-07-26 来源:eefocus
数码管基础:
数码管由八个发光二极管组成成“8“字型,按极性分为共阴极数码管(阴极链接在一起)和共阳极数码管(阳极连接在一起)。本实验采用的是共阳极,若要亮,则相应位置0,即为低电平。

可以通过给数码管引脚置值来控制亮和灭,显示不同的图案,如下图所示

共阳极数码管再进行取反操作便可以显示相同的图案。
一.静态数码管实验
1.电路原理图

2.说明:实验中使用P0口控制,用排线接P0口和JP3.让数码管依次显示0-9。
3.源代码如下:
/***********************************************
> File Name: 静态数码管
> Author: pengshp
> Mail: pengshp3@outlook.com
> Date: 2015年 7 月 17 日
*************************************************/
#include #define uchar unsigned char #define uint unsigned int #define GPIO_DIG P0 uchar code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};//显示0-9的值 void Delay(uchar); void main() { uchar i; while(1) { for(i=0;i<10;i++) //依次显示0-9 { GPIO_DIG=~DIG_CODE[i]; Delay(800); //延时处理 } } } void Delay(uchar x) { uint a,b; for(a=x;a>0;a--) { for(b=2000;b>0;b--) { } } } 备注:程序中的code关键字表示将数据存储在程序存储空间(Flash)中,以节约RAM的空间,存储的数据只能读不能写入。 二.动态数码管(不带译码器) 1.电路原理图 2.说明 本实验通过控制八个数码管分别显示0-7个数字,使用的数码管为共阴极,即要亮时把相应位置1,输出高电平。接线为JP10(P0)接JP12,JP8接JP16右排(注意:有金属触电的一排朝右),再把JP165断开。 3.源代码如下 /************************************** >File Name: 动态数码管显示 > Author: pengshp > Mail: pengshp3@outlook.com > Date: 2015年 7 月 17 日 ***************************************/ #include #define GPIO_DIG P0 //段选 #define GPIO_PLACE P1 //位选 #define uchar unsigned char #define uint unsigned char uchar code DIG_PLACE[8] = {0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f};//位选控制 查表的方法控制 uint code DIG_CODE[17] = {0x3f,0x06,0x5b,0x4f, //0、1、2、3 0x66,0x6d,0x7d,0x07, //4、5、6、7 0x7f,0x6f,0x77,0x7c, //8、9、A、B 0x39,0x5e,0x79,0x71};//C、D、E、F uchar DisplayDate[8]=0; //存放要显示的8位数字 void DigDisplay(); void main() { uchar i; for(i=0;i<8;i++) { DisplayDate[i]=DIG_CODE[i]; } while(1) { DigDisplay(); } } void DigDisplay() { uchar i; uint j; for(i=0;i<8;i++) { GPIO_PLACE = DIG_PLACE[i]; //发送位选,控制要亮的数码管 GPIO_DIG = DisplayDate[i]; //发送段码,显示相应的数字 j = 10; //扫描间隔时间设定 while(j--); GPIO_DIG = 0x00; //消隐 } } 
史海拾趣
|
是不是校准了就可以不测量VREFINT 来自EEWORLD合作群:arm linux fpga 嵌入0(49900581)群主:wangkj… 查看全部问答> |
|
我的WINCE设备现在已经可以识别为U盘. 还有个问题,当我把USB线插上的时候,WINCE上NAND FLASH的盘符消失,同时PC上显示U盘盘符;但是当我拔掉USB线时,PC上的盘符消失,而WINCE上的盘符却没有显示出来,怎么让FLASH重新MOUNT一次?这个问题怎么解决啊?… 查看全部问答> |
|
问题是这样的: vxWorks下,我用routeAdd \"0.0.0.0\",\"192.168.1.1\"添加了一条路由,但是用routeDelete \"0.0.0.0\",\"192.168.1.1\"删除不掉。其实我是想修改网关的地址(先删再重新加),但是现在删不掉先前设置的。 请各位大大帮帮忙! … 查看全部问答> |
|
在使用s3c44b0的时候,看到有这么一条语句 rNCACHBE0=(((Non_Cache_End)>>12)12); 为什么这样就可以设置非cache区的起始和结束地址了? 另外为什么要写成((Non_Cache_End)>>12)… 查看全部问答> |
|
假如创建一个pty: ptyDevCreate(\"/pty/my.\", 512, 512);那么得到的主从设备依次为:\"/pty/my.M\"以及\"/pty/my.S\"。按照VxWorks的帮助是这么说的:主进程使用\"/pty/my.M\"进行写,从进程使用\"/pty/my.S\"进行读,按照,这样理解这个pty是单 ...… 查看全部问答> |
|
一个朋友最近送给我的一套【全美经典】系列教材,看了一点,感觉还可以,所以传上来给大家分享一下,全部免费下载,需要的朋友可以看一下。 [ 本帖最后由 fengxin 于 2010-10-23 11:49 编辑 ]… 查看全部问答> |
|
1、(定位)我们在开发一款路灯的时候,得先要有个定位(开发灯具条件表,如对灯具的大致结构,,电性能指标,发率,防护性能,期望重量等),目前,很多人对及系统了解得不够深入,知其然不知其所以然的。 目前国内LED道路照明标准尚正式出台,由 ...… 查看全部问答> |
|
今天遇到asm(\"pop.w R3\")报错 pop.w R2没报错 想问一下, 1.我们的程序里能用到那些寄存器? 2.那些寄存器是我们可以操作的? 3.移植OS需要操作R0到R15吗? 4。为什么msp430需要常数发生器? 5.常数发生器作用过程是怎样 ...… 查看全部问答> |




