此實驗中摁下某個按鍵后,把相關的信號并行傳遞到74HC165上,然后再通過串行方式傳到處理器中,處理器在通過控制P0.22口(MAT0.0)來控制蜂鳴器
部分電路圖如下所示:
注意:9號引腳接的是2148的MISO0(P0.5)
#include //宏定義 #define SCLK 0x01<<24 #define SCK0 0x01<<4 #define MISO 0x01<<5 #define MOSI 0x01<<6 #define RCK 0x01<<7 void HC595_Init(void); void WriteByte(unsigned char data); void Write595(void); void HC165_CS(char flag); unsigned char Read165(void); void Delayn(unsigned long n); //595擴展接口的數據顯示緩存 unsigned int HC595_DATA = 0xFFFFFFFF; //初始化595接口 void HC595_Init(void) { IO0DIR |= MOSI|RCK|SCK0; IO1DIR |= SCLK; IO1CLR |= SCLK; IO0DIR |= RCK; HC595_DATA = 0xFFFFFFFF;Write595(); } //寫字節 void WriteByte(unsigned char data) { unsigned char i; //IO0CLR = RCK; for(i=0;i<8;i++) { if(data&0x01) IO0SET=MOSI; else IO0CLR=MOSI; IO1SET=SCLK; data>>=1; IO1CLR=SCLK; } //IO0SET = RCK; } //刷新595的數據 void Write595(void) { IO0CLR = RCK; WriteByte(HC595_DATA&0xff); WriteByte((HC595_DATA&0xff00)>>8); WriteByte((HC595_DATA&0xff0000)>>16); WriteByte((HC595_DATA&0xff000000)>>24); IO0SET = RCK; } //165片選 void HC165_CS(char flag) { if(flag) ////CLK INH寫入高電平, HC595_DATA &= ~(1<<1); else HC595_DATA |= (1<<1); Write595(); } //讀165的數據 unsigned char Read165(void) { unsigned char RD=0,i; HC165_CS(1); // IO1CLR_bit.P1_25 = 1; //寫入1使對應引腳輸出低電平,即使S/L(管腳1)得到低電平,在arm板接收數據前,必須將該引腳拉低,目的是為了將并行數據A--H上得數據裝載到內部寄存器中,這里體現的時LOAD功能 Delayn(10); IO1SET_bit.P1_25 = 1; //寫入1使對應引腳輸出高電平,接下來在接收數據的過程中必須將該引腳拉高,目的是為了使寄存器中的數據可以移動,從而從QH或QN'中移入單片機。這里體現的是SHIFT功能。 for(i=0;i<8;i++) { RD <<= 1; //左移一位 if(IO0PIN&MISO) //MISO0是74HC165輸出的串行數據,看74HC165是否接收到數據,如果MISO0不為0則說明接收到了數據, RD |= 1; //先接受高位 IO0SET=SCK0; //時鐘為高,上升沿下一個數據移出(只有在CP為高時,才允許CE由低轉高) Delayn(10); IO0CLR=SCK0; //時鐘低電平 (我們只需將arm處理器的某一個端口拉低或抬高即可,這樣數據就一步一步的被接收了。請務必記得上升沿有效。) } HC165_CS(0); return RD; } main() { PINSEL0=0x000000; PINSEL1=0x000000; //所有引腳連接GPIO unsigned char HC165_DATA; IO1DIR_bit.P1_25 = 1; IO1SET_bit.P1_25 = 1; PINSEL0_bit.P0_5 = 0; //IO0DIR_bit.P0_5 = 0; //HC165輸入管腳 IO0DIR=1<<22; //蜂鳴器控制口設置為輸出,其余輸入 HC595_Init(); while(1) { HC165_DATA = Read165(); if((HC165_DATA&(1<<4))==0) IO0SET=1<<22; //當KEY2按下的時候,蜂鳴器響起(此處解釋見下面) else IO0CLR=1<<22; //松開KEY2,蜂鳴器停止蜂鳴 } } //延時周期數 void Delayn(unsigned long n) { while(n--); } 最后說明: 對主函數中if((HC165_DATA&(1<<4))==0) IO0SET=1<<22的解釋,1<<4位使得第4位變為1,有74HC165數據手冊中功能方圖: 可知第4位對應的外圍引腳是3,再由上面的第一個圖74HC165的連接圖可發現它與KEY INT2相連,所以對應的是KEY2鍵 關于程序中74HC165的數據傳送的方式自己還有待研究,之所以用到了74HC595,是因為力天電子的這款板子在進行設計是把把74HC165 的片選(165 CS)連接到了595上,所以必須得對595進行相應操作
上一篇:Keil IAR - Cortex M3 調試問題及解決方法(1)
下一篇:arm7 力天電子 lpc2148 GPIO之花樣流水燈
推薦閱讀
史海拾趣
ABB Group是一家全球性的工程技術公司,提供電力和自動化技術解決方案。以下是該公司發展的五個相關故事:
公司成立和早期發展: ABB Group的前身可以追溯到1883年,當時由瑞士的Brown, Boveri & Cie (BBC)和瑞典的ASEA公司合并成立。這個合并創造了一個跨國電氣工程公司,專注于發電機、電氣傳動和電力系統的設計和制造。該公司成立后迅速擴展了國際業務,并在世界各地建立了分支機構和生產基地。
技術創新和產品多樣化: ABB Group一直致力于技術創新,并不斷推出新產品和解決方案,以滿足客戶的需求。公司在電力輸送、工業自動化、機器人技術等領域擁有豐富的經驗和專業知識,為各種行業提供了全面的電力和自動化解決方案。
國際化戰略和全球擴張: ABB Group通過收購、合并和戰略合作,加速了在全球范圍內的擴張。公司在100多個國家設有分支機構和辦事處,形成了覆蓋全球的銷售和服務網絡。這種國際化戰略使ABB能夠更好地滿足不同國家和地區客戶的需求。
可持續發展和環保責任: ABB Group致力于推動可持續發展和環保責任,在產品設計、生產和運營過程中注重減少能源消耗和減排。公司積極推動清潔能源和智能電網的發展,為全球的環境保護和可持續發展做出貢獻。
未來展望和發展方向: ABB Group將繼續致力于技術創新和市場拓展,加強在電力和自動化領域的領先地位。公司將加大在數字化技術和人工智能領域的投入,推動工業智能化和數字化轉型,為客戶提供更智能、更高效的解決方案。
隨著產品線的逐漸豐富和技術的不斷進步,微芯生物開始積極拓展市場。他們與多家國內外醫藥企業建立了合作關系,將自主研發的藥物推向市場。同時,公司也積極參與各類學術會議和展覽,提升品牌知名度和市場影響力。通過不懈的努力,微芯生物逐漸獲得了市場的認可和信賴。
隨著技術的成熟和市場的認可,FerriShield開始拓展產品線。公司研發團隊不斷改進和優化原始的鐵磁屏蔽材料,并推出了針對不同應用場景的系列產品。例如,針對智能手機和平板電腦的輕薄型電磁屏蔽膜,以及針對大型數據中心的高效電磁屏蔽板。這些新產品的推出,使得FerriShield的市場份額逐步擴大。
為了進一步推動技術創新和產品研發,FerriShield積極尋求與高校和研究機構的合作。公司與多所知名大學建立了產學研合作關系,共同開展新材料、新工藝的研究和開發。這些合作不僅提升了FerriShield的技術實力,還為公司培養了一批高素質的研發人才。
在快速發展的同時,CLC也關注環保和可持續發展。他們采用環保材料和生產工藝,減少對環境的影響。同時,他們還積極推動循環利用和廢物減量化措施,努力實現綠色生產。這些努力不僅提升了品牌形象,也為公司的長期發展奠定了基礎。
面對日益激烈的市場競爭和不斷變化的市場需求,FILTRONETICS深知技術創新的重要性。公司加大了對研發的投入力度,成立了專門的研發部門和技術中心,致力于新技術、新材料和新工藝的研發和應用。同時,公司還積極關注環保和可持續發展問題,致力于生產綠色、環保的電子產品。通過不斷的技術創新和可持續發展實踐,FILTRONETICS不僅保持了技術領先地位,也為社會的可持續發展做出了貢獻。
哪位大哥有EDA的教程和MAX+plus2軟件的使用指導?現在正在學EDA,學MAX+plus2軟件,不過什么都不懂,請大哥們幫下忙!有的請發到我的郵箱:285313118@163.com 先謝謝了!!!… 查看全部問答∨ |
|
【AVR單片機問題】Could not connect to JTAG ICE on USB or port COM1 to COM4 在AVR Studio中點擊運行時 一直提示Could not connect to JTAG ICE on USB or port COM1 to COM4。具體如下截圖: C:\\Documents and Settings\\Administrator\\桌面\\1.JPG 請高手幫幫忙!… 查看全部問答∨ |
|
重操舊業,移植5.0BSP至6.0,還是比較順利的 不過的USBFN驅動上一直過不去,Client是用serialusbfn.dll, 大家幫我看看我的打印信息,看看能不能看出問題所在 +USB FUNCTION Driver TCCxxxUSBFn!UfnPdd_Init: Using IO Base b0010000 TCCxxxUSB ...… 查看全部問答∨ |
最近發現,電腦硬盤經常吱吱響,尤其是在開機時候。 當然,不知道以前有沒有這現象,因為音量不是很大,我也是偶然,靠近主機,仔細才聽到的。 開始不敢確定時哪個部分,如風扇也可能的啊。 但是發現吱吱聲是跟著硬盤指示燈的節奏的,因此斷定是 ...… 查看全部問答∨ |
eZ430-RF2500-SEH 開發套件用于建立基于MSP430的傳感器網絡系統。該太陽能開發套件具備以下特點:1、具備高效的太陽能采集模塊。2、無需電池供電操作。3、工作于低的自然光照下。4、可匹配任何RF網絡以及傳感器輸入。5、輸入兼容其他采 ...… 查看全部問答∨ |
本帖最后由 jameswangsynnex 于 2015-3-3 20:03 編輯 這明顯是SD卡協會的成員在助力NFC,移動支付方面NFC發展確實還不夠迅速。 SD協會發表了具備SWP界面的SMART SD 存儲卡用于 NFC 應 用 microSD 存儲卡現在支持了智能卡安全芯片的加值服務SD 協 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 我是大偵探之:尋找遺落的TI電源拼圖
- “悅”讀deyisupport博文 樂享知識智贏好禮
- 有獎直播|Keysight World 2020【電信基礎設施、云與人工智能分論壇】
- 免費申請富士通FRAM 曬心得 贏大禮!
- 有獎直播:使用 NI CompactDAQ 和 LabVIEW構建基于傳感器的測試系統
- 看這里!發表個人原創就有機會獲得E金幣啦~~
- 【ST直播】MEMS傳感器開發套件簡介、了解內嵌“有限狀態機和機器學習內核”的傳感器
- 看視頻答題,玩轉幸運大抽獎:Littelfuse汽車電子電路保護知多少
- 【EE團拍賣】\\
- 搶先體驗!免費試用LM3S8962 評估套件?。?0.13~11.30)