51微控制器專案 模擬智慧型傳送裝置

2021-07-02 18:29:14 字數 2172 閱讀 6417

/**

* 專案名:模擬智慧型傳送裝置

* 檔名:main.h

*/#ifndef _main_h

#define _main_h

typedef enum workingstate eworkingstate_t;

sbit relay = p0^4;

sbit buzzer = p0^6;

void samplingpcf8591();

void trytorecord(uint8_t digitalval);

void flowinglight();

void turnoffflowinglight();

void controlbuzzer();

void connectrelay();

void disconnectrelay();

#endif

/**

* 專案名:模擬智慧型傳送裝置

* 檔名:main.c

*/#include #include #include "stdint.h"

#include "digitaltube.h"

#include "eeprom.h"

#include "independentkey.h"

#include "pcf8591.h"

#include "timer.h"

#include "main.h"

eworkingstate_t workingstate = stop;

volatile bit flag50ms = 0, flag200ms = 0, flag300ms = 0;

volatile bit enbuzzer = 0;

bit flowingdir = 0;

bit overweight = 0;

uint8_t elecmagstate = 0x00; //電磁器件的狀態

void main()

if (flag200ms)

if (flag300ms) }}

void samplingpcf8591() else

dspbuf[7] = (weight % 10); //更新顯示

dspbuf[6] = (weight / 10 % 10);

dspbuf[5] = (weight / 100 % 10);

dspbuf[4] = (weight / 1000);

}void trytorecord(uint8_t digitalval)

}void keyaction(uint8_t keycode)

break;

case 5:

if (workingstate == start)

workingstate = transfer;

flowingdir = 0;

break;

case 6:

if (workingstate == start)

workingstate = transfer;

flowingdir = 1;

break;

case 7:

if (workingstate != stop)

break; }}

void flowinglight() else

p2 = (p2 & 0x1f) | 0x80;

p0 = ~ledstate; //實際是低電平有效

p2 &= 0x1f;

}void turnoffflowinglight()

void controlbuzzer() else }}

void connectrelay()

void disconnectrelay()

/* 定時器0中斷服務程式,週期1ms */

void tmr0_isr() interrupt 1 else

if (cnt1ms % 50 == 0)

flag50ms = 1;

if (cnt1ms & 1)

digitaltubescan(); //週期2ms

}/* 定時器1中斷服務程式,週期2ms */

void tmr1_isr() interrupt 3

51微控制器 軟體模擬IIC

名稱 iic協議 內容 函式是採用軟體延時的方法產生scl脈衝,固對高晶振頻率要作一定的修改 本例是1us機器週期,即晶振頻率要小於12mhz include include iic.h bit ack 啟動匯流排 void iic start sda 1 傳送起始條件的資料訊號 scl 1 del...

微控制器(一)51微控制器串列埠接收 傳送通訊

這次做課設整體不太順利,因為學校的開發板真的是 一言難盡 這裡就選擇性的分享一點 方面,有據可循,不那麼玄學的問題。只要開了中斷,一點要寫中斷函式,可以是 void timer0 interrupt 4 可以是這樣,先放乙個空函式,不會有什麼玄學問題 不信,嘿嘿?你試試 這是個串列埠收發暫存器,教科...

51微控制器

數碼管顯示幾乎是每次藍橋杯微控制器設計與開發組競賽的必考部分,相對於使用lcd1602作為顯示裝置,使用數碼管來顯示能夠更好的考察參賽選手的微控制器基本功,因為ct107d開發平台的設計使得數碼管的顯示不僅牽扯到數碼管顯示的 基本內容,還涉及到74hc573鎖存器,74hc02異或門,74hc138...