国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Proteus和MedWin V3.0的直流數(shù)字電壓表的設(shè)計(jì)

2019-10-08 05:23:14嚴(yán)
關(guān)鍵詞:電壓表字符端口

嚴(yán) 敏

(江蘇旅游職業(yè)學(xué)院 信息工程學(xué)院,江蘇 揚(yáng)州 225127)

數(shù)字電壓表由于具有測(cè)量速度快、測(cè)量精度高、測(cè)量結(jié)果可視化顯示等優(yōu)點(diǎn),已廣泛應(yīng)用于智能測(cè)量控制的某些領(lǐng)域[1-2]。本文設(shè)計(jì)了一個(gè)基于Proteus和MedWin V3.0的直流數(shù)字電壓表,以微控制器芯片AT89C51為主控制器測(cè)量單通道模擬電壓,在ADC0832模數(shù)轉(zhuǎn)換后,輸出數(shù)字電壓值在LCD1602屏幕上實(shí)時(shí)顯示。

1 系統(tǒng)硬件設(shè)計(jì)

1.1 設(shè)計(jì)總體結(jié)構(gòu)

該設(shè)計(jì)使用單片機(jī)芯片AT89C51控制ADC0832進(jìn)行模數(shù)轉(zhuǎn)換,ADC0832輸入被測(cè)0~5V模擬電壓,經(jīng)模數(shù)轉(zhuǎn)換后,輸出的數(shù)字電壓值介于0x00~0xFF之間。單片機(jī)讀取ADC0832模數(shù)轉(zhuǎn)換結(jié)果,進(jìn)行數(shù)值量程變換,再送液晶屏LCD1602實(shí)時(shí)顯示,系統(tǒng)設(shè)計(jì)的總體結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)的總體結(jié)構(gòu)

1.2 A/D轉(zhuǎn)換器ADC0832

設(shè)計(jì)電路時(shí),將引腳VCC接5 V,將GND引腳接地,并將引腳 (芯片選擇使能)連接到微控制器AT89C51的P2.5端口,引腳CLK(時(shí)鐘輸入端子)連接到AT89C51的P2.6端口,引腳DI(數(shù)據(jù)信號(hào)輸入)和引腳DO(數(shù)據(jù)信號(hào)輸出)在通信期間不同時(shí)有效,并且與AT89C51的接口是雙向的,所以將它們并聯(lián)一起連接到AT89C51的P2.7端口,引腳CH0(模擬輸入通道0)經(jīng)過(guò)滑動(dòng)變阻器連接到被測(cè)模擬電壓,由于只測(cè)量一路電壓,所以不使用引腳CH1(模擬輸入通道1),如圖2所示。當(dāng)然,這里也可以將被測(cè)模擬電壓連接到引腳CH1,不使用引腳CH0。

圖2 ADC0832電路原理圖

1.3 LCD1602液晶顯示模塊

LCD1602屏幕可以顯示兩行字符,每行16個(gè),總共32個(gè)字符。在電路設(shè)計(jì)時(shí),引腳VSS接地,引腳VDD接5 V,引腳VEE接地。引腳RS(數(shù)據(jù)/指令寄存器選擇)、引腳R/W(讀/寫選擇)、引腳E(使能端)分別連接到AT89C51的P2端口的P2.0、P2.1、P2.2。引腳D0~ D7(8位數(shù)據(jù))直接連接到AT89C51的P0端口的P0.0~P0.7,這里使用上拉電阻RP1的目的是增加驅(qū)動(dòng)能力。

圖3 LCD1602電路原理圖

LCD1602內(nèi)部有一個(gè)80*8位的DDRAM緩沖區(qū),字符顯示位與DDRAM地址的對(duì)應(yīng)關(guān)系如表1所示,DDRAM第一行的地址從00H開始到27H結(jié)束,第二行的地址從40H開始到67H結(jié)束,每行40個(gè)地址,而LCD1602每行顯示16個(gè)字符,因此在編寫程序的時(shí)候,選用DDRAM的前16個(gè)地址即可,需要特別注意的是第二行地址是從40H開始的。如果要在LCD1602屏幕的某行某列顯示一個(gè)字符,就往某行某列對(duì)應(yīng)的DDRAM地址寫入這個(gè)字符對(duì)應(yīng)的ASCII碼,這時(shí)會(huì)發(fā)現(xiàn)液晶屏幕上并不能正常顯示出這個(gè)字符,原因就是必須在該地址的基礎(chǔ)上還要加上80H。比如,要在第二行第二列顯示電壓?jiǎn)挝环氐姆?hào)“V”,就要先將第二行第二列對(duì)應(yīng)的DDRAM地址41H加上80H,即C1H,然后在C1H地址寫入“V”字符對(duì)應(yīng)的ASCII碼0x56,這樣才能正常顯示,其它字符的顯示依此類推,不再贅述。

表1 顯示位與DDRAM的對(duì)應(yīng)關(guān)系

2 系統(tǒng)軟件設(shè)計(jì)

根據(jù)ADC0832的工作時(shí)序要求和LCD1602液晶顯示要求,該系統(tǒng)控制程序在MedwinV3.0開發(fā)軟件中用C51語(yǔ)言編寫完成,實(shí)現(xiàn)電壓表的測(cè)量功能。

2.1 主程序設(shè)計(jì)

void main()

{ unsigned int val; //定義變量

……

while(1)

{val=ADC(); //進(jìn)行A/D轉(zhuǎn)換

int=(val)/51; //計(jì)算整數(shù)部分

dec=(val%51)*100/51; //計(jì)算小數(shù)部分

Display1(int); //顯示整數(shù)部分

Display2(dec); //顯示小數(shù)部分 ……}

2.2 A/D轉(zhuǎn)換子程序設(shè)計(jì)

unsigned char ADC()//模數(shù)轉(zhuǎn)換子程序

{ ……

CS=0; //片選有效

CLK=1; CLK=0; //第一個(gè)脈沖的下降沿

DIO=1;

CLK=1; CLK=0; //第二個(gè)脈沖下降沿

DIO=0; //選擇通道CH0

CLK=1; CLK=0; //第三個(gè)脈沖下降沿

DIO=1; //DI失去作用

CLK=1; //第四個(gè)脈沖

for(i=0;i<8;i++)//一個(gè)字節(jié)8位數(shù)據(jù)

{CLK=1; CLK=0;

data<<=1;

data|=(unsigned char)DIO; }

CS=1; //片選無(wú)效

return data; } //將讀取的數(shù)據(jù)返回

2.3 LCD1602液晶顯示子程序設(shè)計(jì)

LCD1602液晶屏的驅(qū)動(dòng)程序編寫相對(duì)復(fù)雜,一定要弄清楚1602的各個(gè)操作指令的用法和意義,主要包括顯示模式的設(shè)置、顯示開關(guān)控制、輸入模式控制、從DDRAM中讀取數(shù)據(jù)、對(duì)DDRAM進(jìn)行寫數(shù)據(jù)、清屏、光標(biāo)歸位設(shè)定、數(shù)據(jù)地址指針設(shè)置、LCD目前的忙碌工作標(biāo)志等[3],其部分代碼設(shè)計(jì)如下所示:

……

void Lcd_initial()//初始化LCD

{ E=0;

Lcd_writecmd(0x38); //16*2顯示,5*7點(diǎn)陣

msdelay (1);

Lcd_writecmd(0x08); //顯示關(guān)閉

msdelay (2);

Lcd_writecmd(0x01); //顯示清屏

msdelay (2);

Lcd_writecmd(0x06); //設(shè)置光標(biāo),讀寫一個(gè)字符后,光標(biāo)加1

msdelay (1);

Lcd_writecmd (0x0c); //顯示打開,不顯示光標(biāo)

msdelay (1); }

3 仿真與結(jié)果分析

在Medwin V3.0開發(fā)軟件中編寫程序、修改調(diào)試程序、編譯后生成十六進(jìn)制HEX文件,打開Proteus電路設(shè)計(jì)圖,將其加載到AT89C51芯片中并啟動(dòng)仿真按鈕以查看系統(tǒng)設(shè)計(jì)的仿真結(jié)果。根據(jù)分壓原理,改變滑動(dòng)變阻器RV2的阻值大小,從而改變ADC0832輸入通道CH0的被測(cè)模擬電壓值,此時(shí)液晶 LCD1602顯示的電壓值隨之改變,并精確到小數(shù)點(diǎn)后兩位。為了便于電壓測(cè)量結(jié)果的分析,在RV2兩端加一個(gè)虛擬電壓表,同時(shí)觀察虛擬電壓表和LCD1602顯示數(shù)值的大小,分別如圖4和圖5所示。經(jīng)過(guò)多次測(cè)量,得出如下結(jié)論:被測(cè)模擬電壓和模數(shù)轉(zhuǎn)換后的數(shù)字電壓這兩者的電壓數(shù)值誤差較小,基本上約為10mV,小于8位分辨率的電壓精度5V/28≈19.53mV,可見(jiàn)測(cè)量精度高,滿足本設(shè)計(jì)要求。

圖4 虛擬電壓表

圖5 數(shù)字電壓表

4 結(jié)束語(yǔ)

本文基于Proteus和MedWin V3.0設(shè)計(jì)了直流數(shù)字電壓表,在MedWin V3.0開發(fā)環(huán)境中編寫、調(diào)試單片機(jī)C51程序,編譯完成后生產(chǎn)HEX文件并將其加載到AT89C51芯片中,以便在Proteus仿真平臺(tái)上進(jìn)行驗(yàn)證。Proteus和MedWin V3.0的聯(lián)合使用,不僅對(duì)單片機(jī)課程的課堂教學(xué)有較好的項(xiàng)目演示功能,而且對(duì)單片機(jī)項(xiàng)目的開發(fā)設(shè)計(jì)有很大的實(shí)際意義。

猜你喜歡
電壓表字符端口
尋找更強(qiáng)的字符映射管理器
如何判斷電壓表的測(cè)量對(duì)象
一種端口故障的解決方案
判斷電壓表測(cè)量對(duì)象有妙招
字符代表幾
一種USB接口字符液晶控制器設(shè)計(jì)
電子制作(2019年19期)2019-11-23 08:41:50
消失的殖民村莊和神秘字符
端口阻塞與優(yōu)先級(jí)
電壓表的妙用
再探電壓表內(nèi)阻的測(cè)量方法
依兰县| 山东省| 万山特区| 辽阳县| 启东市| 临安市| 龙游县| 五峰| 陆河县| 宁波市| 稻城县| 鲁甸县| 图木舒克市| 寻甸| 襄垣县| 尉氏县| 洪江市| 扶绥县| 剑河县| 德钦县| 盐津县| 镇雄县| 安多县| 元阳县| 柳州市| 牡丹江市| 盘山县| 当雄县| 黎川县| 临西县| 登封市| 舟曲县| 革吉县| 乌苏市| 永春县| 龙州县| 固安县| 石柱| 廊坊市| 北京市| 泸定县|