3.单片机 数码管显示
目录
本专栏所有引脚及端口 代码及注解 选择的是BST-V51 单片机
需结合具体的单片机原理图进行分析
接下来的本专栏都选择该单片机及其原理图分析来进行操作
3.1 静态数码管显示
P0 可以定义控制数码管的位选和段选信号所选中的数码管
P2^7 号引脚控制位选信号,P2^6 控制段选信号
3.2 动态数码管显示
1 #include <STC89C5xRC.H> 2 #include <DELAYMS.H> 3 char leddate[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };//定义数组 0-9 的数码管显示 4 void ShuMaGuan(unsigned int choose,int number){ 5 switch(choose){ 6 case 1:P0 = 0xfe;P27 = 1;P27 = 0;break; 7 case 2:P0 = 0xfd;P27 = 1;P27 = 0;break; 8 case 3:P0 = 0xfb;P27 = 1;P27 = 0;break; 9 case 4:P0 = 0xf7;P27 = 1;P27 = 0;break; 10 case 5:P0 = 0xef;P27 = 1;P27 = 0;break; 11 case 6:P0 = 0xdf;P27 = 1;P27 = 0;break; 12 case 7:P0 = 0xbf;P27 = 1;P27 = 0;break; 13 case 8:P0 = 0x7f;P27 = 1;P27 = 0;break; 14 default: P10 = 0; delay_ms(500);P10 = 1; break;//如果没有选中数码管则点亮红灯 500ms 15 } 16 P0 = leddate[number]; 17 P26 = 1; P26 = 0; 18 //数码管实现消影(避免出现错乱) 段码清 0,消影 19 //位选 段选(中间需要将段选清零 P26 = 0) 位选 段选 清零 位选 段选 20 //清零:消除影响 21 } 22 void LiuDong(){ 23 unsigned int i; 24 for(i = 8;i>=0;i-- ){ 25 ShuMaGuan(i,i); 26 delay_ms(300); 27 if(i == 0){ 28 i = 9; 29 } 30 } 31 } 32 int main(){ 33 while(1){ 34 LiuDong(); 35 } 36 }
我目前是一名计算机专业的学生,我会不断地在各大平台分享我的所学,让知识得到共享,希望大家多多关注,一起从学习计算机基础直到计算机的深入式学习,让我们共同进步吧。
转载于: https://zhuanlan.zhihu.com/p/508409286
本文来自博客园,作者:xiaoxie001,转载请注明原文链接:https://www.cnblogs.com/xiaoxie001/p/16215746.html