久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2942|回復: 1
打印 上一主題 下一主題
收起左側

VB上位機與avr單片機18b20下位機程序

[復制鏈接]
跳轉到指定樓層
樓主

程序:
#include <iom16v.h>                        //包含型號頭文件
#include <macros.h>                        //包含"位"操作頭文件
#include <stdio.h>
#include <DS18B20.h>
#define uchar unsigned char        
#define uint  unsigned int
#define SEGLK PA3        //數碼管段選鎖存器控制端
#define BITLK PA4        //數碼管位選鎖存器控制端
#define LEDLK PA2        //LED鎖存器控制端

const SEGMENT[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
                           0x7f,0x6f};
/*******************************************
函數名稱: Delayms
功    能: 延時指定毫秒(8M晶振)
參    數: MS--延時的毫秒數
返回值  : 無
********************************************/
void Delayms(uint MS)                  
{
uint i,j;
for( i=0;i<MS;i++)
for(j=0;j<1141;j++);        //1141是在8MHz晶振下,通過軟件仿真反復實驗得到的數值
}
/*******************************************
函數名稱: Board_init
功    能: 初始化實驗板,關閉全部功能
參    數: 無
返回值  : 無
/********************************************/
void Board_init(void)
{
        DDRA=0xFF;        //將四個IO口全部配置為輸出
        DDRB=0xFF;
        DDRC=0xFF;
        DDRD=0xFF;

        SPCR=0x00;        //還原SPI口,使其為正常端口        

        PORTA|=BIT(PA6);//(BEEP)關閉蜂鳴器
        PORTC&=~BIT(PC6);          //(RELAY)初始化繼電器為常閉連接狀態        
        PORTA&=~BIT(PA1);        //關閉SPI總線DA
        PORTB=0xFF;        //關閉LED
        PORTA|=BIT(LEDLK);        //鎖存數據,使LED熄滅
         Delayus(5);               
         PORTA&=~BIT(LEDLK);
        
        PORTB=0x00;           //輸出段選
         PORTA|=BIT(SEGLK);                  
         Delayus(50);                          
         PORTA&=~BIT(SEGLK);            
         
         PORTB=0xFF;           //輸出位選
         PORTA|=BIT(BITLK);                  
         Delayus(50);                                   
         PORTA&=~BIT(BITLK);           
        
        PORTD=0xFF;
        PORTA|=BIT(PA7);
        Delayus(50);
        PORTA&=~BIT(PA7);

        
}

/*******************************************
函數名稱: One_smg_display
功    能: 指定的數碼管顯示指定的內容
參    數: data--顯示的內容(0-15)
                    number--指定的數碼管(1-6)
返回值  : 無
/********************************************/
void One_smg_display(uchar data,uchar number)
{
PORTB|=0x3F;                           //輸出位選
PORTA|=BIT(BITLK);                   //更新位選
Delayus(50);                           //調整時序
PORTA&=~BIT(BITLK);           //鎖存位選

PORTB=SEGMENT[data];           //輸出段選
PORTA|=BIT(SEGLK);                   //更新段選
Delayus(50);                           //調整時序
PORTA&=~BIT(SEGLK);           //鎖存段選

number=~BIT(number-1);           //調整位選(指定時是1~6,而操作的時候是0~5)
PORTB=number;                           //輸出位選
PORTA|=BIT(BITLK);                   //更新位選
Delayus(50);                                   //調整時序
PORTA&=~BIT(BITLK);           //鎖存位選
}

/********************************************/
void uart0_init(void)
{
  UCSRB = 0x00;  //禁止發送
  UCSRA = 0x02;  //倍速
  UCSRC = 0x06;  //8位數據位,1個停止位
  UBRRL = 0x67;  //波特率為9600
  UBRRH = 0x00;
  UCSRB = 0x18;  //允許發送
}
/********************************************************/
void uart0_send(uchar i)  //發送一個字符
{
  while(!(UCSRA&(1<<UDRE))); //等待發送緩沖區為空
    UDR=i;                    //發送數據
  while(!(UCSRA&(1<<TXC)));                 //等待發送完畢
    UCSRA|=1<<TXC;                   //清除發送完畢狀態位
}
/*******************************************/
void str_send(char *s) //發送一串字符
{
while(*s)
{
  uart0_send(*s); //字符串未結束則繼續發送
  s++;
}
}
/*********************************************/
uchar uart0_receive(void) //接收一個字符
{
  while(!(UCSRA&(1<<RXC)));//等待接收數據
  return UDR;               //返回數據
}

/*******************************************
函數名稱: main
功    能: 6個數碼管循環滾動顯示指定的內容
參    數: 無
返回值  : 無
/********************************************/
void main(void)
{         uint t=0;
     uchar temh_d,teml_d,temm_d;
         //uchar RDATA[3];
         uart0_init();
         Board_init();           //初始化開發板
         while(1)
         {
         
          t=Read_temp()*0.625;//得到轉換溫度值
      Delayms(2);
          temh_d=t/100;
          temm_d=(t/10)%10;
          teml_d=t%10;
         
           
                //uart0_send(temh_d+48);
                //Delayms(1);
           // uart0_send(temm_d+48);
                //Delayms(1);
            uart0_send(temh_d+48);
                uart0_send(temm_d+48);
                str_send(".");
                uart0_send(teml_d+48);
                uart0_send(32);
                uart0_send(32);
                uart0_send(32);
                //Delayms(1);
                //str_send(" ");
               
          One_smg_display(teml_d,6);
          Delayms(2);
          One_smg_display(temm_d,5);
          Delayms(2);
          One_smg_display(temh_d,4);
          Delayms(2);
        
         }
}

VB上位機與18b20下位機.zip

32.79 KB, 下載次數: 22, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:328014 發表于 2020-11-29 03:18 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费在线观看av片 | 欧美aaaaaaaaaa | 国产九九精品 | 亚洲成人一区二区三区 | 亚洲日日夜夜 | 精品区 | 操操操日日日 | 亚洲人成人一区二区在线观看 | 欧美中文字幕一区二区 | 99re国产精品 | 欧美一区永久视频免费观看 | 国产精品久久久亚洲 | 欧洲高清转码区一二区 | 日韩一级| 在线免费亚洲视频 | 欧美日本高清 | 日本a视频 | www久久久| 欧洲亚洲精品久久久久 | 亚洲国产精品第一区二区 | 男女羞羞免费网站 | 欧洲一区二区三区 | 影音先锋成人资源 | 亚洲精品自在在线观看 | 伊人春色在线 | 天天操天天射综合 | 美女久久久 | 亚洲电影一区二区三区 | 国产在线高清 | 污污的网站在线观看 | 美女视频一区 | avmans最新导航地址 | 国产高清在线精品 | 久久99精品久久久久久 | 欧美日韩亚洲一区 | 久久噜噜噜精品国产亚洲综合 | 欧美一级片中文字幕 | 中文字幕视频在线 | 中文字幕在线视频一区二区三区 | 日本高清视频在线播放 | 国产精品久久久久久久一区探花 |