51单片机实验程序 |
您所在的位置:网站首页 › 清翔电子单片机原理图 › 51单片机实验程序 |
注意:本实验采用清翔电子51单片机开发板(同样的51单片机开发板,不同型号,内部设计会有一定差异,程序不一定适用)
每段程序都有现象图,同型号单片机保证能用。
给我点个赞,谢谢!
1、数码管知识 现象图: 3、数码管动态显示 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。 所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。 #include #define uchar unsigned char #define uint unsigned int sbit DU = P2^6; sbit WE = P2^7; uchar code table[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};//0-9,这里用code是把它放到ROM区,节省RAM区 void delay(uint z)//约1ms延时 { uint x,y; for(x = z; x > 0; x--) for(y = 114; y > 0 ; y--); } void display(uint i)//显示程序 { uchar bai,shi,ge; bai = i/100; //521/100=5 shi = i%100/10; //521%100/10=2 ge = i%10; //521%10=1 //第一位数码管 P0 = 0xFF; //清除断码 WE = 1; //打开位选锁存器 P0 = 0xFE; //1111 1110 WE = 0; //锁存位选数据 DU = 1; //打开段选锁存器 P0 = table[bai]; DU = 0; //锁存位选数据 delay(5); //第二位数码管 P0 = 0xFF; //清除断码 WE = 1; //打开位选锁存器 P0 = 0xFD; //1111 1101 WE = 0; //锁存位选数据 DU = 1; //打开段选锁存器 P0 = table[shi]; DU = 0; //锁存位选数据 delay(5); //第三位数码管 P0 = 0xFF; //清除断码 WE = 1; //打开位选锁存器 P0 = 0xFB; //1111 1011 WE = 0; //锁存位选数据 DU = 1; //打开段选锁存器 P0 = table[ge]; DU = 0; //锁存位选数据 delay(5); } void main() { while(1) { display(521);//调用上面的显示函数 } }现象图: 大家自己在编写这块程序要注意一个问题,uchar 范围为0-255 uint 为0-65535,这个错误我一开始也犯了。搞得我超范围的数显示不出来。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |