📄 main.c
字号:
//==================================================================================
//预定义包含文件
//==================================================================================
#include <reg51.h>
#include <intrins.h>
#include <ds18b20.c>
//=================================================================================================
sbit clk_led=P0^3;//定义数码管时钟线
sbit dat_led=P0^2;//定义数码管数据线
//=================================================================================================
code unsigned char number[]={0x11,0xD7,0x32,0x92, /* 0 1 2 3 */
0xD4,0x98,0x18,0xD3, /* 4 5 6 7 */
0x10,0x90,0x50,0x1C, /* 8 9 A B */
0x39,0x16,0x38,0x78, /* C D E F */
};
//==================================================================================================
void shift(unsigned char b)//数码管送数程序,依次向送数码管送8bit数
{
unsigned char i;
for(i=0;i<8;i++)
{
clk_led=0; //时钟线清零
if(!(b&0x80))dat_led=0; //数据线送0,与、判断,往数据线送最高位 0x80为二进制数:10000000
else dat_led=1; //数据线送1
clk_led=1; //上跳
clk_led=0; //下跳
dat_led=0; //dat清零,确保数据的准确性
b=b<<1; //左移一位
}
}
//==================================================================================================
//数码管送数子程序
//例如要向数码管送10000,则调用方式为:shiftn(10000);
void shiftn(unsigned long int c)//
{
shift(number[(int)(c%10)]);//送个位
if(c>9){shift(number[(int)(c%100/10)]);}//送十位
if(c>99){shift(number[(int)(c%1000/100)]);}//送百位
if(c>999){shift(number[(int)(c%10000/1000)]);}//送千位
if(c>9999){shift(number[(int)(c%100000/10000)]);}//送万位
if(c>99999){shift(number[(int)(c%1000000/100000)]);}//送十万位
if(c>999999){shift(number[(int)(c%10000000/1000000)]);}//送百万位
shift(0xff);//送暗
}
main()
{
long int i;
while(1)
{
shiftn(readtemp());
for(i=0;i<10000;i++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -