導航:首頁 > 操作系統 > 用ct模擬單片機

用ct模擬單片機

發布時間:2024-10-26 16:31:42

⑴ proteus模擬電路圖,51單片機按鍵計數

按照你題目,用了2個2位顯示,實際有4位合一起的。

k3:切換計數模式/預置模式。

計數模式:LED顯示計時數字,從0開始計時,直到預置最大值。

預置模式:LED顯示當前預置最大值,按k1,k2可對預置值+-操作,長按k1,k2大約2秒,會進入自動加減預置值。直到再次點擊k1,k2,k3任意一鍵停止自動。

k4:在計數模式下使用,每按下一次顯示的數字加一(會在正常計時同時額外+1)。

當計數達到預置最大值,會停止計數,LEN閃爍(實際就是交替顯示間隔邊長),蜂鳴器響。

按鍵時長、LED動態顯示間隔、閃爍間隔、計數速度,均可直接修改常量,需要自己改,我備注寫的很詳細。

電路基本按照你上圖,略有修改。

#include <reg52.h>

#define uint unsigned int

#define uchar unsigned char

#define an P0

#define on 0

#define off 1

#define SSSPEED 35 //LED交替閃爍間隔時間

#define JSPEED 5000//計數模式,速度默認數值(5000*200us=1S) 值越小計數越快

#define PREESTIME 500//按鈕長按時間判定,預設500(大約2秒),需要自改,值越大,長按時間越長

sbit fm=P3^3;

sbit wei1=P3^4;

sbit wei2=P3^5;

sbit wei3=P3^6;

sbit wei4=P3^7;

sbit k1=P1^4;

sbit k2=P1^5;

sbit k3=P1^6;

sbit k4=P1^7;

uint jsSpd=JSPEED;//計時速度,默認1s一次(5000*200us)

uint ssSpd=SSSPEED;//LED交替閃爍速度

//共陽極

int delay(uint xms);

void init();

void jspause();//計數器開啟/停止

void setnumYS();//設置預設數值

void numJsChange();//計數模式數字改變

void showLED();

int pressWait(uint btn);

uint g=0;

uint s=0;

uint b=0;

uint q=0;

uint count=0;

uint ispause=1;

uint numYS=0;//預設數值

uint numJS=0;//實際計時的數字

uint isMaxJs=0;//標識:計時達最大。 達最大1,否0

uint isk3press=0;//標識:k3按鈕是否被點擊。 點擊1,否0

uint ispress1=0;//標識:k1被長按

uint ispress2=0;//標識:k2被長按

uint isbtn4=0;//標識:k4被按下

uint btnName=0;//按鈕長按計時

void main()

{

init();

while(1)

{

if(ispause==1 && ispress1==1 && numYS<9999) //預置模式下,k1已長按,自動增

{

numYS++;

setnumYS();

}

if(ispause==1 && ispress2==1 && numYS>0) //預置模式下,k2已長按,自動減

{

numYS--;

setnumYS();

}

if(isMaxJs==0 && numJS>=numYS && ispause==0) //計時模式下達最大值

{

fm=on;

ssSpd=1000;//增加LED交替間隔,實現數字閃爍

isMaxJs=1;

EA=0;

setnumYS();

numJS=0;

}

if(k1==0 ||k2==0|| k3==0) //k1k2k3任意一個按鈕被按下,停止預置數自動增長

{

ispress1=0;

ispress2=0;

}

if(k1==0 && ispause==1)//預置模式下+

{

delay(10);

if(k1==0)

{

btnName=1;

if(pressWait(btnName))//判斷連按

{

while(k1==0);

ispress1=1;

}

else if(numYS<9999)

{

numYS++;

setnumYS();

}

}

}

if(k2==0 && ispause==1)//預置模式下-

{

delay(10);

if(k2==0)

{

btnName=2;

if(pressWait(btnName))//判斷連按

{

while(k2==0);

ispress2=1;

}

else if(numYS>0)

{

numYS--;

setnumYS();

}

}

}

if(k3==0)

{

delay(10);

if(k3==0)

{

while(k3==0);

fm=off;

jspause();

}

}

if(k4==0 && ispause==0)//計數模式下按下k4,k4的防抖寫在中斷中

{

delay(10);

if(k4==0)

{

while(k4==0);

isbtn4=1;

}

}

showLED();

}

}

void showLED()

{

uchar nums[10]={0xc0,0xf9,0xa4,0xB0,0x99,0x92,0x82,0xf8,0x80,0x98};

if(g>=0)

{

an=nums[g];

wei4=on;

delay(ssSpd);

wei4=off;

}

if(s>0 || (s==0 && b>0))

{

an=nums[s];

wei3=on;

delay(ssSpd);

wei3=off;

}

if(b>0 || (b==0 && q>0))

{

an=nums[b];

wei2=on;

delay(ssSpd);

wei2=off;

}

if(q>0)

{

an=nums[q];

wei1=on;

delay(ssSpd);

wei1=off;

}

}

void setnumYS()//設置預設數值

{

q=numYS/1000;

b=(numYS%1000)/100;

s=(numYS%100)/10;

g=numYS%10;

}

void jspause()

{

if(ispause==0 || isMaxJs==1)//關閉計時模式 / 啟動預置模式

{

EA=0;

isMaxJs=0;

ispause=1;

ssSpd=SSSPEED;

ispress1=0;

ispress2=0;

setnumYS();

}

else if(ispause==1) //啟動計時模式 / 關閉預置模式

{

ispause=0;

q=b=s=g=0;

numJS=0;

ssSpd=SSSPEED;

EA=1;

}

}

void init()

{

TMOD=0x02; //T0 工作模式2 自動裝填8位 200us

TH0=0x38;

TL0=0x38;

EA=0;

ET0=1;

TR0=1;

wei1=off;

wei2=off;

wei3=off;

wei4=off;

}

void numJsChange()//計數模式數字改變

{

if(g==9)

{

g=0;

if(s==9)

{

s=0;

if(b==9)

{

b=0;

if(q==9)

{

q=0;

}

else

q++;

}

else

b++;

}

else

s++;

}

else

g++;

}

void ct() interrupt 1 //一次中斷200us

{

if(count<jsSpd)

count++;

else

{

count=0;

numJsChange();

numJS++;

}

if(isbtn4==1)

{

isbtn4=0;

numJsChange();

numJS++;

}

}

int pressWait(uint btn)

{

uint i,j;

for(i=PREESTIME;i>0;i--)

for(j=110;j>0;j--)

{

if((k1==1 && btn==1)||(k2==1 && btn==2))

return 0;

}

return 1;

}

int delay(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--)

{

if(k1==0 || k2==0 ||k3==0)

return 1;

}

return 0;

}

⑵ 如何用單片機控制液晶顯示器呀,怎麼接線……

液晶顯示器有字元型,如1602,這個液晶顯示器目前是統一的,引腳和命令字都 是統一的。接線如下圖所示

⑶ 單片機的輸入和輸出的都是什麼

單片機的輸入和輸出分為數字量和模擬量兩種。

數字量定義為:在時間和數值上都是斷續變化的離散信號。最基本的數字量就是0和1,反映到開關上就是指一個開關的打開(0)或閉合(1)狀態。

模擬量定義為:在時間和數上都是連續變化的信號。指經PT、CT等各類感測器傳送過來的電壓、電流、頻率等信號,即模擬量。

輸入信號:是通過外部的觸點、開關、變送器、感測器等信號接入到單片機中。

輸出信號:單片機通過內部程序的判斷和計算,將電流、電壓、開關等信號傳送到外部的信號。

下圖為典型的51系列單片機接線圖

其中P0為模擬量輸入端、P3為數字量輸入端。

⑷ 請問AVR單片機中「輸入捕獲功能」怎麼用有例子最好!

DSP(digital signal processor)是一種獨特的微處理器,是以數字信號來處理大量信息的器件。其工作原理是接收模擬信號,轉換為0或1的數字信號,再對數字信號進行修改、刪除、強化,並在其他系統晶元中把數字數據解譯回模擬數據或實際環境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數以千萬條復雜指令程序,遠遠超過通用微處理器,是數字化電子世界中日益重要的電腦晶元。它的強大數據處理能力和高運行速度,是最值得稱道的兩大特色。 DSP微處理器(晶元)一般具有如下主要特點: (1)在一個指令周期內可完成一次乘法和一次加法; (2)程序和數據空間分開,可以同時訪問指令和數據; (3)片內具有快速RAM,通常可通過獨立的數據匯流排在兩塊中同時訪問; (4)具有低開銷或無開銷循環及跳轉的硬體支持; (5)快速的中斷處理和硬體I/O支持; (6)具有在單周期內操作的多個硬體地址產生器; (7)可以並行執行多個操作; (8)支持流水線操作,使取指、解碼和執行等操作可以重疊執行。 當然,與通用微處理器相比,DSP微處理器(晶元)的其他通用功能相對較弱些。 DSP優點: 對元件值的容限不敏感,受溫度、環境等外部參與影響小; 容易實現集成;VLSI 可以分時復用,共享處理器; 方便調整處理器的系數實現自適應濾波; 可實現模擬處理不能實現的功能:線性相位、多抽樣率處理、級聯、易於存儲等; 可用於頻率非常低的信號。 DSP缺點: 需要模數轉換; 受采樣頻率的限制,處理頻率范圍有限; 數字系統由耗電的有源器件構成,沒有無源設備可靠。 但是其優點遠遠超過缺點。
DSP技術的應用
語音處理:語音編碼、語音合成、語音識別、語音增強、語音郵件、語音儲存等。 圖像/圖形:二維和三維圖形處理、圖像壓縮與傳輸、圖像識別、動畫、機器人視覺、多媒體、電子地圖、圖像增強等。 軍事;保密通信、雷達處理、聲吶處理、導航、全球定位、跳頻電台、搜索和反搜索等。 儀器儀表:頻譜分析、函數發生、數據採集、地震處理等。 自動控制:控制、深空作業、自動駕駛、機器人控制、磁碟控制等。 醫療:助聽、超聲設備、診斷工具、病人監護、心電圖等。 家用電器:數字音響、數字電視、可視電話、音樂合成、音調控制、玩具與游戲等。 生物醫學信號處理舉例: CT機示例
CT:計算機X射線斷層攝影裝置。(其中發明頭顱CT英國EMI公司的豪斯菲爾德獲諾貝爾獎。) CAT:計算機X射線空間重建裝置。出現全身掃描,心臟活動立體圖形,腦腫瘤異物,人體軀干圖像重建。 心電圖分析。
編輯本段AVR的主要特性
高可靠性、功能強、高速度、低功耗和低價位 , 一直是衡量單片機性能的重要指標,也是單片機佔領市場、賴以生存的必要條件。 早期單片機主要由於工藝及設計水平不高、功耗高和抗干擾性能差等原因,所以採取穩妥方案:即採用較高的分頻系數對時鍾分頻,使得指令周期長,執行速度慢。以後的 CMOS單片機雖然採用提高時鍾頻率和縮小分頻系數等措施,但這種狀態並未被徹底改觀(51以及51兼容)。此間雖有某些精簡指令集單片機(RISC)問世,但依然沿襲對時鍾分頻的作法。 AVR單片機的推出,徹底打破這種舊設計格局,廢除了機器周期,拋棄復雜指令計算機(CISC)追求指令完備的做法;採用精簡指令集,以字作為指令長度單位,將內容豐富的操作數與操作碼安排在一字之中(指令集中佔大多數的單周期指令都是如此),取指周期短,又可預取指令,實現流水作業,故可高速執行指令。當然這種速度上的升躍,是以高可靠性為其後盾的。 AVR單片機硬體結構採取8位機與16位機的折中策略,即採用局部寄存器存堆(32個寄存器文件)和單體高速輸入/輸出的方案(即輸入捕獲寄存器、輸出比較匹配寄存器及相應控制邏輯)。提高了指令執行速度(1Mips/MHz),克服了瓶頸現象,增強了功能;同時又減少了對外設管理的開銷,相對簡化了硬體結構,降低了成本。故AVR單片機在軟/硬體開銷、速度、性能和成本諸多方面取得了優化平衡,是高性價比的單片機。 AVR單片機內嵌高質量的Flash程序存儲器,擦寫方便,支持ISP和IAP,便於產品的調試、開發、生產、更新。內嵌長壽命的EEProm可長期保存關鍵數據,避免斷電丟失。片內大容量的RAM不僅能滿足一般場合的使用,同時也更有效的支持使用高級語言開發系統程序,並可像MCS-51單片機那樣擴展外部 RAM。 AVR單片機的I/O線全部帶可設置的上拉電阻、可單獨設定為輸入/輸出、可設定(初始)高阻輸入、驅動能力強(可省去功率驅動器件)等特性,使的得I/O口資源靈活、功能強大、可充分利用。 AVR單片機片內具備多種獨立的時鍾分頻器,分別供URAT、I2C、SPI使用。其中與8/16位定時器配合的具有多達10 位的預分頻器,可通過軟體設定分頻系數提供多種檔次的定時時間。AVR單片機獨有的「以定時器/計數器(單)雙向計數形成三角波,再與輸出比較匹配寄存器配合,生成占空比可變、頻率可變、相位可變方波的設計方法(即脈寬調制輸出PWM)」更是令人耳目一新。 增強性的高速同/非同步串口,具有硬體產生校驗碼、硬體檢測和校驗偵錯、兩級接收緩沖、波特率自動調整定位(接收時)、屏蔽數據幀等功能,提高了通信的可靠性,方便程序編寫,更便於組成分布式網路和實現多機通信系統的復雜應用,串口功能大大超過MCS-51/96單片機的串口,加之AVR單片機高速,中斷服務時間短,故可實現高波特率通訊。 面向位元組的高速硬體串列介面TWI、SPI。TWI與I2C介面兼容,具備ACK信號硬體發送與識別、地址識別、匯流排仲裁等功能,能實現主/從機的收/發全部4種組合的多機通信。SPI支持主/從機等4種組合的多機通信。 AVR單片機有自動上電復位電路、獨立的看門狗電路、低電壓檢測電路BOD,多個復位源(自動上下電復位、外部復位、看門狗復位、BOD復位),可設置的啟動後延時運行程序,增強了嵌入式系統的可靠性。 AVR單片機具有多種省電休眠模式,且可寬電壓運行(5-1.8V),抗干擾能力強,可降低一般8位機中的軟體抗干擾設計工作量和硬體的使用量。 AVR單片機技術體現了單片機集多種器件(包括FLASH程序存儲器、看門狗、EEPROM、同/非同步串列口、TWI、SPI、A/D模數轉換器、定時器/計數器等)和多種功能(增強可靠性的復位系統、降低功耗抗干擾的休眠模式、品種多門類全的中斷系統、具輸入捕獲和比較匹配輸出等多樣化功能的定時器/計數器、具替換功能的I/O埠…… )於一身,充分體現了單片機技術的從「片自為戰」向「片上系統SoC」過渡的發展方向。 綜上所述,AVR單片機博採眾長,又具獨特技術,不愧為8位機中的佼佼者。
編輯本段AVR 最大特點
● 哈佛結構,具備1MIPS / MHz的高速運行處理能力; ● 超功能精簡指令集(RISC),具有32個通用工作寄存器,克服了如8051 MCU採用單一ACC進行處理造成的瓶頸現象; ● 快速的存取寄存器組、單周期指令系統,大大優化了目標代碼的大小、執行效率,部分型號FLASH非常大,特別適用於使用高級語言進行開發; ● 作輸出時與PIC的HI/LOW相同,可輸出40mA(單一輸出),作輸入時可設置為三態高阻抗輸入或帶上拉電阻輸入,具備10mA-20mA灌電流的能力; ● 片內集成多種頻率的RC振盪器、上電自動復位、看門狗、啟動延時等功能,外圍電路更加簡單,系統更加穩定可靠; ● 大部分AVR片上資源豐富:帶E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comparator,WDT等; ● 大部分AVR除了有ISP功能外,還有IAP功能,方便升級或銷毀應用程序 AVR系列單片機的選型 AVR單片機系列齊全,可適用於各種不同場合的要求。AVR單片機有3個檔次: 低檔Tiny系列AVR單片機: 主要有Tiny11/12/13/15/26/28等; 中檔AT90S系列AVR 單片機: 主要有AT90S1200/2313/8515/8535等; (正在淘汰或轉型到Mega中) 高檔ATmega系列AVR單片機: 主要有ATmega8/16/32/64/128( 存儲容量為8/16/32/64/128 KB)以及ATmega8515/8535等。

我個人的觀點,單片機是所有微處理器的基礎,也是最容易掌握的,AVR單片機只是其中的一種。而DSP要比單片機復雜一些,主要應用在數字信號處理,其實是較復雜的單片機,當然,你要學會了DSP,單片機自然也就會了。至於就業問題,DSP要好一些。

閱讀全文

與用ct模擬單片機相關的資料

熱點內容
python曲線數據預設 瀏覽:845
漢能壓縮機 瀏覽:73
全球加密貨幣十大交易平台 瀏覽:963
汽車如何與伺服器連接 瀏覽:85
如何創建伺服器密碼 瀏覽:918
creo扭曲命令正常使用 瀏覽:51
ase加密qt 瀏覽:666
看app登錄和不登錄有什麼區別 瀏覽:464
da轉換單片機 瀏覽:680
程序員老婆發型 瀏覽:816
py腳本反編譯 瀏覽:463
為什麼國內網路用國外的app卡 瀏覽:937
centos7更新命令 瀏覽:987
自動播放文件夾怎麼關閉 瀏覽:770
slam演算法實現 瀏覽:347
復制目標文件夾訪問被拒需要許可權 瀏覽:411
linuxbcast修改 瀏覽:185
手機如何用雲伺服器掛軟體 瀏覽:280
時間窗app是什麼東西 瀏覽:497
易語言埠映射源碼 瀏覽:41