/*====================================================================
调试要求:
1.MCU:AT89S52芯片或AT89C52
2.晶振:12MHz
功能:测试时钟模块,时钟模块显示765432
====================================================================*/
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit dis_bit1=P2^7;//定义数码管控制口
sbit dis_bit2=P2^6;//定义数码管控制口
sbit dis_bit3=P2^4;//定义数码管控制口
sbit dis_bit4=P2^3;//定义数码管控制口
sbit dis_bit5=P2^1;//定义数码管控制口
sbit dis_bit6=P2^0;//定义数码管控制口
#define smg_data P0//定义数码管数据口
void delay_50us(uint t);//延时50*T微妙函数的声明
void display1(uchar dis_data);//数码管1显示子程序
void display2(uchar dis_data);//数码管2显示子程序
void display3(uchar dis_data);//数码管3显示子程序
void display4(uchar dis_data);//数码管4显示子程序
void display5(uchar dis_data);//数码管5显示子程序
void display6(uchar dis_data);//数码管6显示子程序
//共阳数码管断码表
const unsigned char tabl1[17]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
// 0 1 2 3 4 5
0x82,0xf8,0x80,0x90,0x88,0x83,
//6 7 8 9 A B
0xc6,0xa1,0x86,0x8e,0xb6};
// C D E F 三
//主程序
void main()
{
P3=0x00;
//接下来开始编写让数码管显示的程序
while(1)
{
display1(7);
display2(6);
display3(5);
display4(4);
display5(3);
display6(2);
}
}
//***************************************************************
//功能:把数据1显示在数码管1上
void display6(uchar dis_data)
{
smg_data=tabl1[dis_data];//送显示断码
dis_bit6=0;//锁存数据
delay_50us(40);
dis_bit6=1;
}
//***************************************************************
//功能:把数据1显示在数码管1上
void display5(uchar dis_data)
{
smg_data=tabl1[dis_data];//送显示断码
dis_bit5=0;//锁存数据
delay_50us(40);
dis_bit5=1;
}
//***************************************************************
//功能:把数据1显示在数码管1上
void display4(uchar dis_data)
{
smg_data=tabl1[dis_data];//送显示断码
dis_bit4=0;//锁存数据
delay_50us(40);
dis_bit4=1;
}//***************************************************************
//功能:把数据1显示在数码管1上
void display3(uchar dis_data)
{
smg_data=tabl1[dis_data];//送显示断码
dis_bit3=0;//锁存数据
delay_50us(40);
dis_bit3=1;
}
//***************************************************************
//功能:把数据1显示在数码管1上
void display1(uchar dis_data)
{
smg_data=tabl1[dis_data];//送显示断码
dis_bit1=0;//锁存数据
delay_50us(40);
dis_bit1=1;
}
//***************************************************************
//功能:把数据1显示在数码管1上
void display2(uchar dis_data)
{
smg_data=tabl1[dis_data];//送显示断码
dis_bit2=0;//锁存数据
delay_50us(40);
dis_bit2=1;
}
//**************************************************************************************************
//函数名称:void delay_50US(unsigned int t)
//功能: 延时50*t(us)
void delay_50us(uint t)
{
unsigned char j;
for(;t>0;t--)
{
for(j=19;j>0;j--);
}
}
阅读(781) | 评论(0) | 转发(0) |