版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、#define KEY_GLOBAL 1#include "Key.h"static uchar keyValueBuff;static uchar keyValueOld;static uchar keyValueTemp;static uint stillTimes;static uint stillTimesMax;/*讀取鍵值的緩沖區(qū)*/*前一次的鍵值*/*鍵值中間交換變量*/*鍵按下保持次數(shù)*/*取x變量y位的數(shù)據(jù)*/*置位x變量y位*/*清零x變量y位*/*置位或清零x變量y位*/*cpu震蕩周期*/*開(kāi)總中斷*/*關(guān)總中斷*/共享知識(shí)分享快樂(lè)#ifndef I
2、NCLUDE_H#define INCLUDE_H#include "AT89X51.h"#include "intrins.h"#define uchar unsigned char#define uint unsigned int#define _BV(x) (1<<(x)#define GET_BIT(x,y) (x)&(1<<(y)=0?0:1)#define SET_BIT(x,y) (x)|=(0x0001<<(y)#define CLR_BIT(x,y) (x)&=(0x0001<&
3、lt;(y)#define LET_BIT(x,y,z) (x)=(x)&(0x0001<<(y)|(z)<<(y)#define F_CPU 12000000UL#define sei() (EA=1)#define cli() (EA=0)#endifstatic uchar get_data_1_count(uchar number);static void read_all_key(uchar *buff);/* * 函數(shù)名稱(chēng):key_init(void)卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)*函數(shù)功能:初始化按鍵掃描*函數(shù)入口:無(wú)*函數(shù)出口:無(wú)*/vo
4、id key_init( void )(keyValueBuff = 0x00;keyValueOld = 0x00;keyValueTemp = 0x00;stillTimes = 0;stillTimesMax = FIRST_TIMES;/* 函數(shù)名稱(chēng):read_all_key(uchar *buff)* 函數(shù)功能:掃描按鍵下的鍵,將按下的鍵的位置存入變量buff* 函數(shù)入口: buff* 函數(shù)出口:無(wú)*/* void read_all_key(uchar *buff)(if (IN_PRESS_UP=KEY_FORCE_VALUE)/ 檢測(cè)按下的鍵 READ_KEY(1,KEY_UP,
5、*buff);elseREAD_KEY(0,KEY_UP,*buff);if (IN_PRESS_DOWN=KEY_FORCE_VALUE)READ_KEY(1,KEY_DOWN,*buff);elseREAD_KEY(0,KEY_DOWN,*buff);/* 函數(shù)名稱(chēng):get_key_value(void)* 函數(shù)功能:讀取鍵值* 函數(shù)入口 :無(wú)* 函數(shù)出口:返回按下的有效鍵值*/uchar get_key_value( void )(keyValueBuff = 0x00;read_all_key(&keyValueBuff);keyValueTemp = keyValueBuff
6、;delay_us(KEY_DELAY_TIME);read_all_key(&keyValueBuff);卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)/*兩次讀到的鍵盤(pán)值相同則為有效鍵盤(pán)值*/if ( keyValueTemp = keyValueBuff )(if (keyValueTemp = 0)(keyValueOld = 0;stillTimes = 0;stillTimesMax = FIRST_TIMES;return 0;else if (keyValueOld != keyValueTemp)(stillTimes = 0;keyValueOld = keyValueTe
7、mp;#if CAN_MORE_PRESSreturn keyValueTemp;#elseif ( 1 = get_data_1_count(keyValueTemp) (return keyValueTemp;else(return 0;#endifelse if (keyValueOld = keyValueTemp)(#if CAN_MORE_PRESS = 0if ( 1 != get_data_1_count(keyValueTemp)(stillTimes = 0;return 0;#endif#if CAN_REPEATstillTimes +;if (stillTimes &
8、gt; stillTimesMax)(stillTimes = 0;卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)#if REPEAT_MODEif (FIRST_TIMES = stillTimesMax)(stillTimesMax = OTHER_TIMES;#endifreturn keyValueTemp;#elsestillTimes = 0;return 0;#endifelse(stillTimes = 0;return 0;return 0;/* * 函數(shù)名稱(chēng):get_data_1_count(uchar number)*函數(shù)功能:計(jì)算uchar類(lèi)型變量中的數(shù)量,用于檢測(cè)是否多鍵按下
9、*函數(shù)入口: number,需要檢測(cè)數(shù)量的變量*函數(shù)出口:返回變量 bumber中的數(shù)量* Iuchar get_data_1_count(uchar number)(register uchar i,j = 0;for (i = 0; i < 8; i +)(if ( (number&_BV(i) )(j +;return j;/* 函數(shù)名稱(chēng):delay_us(uint us)* 函數(shù)功能:毫秒級(jí)延時(shí)* 函數(shù)入口:延時(shí)計(jì)數(shù)變量us卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)*函數(shù)出口:無(wú)*/ void delay_us(uint us)uchar delayi;while (-us)
10、for (delayi=0;delayi<10;delayi+);#include "Include.h"#ifndef KEY_H#define KEY_H 1#ifndef KEY_GLOBAL#define KEY_EXT extern#else#define KEY_EXT#endif#define READ_KEY(x,name,b) (x)?(b|=name):(b&=name)/ 用戶設(shè)置區(qū)卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)#define CAN_MORE_PRESS 0#define CAN_REPEAT 1#define REPEAT_M
11、ODE 1#define FIRST_TIMES 200#define OTHER_TIMES 25#define KEY_DELAY_TIME 20#define KEY_FORCE_VALUE 0/*是否允許多鍵都按:允許為;不允許為*/*是否允許重復(fù)按鍵:允許為;不允許為*/*重復(fù)模式:先長(zhǎng)后短為;相同間隔為*/*重復(fù)按下時(shí),第一次間隔時(shí)間*/*第二次后間隔時(shí)間(如果重復(fù)模式為時(shí)此值無(wú)效)*/*鍵盤(pán)掃描時(shí)間間隔XXXus */*鍵盤(pán)有效電平,為高電平,為低電平*/#define IN_PRESS_UP P1_0/*1設(shè)置鍵端口 */#define IN_PRESS_DOWN P1_1/*
12、2設(shè)置鍵端口 */*鍵盤(pán)重映射 注:當(dāng)前結(jié)構(gòu)下最大按鍵數(shù)為:8;以進(jìn)制中的相應(yīng)位來(lái)標(biāo)識(shí)*/enum KEY_VALUEKEY_UP= 0x01,KEY_DOWN= 0x02,KEY_NULL = 0x00;/KEY_EXT void key_init( void );/ 鍵盤(pán)掃描初始化KEY_EXT uchar get_key_value( void ); / 讀取有效鍵值變量KEY_EXTvoid delay_us(uint us);/us 級(jí)延時(shí)函數(shù)#endif卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)#define LED_GLOBAL 1/*聲明微秒級(jí)延時(shí)函數(shù)*/#include &quo
13、t;led.h" extern void delay_us(uint us);/* 函數(shù)名稱(chēng):led_init(void)* 函數(shù)功能:數(shù)碼管初始化* 函數(shù)入口 :無(wú)* 函數(shù)出口:無(wú)*/* void led_init( void )/數(shù)碼管顯示pwmu始化值,/100ledWrite('1',0x01,DIGITAL);ledWrite('0',0x02,DIGITAL);ledWrite('0',0x03,DIGITAL);/* 函數(shù)名稱(chēng):ledWrite(uchar c,uchar n,uchar mod)* 函數(shù)功能:向第n個(gè)數(shù)碼
14、管寫(xiě)mo腰式的內(nèi)容c* 函數(shù)入口: c為要顯示的內(nèi)容,顯示數(shù)字時(shí),調(diào)用入口應(yīng)輸入數(shù)字字符 n為要顯示的數(shù)碼管編號(hào);mod為要顯示的模式* 函數(shù)出口:無(wú)* * Ivoid ledWrite(uchar c,uchar n,uchar mod)if (CHARACTER=mod)/為任意字段顯示 LED=c;else if (DIGITAL=mod)LED=segLedCodec- '0' ;switch (n)case 0x01:卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)LED_CS1=CS_FORCE_VALUE;delay_us(10);LED_CS1=0; /CS_FORCE_
15、VALUE break; case 0x02:LED_CS2=CS_FORCE_VALUE;delay_us(10);LED_CS2=0; break; case 0x03:LED_CS3=CS_FORCE_VALUE;delay_us(10);LED_CS3=0; break;default : break ;卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)/*驅(qū)動(dòng)名稱(chēng):七段LE用碼管驅(qū)動(dòng)*功能:適用于帶個(gè)鎖存器 LS373的段數(shù)碼管顯示*修改:修改驅(qū)動(dòng)使其適用于三個(gè)數(shù)碼管顯示*版本:V0.0.1*作者:kxm*時(shí)間:.06.11*/ #ifndef LEDH #define LEDH 1 #incl
16、ude "Include.h"#ifndef LEDGLOBAL#define LEDEXT extern#else#define LEDEXT#endif#define CSFORCEVALUE 1/*74LS373片選有效電平*/*數(shù)碼管端口定義*#defineLEDP0/*定義LECB據(jù)端口 */#defineLEDCS1P2 0/*74LS373鎖存器片選端口*/#defineLEDCS2P2/*74LS373鎖存器片選端口*/#defineLEDCS3P2 2/*74LS373鎖存器片選端口*/*enumSEG_DISPLAY_MODDIGITAL=0x00,CH
17、ARACTER=0x01/* 數(shù)碼管輸出模式,數(shù)字或任意字段顯示*/*高電平驅(qū)動(dòng)*/#ifdef LEDGLOBALuchar segLedCode10=0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x73;/* 數(shù)碼管數(shù)碼譯碼數(shù)組,led6led0=ag,code110=09*/*數(shù)碼管初始化*/*向第n個(gè)數(shù)碼管寫(xiě)mo腰式的內(nèi)容c*/#endifLED_EXT void led_init( void );LED_EXT void ledWrite(uchar c,uchar n,uchar mod);#endif卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享
18、快樂(lè)#define PWM_GLOBAL 1 #include "pwm.h"/* 函數(shù)名稱(chēng):pwm_init(void)* 函數(shù)功能:PWM始化,設(shè)置定時(shí)器* 函數(shù)入口 :無(wú)* 函數(shù)出口:無(wú)*/*void pwm_init( void )/ 12MTMOD=0x20;/定時(shí)器模式TL1 = 255-10;/ 1msTH1 = 255-10;ET1 = 1;/定時(shí)器邊沿觸發(fā)TR1 = 1;開(kāi)定時(shí)器中斷pwmPeriodCont =0x00;pwmH=0x01;/* 函數(shù)名稱(chēng):void pwm_set(const uchar NewPwmValue)* 函數(shù)功能:pwM空比設(shè)
19、置* 函數(shù)入口 :無(wú)* 函數(shù)出口:無(wú)*/* void pwm_set(uchar NewPwmValue)(if (NewPwmValue >= 1)&&(NewPwmValue <= 99)一個(gè)周期里(pwmH = NewPwmValue;卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)/若占空比不在99范圍內(nèi)則輸出一個(gè)尖)else脈沖(pwmH =0x01;)/* 函數(shù)名稱(chēng):pwmProduce(void)* 函數(shù)功能:定時(shí)器溢出中斷設(shè)置* 函數(shù)入口 :無(wú)* 函數(shù)出口:無(wú)*/* void pwmProduce( void ) interrupt 3(pwmPeriodCo
20、nt+;/PWM®時(shí)周期計(jì)數(shù)加if (pwmPeriodCont<=pwmH)PWM_OUT =1;/ 高電平從到 PWM_Helse /剩下的為低電平時(shí)間(PWM_OUT =0;if (pwmPeriodCont >= PWM_Period) / 一個(gè)頻率周期結(jié)束 (pwmPeriodCont=0;)卑微如蟋蟻、堅(jiān)強(qiáng)似大象共享知識(shí)分享快樂(lè)/* 驅(qū)動(dòng)功能:產(chǎn)生pwm,12MHz振下,總周期為*1ms* 版本:,0.1* 作者:lhw*時(shí)間:.06.11*/#ifndef PWM_H#define PWM_H#include "Include.h"#ifndef PWM_GLOBAL#define PWMEXTextern#else#define PWM_EXT#endif#define PWM_Period 100100% 占空比時(shí)標(biāo)數(shù)/* 端口 定義 *sbit PWM_OUT=P1A2;/*pwm輸出端口映射 */*PWM_EXT uchar pwmPeriodCont;/ PWM 占空比計(jì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度小微企業(yè)創(chuàng)業(yè)貸款合同
- 二零二五年磚塊購(gòu)銷(xiāo)及裝配式建筑產(chǎn)業(yè)鏈優(yōu)化合同3篇
- 2025版木屑生物質(zhì)炭應(yīng)用推廣承包合同范本4篇
- 2025年度臨建房屋施工安全文明施工標(biāo)準(zhǔn)化合同2篇
- 2025年度排水工程地下水位監(jiān)測(cè)合同模板
- 快速法律服務(wù)居間合同
- 親子樂(lè)園裝修工程用工合同
- 二零二五年度企業(yè)高級(jí)管理人員聘用合同格式范文3篇
- 2025年度木門(mén)行業(yè)智能制造生產(chǎn)線升級(jí)改造合同3篇
- 個(gè)人與個(gè)人之間2024年度收藏品買(mǎi)賣(mài)合同2篇
- 華為全屋智能試題
- 第三單元名著導(dǎo)讀《經(jīng)典常談》知識(shí)清單 統(tǒng)編版語(yǔ)文八年級(jí)下冊(cè)
- 第十七章-阿法芙·I·梅勒斯的轉(zhuǎn)變理論
- 焊接機(jī)器人在汽車(chē)制造中應(yīng)用案例分析報(bào)告
- 合成生物學(xué)在生物技術(shù)中的應(yīng)用
- 中醫(yī)門(mén)診病歷
- 廣西華銀鋁業(yè)財(cái)務(wù)分析報(bào)告
- 無(wú)違法犯罪記錄證明申請(qǐng)表(個(gè)人)
- 大學(xué)生勞動(dòng)教育PPT完整全套教學(xué)課件
- 繼電保護(hù)原理應(yīng)用及配置課件
- 《殺死一只知更鳥(niǎo)》讀書(shū)分享PPT
評(píng)論
0/150
提交評(píng)論