您现在的位置: 主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > 51单片机--8 位数码管动态显示 12 位数字 -
本文所属标签:
为本文创立个标签吧:

51单片机--8 位数码管动态显示 12 位数字 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]
51单片机,要求用 8 位数码管动态显示 12 位学号。还要用按键调整走动速度,C语言的。//-------------------------------------------#include #include sbit k_add = P3^1;sbit k_sub = P3^4;//------

51单片机,要求用 8 位数码管动态显示 12 位学号。

本文引用地址: http://www.21ic.com/app/mcu/201806/764384.htm


还要用按键调整走动速度,C语言的。


//-------------------------------------------

#include

#include


sbit k_add = P3^1;

sbit k_sub = P3^4;

//-------------------------------------------

unsigned char code SEG7[] = {

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};

unsigned char DISP_BUFF[] = {

10, 10, 10, 10, 10, 10, 10, 10,

1, 3, 9, 2, 5, 8, 0, 7, 4, 6, 3, 2,

10, 10, 10, 10, 10, 10, 10, 10};


unsigned char j = 0, k = 1;

//-------------------------------------------

void DelayMS(unsigned int x)

{

unsigned char i;

while(x--) for(i = 200; i > 0; i--);

}

//-------------------------------------------

void display(unsigned char x)

{

unsigned char i, w = 128;


for(i = 0; i < 8; i++) { //显示八位数码

P0 = SEG7[DISP_BUFF[i + k]];

P2 = w; DelayMS(1); P2 = 0;

w = _cror_(w, 1);

}


j++;

if (j > x) { //显示遍数达到了预置数

j = 0;

k++; //那么从下一位开始显示

if (k == 20) k = 0;

}

}

//-------------------------------------------

void main()

{

unsigned char d = 30;//显示30遍,移动一位

while(1) {

if (!k_add) {

display(d); //延时

if (!k_add) { //消抖

d += 2; if (d > 50) d = 50;//遍数增加,移位就变慢

while (!k_add) display(d);

} }

if (!k_sub) {

display(d);

if (!k_sub) {

d -= 2; if (d < 10) d = 10;

while (!k_sub) display(d);

}}

display(d);

P1 = d; //显示当前遍数

}

}

//-------------------------------------------


程序仿真运行时的截图:



说明:


程序中的显示部分,也是轮流显示八位数,也是属于常见的动态显示。


但是,稍有不同的是:做而论道给它增加了一个参数 k。


k = 0 时,就和一般的显示程序相同,显示 DISP_BUFF[] 的第 0~7 个元素。


调用显示程序 x 遍后(x 预设值为 30),再令 k 加一。


k = 1 时,就要显示 DISP_BUFF[] 的第 1~8 个元素。


这样就可以在数码管上看到数据移动了一位。


以此类推,k 不断的加一,就会使得 DISP_BUFF[] 中各个元素,依照先后顺序,每次都取出 8 个元素,显示在数码管上。


当 k + 8 为 DISP_BUFF[] 中最末尾的元素时,再令 k = 0,这时就又会从头开始移位显示。


利用按键,对变量 x (在主函数中的变量是 d)的大小进行修改,即可控制数码滚动显示的速度。


d 的范围设定为 10~50,数值越大则滚动越慢。


d 的当前值,可以在 P1 口看到。





              查看评论 回复



嵌入式交流网主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > 51单片机--8 位数码管动态显示 12 位数字 -
 

"51单片机--8 位数码管动态显示 12 位数字 -"的相关文章

网站地图

围观()