?? digtal led.c
字號:
/******************************************************************************/
/**
/** 功能描述:通過AT89S/C52,DS18B20和6位數碼管,采集溫度并在數碼管上實時顯示。
/** 并有相應的不同顏色的led和蜂鳴器指示。
/** 創 建 人:chiusir@yahoo.cn 日期:2008-04-06 */
/** 修 改 人: 日期:2008-04-18 */
/** 其他說明:
/******************************************************************************/
#include<regx51.h>
#include <intrins.h>
#define U8 unsigned char
#define U16 unsigned int
/*******************************************************************************
*** 函 數 名: void DLY_us(U8 x)
*** 功能描述: 微秒級延時;
*** 全局變量: NO !
*** 輸 入: x !
*** 輸 出: NO !
*** 修 改 人: 日期:2008-04-18
*** 函數說明:
*** //1-5,2-7,3-9 ,5--16.5us,10-30.4,22-52,25-58,35-78,61-125,125-250,250--500us
/******************************************************************************/
void DLY_us(U8 x) //x取值1~255;
{
while(--x);
}
/*******************************************************************************
*** 函 數 名: void DLY_ms(U16 x)
*** 功能描述: 毫秒級延時;
*** 全局變量: NO !
*** 輸 入: U16 x !
*** 輸 出: NO !
*** 修 改 人: 日期:2008-04-18
*** 函數說明:
/******************************************************************************/
void DLY_ms(U8 x) //x取值1~255;
{
U8 i,j;
for(i=0;i<x;i++)
for(j=0;j<200;j++)
{
_nop_();
_nop_();
}
}
/*******************************************************************************
*** 函 數 名: void Show_8LED(U16 dig)
*** 功能描述: 把數字轉化為5位LED顯示
*** 全局變量: NO !
*** 輸 入: 從DB18B20讀取的16位原始數據:低11位數據位,高5位為符號位!
//0,1,2,3,4,5,6,7,8,9,-
U8 code LED_IMG[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
P0.0--4依次為符號位,百位,十位,個位,十分為,百分位
P1接8段數碼管
*** 輸 出: NO !
*** 函數說明:
/******************************************************************************/
//0,1,2,3,4,5,6,7,8,9,-
U8 code LED_IMG[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
void Show_8LED(int tmv)
{
U8 ge,shi,bai,shifen,baifen,neg=0;
if(tmv<0)
{
tmv=-tmv;
neg=1;
}
bai=tmv/10000;
shi=(tmv%10000)/1000;
ge =(tmv%1000)/100;
shifen=(tmv%100)/10;
baifen=tmv%10;
for(tmv=0;tmv<80;tmv++)
{
if(neg)
{
P0=0x01; //符號位
P1=LED_IMG[10];
DLY_ms(3); //this is the smallest interval
}
P0=0x02;
P1=LED_IMG[bai]|0X80;
DLY_ms(3);
P0=0x04;
P1=LED_IMG[shi]|0X80;
DLY_ms(3);
P0=0x08;
P1=LED_IMG[ge]&0x7f; //dot always.
DLY_ms(3);
P0=0x10;
P1=LED_IMG[shifen]|0X80;
DLY_ms(3);
P0=0x20;
P1=LED_IMG[baifen]|0X80;
DLY_ms(3);
P1=0xff;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -