1、本實驗鍵盤結構為4×4鍵盤,顯示為4位。 2、實驗地址可采用8000H。 3、鍵盤掃描時列為輸出:8002H。 行為讀入:8001H。 4、編程為掃描方式實現: 逐列掃描,首先使用Y1為0,讀入行值。 ①當讀入的行值為FFH時,表明無鍵按下,再令Y2為0依次掃描各列。 ②當讀入的行值不為FF時(為0時)即有鍵按下,轉求鍵值。 5、求鍵值的方法: ①設置行值寄存器和列值寄存器。 ②每掃描完一行,無鍵按下時,列值 + 4。 ③有鍵按下時,列寄存器保持原值,轉求相應的行值。 ④ 求行值的方法是:將行值右移,每移位一次行寄存器加1,直至移出位為低電平為止。 6、鍵值 = 行 + 列 即 R3 + R4
上傳時間: 2017-05-24
上傳用戶:思琦琦
ARM_Star 仿真器是一款為廣大ARM工作者設計的高性能仿真器,ARM_Star仿真器完全實現ARM RDI 1.5和RDI 1.51協議,與ARM Multi-ICE™ 兼容,支持所有含有Embedded-ICE Logic的ARM 內核CPU, 在調試軟件的控制下,ARM_Star仿真器可以停止、啟動ARM CPU的運行,用戶通過ARM_Star仿真器察看、修改寄存器,存儲器,設置斷點、單步執行,下載燒寫Flash程序等。
上傳時間: 2017-09-24
上傳用戶:wanghui2438
微機原理與接口知識點總結: 1.緒論:計算機系統組成;馮諾依曼體系結構;進制之間的轉換;數的原碼、反碼、補碼表示;補碼加減法運算;溢出判斷 2.通用計算機工作原理:指令格式;存儲器模型;程序如何自動執行 3.CPU工作原理:CPU的基本構成(運算器、控制器、寄存器),各個部分的功能;CPU的工作原理;CPU的具體實例8086內部結構;8086的地址構成(邏輯地址與物理地址關系);8086存儲器分段概念;8086存儲器組織(存儲順序);8086的外部引腳;8086處理器的基本時序。
標簽: 接口資料1
上傳時間: 2016-01-03
上傳用戶:glylgw
#include "STC90.h" #include < intrins.h > #define uchar unsigned char #define uint unsigned int #define led_port P1 sbit IR_RE = P3^2; sbit led_r = P1^3; sbit led_g = P1^4; sbit led_b = P1^5; sbit led_wd = P1^7; sbit K1 =P3^0 ; //增加鍵 sbit K2 =P3^1 ; //減少鍵 sbit BEEP =P3^7 ; //蜂鳴器 uchar temp,temp1; bit k=0; //紅外解碼判斷標志位,為0則為有效信號,為1則為無效 bit Flag2; uchar date[4]={0,0,0,0}; //date數組為存放地址原碼,反碼,數據原碼,反碼 uint lade_1,lade_2,lade_3,lade_4; uint num; uchar date_ram,ee_temp,ee_temp1; uchar WDT_NUM=0; uchar const dofly[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 顯示段碼值01234567 uchar code seg[]={7,6,5,4,3,2,1,0};//分別對應相應的數碼管點亮,即位碼 unsigned long disp_date; void fade(); void fade1(); /*************************** 看門狗子程序*************************/ void watchdog_timer() { if(WDT_NUM==5) { WDT_NUM=0; led_wd=!led_wd; } WDT_NUM++; WDT_CONTR=0x3f; } /******************************************************************/ void delay(unsigned int cnt) { while(--cnt); } /*--------------------------延時1ms程子程序-----------------------*/ void delay_1ms(uint z) { uint x,y; for(x=z;x>0;x--) for(y=126;y>0;y--); } /*--------------------------延時1ms程子程序-----------------------*/ delay1000() { uchar i,j; i=5; do{j=95; do{j--;} while(j); i--; } while(i); } /*---------------------------延時882us子程序-----------------------*/ delay882() { uchar i,j; i=6; do{j=71; do{j--;} while(j); i--; }while(i); } /*--------------------------延時2400us程子程序-----------------------*/ delay2400() { uchar i,j; i=5; do{j=237; do{j--;} while(j); i--; }while(i); } /**********************************************************************/ /* void display() { uchar i; for(i=0;i<8;i++) { P0=dofly[disp_date%10];//取顯示數據,段碼 P2=seg[i]; //取位碼 delay_1ms(1); disp_date/=10; } } */ /*********************************************************************/ uchar EEPROM_read(uint addr)//EEPROM字節讀 { ISP_CONTR=0x83; //系統時鐘<12M時,對ISP_CONTR寄存器設置的值,本電路為11.0592M ISP_CMD=1; //字節讀 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); return ISP_DATA; } //-------------------------------------------------------------------- void EEPROM_write(uint addr,uchar dat)//EEPROM字節寫 { ISP_CONTR=0x83; //系統時鐘<12M時,對ISP_CONTR寄存器設置的值,本電路為11.0592M ISP_CMD=2; //字節編程 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_DATA=dat; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); } //-------------------------------------------------------------------- void EEPROM_ERASE(uint addr)//EEPROM扇區擦除 { ISP_CONTR=0x83; //系統時鐘<12M時,對ISP_CONTR寄存器設置的值,本電路為11.0592M ISP_CMD=3; //扇區擦除 ISP_ADDRH=(addr&0xff00)>>8; ISP_ADDRL=addr&0x00ff; ISP_TRIG=0x46; ISP_TRIG=0xb9; _nop_(); _nop_(); } //************************************************************** /*----------------------------------------------------------*/ /*-----------------------紅外解碼程序(核心)-----------------*/ /*----------------------------------------------------------*/ void IR_decode() { uchar i,j; while(IR_RE==0); delay2400(); if(IR_RE==1) //延時2.4ms后如果是高電平則是新碼 { delay1000(); delay1000(); for(i=0;i<4;i++) { for(j=0;j<8;j++) { while(IR_RE==0); //等待地址碼第1位高電平到來 delay882(); //延時882us判斷此時引腳電平 ///CY=IR_RE; if(IR_RE==0) { date[i]>>=1; date[i]=date[i]|0x00; } else if(IR_RE==1) { delay1000(); date[i]>>=1; date[i]=date[i]|0x80; } } //1位數據接收結束 } //32位二進制碼接收結束 } } /* void LED_PWM() { lade_2=num; //384 lade_4=num; //384 while(lade_2!=0&Flag2==1) { for(lade_3=512;lade_3>lade_4;lade_3--) //512 { led_port=0x00; delay(1); } lade_3=512; //512 lade_4--; for(lade_1=0;lade_1<lade_2;lade_1++) { led_port=0x38; //c7 delay(1); } lade_1=0; lade_2--; if(temp!=0x0c&Flag2==1) { lade_2=0; } lade_2=num; //384 lade_4=num; //384 } } */ void calc() { EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; //************************************* 1 /* if(date[3]==0xff&Flag2==1) { if(num>=20) { num=num-80; } //else num=1; LED_PWM(); } if(date[3]==0xfe&Flag2==1) { if(num<=500) { num=num+80; } // else num=511; LED_PWM(); } if(ee_temp1==0xfd) { led_port=0x00; watchdog_timer(); } if(ee_temp1==0xfc) { led_port=0x00; led_r=1; led_g=1; led_b=1; watchdog_timer(); } */ //********************************************** 2 if(ee_temp1==0xfb) { led_port=0x00; led_r=1; watchdog_timer(); } if(ee_temp1==0xfa) { led_port=0x00; led_g=1; watchdog_timer(); } if(ee_temp1==0xf9) { led_port=0x00; led_b=1; watchdog_timer(); } if(ee_temp1==0xf8) { led_port=0x00; led_r=1; led_g=1; led_b=1; watchdog_timer(); } //************************************** 3 if(ee_temp1==0xf7) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x07) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x07) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf6) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x06) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x06) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf5) { uint fade_1,fade_2,fade_3,fade_4; fade_2=448; //384 fade_4=448; //384 while(fade_2!=0&ee_temp==0x05) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x05) { fade_2=0; } watchdog_timer(); fade_2=448; //384 fade_4=448; //384 } } if(ee_temp1==0xf4) { while(ee_temp==4) { led_port=0x00; led_r=1; delay_1ms(200); led_port=0x00; led_r=1; led_g=1; delay_1ms(200); led_port=0x00; led_g=1; delay_1ms(200); watchdog_timer(); led_port=0x00; led_g=1; led_b=1; delay_1ms(200); led_port=0x00; led_b=1; delay_1ms(200); led_port=0x00; led_b=1; led_r=1; delay_1ms(200); watchdog_timer(); } } //************************************** 4 if(ee_temp1==0xf3) { uint fade_1,fade_2,fade_3,fade_4; fade_2=416; //384 fade_4=416; //384 while(fade_2!=0&ee_temp==0x03) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x03) { fade_2=0; } watchdog_timer(); fade_2=416; //384 fade_4=416; //384 } } if(ee_temp1==0xf2) { uint fade_1,fade_2,fade_3,fade_4; fade_2=384; //384 fade_4=384; //384 while(fade_2!=0&ee_temp==0x02) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x02) { fade_2=0; } watchdog_timer(); fade_2=384; //384 fade_4=384; //384 } } if(ee_temp1==0xf1) { uint fade_1,fade_2,fade_3,fade_4; fade_2=348; //384 fade_4=348; //384 while(fade_2!=0&ee_temp==0x01) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x01) { fade_2=0; } watchdog_timer(); fade_2=348; //384 fade_4=348; //384 } } if(ee_temp1==0xf0) { while(ee_temp==0) { led_port=0x00; led_r=1; delay_1ms(500); watchdog_timer(); led_port=0x00; led_g=1; delay_1ms(500); led_port=0x00; led_b=1; delay_1ms(500); watchdog_timer(); } } //******************************************** 5 if(ee_temp1==0xef) { uint fade_1,fade_2,fade_3,fade_4; fade_2=384; //384 fade_4=384; //384 while(fade_2!=0&ee_temp==0x0f) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x10; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0f) { fade_2=0; } watchdog_timer(); fade_2=384; //384 fade_4=384; //384 } } if(ee_temp1==0xee) { uint fade_1,fade_2,fade_3,fade_4; fade_2=320; //384 fade_4=320; //384 while(fade_2!=0&ee_temp==0x0e) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x20; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0e) { fade_2=0; } watchdog_timer(); fade_2=320; //384 fade_4=320; //384 } } if(ee_temp1==0xed) { uint fade_1,fade_2,fade_3,fade_4; fade_2=320; //384 fade_4=320; //384 while(fade_2!=0&ee_temp==0x0d) { for(fade_3=512;fade_3>fade_4;fade_3--) //512 { led_port=0x08; delay(1); } fade_3=512; //512 fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0d) { fade_2=0; } watchdog_timer(); fade_2=320; //384 fade_4=320; //384 } } if(ee_temp1==0xec) fade(); //******************************************* 6 if(ee_temp1==0xeb) { led_port=0x00; led_r=1; led_g=1; watchdog_timer(); } if(ee_temp1==0xea) { led_port=0x00; //led_r=0; led_g=1; led_b=1; watchdog_timer(); } if(ee_temp1==0xe9) { led_port=0x00; led_r=1; //led_g=0; led_b=1; watchdog_timer(); } if(ee_temp1==0xe8) fade1(); } void fade() { // uchar i; uint fade_1,fade_2,fade_3,fade_4; fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x10; delay(1); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x0c) { fade_2=0; } } watchdog_timer(); fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { if(ee_temp!=0x0c) { fade_2=0; } for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x20; delay(1); // watchdog_timer(); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); // watchdog_timer(); } fade_1=0; fade_2--; } watchdog_timer(); fade_2=512; fade_4=511; while(fade_2!=0&ee_temp==0x0c) { if(ee_temp!=0x0c) { fade_2=0; } for(fade_3=512;fade_3>fade_4;fade_3--) { led_port=0x08; delay(1); watchdog_timer(); } fade_3=512; fade_4--; watchdog_timer(); for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); watchdog_timer(); } fade_1=0; fade_2--; } watchdog_timer(); } void fade1() { // uchar i; uint fade_1,fade_2,fade_3,fade_4; fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x10; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x08; delay(1); } fade_1=0; fade_2--; if(ee_temp!=0x08) { fade_2=0; } } watchdog_timer(); fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { if(ee_temp!=0x08) { fade_2=0; } for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x20; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x10; delay(1); } fade_1=0; fade_2--; } watchdog_timer(); fade_2=128; fade_4=127; while(fade_2!=0&ee_temp==0x08) { if(ee_temp!=0x08) { fade_2=0; } for(fade_3=128;fade_3>fade_4;fade_3--) { led_port=0x08; delay(1); } fade_3=128; fade_4--; for(fade_1=0;fade_1<fade_2;fade_1++) { led_port=0x20; delay(1); } fade_1=0; fade_2--; } watchdog_timer(); } void init() { led_port=0x00; /* led_r=1; delay_1ms(500); led_port=0x00; led_g=1; delay_1ms(500); led_port=0x00; led_b=1; delay_1ms(500); led_port=0x00; */ delay_1ms(2); WDT_CONTR=0x3f; delay_1ms(500); } //******************************** void main() { init(); Flag2=0; SP=0x60; //堆棧指針 EX0=1; //允許外部中斷0,用于檢測紅外遙控器按鍵 EA=1; num=255; while(1) { calc(); } } //******************************************************************** /*------------------------外部中斷0程序-------------------------*/ /*------------------主要用于處理紅外遙控鍵值--------------------*/ void int0() interrupt 0 { uchar i; Flag2=0; /////// k=0; EX0=0; //檢測到有效信號關中斷,防止干擾 for(i=0;i<4;i++) { delay1000(); if(IR_RE==1){k=1;} //剛開始為9ms的引導碼. } led_port=0x00; if(k==0) { IR_decode(); //如果接收到的是有效信號,則調用解碼程序 if(date[3]>=0xe8) { if(date[3]<=0xfb) { temp1=date[3]; EEPROM_ERASE(0x2000); //STC_EEROM_0X2000 temp1 EEPROM_write(0x2000,temp1); EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; /* temp=date[3]&0x0f; EEPROM_ERASE(0x2004); //STC_EEROM_0X2004 temp EEPROM_write(0x2004,temp); */ } else { EEPROM_read(0x2000); ee_temp1=ISP_DATA; ee_temp=ee_temp1&0x0f; } } delay2400(); delay2400(); delay2400(); delay_1ms(500); } EX0=1; //開外部中斷,允許新的遙控按鍵 }
上傳時間: 2016-07-02
上傳用戶:184890962
lm75A溫度數字轉換器 FPGA讀寫實驗Verilog邏輯源碼Quartus工程文件+文檔資料,FPGA為CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做為你的學習設計參考。LM75A 是一個使用了內置帶隙溫度傳感器和模數轉換技術的溫度數字轉換器。它也是一個溫度檢測器,可提供一個過熱檢測輸出。LM75A 包含許多數據寄存器:配置寄存器用來存儲器件的某些配置,如器件的工作模式、OS 工作模式、OS 極性和OS 故障隊列等(在功能描述一節中有詳細描述);溫度寄存器(Temp),用來存儲讀取的數字溫度;設定點寄存器(Tos & Thyst),用來存儲可編程的過熱關斷和滯后限制,器件通過2 線的串行I2C 總線接口與控制器通信。LM75A 還包含一個開漏輸出(OS),當溫度超過編程限制的值時該輸出有效。LM75A 有3 個可選的邏輯地址管腳,使得同一總線上可同時連接8個器件而不發生地址沖突。LM75A 可配置成不同的工作條件。它可設置成在正常工作模式下周期性地對環境溫度進行監控或進入關斷模式來將器件功耗降至最低。OS 輸出有2 種可選的工作模式:OS 比較器模式和OS 中斷模式。OS 輸出可選擇高電平或低電平有效。故障隊列和設定點限制可編程,為了激活OS 輸出,故障隊列定義了許多連續的故障。溫度寄存器通常存放著一個11 位的二進制數的補碼,用來實現0.125℃的精度。這個高精度在需要精確地測量溫度偏移或超出限制范圍的應用中非常有用。正常工作模式下,當器件上電時,OS 工作在比較器模式,溫度閾值為80℃,滯后75℃,這時,LM75A就可用作一個具有以上預定義溫度設定點的獨立的溫度控制器。module LM75_SEG_LED ( //input input sys_clk ,input sys_rst_n ,inout sda_port ,//output output wire seg_c1 ,output wire seg_c2 ,output wire seg_c3 ,output wire seg_c4 ,output reg seg_a ,output reg seg_b ,output reg seg_c ,output reg seg_e ,output reg seg_d ,output reg seg_f ,output reg seg_g ,output reg seg_h , output reg clk_sclk );//parameter define parameter WIDTH = 8;parameter SIZE = 8;//reg define reg [WIDTH-1:0] counter ;reg [9:0] counter_div ;reg clk_50k ;reg clk_200k ;reg sda ;reg enable ;
上傳時間: 2021-10-27
上傳用戶:
300個C51單片機設計proteus仿真源碼軟件源碼:100000秒以內的計時程序10秒的秒表12864LCD圖形滾動演示128X64LED160128LCD圖文演示1602字符液晶滾動演示程序1602液晶顯示的DS1302實時時鐘16×16點陣(滾動顯示)16×16點陣2(滾動顯示)2io5鍵盤模擬音量數碼管顯示2×20串行字符液晶演示32x16漢字44行列鍵盤485全雙工通信4×4鍵盤矩陣控制條形LED顯示4個獨立式按鍵控制LED開關4個獨立式按鍵控制LED移位4只數碼管滾動顯示0~3555可調PWM發生器555的應用6264擴展內存6個16×16點陣74HC154譯碼器應用74HC59574HC595串入并出芯片應用74LS138譯碼器應用74LS148擴展中斷8051雙機通信簡例8255并行口擴展實例89C51PWM8x8LED漢字顯示8x8點陣做的貪吃蛇游戲8×8LED點陣屏顯示數字8只數碼管同時顯示不同字符8只數碼管顯示多個不同字符8只數碼管滾動顯示8~F8只數碼管滾動顯示單個數字8只數碼管滾動顯示數字串8只數碼管閃爍顯示8通道自動溫度檢測系統仿真(含原程序)ADC0808 PWM實驗ADC0809模數轉換與顯示ADC0832模數轉換與顯示AT89C51對直流電動機的驅動AVR_UartBCD譯碼數碼管顯示數字c51 可預設電壓的數控電源(功能強大)clockConterCPU控制的獨立式鍵盤掃描實驗da、ad。液晶,傳遞函數模型綜合應用的實例DIY51式數控電源DS1621溫度傳感器實驗ds18b20DS18B20溫度傳感器實驗DS18B20溫度檢測及其液晶顯示HorseLightI2CIIC-24C04與數碼管IIC-24C04與蜂鳴器INT0與INT1中斷計數INT0中斷3位計數INT0及INT1中斷計數INT0和INT1控制條形LEDINT1中斷5位計數IO并行口直接驅動單個數碼管K1-K4 分組控制LEDK1-K4 控制LED移位K1-K4 控制數碼管加減演示K1-K4 控制數碼管移位顯示K1-K4 鍵狀態顯示key_lcdks0108 液晶12864LCD頻率計仿真LED代碼查詢V1[1].1LED模擬交通燈LED閃爍M16_AN_CompareM16_EEPROMM16_HorseMAX7221控制數碼管動態顯示my16key_cNT0中斷控制LEDNT0中斷計數NumberDisplayP3口流水燈PCF8574PCF8583+LCD1602PCF8591模數與數模轉換實驗proteus ADDC的練習程序PWMPWMLEDPWM控制LED的亮度仿真程序PWM控制馬達的方法PWM波輸出(可調)PWM電機正反轉pwm程序實例PWM調溫RAM擴展練習sscom32串口調試TIMER0與TIMER1控制條形LEDTIMER0控制LED二進制計數TIMER0控制單只LED閃爍TIMER0控制四只LED滾動閃爍TIMER0控制流水燈ULN2803usart_t《lcd1602仿真實例》一個數控直流穩壓電源一個步進電機的仿真一步一步教你51_PC串口通信萬能邏輯電路實驗三機通訊串口仿真mcu_pc串口方式1串行數據轉換為并行數據交通燈從左到右的流水燈光藕隔離驅動電機內部函數intrins.h應用舉例凈水控制器仿真電路剛做好的十個字的led屏模擬有程序包含單片機寄存器的頭文件單只按鍵控制單只數碼管滾動顯示單只數碼管循環顯示0-9單只數碼管循環顯示0~F單片機與PC機串口通訊仿真單片機之間雙向通信單片機向PC發送數據單片機向主機發送字符串單片機接收PC發出的數據單片機控制的電動自行車驅動系統單片機數據發送程序發一個用定時器做的PWM基于1602+ds12b80+ds1302+音樂+電子書+流水燈的多功能電子表基于ADC0832的數字電壓表基于AT24C02的多機通信基于AT89C51+MAX7219的頻率計 附帶proteus仿真電路圖 實際硬件電路測試通過基于DS1302的日歷時鐘基于yjwpm測試過的DS18B20仿真實例多功能電子鐘多點溫度測量多路開關狀態指示大屏幕仿真子電路做的一個H型電機驅動電路字符串函數string.h應用舉例字符函數ctype.h應用舉例宏定義應用舉例定時器中斷控制的獨立式鍵盤掃描實驗定時器控制交通指示燈定時器控制數碼動態顯示定時器控制數碼管動管顯示對I2C總線上掛接多個AT24C0
上傳時間: 2021-10-27
上傳用戶:wangshoupeng199
常用電源類通訊類ST單片機芯片集成庫原理圖庫PCB庫AD封裝庫器件庫2D3D庫+器件手冊合集,已在項目中使用,可以作為你的設計參考。SV text has been written to file : 74系列芯片.csv74HC04 6通道單輸入輸出反相器74HC138 3線到8線路解碼器SN74HCT138 3線到8線路解碼器74HC175 四D型觸發器的復位觸發器74HC573 八路三態同相透明鎖存器SN74HCT573 八路三態同相透明鎖存器74HC595 8位串行輸入/8位串行或并行輸出 存儲狀態寄存器74LS00 四2輸入與非門74LS01 四2輸入與非門74LS04 十六進制逆變器74LS08 四2輸入與門74LS10 三3輸入與非門74LS148 8線到3線優先編碼器74LS192 雙時鐘方式的十進制可逆計數器74LS20 雙4輸入與非門74LS32 四2輸入或門74LS74 雙路D類上升沿觸發器74LS74X2 雙路D類上升沿觸發器CSV text has been written to file : STM32系列.csvLibrary Component Count : 5Name Description----------------------------------------------------------------------------------------------------STM32F103C8T6 STM32F103RCT6 STM32F103RET6STM32F103VBT6 STM32F103ZET-AMS1117 三端穩壓芯片AOZ1036 LM2576-12 DC降壓芯片LM2576-3.3 DC降壓芯片LM2576-5.0 DC降壓芯片LM2576-ADJ DC降壓芯片LM2577-ADJ DC升壓芯片LM2596-12 DC降壓芯片LM2596-3.3 DC降壓芯片LM2596-5.0 DC降壓芯片LM2596-ADJLM317 可調線性穩壓芯片LM7805 MC34063 REF196 3V3基準電壓源REF5040 高精度電壓基準SX1308 可調升壓芯片TL431_DIP 可調基準穩壓芯片TL431_SMD 可調基準穩壓芯片TL494 電源管理ICTP4056TPS5430 TPS54331CC2530CH340G DM9000A DM9000CEP DP83848I 網絡芯片DS1302 ENC28J60 以太網控制芯片FT232RL
上傳時間: 2022-03-03
上傳用戶:
隨著微電子技術和電力電子技術的發展,伺服運動控制系統已經從模擬控制發展到全數字控制,其性能不斷提高,在工業機器人、數控機床等設備中獲得了廣泛應用.基于現場總線網絡的伺服運動控制系統以其高可靠性、快速性和穩定性成為伺服運動控制系統的發展趨勢。德國倍福公司提出的EtherCAT工業以太網技術在數據鏈路層采用了實時調度的軟件核,并提供了過程數據傳輸的獨立通道,提高了系統的實時性:該網絡還具有靈活的拓撲結構,簡單的系統配置,較低的構建成本等特點,適合應用于運動控制領域。目前,該網絡受到了運動控制開發商的廣泛關注。本文以海洋研究領域的造波機系統開發為背景,利用EtherCAT從站接口控制器ET1100和DSP芯片TMS320F28335開發了EtherCAT從站設備,構建了一主一從的EtherCAT網絡結構實現了伺服系統精確的位置控制。論文首先對伺服運動控制系統的概念、特點進行了介紹,對其各個組成部分進行了詳細分析,并結合實踐經驗給出了自己的觀點,就目前廣泛應用于網絡運動控制中的兩種總線網絡進行了介紹。其次,詳細分析了EtherCAT網絡的原理、技術特點及主從站關鍵技術。結合本文的系統設計,介紹了1公司最新推出的用于1業控制的DSP片-TMS320F28335,分析了系統設計中用到的幾個運動控制模塊與通訊模塊,并給出了相應寄存器配置。最后在對EtherCAT網絡和DSP芯片TMS320F28335研究基礎上,開發了EtherCAT從站設備,避免了造波機系統中脈沖+方向位置控制方式長線傳輸的缺點,給出了開發系統的總體框架及主從站實現的關鍵細節,并給出了相應的實驗結論。本設計充分發揮了EtherCAT工業以太網絡實時數據傳輸的功能和TMS320F28335 DSP芯片運動控制功能,實現了運動系統高精度的位置控制。
上傳時間: 2022-06-01
上傳用戶:aben
上層應用軟件和操作系統要具備良好的移植性,快速高效地開發穩定的底層驅動程序將是嵌入式系統開發成功的關鍵。隨著芯片技術的快速發展,越來越多功能強大、價格低廉的嵌入式硬件出現在市場上,而且更新換代非常快,因此,如何以合理的成本更快地為這些硬件開發或移植嵌入式軟件是嵌入式系統開發人員亟需解決的問題。近年來,上述問題得到了學術界和工業界的廣泛關注。文獻[1]1定義了用于抽象寄存器訪問和復雜位操作的接口定義語言(IDL),在IDL規范中給出了寄存器操作的函數庫和隱藏底層復雜位操作的抽象機制。但是該方法僅局限于底層驅動開發中的寄存器操作。統一驅動程序接口(UD2通過定義硬件平臺和驅動程序之間的應用程序編程接口集,解決可移植問題。硬件抽象技術1在底層硬件和操作系統之間加入了硬件抽象層,避免了操作系統、應用軟件對物理器件的直接訪問,屏藏了底層硬件的差異,從而增強了軟件的健壯性,提高了軟件的開放性和可移植性。但是在實際的應用中,硬件抽象層以嵌入式操作系統的BSP的形式出現。而BSP形式的硬件抽象層與BSP所向上支持的嵌入式操作系統是緊密相連的,耦合性很強。一種嵌入式操作系統的BSP不可能用于其他嵌入式操作系統,因此,這種硬件抽象層是一種封閉的專用硬件抽象層,無疑它局限了軟件可移植的范圍,增加了移植的難度。
上傳時間: 2022-06-19
上傳用戶:qdxqdxqdxqdx
本文開發的上位機軟件是在VS2010平臺上基于MFC框架開發,并進行了以下幾個方面的分析、設計與實現。首先對邊界掃描原理進行了研究,如TAP端口、TAP控制器、指令寄存器和數據寄存器等。在對原理有一定的了解后,分析了三種邊界掃描測試電路擴展方式和邊界掃描測試的流程。同時也對網表文件和BSDL文件的格式進行了分析,為之后對這兩種文件進行讀取做好準備。接著對邊界掃描測試系統的總體設計進行了分析,同時對上位機軟件的需求進行了分析。需求分析是軟件開發的重要環節,能對之后的軟件具體開發工作起到事半功倍的作用。然后就是對上位機軟件的具體設計和實現部分,本文把上位機軟件主要分為4個模塊:測試文件處理模塊、測試矢量生成模塊、USB通信模塊和項目管理與界面設計模塊。測試文件處理模塊分為BSDL文件處理和網表文件處理,分別實現了對BSDL文件的通用性解析和對多種EDA軟件導出網表文件的解析:測試矢量生成模塊實現了對ID碼指令、采樣指令和外測試指令的測試矢量生成:USB通信模塊利用Cypress(賽普拉斯)公司提供的CyAPI實現了USB通信類的編寫,實現了與測試控制器的通信;項目管理與界面設計模塊實現了工程文件的可移植性和友好的操作界面。最后通過對上位機軟件、測試控制器和被測電路板進行聯合調試,調試結果表明本文開發的上位機軟件能夠實現預期的需求,即ID碼測試、動態顯示管腳狀態和設置管腳狀態等功能。
上傳時間: 2022-06-26
上傳用戶: