刚学了静态数码管,想试试动态的,动态的不知道哪里出了问题,麻烦大佬帮忙看看;前一个是静态的,是可以的
程序代码:
#include<reg51.h> void delay10ms(unsigned char i) //延迟函数(for循环需要时间) 当第二层for函数为p=100时(经过测量),i为多少,延迟时间就是i*10ms { //目的是在两次灯亮之间空出时间 int n,p; for(n=0;n<i;n++) for(p=0;p<200;p++); } void main() { unsigned int i; unsigned char s[12]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98}; //以下两行为片选语句,不可以删除。否则无法操作LED P2 = 0xa0;P0 = 0x00;P2 = 0; //选中蜂鸣器,关闭蜂鸣器 P2 = 0xC0;P0 = 0xFF;P2 = 0; //位选全部选中 P2 = 0xE0; //选中数码管 while(1) { for(i=0;i<10;i++) { P0=s[i]; delay10ms(50); } } }
程序代码:
#include<reg51.h> void delay10ms(unsigned char i) //延迟函数(for循环需要时间) 当第二层for函数为p=100时(经过测量),i为多少,延迟时间就是i*10ms { //目的是在两次灯亮之间空出时间 int n,p; for(n=0;n<i;n++) for(p=0;p<200;p++); } void main() { unsigned int i; unsigned char duanma[10]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98}; unsigned char weima[8]={0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f}; //以下两行为片选语句,不可以删除。否则无法操作LED P2 = 0xa0;P0 = 0x00;P2 = 0; //选中蜂鸣器,关闭蜂鸣器 while(1) { for(i=0;i<8;i++) { P2=weima[i]; P0=duanma[i+1]; delay10ms(100); P0=0xff; } } }