Keil C51 使用技巧及實(shí)戰(zhàn):到你的程序中這本書(shū)將教你充分使用你的工具如果你只有8051 的匯編程序你也可以學(xué)習(xí)該書(shū)和使用這些例子但是你必須把C 語(yǔ)言的程序裝入你的匯編程序中這對(duì)懂得C 語(yǔ)言和8051匯編程序指令的人來(lái)說(shuō)并不是一件困難的事如果你有C 編譯器的話(huà)那恭喜你使用C 語(yǔ)言進(jìn)行開(kāi)發(fā)是一個(gè)好的決定你會(huì)發(fā)現(xiàn)使用C 進(jìn)行開(kāi)發(fā)將使你的工程開(kāi)發(fā)和維護(hù)的時(shí)間大大減少如果你已經(jīng)擁有Keil C51 那你已經(jīng)選擇了一個(gè)非常好的開(kāi)發(fā)工具我發(fā)現(xiàn)Keil 軟件包能夠提供最好的支持本書(shū)支持Keil C 的擴(kuò)展如果你有其它的開(kāi)發(fā)工具像Archimedes 和Avocet 這本書(shū)也能很好地為你服務(wù)但你必須根據(jù)你所用的開(kāi)發(fā)工具改變一些Keil 的特殊指令在書(shū)的一些地方有硬件圖實(shí)例程序在這些硬件上運(yùn)行這些圖繪制地不是很詳細(xì)主要是方框圖但足以使讀者明白軟件和硬件之間的接口讀者應(yīng)該把這本書(shū)看成工具書(shū)而不是用來(lái)學(xué)習(xí)各種系統(tǒng)設(shè)計(jì)通過(guò)本書(shū)你可以了解給定一定的硬件和軟件設(shè)計(jì)之后8051 的各種性能希望你能從本書(shū)中獲取靈感并有助于你的設(shè)計(jì)使你豁然開(kāi)朗當(dāng)然我希望你也能夠從本書(shū)中學(xué)到有用的知識(shí)使之能夠提升你的設(shè)計(jì)。
上傳時(shí)間: 2013-10-27
上傳用戶(hù):Jerry_Chow
C51單片機(jī)是我們生活中最常用的系列,MCS-51系列單片機(jī)有4個(gè)并行口(P0,P1,P2,P3口),但對(duì)一個(gè)稍微復(fù)雜的應(yīng)用系統(tǒng)來(lái)說(shuō),真正可供用戶(hù)使用的并行口,只有P1口可用,況且常常因擴(kuò)展I2C和SPI的器件需占用某些P1口,迫使用戶(hù)不得不擴(kuò)展并行口以滿(mǎn)足實(shí)際的需要。習(xí)慣上,常用的并行口接口芯片有8255、8155,這兩種芯片功能比較齊全,可以使用在相對(duì)比較復(fù)雜的系統(tǒng)中,但如是對(duì)一般的系統(tǒng)而言,這些功能往往閑置不用。那么就可以選用一些本來(lái)閑置不用的口線作為選通信號(hào)來(lái)進(jìn)行并行口的擴(kuò)展,這樣就能充分利用單片機(jī)有限的I/O資源,在本設(shè)計(jì)中是將P1口擴(kuò)展成一個(gè)或幾個(gè)8位并行口,在每一個(gè)八位口上接入8個(gè)發(fā)光二極管做為輸出,二極管是做開(kāi)關(guān)量來(lái)使用的,在這里設(shè)計(jì)了跑馬燈和流水燈程序,做到對(duì)開(kāi)關(guān)量的開(kāi)斷控制;配合開(kāi)關(guān)量的控制筆者設(shè)計(jì)了一個(gè)共陽(yáng)LED數(shù)碼管,用來(lái)顯示當(dāng)前發(fā)光二極管發(fā)亮的序號(hào),做到更加直觀的雙重控制效果,然后再將P0口通過(guò)D/A轉(zhuǎn)換器和一放大器輸出一個(gè)模擬信號(hào),其結(jié)果可以通過(guò)示波器看出。這樣整個(gè)系統(tǒng)即有了數(shù)字信號(hào)輸出和模擬信號(hào)輸出,也有數(shù)碼管顯示功能,實(shí)用性能大提高了。2、 基于89C51的系統(tǒng)硬件設(shè)計(jì)2.1 并行口的擴(kuò)展的電路設(shè)計(jì) 眾所周知,C51系列的單片機(jī)都有四個(gè)I/O口(P0、P1、P2、P3),那么AT89C51也不例外,但我們通常僅僅使用P1口作為并行口,而令其余口(P2、P3)處于閑置狀態(tài),所以這次設(shè)計(jì),我們就是使用閑置不用的P3口做為選能信號(hào)線來(lái)將P1口進(jìn)行并行口擴(kuò)展。 (1) 種方式的并行口擴(kuò)展優(yōu)點(diǎn) 連線簡(jiǎn)單; 不占用存儲(chǔ)器空間; (2) 編程也方便靈活。但也有很大的缺點(diǎn) 并行口擴(kuò)展能力有限,(如使用74LS573(74LS373)且不進(jìn)行驅(qū)動(dòng)處理,則最多可擴(kuò)展4個(gè)同樣類(lèi)型的并行輸出端口,當(dāng)然還需要與之對(duì)應(yīng)的四個(gè)選通信號(hào)。) 如擴(kuò)展較多,選通信號(hào)占用并行口位數(shù)太多,例如欲擴(kuò)展8個(gè)并行輸出端口,則需要8個(gè)選能信號(hào),此時(shí),僅選能信號(hào)就占用了一個(gè)8位并行口,這對(duì)在I/O端口線有限的單片機(jī)系統(tǒng)中,如此浪費(fèi)資源的現(xiàn)象是不能容忍的。在本次的設(shè)計(jì)中,采用芯片74HC573(帶三態(tài)輸出的八進(jìn)制透明D型鎖存器)對(duì)P1口進(jìn)行了一個(gè)8位并行口的擴(kuò)展,選通信號(hào)選用P3口的P3.3引腳。原理圖如圖1所示:
標(biāo)簽: C51 單片機(jī) 并行口 擴(kuò)展設(shè)計(jì)
上傳時(shí)間: 2013-11-18
上傳用戶(hù):dbs012280
三種方法讀取鍵值 使用者設(shè)計(jì)行列鍵盤(pán)介面,一般常採(cǎi)用三種方法讀取鍵值。 中斷式 在鍵盤(pán)按下時(shí)產(chǎn)生一個(gè)外部中斷通知CPU,並由中斷處理程式通過(guò)不同位址讀資料線上的狀態(tài)判斷哪個(gè)按鍵被按下。 本實(shí)驗(yàn)採(cǎi)用中斷式實(shí)現(xiàn)使用者鍵盤(pán)介面。 掃描法 對(duì)鍵盤(pán)上的某一行送低電位,其他為高電位,然後讀取列值,若列值中有一位是低,表明該行與低電位對(duì)應(yīng)列的鍵被按下。否則掃描下一行。 反轉(zhuǎn)法 先將所有行掃描線輸出低電位,讀列值,若列值有一位是低表明有鍵按下;接著所有列掃描線輸出低電位,再讀行值。 根據(jù)讀到的值組合就可以查表得到鍵碼。4x4鍵盤(pán)按4行4列組成如圖電路結(jié)構(gòu)。按鍵按下將會(huì)使行列連成通路,這也是見(jiàn)的使用者鍵盤(pán)設(shè)計(jì)電路。 //-----------4X4鍵盤(pán)程序--------------// uchar keboard(void) { uchar xxa,yyb,i,key; if((PINC&0x0f)!=0x0f) //是否有按鍵按下 {delayms(1); //延時(shí)去抖動(dòng) if((PINC&0x0f)!=0x0f) //有按下則判斷 { xxa=~(PINC|0xf0); //0000xxxx DDRC=0x0f; PORTC=0xf0; delay_1ms(); yyb=~(PINC|0x0f); //xxxx0000 DDRC=0xf0; //復(fù)位 PORTC=0x0f; while((PINC&0x0f)!=0x0f) //按鍵是否放開(kāi) { display(data); } i=4; //計(jì)算返回碼 while(xxa!=0) { xxa=xxa>>1; i--; } if(yyb==0x80) key=i; else if(yyb==0x40) key=4+i; else if(yyb==0x20) key=8+i; else if(yyb==0x10) key=12+i; return key; //返回按下的鍵盤(pán)碼 } } else return 17; //沒(méi)有按鍵按下 }
上傳時(shí)間: 2013-11-12
上傳用戶(hù):a673761058
Keil C51 是目前世界上最好的51單片機(jī)的匯編和c語(yǔ)言的開(kāi)發(fā)工具。支持匯編,c語(yǔ)言以及混合編程。同時(shí)具備功能強(qiáng)大的軟件仿真和硬件仿真(用mon51協(xié)議)。發(fā)布日期:2008.1
上傳時(shí)間: 2013-11-20
上傳用戶(hù):642778338
I2C總線高頻頭控制程序(Keil C51程序 基于芯片TSA5522系列) /*I2C總線高頻頭控制Keil C51程序(PLL芯片為T(mén)SA5522系列) *///--------------------------------------------------------------------------//// 源程序大公開(kāi) //// (c) Copyright 2001-2003 xuwenjun //// All Rights Reserved //// V1.00 ////--------------------------------------------------------------------------////標(biāo) 題: I2C總線高頻頭控制程序(PLL芯片為T(mén)SA5522系列) ////文件名: xwj_fi1256.c ////版 本: V1.00 ////修改人: 徐文軍 E-mail:xuwenjun@21cn.com ////日 期: 06-02-26 首次公開(kāi) ////描 述: I2C總線高頻頭控制程序(PLL芯片為T(mén)SA5522系列) ////聲 明: //// 以下代碼僅免費(fèi)提供給學(xué)習(xí)用途,但引用或修改后必須在文件中聲明出處. //// 如用于商業(yè)用途請(qǐng)與作者聯(lián)系. E-mail:xuwenjun@21cn.com //// 有問(wèn)題請(qǐng)mailto xuwenjun@21cn.com 歡迎與我交流! ////--------------------------------------------------------------------------////老版本: 無(wú) 老版本文件名: ////創(chuàng)建人: 徐文軍 E-mail:xuwenjun@21cn.com ////日 期: 06-02-26 ////描 述: ////--------------------------------------------------------------------------// /* 頻率單位為KHz */#define FUENCY 38900 /* 中頻頻率 */#define PLLdataH(f) ((f+FUENCY)*16/1000/256) /* 頻率數(shù)據(jù)高 第1字節(jié)*/#define PLLdataL(f) ((f+FUENCY)*16/1000%256) /* 頻率數(shù)據(jù)低 第2字節(jié)*/#define PLLCON1 0x8e /* 控制字1 第3字節(jié)*/ /* 控制字2 第4字節(jié)*/#define PLLCON2(f) (((f)<(168000))?(0xa0):(((f)<(450000))?(0x90):(0x30)))#define PLLdata3(fchan) PLLdataH (fchan),PLLdataL (fchan),PLLCON2 (fchan)
上傳時(shí)間: 2013-11-10
上傳用戶(hù):nanfeicui
EEPROM為ATMEL公司的AT24C01A。單片機(jī)為ATMEL公司的AT89C51。2. 軟件說(shuō)明 C語(yǔ)言為Franklin C V3.2。將源程序另存為testi2c.c,用命令C51 testi2c.cL51 TESTI2C.OBJOHS51 TESTI2C編譯,連接,得到TESTI2C.HEX文件,即可由編程器讀入并進(jìn)行寫(xiě)片,實(shí)驗(yàn)。3.源程序#include <reg51.h>#include <intrins.h> #define uchar unsigned char#define uint unsigned int#define AddWr 0xa0 /*器件地址選擇及寫(xiě)標(biāo)志*/#define AddRd 0xa1 /*器件地址選擇及讀標(biāo)志*/#define Hidden 0x0e /*顯示器的消隱碼*/
標(biāo)簽: C51 I2C 單片機(jī) C語(yǔ)言
上傳時(shí)間: 2013-10-09
上傳用戶(hù):hjshhyy
西門(mén)子c166系列16位單片機(jī)原理與開(kāi)發(fā)系列
標(biāo)簽: c166 固化 位單片機(jī) 西門(mén)子
上傳時(shí)間: 2014-03-24
上傳用戶(hù):asasasas
西門(mén)子TC35模塊的使用
上傳時(shí)間: 2013-11-03
上傳用戶(hù):dljwq
西電通信工程培養(yǎng)方案
上傳時(shí)間: 2013-11-07
上傳用戶(hù):ppeyou
本手冊(cè)可以很容易設(shè)置和使用西門(mén)子MULTIRANGER 100 200超聲波物位計(jì)
標(biāo)簽: MULTIRANGER 100 200 西門(mén)子
上傳時(shí)間: 2013-11-19
上傳用戶(hù):liuchee
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1