網(wǎng)站開發(fā)術(shù)語長沙網(wǎng)站推廣智投未來
一、系統(tǒng)方案
二、硬件設(shè)計
原理圖如下:
三、單片機軟件設(shè)計
1、首先是系統(tǒng)初始化
void port_init(void)
{
PORTA = 0xFF;
DDRA = 0x00;//輸入
PORTB = 0xFF;//低電平
DDRB = 0x00;//輸入
PORTC = 0xFF;//低電平
DDRC = 0xFF;//輸出
PORTE = 0xFF;
DDRE = 0xfE;//輸出
PORTD = 0xff;
DDRD = 0xFB;//輸出
PORTD = 0xff;
PORTF = 0xFF;
DDRF = 0xFF;//輸出
PORTG = 0xFF;
DDRG = 0xFF;//輸出
}
2、數(shù)碼顯示程序
unsigned char rev_buf[10]={0x00,0x00,0x00};
unsigned char display_flag=0;
unsigned char led_mode=0;
void display(void)
{
PORTF =table[led_mode];
}
3、按鍵程序
if((PINA&0x01)==0x00)//按鍵
{
delay_ms(200);
while((PINA&0x01)==0x00);
Uart0_Transmit(0x00); /發(fā)送數(shù)據(jù)/
Uart0_Transmit(0x0D);
Uart0_Transmit(0x0A);
}
else if((PINA&0x02)==0x00)//按鍵
{
delay_ms(200);
while((PINA&0x08)==0x00);
Uart0_Transmit(0x01); /發(fā)送數(shù)據(jù)/
Uart0_Transmit(0x0D);
Uart0_Transmit(0x0A);
}
else if((PINA&0x04)==0x00)
{
delay_ms(200);
while((PINA&0x01)==0x00);
Uart0_Transmit(0x02); /發(fā)送數(shù)據(jù)/
Uart0_Transmit(0x0D);
Uart0_Transmit(0x0A);
}
4、核心算法程序
#pragma interrupt_handler uart1_rx_isr:iv_USART1_RXC
void uart1_rx_isr(void)
{
static unsigned char len=0;
rev_buf[len++]=UDR1;
//Uart_Transmit(rev_buf[len-1]);
if((rev_buf[len-1]==0x0d)&&(rev_buf[len-2]==0x0a))
{
len=0;
display_flag=1;
}
}
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
void uart0_rx_isr(void)
{
static unsigned char len=0;
rev_buf[len++]=UDR0;
//Uart_Transmit(rev_buf[len-1]);
if((rev_buf[len-2]==0x0d)&&(rev_buf[len-1]==0x0a))
{
len=0;
led_mode=rev_buf[0];
display_flag=1;
}
}
四、 proteus仿真設(shè)計
Proteus軟件是一款應(yīng)用比較廣泛的工具,它可以在沒有硬件平臺的基礎(chǔ)上通過自身的軟件仿真出硬件平臺的運行情況,這樣就可以通過軟件仿真來驗證我們設(shè)計的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達到我們設(shè)定的目的,避免我們搭建實物的時候,如果當(dāng)初選擇的方案有問題,我們器件都已經(jīng)焊接好了,再去卸載下去,再去焊接新的方案的器件,測試,這樣會浪費人力和物力,也給開發(fā)者帶來一定困惑,Proteus仿真軟件就很好的解決這個問題,我們在設(shè)計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設(shè)計的最優(yōu)方案。最后根據(jù)測試沒問題的仿真圖紙,焊接實物,調(diào)試,最終完成本設(shè)計的作品。