当前位置:文档之家› 关于单片机的一些小实验_06 一位数码管静态显示

关于单片机的一些小实验_06 一位数码管静态显示

#define SMG5_OFF() (P0_4=1) //定义"SMG5_OFF()"为P0.4输出高电平,不选中数码管5
#define SMG6_ON() (P0_5=0) //定义"SMG6_ON()"为P0.5输出低电平,选中数码管6
#define SMG6_OFF() (P0_5=1) //定义"SMG6_OFF()"为P0.5输出高电平,不选中数码管6
// 0 1 2 3 4 5 6 7 8 9 A b C d E F
/********************************************************************************************
*函数名称:main()
*功能:控制数码管1~8每个依次显示"0"~"F"这十六个字符
* 4.短接P0.0__SMG1
*短接P0.1__SMG2
*短接P0.2__SMG3
*短接P0.3__SMG4
*短接P0.4__SMG5
*短接P0.5__SMG6
*短接P0.6__SMG7
*短接P0.7__SMG8
*短接P2.7__SI1
*短接P2.6__RCK1
*短接P2.5__SCK1
*日期:2014年04月23号
typedef unsigned int uint32; //无符号32位整型变量
typedef signed int int32; //有符号32位整型变量
typedef float fp32; //单精度浮点数(32位长度)
typedef double fp64; //双精度浮点数(64位长度)
*函数名称:Delay()
*功能:软件延时
*入口参数:count延时参数,值越大,延时越长
*出口参数:无
*********************************************************************************************/
void Delay(uint16 count)
#define SMG4_ON() (P0_3=0) //定义"SMG4_ON()"为P0.3输出低电平,选中数码管4
#define SMG4_OFF() (P0_3=1) //定义"SMG4_OFF()"为P0.3输出高电平,不选中数码管4
#define SMG5_ON() (P0_4=0) //定义"SMG5_ON()"为P0.4输出低电平,选中数码管5
*********************************************************************************************/
void main (void)
{
uint8 i,j;
while(1) //死循环
{
/*依次选中数码管1~8,每个数码管依次显示"0"~"F"这十六个字符*/
default:
break;
}
}
/* 7段共阳数码管显示字符"0"~"F"的编码表*/
const uint8 DISPLAY_TAB[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,};
SMG2_ON();
break;
case 3:
SMG3_ON();
break;
case 4:
SMG4_ON();
break;
case 5:
SMG5_ON();
break;
case 6:
SMG6_ON();
break;
case 7:
SMG7_ON();
break;
case 8:
SM****************************************************************************************/
/*定义位变量*/
sbit P0_0 = P0 ^ 0;
sbit P0_1 = P0 ^ 1;
sbit P0_2 = P0 ^ 2;
#define SMG2_OFF() (P0_1=1) //定义"SMG2_OFF()"为P0.1输出高电平,不选中数码管2
#define SMG3_ON() (P0_2=0) //定义"SMG3_ON()"为P0.2输出低电平,选中数码管3
#define SMG3_OFF() (P0_2=1) //定义"SMG3_OFF()"为P0.2输出高电平,不选中数码管3
{
uint8 i;
while(--count != 0)
{
for(i = 0; i < 125; i++); // ";"表示空语句,CPU空转。
}// i从0加到125,在12M晶体下CPU大概耗时1毫秒
}
/********************************************************************************************
*函数名称:SMG_Select()
*功能:选中要进行静态显示的一位数码管
*入口参数:num数码管编号(1~8)
*出口参数:无
*********************************************************************************************/
#define SCK1_H() (P2_5=1) //定义"SCK1_H()"为P2.5输出高电平,作为74HC595_1的时钟输入信号
#define SCK1_L() (P2_5=0) //定义"SCK1_L()"为P2.5输出低电平,作为74HC595_1的时钟输入信号
/********************************************************************************************
for(i=1;i<9;i++)
{
SMG_Select(i); //选中相应的数码管
for(j=0;j<16;j++)
{
SendDataTo74HC595_1(DISPLAY_TAB[j]); //被选中的数码管依次显示"0"~"F"这十六个字符
Delay(200); //延时
}
}
}
}
{SI1_H();} // SI1输出高电平
else
{SI1_L();} // SI1输出低电平
dat<<=1; //将要发送的1字节数据左移一位
SCK1_H(); // SCK1为高电平
}
RCK1_H(); // RCK1为高电平
}
/********************************************************************************************
sbit P0_3 = P0 ^ 3;
sbit P0_4 = P0 ^ 4;
sbit P0_5 = P0 ^ 5;
sbit P0_6 = P0 ^ 6;
sbit P0_7 = P0 ^ 7;
sbit P2_7 = P2 ^ 7;
sbit P2_6 = P2 ^ 6;
sbit P2_5 = P2 ^ 5;
*函数名称:SendDataTo74HC595_1()
*功能:向74HC595_1发送一字节数据
*入口参数:data要发送的数据
*出口参数:无
*注意:发送数据时,高位先发送
*********************************************************************************************/
#define SMG8_OFF() (P0_7=1) //定义"SMG8_OFF()"为P0.7输出高电平,不选中数码管8
#define SMG_ALL_OFF() (P0=0xFF) //定义"SMG_ALL_OFF()"为P0口输出高电平,全部数码管都不选中
#define SI1_H() (P2_7=1) //定义"SI1_H()"为P2.7输出高电平,作为74HC595_1的数据输入信号
*********************************************************************************************/
#include "reg52.h" //包含头文件
/*与编译器无关的数据类型定义*/
/********************************************************************************************/
#define SI1_L() (P2_7=0) //定义"SI1_L()"为P2.7输出低电平,作为74HC595_1的数据输入信号
#define RCK1_H() (P2_6=1) //定义"RCK1_H()"为P2.6输出高电平,作为74HC595_1的片选输入信号
相关主题