題目:基于51單片機的RS485從機系統設計 單片機接口資源配置: 1. 上電復位電路; 2. 晶振電路采用11.0592Mhz晶振; 3. 485接口電路(P3.7用于485芯片的收發控制,收發管腳接單片機的rxd和txd); 4. P2口通過外部跳線接相應的高低電平,配置從機地址為組號; 5. P3.6外接一發光二極管(注意串聯電阻進行限流); 6. P3.2外接一按鍵,斷開高電平,按下低電平; 7. 按鍵檢測采用外部中斷方式,下跳沿觸發; 8. 單片機定時器0以模式1(16位模式)工作,產生50ms的定時中斷,并在此基礎上設計一單片機內部時鐘(24小時制,能計數時、分、秒、50ms值); 9. 單片機串行通信采用模式1非多機通信方式,采用9600波特率以串行中斷方式進行數據的收發通信,主機地址為0xF0,廣播地址為0xFF。 系統功能需求: 1. 系統配置和自檢功能: l 從機上電后進行初始化,通過讀取P2口進行從機地址配置; l 發光二極管以每秒一次的頻率閃爍(亮0.5秒,滅0.5秒); l 檢測到一次按鍵按下操作后,熄滅發光二極管。 2. 數據接收和按鍵計時功能: l 從機接收主機程序(PC機上的串口調試程序)的按鍵允許命令幀并進行校驗; l 校驗正確并且目的地址是廣播地址或者本從機的地址,通過發光二極管長亮指示,并允許按鍵操作; l 按鍵按下后,盡可能準確記錄按鍵的動作時點(定時器的低8位、定時器的高8位、50ms值、秒、分、小時); l 按鍵操作只能響應一次,重復按鍵操作不響應; l 按鍵的動作時點記錄后,發光二極管以每秒一次的頻率閃爍(亮0.5秒,滅0.5秒)。 3. 數據發送功能: l 從機接收主機程序發來的時鐘數據搜索命令幀并進行校驗; l 如果校驗正確并且數據幀的目的地址是本從機的地址,從機將前面記錄的按鍵動作時點數據(定時器的低8位、定時器的高8位、50ms值、秒、分、小時)按附錄中的時鐘數據返回幀的幀格式回傳給主機; l 時鐘數據返回幀回傳結束后,熄滅發光二極管。 4. 校驗和生成和檢測功能: l 發送數據幀時能自動生成數據幀校驗和; l 每幀數據在發送幀尾前,發送一字節的當前幀數據的校驗和; l 接收數據幀時能檢測校驗和并判斷接收數據是否正確。 附錄:幀定義 校驗和的計算:除去幀頭和幀尾后將幀中的其他數據求和并取低8位; 幀長:不計幀頭、幀尾和校驗和字節。 按鍵允許命令幀: 幀頭 幀長 目的地址 源地址 命令字 校驗和 幀尾 AA 04 FF F0 01 F4 66 時鐘數據搜索命令幀: 幀頭 幀長 目的地址 源地址 命令字 保留字 校驗和 幀尾 AA 05 01 F0 03 00 F9 66 時鐘數據返回幀: 幀頭 幀長 目的地址 源地址 命令字 TL0 TH0 50ms 秒 分 時 校驗和 幀尾 AA 0A F0 01 07 01 B6 09 03 00 00 C5 66 幀結構頭文件frame.h(內容如下) //幀格式定義 #define FRAME_HEAD 0xAA //幀頭 #define FRAME_FOOT 0x66 //幀尾 #define FRAME_LEN 0x00 //幀長 #define FRAME_DST_ADR 0x01 //目的地址 #define FRAME_SRC_ADR 0x02 //源地址 #define FRAME_CMD 0x03 //命令字 #define FRAME_DATA 0x04 //幀數據起始 //幀命令定義 #define READY 0x01 //按鍵允許命令 #define TIME_SERCH 0x03 //時鐘數據輪詢命令 #define TIME_BACK 0x07 //時鐘數據返回命令 //地址定義 #define BROAD_ADR 0xFF //廣播地址 #define MASTER_ADR 0xF0 //主機地址
上傳時間: 2020-06-18
上傳用戶:umuo
適用于AD軟件,常用的電阻,電容,電感,二極管,三級管,IC,LED,按鈕,開關,蜂鳴器,晶振等,無論貼片和插件都有,并都帶有3D模型,可以更好的檢查自己的設計。
標簽: Altium designer 元器件 3d封裝
上傳時間: 2021-10-23
上傳用戶:
模擬電子Multisim仿真電路仿真實驗150例Multisim工程源碼RCL無源諧振濾波器.ms8RLC無源低通濾波器.ms8從零起調的穩壓電源.ms8共發射極固定偏置電路1.ms8共發射極固定偏置電路2.ms8共發射極簡單.ms8共發射極簡單偏置電路1.ms8共發射極簡單偏置電路2.ms8共基極固定.ms8共基極固定電路.ms8共基極簡單電路.ms8共集電極固定電路.ms8共集電極射極跟隨器.ms8減法器.ms8切比雪夫低通濾波器.ms8加法器.ms8單電源差放.ms8雙電源差放.ms8反相放大器.ms8反相過零比較器.ms8同相放大器.ms8回差比較器.ms8微分器.ms8有源低通濾波器.ms8有源帶通濾波器.ms8有源諧振濾波器.ms8有源陷波器.ms8有源高通濾波器.ms8標準三角波發生器.ms8積分器.ms8簡易波形發生器.ms8跟隨器.ms8過零比較器.ms8門限比較器.ms8非零起調穩壓電源.ms8-------
上傳時間: 2021-12-11
上傳用戶:
特別好的一本書,書籍內容那個中也有源碼,適合入門的新手對系統辨識進行學習
上傳時間: 2021-12-11
上傳用戶:
MICRO HDMI TF卡 USBTYPE-C USB-側立式 攝像頭FPC-24P OLED屏模塊AD集成庫(原理圖庫+3D封裝庫),).IntLib后綴文件,拆分后文件為PcbLib+SchLib格式,Altium Designer原理圖庫+PCB封裝庫,已驗證使用,可以直接應用到你的項目開發。器件列表:ANT-Rainsun-AP5120AZ1045-04F BSN20BKR N-Channel 60 V 2.8 Ohm 310 mW 0.49 nC Surface Mount Trench MosFet - SOT-23ButtonTACT_3x4x2_180ButtonCP2102 USB轉TTLESD-0402 ESDHDR2x4_2.54 HeaderLED_0402 LEDLM4871LP2992 LDOMIC Micro-HDMI Conn Micro HDMI RCP 19 POS 0.4mm Solder RA SMD 19 Terminal 1 Port Micro HDMI Embossed T/RNL27WZU04DF OLED-6432 顯示屏OV2640 Header, 24-PinQuantum-Quark-Core RJ45座 RJ45座RT9011 TF卡座 8腳自彈USB-Type-C-TOP USB-WiFi-ANTUSB-側立式 USB A Skt, Upright/Flag, R/A GF, W/kinked shell stake, tray電容-0402 Capacitor電容-0603 Capacitor電阻-0402 Resistor二極管-5B5817WS 40V晶振-4Pin-無源 2520無源選擇跳線 Resistor
上傳時間: 2022-01-09
上傳用戶:
內 容 簡 介 本書以最新流行的不需要外部晶振與復位電路的可仿真的高速 STC15 系列單片機為核心,詳細介紹了 單片機內部功能模塊,比如定時器、中斷、串口、SPI 接口、片內比較器、ADC 轉換器、可編程計數器陣列 (CCP/PCA/PWM)等。每個重要知識點都有簡短精煉的實例作驗證,然后就是單片機常用外圍接口的介紹與 STC15 系列單片機的實際產品運用實例分析。另外對單片機開發必須掌握的 C 語言基礎知識與 Keil 開發環 境也作了較為詳細的介紹,對于沒有學習過 C 語言的讀者通過本書也能輕松進入以 C 語言開發單片機的學 習狀態。 為了快速驗證本書的理論知識,作者設計了與本書配套的雙核(兩個仿真型單片機)實驗板,功能強 大,操作簡單,直觀,除用于本書實驗測試外,也可用于產品前期開發。 本書可作為普通高校計算機類、電子類、自動控制類、儀器儀表類、機電一體化類等相關專業教學用書, 對已有一定設計經驗的單片機工程師也有重要參考價值
標簽: 51單片機
上傳時間: 2022-03-24
上傳用戶:zhaiyawei
LPC1114是NXP公司推出的一款 ARM Cortex-M0內核的32位單片機。它的主頻最大可達50MHz,內部集成時鐘產生單元,不用外部晶振也可以工作。內部集成32 KB FALSH程序存儲器、8 K SRAM數據存儲器、一個快速L2C接口一個RS485/IA485UART、兩個帶SSP特征的SPI接口、4個通用定時器、1個系統定時器、1個帶窗口功能的看門狗定時器、功耗管理模塊、1個ADC模塊和42個GPO。截至 Ration寫稿時,一片LPC1114的零售價只需59元,批量價更便宜。如此強大的處理器,如此低廉的價格,可謂是性價比無敵,其低功耗、簡單易用、高能效和低成本相結合,必然會在市場中占有一席之地LPC1114是ARM入門級的單片機,使用起來非常簡單,只要會51單片機就可以快速的使用LPC1114。幸運的是,即使你不會51單片機,Ration也可以帶領你徹底征服這個看似復雜實則簡單的單片機不管是什么單片機,本質上都一樣,對外表現為N個引腳,用引腳的高低電平變化來完成各種控制通信工作。內部由若干個功能模塊構成,例如串口模塊ADC模塊等,有些單片機集成的功能模塊相對較多,有些單片機集成的功能模塊相對較少。我們要學習的,即如何配置單片機內部的各個模塊,來完成我們所需要的目的。不管是學習單片機,還是學習其它與單片機配合的其它硬件,學習方法都樣。從大局上看,它們都是由外部引腳和內部功能模塊構成的。內部功能模塊會有一些寄存器,我們了解了它的每個寄存器的功能,就可以通過它的用戶手冊配置寄存器,達到所需的要求。例如:給51單片機中的寄存器P1寫0x01,將會使得引腳P1電平為高P1.1~P1.7引腳為低。給51單片機中的寄存器TMoD寫0x20,將會配置定時器0為16位模式,定時器1為8位自動重載模式
上傳時間: 2022-04-02
上傳用戶:
最近經理通知要做項目了,讓我選型一個LCD開始試著做下。這是我用仿真實現的一個smt32的硬件SPI1來驅動的ST7735R,難度挺小的,因為大部分的代碼LCD的廠商已經給我們提供了,我們主要修改成硬件SPI來驅動就好了。 此次仿真上面有2個問題,不知道是代碼的問題還是仿真圖上的問題。第一個問題是仿真運行時有時會出通信數據傳輸問題,導致指令越界報警,這個可能是SPI不穩定導致的;第二個問題是在改用SPI2或者SPI3來驅動沒有任何反應,猜測是代碼時鐘沒開對或者仿真圖上面還要加上具體晶振。 代碼工程和仿真工程都已壓縮打包,可放心下載。。。先貼上仿真實現圖: 再貼上部分代碼:/**ST7735驅動**/#include "ST7735.h"#include "usart.h" u16 BACK_COLOR, POINT_COLOR; //背景色,畫筆色 void WriteCommand_7735(u8 CmdData) //寫指令{SPI_LCD_CS_LOW; //片選SPI_LCD_COMMAND_W;//寫指令SPI_I2S_SendData(LCD_SPIx,CmdData);while (SPI_I2S_GetFlagStatus(LCD_SPIx, SPI_I2S_FLAG_TXE) == RESET){}SPI_LCD_CS_HIGH;} void WriteDate_7735(u8 Data) //寫8位數據{SPI_LCD_CS_LOW; //片選SPI_LCD_DATA_W;//寫數據SPI_I2S_SendData(LCD_SPIx,Data);while(SPI_I2S_GetFlagStatus(LCD_SPIx, SPI_I2S_FLAG_TXE) == RESET){} SPI_LCD_CS_HIGH; } void WriteDate16(int data) //寫16位數據{WriteDate_7735(data>>8);WriteDate_7735(data);} 字符限制了,貼不了多少,2積分即可下載。。。
標簽: stm32 硬件 spi 驅動 tft lcd proteus
上傳時間: 2022-04-12
上傳用戶:
更新記錄2020.08.271. 添加例程“45-IO口推挽輸出驅動有源蜂鳴器實驗程序”;2. 修改例程“43-高級PWM4N驅動蜂鳴器實驗程序”名稱為“43-高級PWM4N驅動無源蜂鳴器實驗程序”;3. 添加例程“46-端口模式設置”;4. 添加例程“47-SPI互為主從-SS設置主從-串口1透傳”;5. 添加例程“48-SPI互為主從-主模式忽略SS-串口1透傳”。2020.08.201. 例程“31-硬件SPI訪問FLASH-PM25LV040-串口1監控”、“32-IO模擬SPI訪問FLASH-PM25LV040-串口1監控”兼容華邦W25X40CL型號Flash,并添加W25X40CL規格書。2020.08.181. 添加例程“44-高級PWM輸出兩路互補SPWM”以及正弦計算表。2020.08.111. 按照8.3版本實驗箱圖紙修改現有例程;2. 添加例程“43-高級PWM4N驅動蜂鳴器實驗程序”。2020.07.301. 在例程01添加注解“當用戶使用硬件 USB 對 STC8H8K64U 系列進行 ISP 下載時不能調節內部 IRC 的頻率,但用戶可用選擇內部預置的 16 個頻率(分別是 5.5296M、 6M、 11.0592M、 12M、 18.432M、 20M、 22.1184M、 24M、27M、 30M、 33.1776M、 35M、 36.864M、 40M、 44.2368M 和 48M)。下載時用戶只能從頻率下拉列表中進行選擇其中之一,而不能手動輸入其他頻率。”2. 添加例程“41-軟件修改內部RC主頻”;3. 添加例程“42-一線制溫度傳感器 DS18B20 測溫”;4. 添加8.2版本實驗箱的原理圖跟PCB圖,現有程序還是基于8.1版本圖紙。2020.07.241. 例程“38-2.4寸ILI9325驅動TFT顯示屏實驗程序-帶觸摸功能”調整驅動讀寫代碼,使正常顯示時的MCU工作主頻最高可調至48MHz。2. 修改ADC相關例程關于AD通道參數的注釋。3. 修改EEPRO相關例程TPS擦除等待參數與設置主頻一致。4. 添加例程“39-通過USB發送命令讀取ADC測試程序”以及配套的上位機測試軟件;5. 添加例程“40-USB鍵盤設備通過P0口矩陣按鍵模擬小鍵盤功能”以及鍵盤按鍵碼表。2020.07.091. 添加例程“37-2.4寸ILI9341驅動TFT顯示屏實驗程序”以及相關工具及規格書;2. 添加例程“38-2.4寸ILI9325驅動TFT顯示屏實驗程序-帶觸摸功能”以及相關工具及規格書。2020.06.281. 添加例程“35-板上的32K xdata測試程序”;2. 添加例程“36-LCD128x64顯示圖形文字-ST7920”以及“ST7920規格書”。2020.06.231. 添加例程“30-紅外發射程序(NEC碼)-使用PWM4產生38KHz載波”;2. 添加例程“34-IO掃描鍵紅外發射-同時接收數碼管顯示用戶碼鍵值程序”。2020.06.221. 添加例程“31-硬件SPI訪問FLASH-PM25LV040-串口1監控”以及“PM25LV040規格書”;2. 添加例程“32-IO模擬SPI訪問FLASH-PM25LV040-串口1監控”;3. 添加例程“33-P1.3做ADC-使用內部基準計算外部電壓”。2020.06.191. 添加例程“28-I2C主機模式訪問PCF8563-RTC時鐘程序”以及“PCF8563規格書”;2. 添加例程“29-紅外遙控接收程序(NEC碼)-數碼管顯示用戶地址和鍵值”。2020.06.181. 更改文件夾命名,使例程內容更加一目了然;2. 添加例程“04-利用T0,T1做外部計數器”;3. 添加例程“05-利用定時器測量脈沖寬度”;4. 添加例程“13-串口3中斷模式與電腦收發測試”;5. 添加例程“14-串口4中斷模式與電腦收發測試”;6. 添加例程“20-使用比較器檢測低電壓時保存數據到EEPROM”;7. 添加例程“25-高級PWM1-PWM2-PWM3-PWM4,驅動P6口呼吸燈實驗程序”;8. 添加例程“26-高級PWM5-PWM6-PWM7-PWM8輸出測試程序”;9. 修改串口相關例程的主時鐘頻率為 22.1184MHz,精確計算115200波特率;10.“17-NTC測溫度數碼管顯示”添加“SNDT2012X103F3950FTF R-T對照表”;11.添加“實驗箱8問題清單”文件。2020.06.151. 修改所有例程主時鐘頻率為 24MHz;2. 添加例程“08-雙串口中斷收發”;3. 添加例程“09-串口1中斷收發”;4. 添加例程“10-串口2中斷收發”;5. 添加例程“14-通過串口1命令多字節讀寫EEPROM測試程序”;6. 添加例程“15-內部掉電檢測中斷保存EEPROM”;7. 添加例程“17-P1.7輸出PWM5做DAC_P1.1做ADC讀入DAC輸出值_串口1設置占空比”;8. 修改例程“比較器”命名為“18-比較器_P3.7做正極輸入源”;9. 添加例程“19-比較器_ADC做正極輸入源”;10.添加例程“20-I2C從機中斷模式與IO口模擬I2C主機進行自發自收”。2020.06.081. 添加例程“16-P1.7輸出PWM做DAC_P1.1做ADC讀入DAC輸出值_串口1設置占空比”;2. 添加例程“比較器”。2020.06.041. 初版發布;2. 發布例程“01-跑馬燈”;3. 發布例程“02-Timer0-Timer1-Timer2-Timer3-Timer4測試程序”;4. 發布例程“03-數碼管”;5. 發布例程“04-外中斷INT0-INT1-INT2-INT3- INT4測試”;6. 發布例程“05-睡眠-外部中斷喚醒”;7. 發布例程“06-睡眠-喚醒定時器喚醒”;8. 發布例程“07-看門狗復位測試程序”;9. 發布例程“11-IO行列掃描鍵盤數碼管顯示鍵值和調整時間”;10.發布例程“12-ADC鍵盤掃描數碼管顯示鍵值和調整時間”;11.發布例程“13-NTC測溫度數碼管顯示”;12.發布文件“STC實驗箱8-使用說明書.pdf”;13.發布圖紙“實驗箱8.1_2020-05-11-PCB.pdf”;14.發布圖紙“實驗箱8.1_2020-05-11-SCH.pdf”。
標簽: stc8h
上傳時間: 2022-04-18
上傳用戶:
用的是沁恒CH552e淘寶買的評估板,USB中斷上傳程序用的是沁恒提供的做了些修改。程序使用2個端點一個,端點1作為普通鍵盤,端點2作為多媒體按鍵,有詳細注釋多媒體按鍵報告,以下是主函數內容。/****主函數****/main(){ CfgFsys( ); //CH552時鐘選擇配置 mDelaymS(5); //修改主頻等待內部晶振穩定,必加 ConfigT0(2); //配置2ms T0中斷 USBDeviceInit(); //USB設備模式初始化 EA = 1; //允許單片機中斷 UEP1_T_LEN = 0; //預使用發送長度一定要清空 UEP2_T_LEN = 0; //清空端點2發送長度 FLAG = 0; //清空USB中斷傳輸完成標志 Ready = 0; LED_VALID = 1; //給一個默認值 P1_DIR_PU &= 0xE0; //在MOD_OC為0時 p1.5 p1.6 P1.7為推挽輸出 P1_MOD_OC = P1_MOD_OC & ~0xE0; //3個口的bit4 = 0 p1.5 p1.6 P1.7設置為推挽輸出 P1_DIR_PU = P1_DIR_PU | 0xE0; //3個口的bit4 = 1 p1.5 p1.6 P1.7設置為輸出 key1 = 1; key2 = 1; key3 = 1; while(1) { KeyDrive(); //按鍵驅動 }}
上傳時間: 2022-05-15
上傳用戶: