女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]/************************************** PCF8563時(shí)鐘程序 * * 文 件 名:1602_8563.c * * 版 本:V22.02 * * 主控芯片:Mega16L * * 工作頻率:7.3728MHz * *************************************/ #inclu

/*************************************

* PCF8563時(shí)鐘程序 *
* 文 件 名:1602_8563.c *
* 版 本:V22.02 *
* 主控芯片:Mega16L *
* 工作頻率:7.3728MHz *
*************************************/
#include
#include
#include
#include
#include
#include
#include

//數(shù)據(jù)簡化宏定義
#define uchar unsigned char
#define uint unsigned int

//全局變量定義
uchar timer[8]; //時(shí)鐘數(shù)據(jù)

/**********************************
* 蜂鳴器發(fā)聲函數(shù) *
* 函數(shù)功能:蜂鳴器發(fā)出聲響 *
* 入 口:n 聲次數(shù) *
* i 聲時(shí)長,i*10ms *
* 返 回:無 *
* 發(fā)聲頻率:固定1KHz 無源 *
**********************************/
void spk(uchar i,uchar n)
{
uint a;
for(;n;n--)
{
a=i*10; //計(jì)算每聲響的長度:MS
for(;a;a--)
{
delay_us(500); //響聲頻率為1KHZ
SPK_TG;
delay_us(500);
SPK_TG;
}
SPK_OFF; //響完關(guān)閉蜂鳴器
delay_ms(100); //每聲響之間隔100MS
}
}

/**********************************
* 讀出數(shù)據(jù)函數(shù) *
**********************************/
uchar read_timer(void)
{
start(); //啟動(dòng)總線
waitack(); //等待啟動(dòng)完成
if(chkack()!=START)return I2C_ERR; //檢查是否啟動(dòng)成功
write_tim(SLA_W); //發(fā)送寫地址
write_tim(0x02); //寫數(shù)據(jù)地址

start();
waitack(); //等待啟動(dòng)完成
if(chkack()!=RESTART)return I2C_ERR; //檢查是否啟動(dòng)成功
write_tim(SLA_R); //發(fā)送讀地址

timer[0]=read_tim()&0x7F; //讀出秒數(shù)據(jù)
timer[1]=read_tim()&0x7F; //讀出分?jǐn)?shù)據(jù)
timer[2]=read_tim()&0x3F; //讀出時(shí)數(shù)據(jù)
timer[3]=read_tim()&0x3F; //讀出日數(shù)據(jù)
timer[4]=read_tim()&0x07; //讀出周數(shù)據(jù)
if(timer[4]==0)timer[4]=7;
timer[5]=read_tim(); //讀出月數(shù)據(jù)
if((timer[5]&0x80)==0)
timer[7]=0x20; //世紀(jì)位為0,是21世紀(jì)
else timer[7]=0x19; //世紀(jì)位不為0,是20世紀(jì)
timer[5]=timer[5]&0x1F;
timer[6]=read_tim(); //讀出年數(shù)據(jù)
stop();
return I2C_CRR;
}

/**********************************
* 寫入時(shí)鐘函數(shù) *
**********************************/
uchar write_timer(void)
{
start(); //啟動(dòng)總線
waitack(); //等待啟動(dòng)完成
if(chkack()!=START)return I2C_ERR; //檢查是否啟動(dòng)成功
write_tim(SLA_W); //發(fā)送寫地址
write_tim(0x00); //寫數(shù)據(jù)首地址
write_tim(0x20); //寫控制/狀態(tài)寄存器1,暫停計(jì)時(shí)
write_tim(0x00); //寫控制/狀態(tài)寄存器2
write_tim(0x00); //寫秒數(shù)據(jù)為0
write_tim(timer[1]); //寫分?jǐn)?shù)據(jù)
write_tim(timer[2]); //寫時(shí)數(shù)據(jù)
write_tim(timer[3]); //寫日數(shù)據(jù)
write_tim(timer[4]); //寫周數(shù)據(jù)
write_tim(timer[5]); //寫月數(shù)據(jù)
write_tim(timer[6]); //寫年數(shù)據(jù)
stop();
return I2C_CRR;
}

/**********************************
* 啟動(dòng)時(shí)鐘函數(shù) *
**********************************/
uchar start_timer(void)
{
start(); //啟動(dòng)總線
waitack(); //等待啟動(dòng)完成
if(chkack()!=START)return I2C_ERR; //檢查是否啟動(dòng)成功
write_tim(SLA_W); //發(fā)送寫地址
write_tim(0x00); //寫數(shù)據(jù)首地址
write_tim(0x00); //寫控制/狀態(tài)寄存器1,暫停計(jì)時(shí)
stop();
return I2C_CRR;
}

/**********************************
* 將時(shí)鐘數(shù)據(jù)轉(zhuǎn)換后在LCD上顯示 *
**********************************/
void timer_lcd(void)
{
locate(1,4); //寫指令:第1行第4列地址

lcd_da((timer[7]>>4)+0x30);
lcd_da((timer[7]&0x0f)+0x30);
lcd_da((timer[6]>>4)+0x30); //顯示年
lcd_da((timer[6]&0x0f)+0x30);
lcd_da('/');
lcd_da((timer[5]>>4)+0x30); //顯示月
lcd_da((timer[5]&0x0f)+0x30);
lcd_da('/');
lcd_da((timer[3]>>4)+0x30); //顯示日
lcd_da((timer[3]&0x0f)+0x30);

locate(2,2); //寫指令:第2行地址

lcd_da((timer[2]>>4)+0x30); //時(shí)
lcd_da((timer[2]&0x0f)+0x30);
lcd_da(':');
lcd_da((timer[1]>>4)+0x30); //分
lcd_da((timer[1]&0x0f)+0x30);
lcd_da(':');
lcd_da((timer[0]>>4)+0x30); //秒
lcd_da((timer[0]&0x0f)+0x30);

lcd_da(20); //時(shí)間與星期間留1空格
lcd_da('W'); //星期的前導(dǎo)字
lcd_da('e');
lcd_da('e');
lcd_da('k');
lcd_da((timer[4]&0x0f)+0x30); //星期數(shù)據(jù)
}

//定時(shí)器1:每秒從8563中讀取4次數(shù)據(jù),更新顯示
void timer1_init(void) //定時(shí)器1初始化:250毫秒定時(shí),預(yù)分頻256
{
TCCR1B = 0x00; //停止定時(shí)器
TCNT1H = 0x8F; //初值高字節(jié)
TCNT1L = 0x81; //定時(shí)初值低字節(jié)
TCCR1A = 0x00;
TCCR1B = 0x03; //啟動(dòng)定時(shí)器
}

#pragma interrupt_handler timer1_ovf_isr:9
void timer1_ovf_isr(void) //定時(shí)器1中斷入口:250MS中斷一次
{
TCNT1H = 0x8F; //重裝初值
TCNT1L = 0x81;
read_timer(); //讀出當(dāng)前時(shí)鐘
timer_lcd(); //顯示數(shù)據(jù)轉(zhuǎn)換
}

/**********************************
* 調(diào)整顯示函數(shù)1 *
**********************************/
void set_xs1(uchar i)
{
lcd_da((timer>>4)+0x30); //顯示數(shù)據(jù)
lcd_da((timer&0x0f)+0x30);
}

/**********************************
* 調(diào)整顯示函數(shù)2 *
**********************************/
void set_xs2(uchar data)
{
lcd_da((data>>4)+0x30); //顯示數(shù)據(jù)
lcd_da((data&0x0f)+0x30);
lcd(0x20);
}

/**********************************
* 程序主函數(shù) *
**********************************/
void main(void)
{
uchar set_flag=0; //調(diào)整與正常工作標(biāo)志
uchar set_time; //調(diào)整數(shù)據(jù)類型標(biāo)志
uchar set_bh=0; //調(diào)整變化標(biāo)志
uchar a,a1;

port_init();
LED_ON; //開LCD背光
lcd_init();
delay_ms(500);
tonghe();
delay_ms(2000);

Twi_Init();
delay_ms(100);
CLI(); //關(guān)總中斷
timer1_init();//定時(shí)器1初始化
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x04; //開放定時(shí)器0中斷和比較中斷
SEI(); //開總中斷

cls();
delay_ms(50);

while(1)
{
a=KEY_RD;
if(a!=0)
{
delay_ms(20);
a1=KEY_RD;
if(a1==a)
{
switch(a)
{
case 0x01:
spk(10,1);
if(set_flag==0)
{
TCCR1B=0x00;
LED_ON;
set_flag=1;
cls();
locate(1,4); //顯示“時(shí)間調(diào)整”
xs_lcd("SET:");
}
else
{
TCCR1B=0x04; //開啟時(shí)鐘
set_flag=0;
if(set_bh==1)
{
write_timer(); //寫入新時(shí)間
set_bh=0;
}
}
break;
case 0x02:
if(set_flag==1)
{
spk(10,1);
set_time++;
locate(2,2); //顯示待調(diào)整的數(shù)據(jù)
switch(set_time)
{
case 1:
xs_lcd("year:");
set_xs1(6); //顯示年
break;
case 2:
xs_lcd("muth:");
set_xs1(5); //顯示月
break;
case 3:
xs_lcd(" day:");
set_xs1(3); //顯示日
break;
case 4:
xs_lcd("hour:");
set_xs1(2); //顯示時(shí)
break;
case 5:
xs_lcd("mine:");
set_xs1(1); //顯示分
break;
case 6:
xs_lcd("week:");
set_xs1(4); //顯示周
break;
default:set_time=0;break;
}
}
break;
case 0x04:
if(set_flag==1)
{
spk(10,1);
set_bh=1;
locate(2,7); //顯示“時(shí)間調(diào)整”
switch(set_time)
{
case 1:
timer[6]-=0x01;
if((timer[6]&0x0F)==0x0F)timer[6]&=0xF9;
if(timer[6]>0x99)timer[6]=0x99;
set_xs1(6); //顯示年
break;
case 2:
timer[5]-=0x01;
if((timer[5]&0x0F)==0x0F)timer[5]&=0xF9;
if(timer[5]==0x00)timer[5]=0x12;
set_xs1(5); //顯示月
break;
case 3:
timer[3]-=0x01;
if((timer[3]&0x0F)==0x0F)timer[3]&=0xF9;
if(timer[3]==0x00)timer[3]=0x30;
set_xs1(3); //顯示日
break;
case 4:
timer[2]-=0x01;
if((timer[2]&0x0F)==0x0F)timer[2]&=0xF9;
if(timer[2]>0x24)timer[2]=0x23;
set_xs1(2); //顯示時(shí)
break;
case 5:
timer[1]-=0x01;
if((timer[1]&0x0F)==0x0F)timer[1]&=0xf9;
if(timer[1]>0x59)timer[1]=0x59;
set_xs1(1); //顯示分
break;
case 6:
timer[4]-=0x01;
if(timer[4]>6)timer[4]=0x06;
set_xs1(4); //顯示周
break;
default:set_time=0;break;
}
}
else
start_timer();
break;
case 0x08:
if(set_flag==1)
{
spk(10,1);
set_bh=1;
locate(2,7); //顯示“時(shí)間調(diào)整”
switch(set_time)
{
case 1:
timer[6]+=0x01;
if((timer[6]&0x0F)==0x0A)timer[6]=(timer[6]&0xF0)+0x10;
if(timer[6]>0x99)timer[6]=0x00;
set_xs1(6); //顯示年
break;
case 2:
timer[5]+=0x01;
if((timer[5]&0x0F)==0x0A)timer[5]=(timer[5]&0xF0)+0x10;
if(timer[5]>=0x13)timer[5]=0x01;
set_xs1(5); //顯示月
break;
case 3:
timer[3]+=0x01;
if((timer[3]&0x0F)==0x0A)timer[3]=(timer[3]&0xF0)+0x10;
if(timer[3]>=0x31)timer[3]=0x01;
set_xs1(3); //顯示日
break;
case 4:
timer[2]+=0x01;
if((timer[2]&0x0F)==0x0A)timer[2]=(timer[2]&0xF0)+0x10;
if(timer[2]>=0x24)timer[2]=0x00;
set_xs1(2); //顯示時(shí)
break;
case 5:
timer[1]+=0x01;
if((timer[1]&0x0F)==0x0A)timer[1]=(timer[1]&0xf0)+0x10;
if(timer[1]>0x59)timer[1]=0x00;
set_xs1(1); //顯示分
break;
case 6:
timer[4]+=0x01;
if(timer[4]>6)timer[4]=0x00;
set_xs1(4); //顯示周
break;
default:set_time=0;break;
}
}
else
LED_OFF; //關(guān)背光
break;
default:break;
}
}
while(a!=0)
{
a=KEY_RD;
delay_ms(10);
}
}
}
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉