一、系統(tǒng)方案
1、板載可變電阻(電位器)R29的電壓作為處理器ATmega128的模數(shù)轉(zhuǎn)換模塊中單端ADC0的模擬信號(hào)輸入(跳線JP13短接)。
2、調(diào)節(jié)電位器,將改變AD轉(zhuǎn)換接口ADC0的模擬信號(hào)輸入,由處理器完成ADC0的A/D轉(zhuǎn)換。
3、將處理器通過(guò)A/D轉(zhuǎn)換后得到的電壓信號(hào)來(lái)模擬“貨物”的重量。假定轉(zhuǎn)換得到的電壓信號(hào)與“貨物”重量具有線性關(guān)系,例:電壓2.5V時(shí),貨物重量為500kg,電壓為0V時(shí),傳送裝置空載。
4、將轉(zhuǎn)換得到的電壓及對(duì)應(yīng)的“貨物”重量通過(guò)7段數(shù)碼管LED或液晶顯示屏或PC串口顯示。
5、使用板載4*4矩陣鍵盤中的四個(gè)按鍵號(hào)分別為A-D的4個(gè)按鍵和8個(gè)發(fā)光二極管D1-D8。
A鍵為傳送裝置啟動(dòng)按鍵,按下后,板載發(fā)光二極管D1亮,表示傳送裝置啟動(dòng)。
B鍵鍵為正向傳送控制鍵,在A啟動(dòng)后B才有效,B按下后,發(fā)光二極管D2-D8從左到右依次循環(huán)點(diǎn)亮,表示“傳送裝置”開始正向傳送貨物。
C鍵為反向傳送控制鍵,同樣在A啟動(dòng)后才有效,C按下后,發(fā)光二極管D2-D8從右到左依次循環(huán)點(diǎn)亮,表示“傳送裝置”開始反向傳送貨物。
D鍵為停止鍵,D按下后, “傳送裝置”停止工作,所有發(fā)光二極管全部熄滅。
二、硬件設(shè)計(jì)
原理圖如下:
三、單片機(jī)軟件設(shè)計(jì)
1、首先是系統(tǒng)初始化
void LCD12864_Init() //初始化液晶12864
{
ResetLcd();
SetScreenOnOff(0);
delay_nus(2);
SetPage(0);
delay_nus(2);
SetColum(0);
delay_nus(2);
SetRow(0);
delay_nus(2);
SetScreenOnOff(1);
}
2、液晶顯示程序
void SendCommand(unsigned char command)//給液晶寫入命令控制字
{
CheckState();
LGM12864_CLR_RS;
LGM12864_CLR_RW;
LCDa_DO = command;
delay_nus(2);
LGM12864_SET_EN;
delay_nus(2);
LGM12864_CLR_EN;
}
unsigned char LCD12864_RecData()//液晶接收數(shù)據(jù)
{
unsigned char temp;
CheckState();
LGM12864_SET_RS;
LGM12864_SET_RW;
LGM12864_SET_EN;
temp=LCDa_DI;
LGM12864_CLR_EN;
return (temp);
}
3、按鍵程序
void key(void)//按鍵檢測(cè)
{
if((k1)==0)//開始按鍵
{
delay_nms(10);
if((k1)==0)
{
led_start=1;led_0;
}
while((k1)==0);
}
if((k2)==0)//正轉(zhuǎn)
{
delay_nms(10);
if((k2)==0)
{
if(led_start) fx=1;
count=0;
}
while((k2)==0);
}
if((k3)==0)// 反轉(zhuǎn)
{
delay_nms(10);
if((k3)==0)
{
if(led_start) fx=2;
count=0;
}
while((k3)==0);
}
if((k4)==0)//停止
{
delay_nms(10);
if((k4)==0)
{
led_start=0;led_1;
}
while((k4)==0);
}
}
4、核心算法程序
#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
TCNT1H = 0xFC; //reload counter high value
TCNT1L = 0x18; //reload counter low value
num++;
if(led_start)
{
if(fx==1) PORTB=table0[count];
if(fx==2) PORTB=table1[count];
if(num>300)
{
num=0;
count++;
count%=8;
}
}
else
{
PORTB=0xff;
}
}
四、proteus仿真設(shè)計(jì)
Proteus軟件是一款應(yīng)用比較廣泛的工具,它可以在沒(méi)有硬件平臺(tái)的基礎(chǔ)上通過(guò)自身的軟件仿真出硬件平臺(tái)的運(yùn)行情況,這樣就可以通過(guò)軟件仿真來(lái)驗(yàn)證我們?cè)O(shè)計(jì)的方案有沒(méi)有問(wèn)題,如果有問(wèn)題,可以重新選擇器件,連接器件,直到達(dá)到我們?cè)O(shè)定的目的,避免我們搭建實(shí)物的時(shí)候,如果當(dāng)初選擇的方案有問(wèn)題,我們器件都已經(jīng)焊接好了,再去卸載下去,再去焊接新的方案的器件,測(cè)試,這樣會(huì)浪費(fèi)人力和物力,也給開發(fā)者帶來(lái)一定困惑,Proteus仿真軟件就很好的解決這個(gè)問(wèn)題,我們?cè)谠O(shè)計(jì)之初,就使用該軟件進(jìn)行模擬仿真,測(cè)試,選擇滿足我們?cè)O(shè)計(jì)的最優(yōu)方案。最后根據(jù)測(cè)試沒(méi)問(wèn)題的仿真圖紙,焊接實(shí)物,調(diào)試,最終完成本設(shè)計(jì)的作品。
審核編輯 黃宇
-
處理器
+關(guān)注
關(guān)注
68文章
19409瀏覽量
231207 -
電位器
+關(guān)注
關(guān)注
14文章
1013瀏覽量
66981 -
AVR128
+關(guān)注
關(guān)注
0文章
6瀏覽量
5316 -
單片機(jī)
+關(guān)注
關(guān)注
0文章
218瀏覽量
16658
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
之前51單片機(jī)實(shí)驗(yàn)板安裝的drivrer,可以用作AVR單片機(jī)drivrer嗎
AVR128實(shí)驗(yàn)板下載不了程序的原因
求AVR128的數(shù)碼相框的設(shè)計(jì)!!!!急!!!
怎么用AVR128單片機(jī)(C語(yǔ)言)控制可編程數(shù)字電位器AD5122,求...
ucosii在AVR128芯片移植中出現(xiàn)了什么問(wèn)題?怎樣去解決?
51單片機(jī)與AVR單片機(jī)的區(qū)別在哪
基于AVR單片機(jī)的直流無(wú)刷電機(jī)智能控制系統(tǒng)設(shè)計(jì)講解
![基于<b class='flag-5'>AVR</b><b class='flag-5'>單片機(jī)</b>的直流無(wú)刷電<b class='flag-5'>機(jī)智能</b>控制系統(tǒng)設(shè)計(jì)講解](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
基于AVR單片機(jī)的直流無(wú)刷電機(jī)智能控制系統(tǒng)設(shè)計(jì)
![基于<b class='flag-5'>AVR</b><b class='flag-5'>單片機(jī)</b>的直流無(wú)刷電<b class='flag-5'>機(jī)智能</b>控制系統(tǒng)設(shè)計(jì)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
51單片機(jī)與AVR單片機(jī)
![51<b class='flag-5'>單片機(jī)</b>與<b class='flag-5'>AVR</b><b class='flag-5'>單片機(jī)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評(píng)論