本設計由數據顯示模塊、溫度采集模塊、時間處理模塊和調整設置模塊四個模塊組成。系統以AT89S52單片機為控制器,以串行時鐘日歷芯片DS1302記錄日歷和時間,它可以對年、月、日、時、分、秒進行計時,還具有閏年補償等多種功能。溫度采集選用DS18B20芯片,萬年歷采用直觀的數字顯示,數據顯示采用1602A液晶顯示模塊,可以在LCD上同時顯示年、月、日、星期、時、分、秒,還具有時間校準等功能。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優點,具有廣闊的市場前景。//*******************主函數**************************//***************************************************VOID main(){uint i;lcd_init(); //調用液晶屏初始化子函數ds1302_init(); //調用DS1302時鐘的初始化子函數for(i=0;i<RsBuf_N;i++)RsBuf[i]='0';Uart_init(); //調用定時計數器的設置子函數while(1) //無限循環下面的語句:{ keyscan(); //調用鍵盤掃描子函數GPS_TIME();//獲取gps時間 }}
上傳時間: 2022-05-07
上傳用戶:
基于STC89C51單片機的智能電熱水器的控制器的設計,要達到的控制要求有:(1)用LCD1602液晶顯示水溫、設置上下限和定時時間,(2)水溫檢測顯示范圍為00~99℃,精度為±1℃。(3)溫度預設范圍為0~99℃,當檢測溫度低于預設溫度時,開始加熱;檢測溫度高于預設溫度時,停止加熱。(4)設置4個程序按鍵。分別問設置按鍵、加鍵、減鍵、確定。(5)可以紅外遙控,通過紅外一體接收探頭接收遙控器信號,執行與主板按鍵同等功能。(6)有水位檢測功能,無水自動上水,無水不加熱。//外部中斷解碼程序_外部中斷0VOID intersvr1(VOID) interrupt 2 using 1{ TR0=1; Tc=TH0*256+TL0;//提取中斷時間間隔時長 TH0=0; TL0=0; //定時中斷重新置零 if((Tc>Imin)&&(Tc<Imax)) { m=0; f=1; return; } //找到啟始碼 if(f==1) { if(Tc>Inum1&&Tc<Inum3) { Im[m/8]=Im[m/8]>>1|0x80; m++; } if(Tc>Inum2&&Tc<Inum1) { Im[m/8]=Im[m/8]>>1; m++; //取碼 } if(m==32) { m=0; f=0; if(Im[2]==~Im[3]) { IrOK=1; TR0=0; } else IrOK=0; //取碼完成后判斷讀碼是否正確 } //準備讀下一碼 }}
上傳時間: 2022-05-14
上傳用戶:
本設計由數據顯示模塊、溫度采集模塊、時間處理模塊和調整設置模塊四個模塊組成。系統以AT89S52單片機為控制器,以串行時鐘日歷芯片DS1302記錄日歷和時間,它可以對年、月、日、時、分、秒進行計時,還具有閏年補償等多種功能。溫度采集選用DS18B20芯片,萬年歷采用直觀的數字顯示,數據顯示采用1602A液晶顯示模塊,可以在LCD上同時顯示年、月、日、星期、時、分、秒,還具有時間校準等功能。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優點,具有廣闊的市場前景。 設計要求:(1)用4個按鍵實現所有功能,計時準確。(2)可以設定鬧鐘功能。(3)有陰歷功能,平年閏年準確無誤。(4)液晶能顯示年、月、日、星期、時、分、秒、溫度。//*******************主函數**************************//***************************************************VOID main(){uint i;lcd_init(); //調用液晶屏初始化子函數ds1302_init(); //調用DS1302時鐘的初始化子函數for(i=0;i<RsBuf_N;i++)RsBuf[i]='0';Uart_init(); //調用定時計數器的設置子函數while(1) //無限循環下面的語句:{ keyscan(); //調用鍵盤掃描子函數GPS_TIME(); }}
上傳時間: 2022-05-15
上傳用戶:
#include "NUC1xx.h"#include "Hal.h"#include "pwm.h"//wait current PWM cycle done, otherwise there maybe short pulse on FETVOID PWM_Stop(U8 ch){ switch(ch) { case PWM_CHANNEL_A: PWMA->u32CNR1 = 0; PWMA->u32CMR1 = 0; while(PWMA->u32PDR1 != 0); break; case PWM_CHANNEL_B: PWMA->u32CNR2 = 0; PWMA->u32CMR2 = 0; while(PWMA->u32PDR2 != 0); break; case PWM_CHANNEL_C: PWMA->u32CNR3 = 0; PWMA->u32CMR3 = 0; while(PWMA->u32PDR3 != 0); break; default: while(1); } PWMA->u32POE &= ~(1<<ch); PWMA->u32PCR &= ~(1<<(ch*8));}
上傳時間: 2022-06-01
上傳用戶:kingwide
其它原創視頻第72講 視頻教程說明及實戰書籍推薦.avi - 99.51MB第71講 怎樣加密PCB文件.avi - 17.65MB第70講 怎樣生成坐標文件.avi - 36.32MB第69講 怎樣利用gerber層檢查視圖.avi - 16.50MB第68講 出光繪文件:三.avi - 75.70MB第67講 出光繪文件:二.avi - 72.89MB第66講 出光繪文件:一.avi - 52.13MB第65講 調整位號絲印.avi - 71.91MB第64講 刪除死銅.avi - 17.68MB第63講 怎樣合并銅皮.avi - 40.67MB第62講 Shape VOID操作演示.avi - 38.01MB第61講 修改銅皮輪廓及提高銅皮優先級.avi - 51.99MB第60講 Shape的層間復制及其換層.avi - 54.76MB
上傳時間: 2022-06-05
上傳用戶:
采用C代碼編寫的8位LED流水燈程序,附件是用PROTEUS設計的仿真電路工程,直接可以使用。請用Proteus 8以上版本。下面是驗證好的源代碼,供大家參考學習:------------------------------------------#include <reg51.h>VOID main(){LED;t0,t1,t2,t3,t4,t5,t6,t7;LED=P1;P1=0xFF;while(10){P1=0xFE;for(t0=10;t0<25000;t0++){;}P1=0xFD;for(t1=0;t1<25000;t1--) {;}P1=0xFB;for(t2=0;t2<25000;t2++) {;}P1=0xF7;for(t3=0;t3<25000;t3--) {;}P1=0xEF;for(t4=0;t4<25000;t4++) {;}P1=0xDF;for(t5=0;t5<25000;t5--){;}P1=0xBF;for(t6=0;t6<25000;t6++){;}P1=0x7F;for(t7=0;t7<25000;t7++){;}P1=0xBF;for(t6=0;t6<25000;t6++){;}P1=0xDF;for(t5=0;t5<25000;t5++){;}P1=0xEF;for(t4=0;t4<25000;t4++) {;}P1=0xF7;for(t3=0;t3<25000;t3++) {;}P1=0xFB;for(t2=0;t2<25000;t2++) {;}P1=0xFD;for(t1=0;t1<25000;t1++){;}P1=0xFE;}} ----------------------------------------------------
上傳時間: 2022-06-09
上傳用戶:zhanglei193
delay.c 文件實現iic的精準延遲..如果有其他的精準延遲程序可以替代.miic.c 文件 實現模擬iic通信tcs34725.c 文件實現對顏色傳感器的通信 通信常用程序如下TCS34725_Init() 為顏色傳感器初始化程序 返回值 true或者false 例 if(TCS34725_Init()==true)TCS34725_GetRawData() 為采集顏色. 返回值 true或者false 例 if(TCS34725_GetRawData()==true) 顏色數據儲存在已經定義的靜態變量中.顏色讀取 為 調用u16 GetRData(VOID);u16 GetGData(VOID);u16 GetBData(VOID);u16 GetCData(VOID); 這四個函數讀取靜態變量的數值并分別返回16位的R,G,B,C值.RGBLEDOFF RGBLEDON 分別是燈光開關.顏色傳感器,采集時長設置在 tcs34725.c 文件中 的VOID TCS34725_Setup(VOID){ TCS34725_SetIntegrationTime(TCS34725_INTEGRATIONTIME_154MS); TCS34725_SetGain(TCS34725_GAIN_16X);}TCS34725_SetIntegrationTime 是設置單次采集時長TCS34725_SetGain 是設置多次采集的次數. 這兩個函數需要的參數 選擇在tcs34725.h 中. 自行組合在速度和準確間取舍.
上傳時間: 2022-06-11
上傳用戶:XuVshu
/產初始化RTL8019AS,PAGE2寄存器只讀,PAGE3寄存器不是NE2000兼容的,均不用設置材/使用0x40-0x4b為網卡的發送緩沖區,共12頁,剛好存儲2個最大的以太網數據包。使用0x4c-0x7f為網卡的接收緩沖區,共52頁,因此PSTART=0x4c,PSTOP=0x80(0x80為停止頁,接收緩沖區直到Ox7f,不包括0x80),剛開始時,網卡沒有接收到任何數據包,因此BNRY設置為指向第一個接收緩沖區的頁0x4c)*/VOID RTL8019lnitO REG00=0×21;/選擇頁0的寄存器,網卡停止運行,因為還沒有初始化REGO1=Ox4c;/寄存器PSTART,設置接收緩沖區的起始頁的地址REG02=0×80;/寄存器PSTOP,設置接收緩沖區的結束頁的地址REG03=0x4c;//寄存器BNRY,設置為指向第一個接收緩沖區的頁Ox4c(用作讀指針)REG04=0x40;/寄存器TPSR.發送起始頁地址初始化為指向第一個發送緩沖區的頁REGOx=0xce;/*接收配置寄存器RCR,設置為僅接收自己地址的數據包以及廣播地址和多點播送地址數據包,小于64字節的包丟棄,校驗錯的數據包不接收材REG0d=0xe0;/發送配置寄存器TCR,設置為啟用crc自動生成和校驗,正常模式工作REG0e=0xc8;/*數據配置寄存器DCR,設置為使用FIFO緩存,普通模式,8位數據傳輸,字節順序為高位字節在前,低位字節在后*制REGOf=0x00;/中斷屏蔽資存器IMR,設置為屏蔽所有中斷SelectPage(l);/選擇頁l的寄存器REG07-0x4d;/寄存器CURR.設置為指向當前正在寫的頁的下一頁(用作寫指針)
上傳時間: 2022-06-24
上傳用戶:
基于單片機的密碼鎖設計,內含工程文件和源碼文件以及電路圖#include "config.h" VOID main(){ LCD_Initial(); //lcd初始化 init_sys(); //硬件系統初始化 setpsw(); //密碼設置 while(1) { time=3; //限定嘗試3次 while(1) { inputpsw(); //輸入密碼 checkpsw(); //密碼驗證 checksuper(); //驗證是否是超級密碼 if(error_flag==0) {right();break;} else if(time>1) error(); //允許2次嘗試錯誤 else {lock();break;} //3次錯誤,系統鎖定 } }}
上傳時間: 2022-07-17
上傳用戶:默默
本源代碼是基于STM32F4xx硬件平臺設計的貪吃蛇小游戲,主要難點在:隨機點產生、貪吃蛇轉向、貪吃蛇貪吃點;本部分主要接收產生隨機點,產生隨機點需要注意兩個方面:1、隨機點在有效的范圍內;2、貪吃點與貪吃蛇不重合。產生隨機點主要有兩個函數,分別如下://隨機數產生任務VOID rng_chansheng(VOID *p_arg){OS_ERR err;while(1){OSSemPend(&RNG_SEM,0,OS_OPT_PEND_BLOCKING,0,&err);zou.x = RNG_Get_RandomRange(0,50)*8 + 40;zou.y = RNG_Get_RandomRange(0,50)*8 + 260;lcd_fangkuan(zou.x,zou.y,zou.x+SHE_FAANGKUAN_SIZE,zou.y+SHE_FAANGKUAN_SIZE);OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); //延時500ms}}//往下方向畫一個實心的正方形,代表貪食蛇的一段VOID lcd_fangkuan(u16 x1,u16 y1,u16 x2 ,u16 y2){u16 i,j;u16 xx,yy;if(((x2 - x1) != SHE_FAANGKUAN_SIZE)||((y2 - y1) != SHE_FAANGKUAN_SIZE))return ;if(x1 > x2) {xx = x1;x1 = x2;x2 = xx;}if(y1 > y2){yy = y1;y1 = y2;y2 = yy;}if((y1 < 260)|| (y2 > 660)||(x1 < 40)||(x2 > 448)){game_yun_error = 1;LCD_ShowString(150,300,500,24,24,"GAME OVER!!");return ;}for(i=x1; i<x2; i++){for(j=y1; j<y2; j++){LCD_DrawPoint(i,j);}}}
上傳時間: 2022-08-10
上傳用戶: