51CPU板P0口 接 键盘显示板“DATA”口;
51CPU板P1口 接 键盘显示板“P0”口;
51CPU板P2口 接 “18B20*8”板“J1”口;
51CPU板P3口 接 键盘显示板“KEY-B”口;
“18B20*8”板上JP1插到“ON”端
按键功能:LEFT :自动模式/手动模式 切换
UP :手动模式下 显示通道加一
DOWN :手动模式下 显示通道减一论文范文http://www.chuibin.com/
#include <AT89X52.h>
#include <string.h>
#include <led.h>
uchar dis_buf[led_number]; //定义显示数据寄存
typedef struct typNumber //------字符字模显示数据结构------
{
uchar Index[1];
uchar Msk[1];
};
struct typNumber code duanma[] = { //段码数据
"0",0x3f, // 0 00
"1",0x06, // 1 01
"2",0x5b, // 2 02
"3",0x4f, // 3 03
"4",0x66, // 4 04
"5",0x6d, // 5 05
"6",0x7d, // 6 06
"7",0x07, // 7 07
"8",0x7f, // 8 08
"9",0x6F, // 9 09
"A",0x77, // A 0A
"B",0x7c, // b 0B
"C",0x39, // C 0C
"D",0x5e, // d 0D
"E",0x79, // E 0E
"F",0x71, // F 0F
"-",0x40, // - 10
"r",0x50, // r 11
"o",0x63, // o 12
" ",0x00, // " " 13
};
uchar code Bit_Led[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位码数据
void delay_1(uchar x)
{ uchar i,j;
for(i=0;i<x;i++)
for(j=0;j<20;j++);
}
void Led_Disp(uchar *num)
{ uchar i,j,uLen; //变量定义
uLen=strlen(num); //得到要显示的数字的个数
if(uLen > led_number)
{ dis_buf[0]=0x50;dis_buf[1]=0x50;dis_buf[2]=0x79; //显示“Err”
for ( i=3;i<led_number;i++ )
{ dis_buf[i]=0x00; }
}
else
{ for ( i=0;i<uLen;i++ )
{
for(j=0;j<sizeof(duanma)/sizeof(duanma[0]);j++)
{
if(num[(uLen-1)-i] == duanma[j].Index[0])
break;
}
dis_buf[i] = duanma[j].Msk[0];
}
for ( i=uLen;i<led_number;i++ )
{ dis_buf[i]=0x00; }
}
for (j=0;j<50;j++) //论文范文http://www.chuibin.com/ 刷新100次
{
for (i=0;i<led_number;i++) //逐个显示数字
{
if (i==1)
led_data = dis_buf[i]|0x80; //显示的第二位加小数点
else
led_data = dis_buf[i]; //发送段码
led_bit = Bit_Led[i]; //发送位码
delay_1(1);
led_bit = 0xff; } }}2509