📄 16-32.c
字号:
#define uchar unsigned char
#define uint unsigned int
#include <reg52.h>
#include"1302.h"
#include"zifu.h"
#include"18b20.h"
#include"type.h"
#include"dis.h"
sbit G=P1^7; //P1.7为显示允许控制信号端
sbit CLK=P1^6; //P1.6为输出锁存器时钟信号端
sbit SCLR=P1^5; //移位寄存器的清0端
void main()
{
uchar i;
uchar ucAddr = 0x81;
SCON=0x00; //串口工作模式0:移位寄存器方式
TMOD=0x01; //定时器T0工作在试1:16位方式
TR0=1; //启动定时器
P1=0x3f; //P1口初值允许接收,锁存,显示
IE=0x82; //允许定时器T0中断
Init_1302();
Init_DS18B20();
while(1)
{
delay(500); //延时2S
disp_dis();
send_time(); // 读时间
disp_1302();
ReadTemperature();
disp_wd();
for(i=0;i<32;i++) //显示效果:卷帘入
{
dispram[i]=0;
dispram0[i]=0;
if(i%2)delay(100);
}
}
}
/*-------------延时------------*/
void delay(unsigned int dt)
{
register unsigned char bt;
for(;dt;dt--)
for(bt=0;bt<225;bt++);
}
/*-------显示屏扫描(定时器T0中断)函数-------------*/
void leddisplay(void) interrupt 1 using 1
{
register unsigned char i,j=BLKN;
TH0=0xfb; //设定显示屏刷新率每秒62.5帧
TL0=0x30;
i=P1; //读出当前显示的行号
i=++i&0x0f; //行号加1屏蔽高四位
do
{
j--;
SBUF=~dispram0[i*BLKN+j]; //送显示数据
//SBUF=dispram0[i*BLKN+j];
while (!TI);TI=0;
}
while(j); //完成一行数据传输
j=BLKN;
do
{j--;
SBUF=~dispram[i*BLKN+j];
//SBUF=dispram[i*BLKN+j];
while(!TI);TI=0;
}
while(j);
G=1; //消隐(关闭显示)
P1&=0xf0; //行号端清0
CLK=1; //显示数据输出到锁存寄存器
P1 |=i; //写入行号
CLK=0; //锁存器显示数据
G=0; //打开显示
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -