📄 new2.c
字号:
#include <reg51.h> //包括一个52标准内核的头文件
#include<absacc.h>
#include<stdlib.h>
#include <intrins.h> /*used for _nop_() function*/
sbit SDATA_595 =P0^0 ;/*串行数据输入*/
sbit SCLK_595 = P0^1;/*移位时钟脉冲*/
sbit RCK_595 =P0^2 ; /*输出锁存器控制脉冲*/
sbit YELLOW=P2^0; //黄色
sbit ALARM=P2^1; //报警
sbit RED=P2^2; //红色
bit b_flash;
//#define TM_second XBYTE[0xFE00]
//#define TM_minute XBYTE[0xFE02]
//#define TM_hour XBYTE[0xFE04]
#define TM_week XBYTE[0xFE06]
#define TM_day XBYTE[0xFE07]
#define TM_month XBYTE[0xFE08]
#define TM_year XBYTE[0xFE09]
#define REG_A XBYTE[0xFE0A]
#define REG_B XBYTE[0xFE0B]
#define REG_C XBYTE[0xFE0C]
#define REG_D XBYTE[0xFE0D]
#define RAM_114 XBYTE[0xFE0e]
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define WriteDeviceAddress 0xa0 //定义器件在IIC总线中的写地址
#define ReadDviceAddress 0xa1 //器件在IIC总线中的读地址
sbit SCL=P1^6; //定义IIC器件串行总线
sbit SDA=P1^7; //定义IIC器件串行总线
unsigned char Temp;
unsigned char Dis_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; /*0~9的共阴极段码表*/
unsigned char Dis_Date[5];
unsigned char CarID =2134 ;
int countv;
int count,countv;
int counter;
uchar bdata dat;
void DelayMs(unsigned int number) //延时函数
{
unsigned char temp;
for(;number!=0;number--)
{
for(temp=112;temp!=0;temp--) ;
}
}
///}
/***************************
初始化(定时器0为定时器,定时器1为计数器)
***************************/
void Init()
{
TMOD=0x51;
TL0 = -50000%256;
TH0 = -50000/256; //2.5ms定时
TR0 = 1; //"T0运行控制"
ET0 = 1; //1"定时器0中断允许"
TR1 = 1; //"T1运行控制"
TH1=TL1=0;
EA=1; //总中断允许
counter=0; //计数器清零
}
//*延时子程序void Delay(unsinged char data i)*/
void Delay(unsigned char i)
{
while(--i);
}
void UPdate( )
{
float data temp2;//定义存放计算得到的速度值
uchar i,ch;
int TM_hour=15;
int TM_minute=30;
temp2=3.6*3*0.4*counter;
Temp=(unsigned int)temp2;//强制转型
Dis_Date[5]=Temp%10;
Dis_Date[4]=Temp/10;
Dis_Date[3]=TM_minute%10;
Dis_Date[2]=TM_minute/10;
Dis_Date[1]=TM_hour%10;
Dis_Date[0]=TM_hour/10;
if(Temp>35)
{
YELLOW=0; //黄色
ALARM=1; //报警
RED=1; //红色
}
else if((Temp)>20&&(Temp<35))
{
YELLOW=1; //黄色
ALARM=1; //报警
RED=0; //红色
}
else
{};
}
/*写数据到74HC595函数*/
void WR_595(unsigned char data num2 )
{
unsigned char data count1;
for(count1=0;count1<=7;count1++)
{
num2<<=1; /*右移位*/
SDATA_595=CY;
_nop_();
_nop_();
SCLK_595=0;
_nop_();
_nop_();
SCLK_595=1; /*产生上生沿*/
}
}
/****************************************************************/
/*更新74HC595输出数据函数void Out_595(void)*/
void Out_595(void)
{
RCK_595=0;
_nop_();
_nop_();
RCK_595=1; /*上升沿锁存数据*/
}
void Led_Drive(void)
{
int i;
for(i=0;i<=5;i++)//一次输出六位
{
WR_595(Dis_Tab[Dis_Date[i]]);
}
Out_595();
Delay(1000);
TL1=0;
}
/****************************************************************/
main()
{
Init();
YELLOW=0;
ALARM=0;
RED=0;
while(1)
{
}
}
void Time0 (void) interrupt 1
{
uchar scan;
TR0=0;
Delay(1000);
scan++;
if(scan==20)
{ scan = 0;
counter=TL1;
UPdate();
Led_Drive();
}
TL0 = -50000%256;
TH0 = -50000/256; //2.5ms定时
TR0=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -