亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
16x64點(diǎn)陣屏?xí)r鐘程序
[打印本頁(yè)]
作者:
騰飛的龍
時(shí)間:
2016-6-21 12:14
標(biāo)題:
16x64點(diǎn)陣屏?xí)r鐘程序
點(diǎn)陣屏不一樣所以驅(qū)動(dòng)也不一樣。點(diǎn)陣屏的接口是標(biāo)準(zhǔn)8x2接口,用8/1掃描、
#include "STC12C5A60S2.h"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar l_tmpDate[]={0,0,0,1,1,1,13};//秒分時(shí)日月周年08-05-15 12:00:00
uchar l_tmpdisplay[15];
code uchar Write_rtc_address[7]={0x80,0x82,0x84,0x86,0x88,0x8a,0x8c}; //秒分時(shí)日月周年 最低位讀寫位
code uchar Read_RTC_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d};
sbit SCK = P1^3; //DS1302時(shí)鐘;
sbit SDA = P1^4; //DS1302數(shù)據(jù);
sbit RST = P1^5;// DS1302復(fù)位;
uchar set=0; //按鍵選擇標(biāo)志位;
char key_flag=0;//按鍵加減標(biāo)志位;
uchar menue=0; //菜單選擇標(biāo)志位;
uchar ok=0; //確認(rèn)標(biāo)志位;
char miao,fen,shi,ri,yue,zhou,nian;/*時(shí)間日期數(shù)值標(biāo)志位;*/
/////////////DS1302寫一個(gè)字節(jié)/////
void Write_Ds1302_Byte(uchar temp)
{
uchar i;
for (i=0;i<8;i++) //循環(huán)8次 寫入數(shù)據(jù)
{
SCK=0;
SDA=temp&0x01; //每次傳輸?shù)妥止?jié)
temp>>=1; //右移一位
SCK=1;
}
}
/*****************/ /*
寫入DS1302
*/ /************************/
void Write_Ds1302(uchar address,uchar dat )
{
RST=0; _nop_();
SCK=0; _nop_();
RST=1; _nop_(); //啟動(dòng)
Write_Ds1302_Byte(address); //發(fā)送地址
Write_Ds1302_Byte(dat); //發(fā)送數(shù)據(jù)
RST=0; //恢復(fù)
}
/***************/ /*
讀出DS1302數(shù)據(jù)
*/ /*********************/
uchar Read_Ds1302 ( uchar address )
{
uchar i,temp=0x00;
RST=0; _nop_(); _nop_();
SCK=0; _nop_(); _nop_();
RST=1; _nop_();
_nop_();
Write_Ds1302_Byte(address);
for (i=0;i<8;i++) //循環(huán)8次 讀取數(shù)據(jù)
{
if(SDA)
{
temp|=0x80;
} //每次傳輸?shù)妥止?jié)
temp>>=1; //右移一位
SCK=1; _nop_(); _nop_();
SCK=0;
}
RST=0; _nop_();
//以下為DS1302復(fù)位的穩(wěn)定時(shí)間
_nop_();
RST=0;
SCK=0; _nop_(); _nop_(); _nop_(); _nop_();
SCK=1; _nop_(); _nop_();
SDA=0; _nop_(); _nop_();
SDA=1; _nop_(); _nop_();
return (temp); //返回
}
/**************************/ /*
讀時(shí)鐘數(shù)據(jù)
*/ /***********************/
void Read_RTC(void) //讀取 日歷
{
uchar i,*p;
p=Read_RTC_address; //地址傳遞
for(i=0;i<7;i++) //分7次讀取 秒分時(shí)日月周年
{
l_tmpDate[i]=Read_Ds1302(*p);
p++;
}
}
/***************************/ /*
設(shè)定時(shí)鐘數(shù)據(jù)
*/ /************************/
void Set_RTC(void) //設(shè)定 日歷
{
uchar i,*p,tmp;
for(i=0;i<7;i++)
{ //BCD處理
tmp=l_tmpDate[i]/10;
l_tmpDate[i]=l_tmpDate[i]%10;
l_tmpDate[i]=l_tmpDate[i]+tmp*16;
}
Write_Ds1302(0x8E,0X00); //關(guān)閉寫保護(hù);
p=Write_rtc_address; //傳地址
for(i=0;i<7;i++) //7次寫入 秒分時(shí)日月周年
{
Write_Ds1302(*p,l_tmpDate[i]);
p++;
}
Write_Ds1302(0x8E,0x80); //打開寫保護(hù);
}
/*********8x16字模 ****************************/
//取模方式:逐行式 逆向 陰碼 寬x高=8x16
uchar code table[]={
/*-- 文字: 0 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
0x24,0x18,0x00,0x00,
/*-- 文字: 1 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x08,0x0E,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
0x08,0x3E,0x00,0x00,
/*-- 文字: 2 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x20,0x20,0x10,0x08,0x04,
0x42,0x7E,0x00,0x00,
/*-- 文字: 3 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x20,0x18,0x20,0x40,0x40,0x42,
0x22,0x1C,0x00,0x00,
/*-- 文字: 4 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x20,0x30,0x28,0x24,0x24,0x22,0x22,0x7E,0x20,
0x20,0x78,0x00,0x00,
/*-- 文字: 5 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x7E,0x02,0x02,0x02,0x1A,0x26,0x40,0x40,0x42,
0x22,0x1C,0x00,0x00,
/*-- 文字: 6 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x38,0x24,0x02,0x02,0x1A,0x26,0x42,0x42,0x42,
0x24,0x18,0x00,0x00,
/*-- 文字: 7 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x7E,0x22,0x22,0x10,0x10,0x08,0x08,0x08,0x08,
0x08,0x08,0x00,0x00,
/*-- 文字: 8 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,
0x42,0x3C,0x00,0x00,
/*-- 文字: 9 --*/ /*-- 宋體12;
此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x64,0x58,0x40,0x40,
0x24,0x1C,0x00,0x00,
/*-- 文字: - --*///10; /*-- 宋體12;
//此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
/*-- 文字: : --*///11; /*-- 宋體12;
//此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
////0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,
//0x18,0x18,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
0x18,0x18,0x00,0x00,
/*-- 文字: _ --*///12 /*-- 宋體12;
//此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,
/****************空格****13*****************/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,/*" ",0*/
//////////////C//14//////////////
//取模方式:逐行式 逆向 陰碼 寬x高=8x16
0x00,0x00,0x3C,0x3E,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
0x02,0x3E,0x3C,0x00,
//14 'a'-83;
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C, 0x42,0x78,0x44,
0x42,0x42,0xFC,0x00,0x00,/*"a",0*/
0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x1A,
0x26,0x42,0x42,0x42,0x26,0x1A,0x00,0x00,/*"b",1*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,
0x44,0x02,0x02,0x02,0x44,0x38,0x00,0x00,/*"c",2*/
0x00,0x00,0x00,0x60,0x40,0x40,0x40,0x78,
0x44,0x42,0x42,0x42,0x64,0xD8,0x00,0x00,/*"d",3*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,
0x42,0x7E,0x02,0x02,0x42,0x3C,0x00,0x00,/*"e",4*/
0x00,0x00,0x00,0xF0,0x88,0x08,0x08,0x7E,
0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,/*"f",5*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,
0x22,0x22,0x1C,0x02,0x3C,0x42,0x42,0x3C,/*"g",6*/
0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x3A,
0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,/*"h",7*/
0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x0E,
0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,/*"i",8*/
0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x38,
0x20,0x20,0x20,0x20,0x20,0x20,0x22,0x1E,/*"j",9*/
0x00,0x00,0x00,0x03,0x02,0x02,0x02,0x72,
0x12,0x0A,0x16,0x12,0x22,0x77,0x00,0x00,/*"k",10*/
0x00,0x00,0x00,0x0E,0x08,0x08,0x08,0x08,
0x08,0x08,0x08,0x08,0x08,0x3E,0x00,0x00,/*"l",11*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,
0x92,0x92,0x92,0x92,0x92,0xB7,0x00,0x00,/*"m",12*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,
0x46,0x42,0x42,0x42,0x42,0xE7,0x00,0x00,/*"n",13*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,
0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00,/*"o",14*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,
0x26,0x42,0x42,0x42,0x22,0x1E,0x02,0x07,/*"p",15*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,
0x44,0x42,0x42,0x42,0x44,0x78,0x40,0xE0,/*"q",16*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x77,
0x4C,0x04,0x04,0x04,0x04,0x1F,0x00,0x00,/*"r",17*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,
0x42,0x02,0x3C,0x40,0x42,0x3E,0x00,0x00,/*"s",18*/
0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x3E,
0x08,0x08,0x08,0x08,0x08,0x30,0x00,0x00,/*"t",19*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,
0x42,0x42,0x42,0x42,0x62,0xDC,0x00,0x00,/*"u",20*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,
0x42,0x24,0x24,0x14,0x08,0x08,0x00,0x00,/*"v",21*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEB,
0x49,0x49,0x55,0x55,0x22,0x22,0x00,0x00,/*"w",22*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x76,
0x24,0x18,0x18,0x18,0x24,0x6E,0x00,0x00,/*"x",23*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE7,
0x42,0x24,0x24,0x14,0x18,0x08,0x08,0x07,/*"y",24*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,
0x22,0x10,0x08,0x08,0x44,0x7E,0x00,0x00,/*"z",25*/
};
/************16x16 字模 ***************/
//取模方式:逐行式 逆向 陰碼 寬x高=16x16
uchar code table1[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x7F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"一",0*/
0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x1F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,/*"二",1*/
0x00,0x00,0x00,0x00,0xFE,0x3F,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x1F,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,/*"三",2*/
0x00,0x00,0x00,0x00,0xFE,0x3F,0x22,0x22,
0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
0x12,0x22,0x12,0x3C,0x0A,0x20,0x06,0x20,
0x02,0x20,0xFE,0x3F,0x02,0x20,0x00,0x00,/*"四",3*/
0x00,0x00,0xFE,0x3F,0x40,0x00,0x40,0x00,
0x40,0x00,0x40,0x00,0xFC,0x0F,0x20,0x08,
0x20,0x08,0x20,0x08,0x20,0x08,0x10,0x08,
0x10,0x08,0x10,0x08,0xFF,0x7F,0x00,0x00,/*"五",4*/
0x40,0x00,0x80,0x00,0x00,0x01,0x00,0x01,
0x00,0x00,0xFF,0x7F,0x00,0x00,0x00,0x00,
0x20,0x02,0x20,0x04,0x10,0x08,0x10,0x10,
0x08,0x10,0x04,0x20,0x02,0x20,0x00,0x00,/*"六",5*/
0x00,0x00,0xF8,0x0F,0x08,0x08,0x08,0x08,
0x08,0x08,0x08,0x08,0x08,0x08,0xF8,0x0F,
0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
0x08,0x08,0x08,0x08,0xF8,0x0F,0x08,0x08,/*"日",6*/
0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,
0x08,0x08,0xF8,0x0F,0x80,0x00,0x88,0x00,
0xF8,0x1F,0x84,0x00,0x82,0x00,0xF8,0x0F,
0x80,0x00,0x80,0x00,0xFE,0x3F,0x00,0x00,/*"星",7*/
0x44,0x00,0x44,0x3E,0xFE,0x22,0x44,0x22,
0x44,0x22,0x7C,0x3E,0x44,0x22,0x44,0x22,
0x7C,0x22,0x44,0x3E,0x44,0x22,0xFF,0x22,
0x20,0x21,0x44,0x21,0x82,0x28,0x41,0x10,/*"期",8*/
0x00,0x00,0xE0,0x0F,0x62,0x0C,0xE6,0x0F,0x6C,0x0C,
0xEA,0x0F,0x06,0x00,0xF4,0x1F,0x3C,0x18,0xB0,0x1A,
0xBC,0x1A,0xB4,0x1A,0xB2,0x1A,0xFB,0x3F,0xF9,0x3F,
0x00,0x00, /////////////////////溫////9//
0x00,0x00,0xC0,0x00,0x80,0x00,0xFC,0x0F,0x0C,0x00,
0x6C,0x03,0xFC,0x0F,0x6C,0x03,0xEC,0x03,0x0C,0x00,
0xEC,0x07,0x6C,0x06,0xCC,0x03,0x66,0x06,0x33,0x0C,
0x00,0x00,/////////////////度、、、、、、10//
0x00,0x00,0x0C,0x00,0xFC,0x1F,0x0C,0x00,0xF6,0x07,
0xB0,0x01,0xB0,0x01,0xB0,0x01,0xFC,0x0F,0x80,0x01,
0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x00,0x00,
0x00,0x00,///////////年、、、、、、、、、11//
0x00,0x00,0xF8,0x0F,0x18,0x0C,0x18,0x0C,0x18,0x0C,
0xF8,0x0D,0x18,0x0C,0x18,0x0C,0xF8,0x0D,0x18,0x0C,
0x18,0x0C,0x1C,0x0C,0x1C,0x0C,0x0E,0x0F,0x06,0x06,
0x00,0x00,///////////月////////////12///
//0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//9; //0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
//0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
復(fù)制代碼
/***********************************************************
功 能:16x64點(diǎn)陣屏加DS1302顯示時(shí)間
單片機(jī):STC12C5A60S2
晶 振:22.1184M
作 者:蘇義江改編自網(wǎng)絡(luò)
時(shí) 間:2016-6-18日
***********************************************************/
#include <STC12C5A60S2.h>
#include "macroandconst.h"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit R =P2^6; //上半屏數(shù)據(jù)
sbit R1=P2^7; //下半屏數(shù)據(jù)
sbit CLK=P2^4; //74HC595的移位時(shí)鐘 SHCP
sbit STB=P2^3; //輸出鎖存 STCP 595鎖存信號(hào)
//行掃描
sbit A1 =P2^0;
sbit B1 =P2^1;
sbit C1 =P2^2;
sbit OE =P2^5; //74HC138的使能
sbit fmq =P1^7;//蜂鳴器
//按鍵
sbit keymenue =P0^2; //功能
sbit keyup =P0^3; //加
sbit keydown =P0^4; //減
sbit keyswitch=P0^5; //調(diào)整移位
sbit keyok =P0^6; //確認(rèn)
sbit DQ =P1^6; //DS18B20的數(shù)據(jù)輸入/輸出腳DQ,根據(jù)情況設(shè)定
//sbit wei =P2^7;//數(shù)碼管位選573使能
//sbit duan=P2^6;//數(shù)碼管段選573使能
uchar code smg[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0xBF}; //顯示段碼
extern uchar code table[];
extern uchar code table1[];
extern uchar set; //按鍵選擇標(biāo)志位;
extern char key_flag;//按鍵加減標(biāo)志位;
extern uchar menue; //菜單選擇標(biāo)志位;
extern uchar ok; //確認(rèn)標(biāo)志位;
uint sdata;//測(cè)量到的溫度的整數(shù)部分
uchar xiaoshu1;//小數(shù)第一位
uchar xiaoshu2;//小數(shù)第二位
uchar xiaoshu;//兩位小數(shù)
bit fg=1; //溫度正負(fù)標(biāo)志
uint temp; //溫度值
extern char miao,fen,shi,ri,yue,zhou,nian;/*時(shí)間日期數(shù)值標(biāo)志位;*/
extern uchar l_tmpDate[];//秒分時(shí)日月周年08-05-15 12:00:00
extern uchar l_tmpdisplay[];
extern void Write_Ds1302(uchar address,uchar dat );
extern void Read_RTC(void);
void data_change();
uint num;
void Delay10ms() //@11.0592MHz
{
uchar i, j;
i = 108;
j = 145;
do
{
while (--j);
}
while (--i);
}
//STC12C5A單片機(jī)定時(shí)1us DS18B20延時(shí)
void delay_b20(uchar n)
{
while(n--)
{
_nop_();
}
}
bit Init_DS18B20(void) //發(fā)送復(fù)位
{
bit flag; //儲(chǔ)存DS18B20是否存在的標(biāo)志,flag=0,表示存在;flag=1,表示不存在
DQ = 1; //先將數(shù)據(jù)線拉高
delay_b20(1); //略微延時(shí)約6微秒 ;
DQ = 0; //再將數(shù)據(jù)線從高拉低,要求保持480~960us
delay_b20(500); //略微延時(shí)約600微秒 ;
//以向DS18B20發(fā)出一持續(xù)480~960us的低電平復(fù)位脈沖
DQ = 1; //釋放數(shù)據(jù)線(將數(shù)據(jù)線拉高)
delay_b20(60); //延時(shí)約30us(釋放總線后需等待15~60us讓DS18B20輸出存在脈沖)
flag=DQ; //讓單片機(jī)檢測(cè)是否輸出了存在脈沖(DQ=0表示存在)
delay_b20(500); //延時(shí)足夠長(zhǎng)時(shí)間,等待存在脈沖輸出完畢 ;
return flag; //返回檢測(cè)成功標(biāo)志
}
uchar ReadOneChar(void)
{
uchar i=0;
uchar dat; //儲(chǔ)存讀出的一個(gè)字節(jié)數(shù)據(jù)
for (i=0;i<8;i++)
{
DQ =1; // 先將數(shù)據(jù)線拉高
delay_b20(1); //等待一個(gè)機(jī)器周期
DQ = 0; //單片機(jī)從DS18B20讀書據(jù)時(shí),將數(shù)據(jù)線從高拉低即啟動(dòng)讀時(shí)序
delay_b20(1); //等待一個(gè)機(jī)器周期
DQ = 1; //將數(shù)據(jù)線"人為"拉高,為單片機(jī)檢測(cè)DS18B20的輸出電平作準(zhǔn)備
delay_b20(1); ; //延時(shí)約6us,使主機(jī)在15us內(nèi)采樣
dat>>=1;
if(DQ==1)
dat|=0x80; //如果讀到的數(shù)據(jù)是1,則將1存入dat
else
dat|=0x00;//如果讀到的數(shù)據(jù)是0,則將0存入dat //將單片機(jī)檢測(cè)到的電平信號(hào)DQ存入r[i]
delay_b20(60); ; //延時(shí)3us,兩個(gè)讀時(shí)序之間必須有大于1us的恢復(fù)期
}
return(dat); //返回讀出的十六進(jìn)制數(shù)據(jù)
}
void WriteOneChar(uchar dat)
{
uchar i=0;
for (i=0; i<8; i++)
{
DQ =1; // 先將數(shù)據(jù)線拉高
delay_b20(1); //等待一個(gè)機(jī)器周期
DQ=0; //將數(shù)據(jù)線從高拉低時(shí)即啟動(dòng)寫時(shí)序
DQ=dat&0x01; //利用與運(yùn)算取出要寫的某位二進(jìn)制數(shù)據(jù),
//并將其送到數(shù)據(jù)線上等待DS18B20采樣
delay_b20(60); ;
//延時(shí)約30us,DS18B20在拉低后的約15~60us期間從數(shù)據(jù)線上采樣
DQ=1; //釋放數(shù)據(jù)線
delay_b20(60);
dat>>=1; //將dat中的各二進(jìn)制位數(shù)據(jù)右移1位
}
delay_b20(1);
}
void ReadyReadTemp(void)
{
Init_DS18B20(); //將DS18B20初始化
WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作
WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
delay_b20(200); //轉(zhuǎn)換一次需要延時(shí)一段時(shí)間
Init_DS18B20(); //將DS18B20初始化
WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作
WriteOneChar(0xBE); //讀取溫度寄存器,前兩個(gè)分別是溫度的低位和高位
}
uchar doe[4];
uint wendu_duzhuanhuan()
{
uint a,b,t;
Init_DS18B20(); //將DS18B20初始化
WriteOneChar(0xCC); // 跳過讀序號(hào)列號(hào)的操作
WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
delay_b20(200); //轉(zhuǎn)換一次需要延時(shí)一段時(shí)間
Init_DS18B20(); //將DS18B20初始化
WriteOneChar(0xCC); //跳過讀序號(hào)列號(hào)的操作
WriteOneChar(0xBE); //讀取溫度寄存器,前兩個(gè)?
a=ReadOneChar();
b=ReadOneChar();
t=b;
t<<=8;
t=t|a;
t=t*0.6250+0.5;
return t;
}
void wenduzhuan()
{
uint tp;
tp=wendu_duzhuanhuan();
doe[0]=tp/1000;
doe[1]=tp%1000/100;
doe[2]=tp%100/10;
doe[3]=tp%10;
}
void key()
{
/*判斷選擇按鍵是否按下;如果按下了當(dāng)松開的時(shí)候讓背光打開;set++;*/
if(keyswitch==0)
{
Delay10ms();
if(keyswitch==0)
{
Delay10ms();
while(keyswitch==0);
set++; //功能變量
if(set>9)
{set=0;menue=0;}
}
}
/*up和down按鍵的檢測(cè);加減標(biāo)志位*/
if(keyup==0)
{
Delay10ms();
if(keyup==0)
{
Delay10ms();
while(keyup==0);
key_flag++; //加減標(biāo)志位
}
}
if(keydown==0)
{
Delay10ms();
if(keydown==0)
{
Delay10ms();
while(keydown==0);
key_flag--; //加減標(biāo)志位
}
}
if(keymenue==0)
{
Delay10ms();
if(keymenue==0) //菜單選擇標(biāo)志位;
{
Delay10ms();
while(keymenue==0);
menue++; //菜單變量
if(menue>4)menue=0;
}
}
if(keyok==0)
{
Delay10ms();
if(keyok==0) //確認(rèn)標(biāo)志位;
{
Delay10ms();
while(keyok==0);
ok++;
if(ok>1)
{
ok=0;
menue=0;
set=0;
}
}
}
}
//行掃描
void hangsao(uchar num)
{
switch(num)
{
case 0:C1=0;B1=0;A1=0;break;
case 1:C1=0;B1=0;A1=1;break;
case 2:C1=0;B1=1;A1=0;break;
case 3:C1=0;B1=1;A1=1;break;
case 4:C1=1;B1=0;A1=0;break;
case 5:C1=1;B1=0;A1=1;break;
case 6:C1=1;B1=1;A1=0;break;
case 7:C1=1;B1=1;A1=1;break;
default:break;
}
}
/*****595寫數(shù)據(jù)部分****************/
void WriteByte(uchar DataR1,uchar DataR2)
{
uchar i;
for(i = 0; i < 8; i++)//循環(huán)8次,把編碼傳給鎖存器
{
R=DataR1& 0x01; //上屏數(shù)據(jù) 先送低位
R1=DataR2 & 0x01;//下屏數(shù)據(jù) 先送低位
CLK = 0;
_nop_();
CLK = 1;
DataR1>>= 1;
DataR2>>= 1;
}
}
/*void WriteByte(uchar dat)
{
uchar i;
for (i=0;i<8;i++) //循環(huán)8次,把編碼傳給鎖存器
{
dat=dat>>1; //右移一位,取出該字節(jié)的最低位
R=CY; //將該字節(jié)的最低位傳給R
CLK=0; //上升沿將數(shù)據(jù)移入595
CLK=1;
}
}
*/
void writebyteshuzi(uchar n)//顯示數(shù)字函數(shù)
{
WriteByte(~table[num+n*16],~table[num+n*16+8]);
}
void writebytehanzi(uchar n) //顯示漢字函數(shù)
{
WriteByte(~table1[2*num+n*32+0],~table1[2*num+n*32+16]);
WriteByte(~table1[2*num+n*32+1],~table1[2*num+n*32+16+1]);
}
/******調(diào)時(shí)部分*************************/
void set_date_time()
{
if(set==2)
{
menue=0; //秒調(diào)整
miao=l_tmpdisplay[10]*10+l_tmpdisplay[11];
miao=miao+key_flag;
if((key_flag<0)&(miao==0))miao=59;
if(miao>59)miao=0;
miao=miao%10+(miao/10)*16;
Write_Ds1302(0x8E,0x00);
Write_Ds1302(0x80,miao);
Write_Ds1302(0x8E,0x80);
}
if(set==3)
{
menue=0; //分調(diào)整
fen=l_tmpdisplay[8]*10+l_tmpdisplay[9];
fen=fen+key_flag;
if(fen>59)
{ fen=0; }
if((key_flag<0)&&(fen<0))
{ fen=59; }
fen=fen%10+(fen/10)*16;
Write_Ds1302(0x8E,0x00);
Write_Ds1302(0x82,fen);
Write_Ds1302(0x8E,0x80);
}
if(set==4)
{
menue=0; //時(shí)調(diào)整
shi=l_tmpdisplay[6]*10+l_tmpdisplay[7];
shi=shi+key_flag;
if(shi>23)shi=0;
if((key_flag<0)&&(shi<0))shi=23;
shi=shi%10+(shi/10)*16;
Write_Ds1302(0x8E,0x00);
Write_Ds1302(0x84,shi);
Write_Ds1302(0x8E,0x80);
}
if(set==5)
{
menue=1; //日調(diào)整
ri=l_tmpdisplay[4]*10+l_tmpdisplay[5];
ri=ri+key_flag;
if(ri>31)ri=1;
if((key_flag<0)&&(ri<1))ri=31;
ri=ri%10+(ri/10)*16;
Write_Ds1302(0x8E,0x00);
Write_Ds1302(0x86,ri);
Write_Ds1302(0x8E,0x80);
zhou=l_tmpdisplay[12]; //周調(diào)整
zhou=zhou+key_flag;
if(zhou>7)zhou=1;
if((key_flag<0)&&(zhou<1))zhou=7;
zhou=zhou%10+(zhou/10)*16;
Write_Ds1302(0x8E,0x00);
Write_Ds1302(0x8A,zhou);
Write_Ds1302(0x8E,0x80);
}
if(set==6)
{
menue=1; //月調(diào)整
yue=l_tmpdisplay[2]*10+l_tmpdisplay[3];
yue=yue+key_flag;
if(yue>12)yue=1;
if((key_flag<0)&&(yue<1))yue=12;
yue=yue%10+(yue/10)*16;
Write_Ds1302(0x8E,0x00);
Write_Ds1302(0x88,yue);
Write_Ds1302(0x8E,0x80);
}
if(set==7)
{
menue=1; //年調(diào)整
nian=l_tmpdisplay[0]*10+l_tmpdisplay[1]+key_flag;;
if(nian>79)nian=0;
if((key_flag<0)&&(nian<0))nian=79;
nian=nian%10+(nian/10)*16;
Write_Ds1302(0x8E,0x00);
Write_Ds1302(0x8C,nian);
Write_Ds1302(0x8E,0x80);
}
if(set==8)
{
menue=2; //周調(diào)整
zhou=l_tmpdisplay[12];
zhou=zhou+key_flag;
if(zhou>7)zhou=1;
if((key_flag<0)&&(zhou<1))zhou=7;
zhou=zhou%10+(zhou/10)*16;
Write_Ds1302(0x8E,0x00);
Write_Ds1302(0x8A,zhou);
Write_Ds1302(0x8E,0x80);
}
if(set==9)
{
menue=3; //溫度調(diào)整
sdata=l_tmpdisplay[13]/10;
sdata=l_tmpdisplay[14]%10;
sdata=sdata+key_flag;
sdata=sdata%10+(sdata/10)*16;
}
key_flag=0;
}
/******日期、時(shí)間、星期數(shù)據(jù)的轉(zhuǎn)化****************/
void data_change()
{
l_tmpdisplay[0]=l_tmpDate[6]/16;
l_tmpdisplay[1]=l_tmpDate[6]%16;//年;
l_tmpdisplay[2]=l_tmpDate[4]/16;
l_tmpdisplay[3]=l_tmpDate[4]%16;//月;
l_tmpdisplay[4]=l_tmpDate[3]/16;
l_tmpdisplay[5]=l_tmpDate[3]%16;//日;
l_tmpdisplay[6]=l_tmpDate[2]/16;
l_tmpdisplay[7]=l_tmpDate[2]%16;//小時(shí);
l_tmpdisplay[8]=l_tmpDate[1]/16;
l_tmpdisplay[9]=l_tmpDate[1]%16;//分鐘;
l_tmpdisplay[10]=l_tmpDate[0]/16;
l_tmpdisplay[11]=l_tmpDate[0]%16;//秒鐘;
l_tmpdisplay[12]=l_tmpDate[5]%16;//顯示當(dāng)前星期;
l_tmpdisplay[13]=doe[1]/16;//溫度十位;
l_tmpdisplay[14]=doe[2]%16;//溫度個(gè)位;
}
/*******星期顯示處理*******************/
void week()
{
if(l_tmpdisplay[12]==1)
{
writebyteshuzi(13);
writebytehanzi(7);
writebytehanzi(8);
writebytehanzi(0);
writebyteshuzi(13);
}
if(l_tmpdisplay[12]==2)
{
writebyteshuzi(13);
writebytehanzi(7);
writebytehanzi(8);
writebytehanzi(1);
writebyteshuzi(13);
}
if(l_tmpdisplay[12]==3)
{
writebyteshuzi(13);
writebytehanzi(7);
writebytehanzi(8);
writebytehanzi(2);
writebyteshuzi(13);
}
if(l_tmpdisplay[12]==4)
{
writebyteshuzi(13);
writebytehanzi(7);
writebytehanzi(8);
writebytehanzi(3);
writebyteshuzi(13);
}
if(l_tmpdisplay[12]==5)
{
writebyteshuzi(13);
writebytehanzi(7);
writebytehanzi(8);
writebytehanzi(4);
writebyteshuzi(13);
}
if(l_tmpdisplay[12]==6)
{
writebyteshuzi(13);
writebytehanzi(7);
writebytehanzi(8);
writebytehanzi(5);
writebyteshuzi(13);
}
if(l_tmpdisplay[12]==7)
{
writebyteshuzi(13);
writebytehanzi(7);
writebytehanzi(8);
writebytehanzi(6);
writebyteshuzi(13);
}
}
void shijian()
{
writebyteshuzi(l_tmpdisplay[6]); //時(shí);
writebyteshuzi(l_tmpdisplay[7]);
writebyteshuzi(11); //顯示分號(hào)
writebyteshuzi(l_tmpdisplay[8]);
writebyteshuzi(l_tmpdisplay[9]); //分;
writebyteshuzi(11); //顯示分號(hào)
writebyteshuzi(l_tmpdisplay[10]);
writebyteshuzi(l_tmpdisplay[11]);//秒;
}
void riqi()
{
writebyteshuzi(l_tmpdisplay[0]);
writebyteshuzi(l_tmpdisplay[1]); //年;
writebyteshuzi(10); //顯示橫杠
writebyteshuzi(l_tmpdisplay[2]);
writebyteshuzi(l_tmpdisplay[3]); //月;
writebyteshuzi(10);//顯示橫杠
writebyteshuzi(l_tmpdisplay[4]);
writebyteshuzi(l_tmpdisplay[5]); //日;
}
void wendu()
{
writebyteshuzi(13);
writebytehanzi(9);
writebytehanzi(10);
writebyteshuzi(11);
writebyteshuzi(l_tmpdisplay[13]); //溫度
writebyteshuzi(l_tmpdisplay[14]);
}
void main()
{
// Set_RTC();//對(duì)時(shí)(有備用電源對(duì)時(shí)一次就行)
ReadyReadTemp();//溫度轉(zhuǎn)換
wenduzhuan();
menue=0;
Write_Ds1302(0x8E,0x00);
Write_Ds1302(0x90,0x80);
Write_Ds1302(0x8E,0x80);
while(1)
{
ReadyReadTemp();//溫度轉(zhuǎn)換
wenduzhuan();
key();
// for(num=0;num<16;num++)
for(num=0;num<8;num++)
{
Read_RTC();//讀取時(shí)鐘
data_change();//時(shí)鐘數(shù)據(jù)處理
set_date_time(); /////調(diào)時(shí)部分
if(menue==0)
{
if(set==2)//調(diào)整標(biāo)志位;
{
writebyteshuzi(l_tmpdisplay[6]); //時(shí);
writebyteshuzi(l_tmpdisplay[7]);
writebyteshuzi(11); //數(shù)字?jǐn)?shù)組的第11位置,是":"
writebyteshuzi(l_tmpdisplay[8]);
writebyteshuzi(l_tmpdisplay[9]); //分;
writebyteshuzi(11);
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[10]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[10]*16+8]));
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[11]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[11]*16+8]));
}
else
if(set==3)
{
// writebyteshuzi(l_tmpdisplay[6]); //時(shí);
// writebyteshuzi(l_tmpdisplay[7]);
// writebyteshuzi(11);
// WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[8]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[8]*16+8]));
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[9]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[9]*16+8]));
writebyteshuzi(11);
writebyteshuzi(l_tmpdisplay[10]);
writebyteshuzi(l_tmpdisplay[11]);//秒;
}
/* else
if(set==4)
{
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[6]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[6]*16+8]));
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[7]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[7]*16+8]));
writebyteshuzi(11);
writebyteshuzi(l_tmpdisplay[8]);
writebyteshuzi(l_tmpdisplay[9]);//分;
writebyteshuzi(11);
writebyteshuzi(l_tmpdisplay[10]);
writebyteshuzi(l_tmpdisplay[11]);//秒;
} */
else shijian();
}
else
if(menue==1)
{
if(set==5) //日期調(diào)整標(biāo)志位;
{
writebyteshuzi(l_tmpdisplay[0]); //年;
writebyteshuzi(l_tmpdisplay[1]);
writebyteshuzi(10);
writebyteshuzi(l_tmpdisplay[2]);
writebyteshuzi(l_tmpdisplay[3]); //月;
writebyteshuzi(10);
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[4]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[4]*16+8]));
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[5]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[5]*16+8])); //日;
}
else
if(set==6)
{
// writebyteshuzi(l_tmpdisplay[0]); //年;
// writebyteshuzi(l_tmpdisplay[1]);
// writebyteshuzi(10);
// WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[2]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[2]*16+8]));
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[3]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[3]*16+8]));//月;
writebyteshuzi(10);
writebyteshuzi(l_tmpdisplay[4]);
writebyteshuzi(l_tmpdisplay[5]);//日;
}
/* else
if(set==7)
{
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[0]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[0]*16+8]));
WriteByte((~table[num+(12*16)])&(~table[num+l_tmpdisplay[1]*16]),(~table[num+(12*16)])&(~table[num+l_tmpdisplay[1]*16+8]));//年;
writebyteshuzi(10);
writebyteshuzi(l_tmpdisplay[2]);
writebyteshuzi(l_tmpdisplay[3]);//月;
writebyteshuzi(10);
writebyteshuzi(l_tmpdisplay[4]);
writebyteshuzi(l_tmpdisplay[5]);//日;
} */
else riqi();
}
else
if(menue==2)
{
week();
}
else
if(menue==3)
{
writebyteshuzi(13);
writebytehanzi(9);//溫;
writebytehanzi(10);//度?
writebyteshuzi(11);
writebyteshuzi(l_tmpdisplay[13]);
writebyteshuzi(l_tmpdisplay[14]);
}
else menue=0;
if ((set<2)&&(menue==0))
{
if ((l_tmpdisplay[10]*10+l_tmpdisplay[11]>11)&&(l_tmpdisplay[10]*10+l_tmpdisplay[11]<14))riqi();
else
if ((l_tmpdisplay[10]*10+l_tmpdisplay[11]>26)&&(l_tmpdisplay[10]*10+l_tmpdisplay[11]<29))week();
else
if ((l_tmpdisplay[10]*10+l_tmpdisplay[11]>41)&&(l_tmpdisplay[10]*10+l_tmpdisplay[11]<44))riqi();
else
if ((l_tmpdisplay[10]*10+l_tmpdisplay[11]>55)&&(l_tmpdisplay[10]*10+l_tmpdisplay[11]<59))wendu();
else shijian();
}
// P0=num;
OE=0;
STB=0; //輸出鎖存
_nop_();
STB=1;
OE=1;
hangsao(num);
}
}
}
復(fù)制代碼
作者:
wc86110
時(shí)間:
2016-6-21 13:12
LZ,還缺原理圖呢,你說(shuō)的不同沒看到哦。
作者:
騰飛的龍
時(shí)間:
2016-6-21 13:35
不同的地方就是LED掃描
作者:
slaoliu
時(shí)間:
2019-1-30 07:37
有沒有 16點(diǎn)陣顯示2行數(shù)字的,上行顯示日期,下行顯示時(shí)間,全部為數(shù)字。?
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1