控制数码管的静态显示学习
时间:10-02
整理:3721RD
点击:
单片机数码静态管的显示
电路原理图如下:

数码管的示意图:

程序如下:
- #include <reg52.h>
- sbit dula=P2^6;
- sbit wela=P2^7;
- void main()
- {
- wela=1;
- P0=0xfe;
- wela=0;
-
- dula=1;
- P0=0x<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />7f;
- dula=0;
- while(1);
- }
分析一下上面的程序,因为我们是把单片机的P0输出口用来控制锁存器的输入D0-D7电平进而控制其输出电平Q0-Q7,U3锁存器和U4锁存器的锁存端分别接在了单片机的P26,P27引脚上,wela=1是让U4锁存端开启,这样U4锁存器的输入与输出是连通的,其D端输入什么,Q端就输出什么电平,P0=0xfe=11111110的作用是让第一个数码管工作,其他的5个不工作,然后执行wela=0;关闭U4的锁存端,使位选的电平保持住了,之后是控制第一个数码管显示8了,要显示8的话则a b c ,d, e, f g h全要点亮,小数点dp不能点亮,再来看看编码是什么a=1 b=1 c=1 d=1 e=1 f=1 g=1 h=0于是P0=01111111B=0x7f,然后dula=0关闭锁存端,这样段选的电平就保持住了,直到,段选电平改变时,才消失。
仿真结果:
按照上面的理解编写一个程序让实验板上的6个数码管全工作,并且每隔0.5s依次显示0—F。
//让实验板上的六个数码管同时点亮,依次显示0-F,间隔为05S
复制代码
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit dula=P2^6;
- sbit wela=P2^7;
- uchar num;
- uchar code table[]={
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71}; //显示0-F P0口的输出端编码
- void delay_ms(uint);
- void main()
- {
- wela=1;
- P0=0xc0;
- wela=0;
- while(1)
- {
- for(num=0;num<16;num++)
- {
- dula=1;
- P0=table[num];
- dula=0;
- delay_ms(500);
- }
- }
- }
- void delay_ms(uint xms)
- {
- uint i,j;
- for(i=xms;i>0;i--)
- for(j=110;j>0;j--);
- }
以上都参考自郭天祥的教程。
多谢诶分享,收藏看看。
谢谢小编哦
最基本的东西,简单易懂,初学者可以拿来入门
谢谢小编哦
有没有键盘输入,在2个4位7段数码管上显示8个数字的相关教程啊,我想要来学习

