#include
/*
**********************************************************************
* 本地数据类型/宏定义
**********************************************************************
*/
typedef signed char int8; //8位有符号字符型
typedef signed int int16; //16位有符号整型
typedef signed long int32; //32位有符号长整型
typedef unsigned char uint8; //8位无符号字符型
typedef unsigned int uint16; //16位无符号整型
typedef unsigned long uint32; //32位无符号长整型
/*
**********************************************************************
* 单片机IO口位定义
**********************************************************************
*/
sbit DATA_A_595 = P1^0; //74HC595 串行数据输入引脚
sbit SHIFT_CLOCK_595 = P1^4; //74HC595 移位寄存器时钟信号输入引脚
sbit LATCH_CLOCK_595 = P2^3; //74HC595 锁存器时钟信号输入引脚
sbit duanxuan = P2^5; //数码管驱动芯片74HC573 段选
sbit weixuan = P2^6; //数码管驱动芯片74HC573 位选
/*
**********************************************************************
* 本地全局变量/数组定义
**********************************************************************
*/
uint8 zifu_test; //自加变量 测试我们编码表
uint8 code zifu[19]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x7f,0xbf}; //共阳数码管编码表
/*
**********************************************************************
* 函数原型声明
**********************************************************************
*/
void delay(uint16 x_ms); //延迟 x_ms*1 毫秒
void write_byte_74hc595(uint8 dat); //给595芯片写一字节数据函数
void delay_100us(uint16 x_100us); //延迟 x_100*100 微秒
void Disp_smg_number(uint8 x_smg,uint8 count_smg,uint32 number,uint16 time);//把一个任意的八位数以内的十进制数,通过动态扫描显示在数码管上,可以指定扫描时间
/*********************************************************************
*函数名称:main
*函数功能:主函数
*函数调用:
*参数列表:无
*返 回 值:无
*结 果:
*备 注:
*********************************************************************/
void main(void)
{
P1=0XFF;
write_byte_74hc595(0X40); //给595芯片写一字节数据函数
write_byte_74hc595(0X00); //给595芯片写一字节数据函数 关掉595被控制的所有功能
zifu_test = 0; //自加变量 测试我们编码表
while(1)
{
/***************************************************************************************************
//数码管消斗试验
duanxuan = 0; //数码管驱动芯片74HC573 段选
weixuan = 0; //数码管驱动芯片74HC573 位选
P0 =zifu[1]; //数码管段码显示 0 zifu_test自加变量 测试我们编码表
duanxuan = 1; //数码管驱动芯片74HC573 段选
duanxuan = 0; //数码管驱动芯片74HC573 段选
duanxuan = 0; //数码管驱动芯片74HC573 段选
weixuan = 0; //数码管驱动芯片74HC573 位选
P0 =0X01; //数码管段码显示 0
weixuan = 1; //数码管驱动芯片74HC573 位选
weixuan = 0; //数码管驱动芯片74HC573 位选
delay(1000); //延迟 x_ms*1 毫秒
duanxuan = 0; //数码管驱动芯片74HC573 段选
weixuan = 0; //数码管驱动芯片74HC573 位选
P0 =zifu[2]; //数码管段码显示 0 zifu_test自加变量 测试我们编码表
duanxuan = 1; //数码管驱动芯片74HC573 段选
duanxuan = 0; //数码管驱动芯片74HC573 段选
duanxuan = 0; //数码管驱动芯片74HC573 段选
weixuan = 0; //数码管驱动芯片74HC573 位选
P0 =0X02; //数码管段码显示 0
weixuan = 1; //数码管驱动芯片74HC573 位选
weixuan = 0; //数码管驱动芯片74HC573 位选
delay(1000); //延迟 x_ms*1 毫秒
duanxuan = 0; //数码管驱动芯片74HC573 段选
weixuan = 0; //数码管