10.四位共阴数码管实验

来源:互联网 发布:iapp源码大全下载2017 编辑:程序博客网 时间:2024/05/21 17:46

实验现象:数码管1-4位分别显示1、2、3、4。

理论学习

  数码管动态扫描:动态显示的特点书将所有数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫面显示。所谓动态扫面显示即轮流向各位数码管送出字型码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。

  通俗点说:动态扫描就是快速的一位一位的显示数码管,间隔在ms级别。

  动态扫面时候去除余辉(显示模糊):在动态扫面时候切换位选时候先把段选的输出清零,然后再切换位选,这样可以有效去除余辉。

  程序中void Display(unsigned char com,unsigned char num)函数中最前面的即为去除余辉代码:

digitalWrite(SEG_A,LOW);      //去除余晖digitalWrite(SEG_B,LOW);digitalWrite(SEG_C,LOW);digitalWrite(SEG_D,LOW);digitalWrite(SEG_E,LOW);digitalWrite(SEG_F,LOW);digitalWrite(SEG_G,LOW);digitalWrite(SEG_H,LOW);
程序代码
#include <Arduino.h>#define SEG_A 2#define SEG_B 3#define SEG_C 4#define SEG_D 5#define SEG_E 6#define SEG_F 7#define SEG_G 8#define SEG_H 9#define COM1 10#define COM2 11#define COM3 12#define COM4 13unsigned char table[10][8] ={{0,0,1,1,1,1,1,1},//0{0,0,0,0,0,1,1,0},//1{0,1,0,1,1,0,1,1},//2{0,1,0,0,1,1,1,1},//3{0,1,1,0,0,1,1,0},//4{0,1,1,0,1,1,0,1},//5{0,1,1,1,1,1,0,1},//6{0,0,0,0,0,1,1,1},//7{0,1,1,1,1,1,1,1},//8{0,1,1,0,1,1,1,1}//9};void setup(){pinMode(SEG_A,OUTPUT);//设置为输出引脚pinMode(SEG_B,OUTPUT);pinMode(SEG_C,OUTPUT);pinMode(SEG_D,OUTPUT);pinMode(SEG_E,OUTPUT);pinMode(SEG_F,OUTPUT);pinMode(SEG_G,OUTPUT);pinMode(SEG_H,OUTPUT);pinMode(COM1,OUTPUT);pinMode(COM2,OUTPUT);pinMode(COM3,OUTPUT);pinMode(COM4,OUTPUT);}void loop(){Display(1,1);//第1位显示1delay(3);Display(2,2);//第2位显示2delay(3);Display(3,3);//第3位显示3delay(3);Display(4,4);//第4位显示4delay(3);}void Display(unsigned char com,unsigned char num)//显示函数,com可选数值范围1-4,num可选数值范围0-9{digitalWrite(SEG_A,LOW);//去除余晖digitalWrite(SEG_B,LOW);digitalWrite(SEG_C,LOW);digitalWrite(SEG_D,LOW);digitalWrite(SEG_E,LOW);digitalWrite(SEG_F,LOW);digitalWrite(SEG_G,LOW);digitalWrite(SEG_H,LOW);switch(com)//选通位选{case 1:digitalWrite(COM1,LOW);//选择位1digitalWrite(COM2,HIGH);digitalWrite(COM3,HIGH);digitalWrite(COM4,HIGH);break;case 2:digitalWrite(COM1,HIGH);digitalWrite(COM2,LOW);//选择位2digitalWrite(COM3,HIGH);digitalWrite(COM4,HIGH);break;case 3:digitalWrite(COM1,HIGH);digitalWrite(COM2,HIGH);digitalWrite(COM3,LOW);//选择位3digitalWrite(COM4,HIGH);break;case 4:digitalWrite(COM1,HIGH);digitalWrite(COM2,HIGH);digitalWrite(COM3,HIGH);digitalWrite(COM4,LOW);//选择位4break;default:break;}digitalWrite(SEG_A,table[num][7]);//a查询码值表digitalWrite(SEG_B,table[num][6]);digitalWrite(SEG_C,table[num][5]);digitalWrite(SEG_D,table[num][4]);digitalWrite(SEG_E,table[num][3]);digitalWrite(SEG_F,table[num][2]);digitalWrite(SEG_G,table[num][1]);digitalWrite(SEG_H,table[num][0]);}






0 0
原创粉丝点击