亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
長時間計時(含1302,1602,DAC0832)
[打印本頁]
作者:
51hei社區
時間:
2016-1-16 02:31
標題:
長時間計時(含1302,1602,DAC0832)
上周做了板子終于成功了,把程序發過來,是關于1302時鐘芯片,1602液晶使用,和DAC0832的使用的,具體功能就不說了,看看程序吧!其中P0接1602數據端,1602的E接p20,rs接p21,r/w接p22。1302時鐘芯片rst接p30,sclk接p31,i/o接p32,P1口是DAC0832的數據端口,其cs接p34,wr接p36,p24-p27接按鍵。下面是具體程序
程序編寫比較亂,湊合看吧!編寫程序好的習慣是很重要的。
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define ledlen 8
unsigned char pos; //wei xuan duan bian
unsigned char ledbuf[8];
unsigned char ledbuf1[2];
uint num;
char zhankong;
sbit p10=P3^3;
bit sign;
sbit sclk_1302=P3^1; //1302端口設置
sbit io_1302 =P3^2;
sbit rst_1302 =P3^0;
sbit lcden=P2^0;
sbit lcdrs=P2^1;
sbit dula=P2^2;
sbit wela=P2^3;
sbit p24=P2^4;
sbit p25=P2^5;
sbit p11=P2^6; //pwm +
sbit p12=P2^7; //pwm -
sbit p34=P3^4;
sbit p36=P3^6;
unsigned char huanying[]="welcome!";
unsigned char huanying1[]="yu xin";
unsigned char time[]="time:";
unsigned char percent[]="percent:";
float temp;
uchar second ,minute, day, month, year, week,hour;
unsigned long int hour5=0;
uchar second_set=0x00 ,minute_set=0x00, day_set=0x28, month_set=0x01, year_set=0x10, week_set=0x04,hour_set=0x00;
uchar second1=34 ,minute1=67, day1, month1, year1, week1,hour1;
code unsigned char ledmap[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e }; //0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71
void delay(unsigned int cnt)
{ unsigned char i;
while(cnt--!=0)
for(i=100;i!=0;i--);
}
void write_command_1302(uchar date,uchar date1)
{
uchar i;
rst_1302=0;
for(i=0;i<8;i++)
{
sclk_1302=0;
delay(1);
rst_1302=1;
if(date&0x01==0x01)
{
io_1302=1;
}
else
{
io_1302=0;
}
sclk_1302=1;
date=date>>1;
}
for(i=0;i<8;i++)
{
sclk_1302=0;
delay(1);
if(date1&0x01==0x01)
{
io_1302=1;
}
else
{
io_1302=0;
}
sclk_1302=1;
date1=date1>>1;
}
rst_1302=0;
}
uchar read_date_1302(uchar date)
{
uchar i;
uchar date1=0x00;
rst_1302=0;
for(i=0;i<8;i++)
{
sclk_1302=0;
delay(5);
rst_1302=1;
if(date&0x01==0x01)
{
io_1302=1;
}
else
{
io_1302=0;
}
date=date>>1;
sclk_1302=0;
sclk_1302=1;
}
for(i=0;i<7;i++)
{
sclk_1302=0;
if(io_1302==1)
{
date1=(date1|0x80);
}
else
{
date1=(date1|0x00);
}
sclk_1302=1;
date1=date1>>1;
}
return date1;
rst_1302=0;
}
void write_RAM_DS1302()
{
write_command_1302(0xc0,0x22);
}
uchar read_RAM_DS1302()
{
uchar temp;
temp=read_date_1302(0xc1);
return temp;
}
void DS1302_init()
{
write_command_1302(0x80,second_set);// 秒鐘設定
write_command_1302(0x82,minute_set);// 分鐘設定
write_command_1302(0x84,hour_set);// 小時設定
write_command_1302(0x86,day_set);// 日期設定
write_command_1302(0x88,month_set);// 月份設定
write_command_1302(0x8a,week_set);// 星期設定
write_command_1302(0x8c,year_set);// 年份設定
}
void DS1302_read()
{
second= read_date_1302(0x81); // 秒鐘設定
minute= read_date_1302(0x83); // 分鐘設定
hour = read_date_1302(0x85);
day = read_date_1302(0x87);
month = read_date_1302(0x89); // 月份設定
week = read_date_1302(0x8b);
year = read_date_1302(0x8d);
}
void BCD_change()
{
second1=((second&0x70)>>4)*10+(second&0x0f);
minute1=((minute&0x70)>>4)*10+(minute&0x0f);
hour1=((hour&0x70)>>4)*10+(hour&0x0f);
day1=((day&0x70)>>4)*10+(day&0x0f);
month1=((month&0x70)>>4)*10+(month&0x0f);
year1=((year&0x70)>>4)*10+(year&0x0f);
week1=((week&0x70)>>4)*10+(week&0x0f);
if(week1>7)
{
week1=7;
}
}
void scankey() //掃描按鍵
{
if(p10==1&sign==1)
{
sign=0;
DS1302_init();
}
if(p10==0)
{
sign=1;
second_set=second;
minute_set=minute;
hour_set=0x00;
hour5=hour5+hour1;
}
if(p11==0) //p11口按鍵及處理程序
{
delay(100);
if(p11==0)
{
do delay(10);
while(p11==0);
zhankong++;
if(zhankong>99)
{
zhankong=99;
}
}
}
if(p12==0) //p11口按鍵及處理程序
{
delay(100);
if(p12==0)
{
do delay(10);
while(p12==0);
zhankong--;
if(zhankong<0)
{
zhankong=0;
}
}
}
if(p24==0) //p11口按鍵及處理程序
{
delay(100);
if(p24==0)
{
do delay(10);
while(p24==0);
zhankong=zhankong-10;
if(zhankong<0)
{
zhankong=0;
}
}
}
if(p25==0) //p11口按鍵及處理程序
{
delay(100);
if(p25==0)
{
do delay(10);
while(p25==0);
zhankong=zhankong+10;
if(zhankong>99)
{
zhankong=99;
}
}
}
p34=0;
p36=0;
temp=zhankong*2.55;
P1=(int)temp;
p34=1;
p36=1;
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
dula=0;
wela=0;
lcden=0;
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
write_com(0x80+0x10);
}
void main()
{
p10=0;
init(); //開機顯示歡迎詞
write_com(0x80+0x03);
for(num=0;num<8;num++)
{
write_data(huanying[num]);
delay(20);
}
write_com(0x80+0x44);
for(num=0;num<6;num++)
{
write_data(huanying1[num]);
delay(20);
}
delay(5000);
init();
DS1302_init();
DS1302_read();
BCD_change();
while(1)
{
if(sign==0) //試驗停止則顯示時間不變化了
{
DS1302_read();
BCD_change();
ledbuf[0]=minute1/10; //處理數據轉化段碼
ledbuf[1]=minute1;
ledbuf[2]=second1/10;
ledbuf[3]=second1;
ledbuf[4]=hour5/1000;
ledbuf[5]=hour500/100;
ledbuf[6]=hour50/10;
ledbuf[7]=hour5;
}
ledbuf1[0]=zhankong/10;
ledbuf1[1]=zhankong;
scankey();
write_com(0x80);
for(num=0;num<5;num++)
{
write_data(time[num]);
delay(20);
}
write_data(ledbuf[4]+0x30);
delay(20);
write_data(ledbuf[5]+0x30);
delay(20);
write_data(ledbuf[6]+0x30);
delay(20);
write_data(ledbuf[7]+0x30);
delay(20);
write_data(time[4]);
delay(20);
write_data(ledbuf[0]+0x30);
delay(20);
write_data(ledbuf[1]+0x30);
write_data(time[4]);
write_data(ledbuf[2]+0x30);
delay(20);
write_data(ledbuf[3]+0x30);
delay(20);
write_com(0x80+0x40);
for(num=0;num<8;num++)
{
write_dat
復制代碼
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1