發表文章

PSPICE不正確使用手冊-方波

圖片
錒錒今天做作業發現方波不知道要怎麼生出來就去GOOGLE了一下 SOURCE.slb 裡面有一個叫做 VPULSE 的元件可以拿來產生方波 參數的話 V1 起始電壓(單位為V) V2 脈衝電壓(單位為V) TD 延遲時間(單位為s) TR 上升時間(單位為s) TF 下降時間(單位為s) PW 脈衝寬度(單位為s) PER 週期(單位為s) 附上我用小畫家畫的精美插圖 理論上我要的方波TR跟TF都是趨近於0 網路上有人說這樣會出錯所以要設一個很小的數值   e.g.  1n 我是自己試過如果打0的話圖形會變成梯形 不太清楚是甚麼原因造成的,有空再問助教八!

PSpice不正確使用手冊-畫畫&分析篇

圖片
PSpice 下載完成之後會有這幾樣東西 1.Cadence Help: 感覺可以查詢什麼東西,待補充 2.Capture CIS Lite:  今天會用到的東西,可以拿來畫電路圖跟分析(分析其實還是靠PSpice AD) 3.PSpice Advanced Analysis Lite: 感覺可以分析,待補充 4.PSpice AD Lite: 感覺也可以分析,待補充 5.SQLite 3: 阿災,待補充 6.Re-install ODBC Drivers: 阿災,待補充 讓我們打開Capture CIS Lite 那麼要完成我們的作業還必須經過下列三個步驟 1.專案的新增 2.繪製電路圖 3.分析輸入輸出訊號 1.專案的新增 2.繪製電路圖 新增電阻R元件並更改電阻值 新增更多元件&接線 3.分析輸入輸出訊號

PSpice不正確使用手冊-下載篇

圖片
有啥麼事情比系辦選課時唬爛你老師會加開名額還要雷人? 那就是二年級時大家把PSpice都當打字練習程式在那裏抄抄抄 現在老師卻要你認真尻出一個電路。而且老實說學校從頭到尾其實 沒有任何一堂課 認真地去教你如何去操作PSpice、示波器、電源供應器或是他媽的訊號產生器時 你只能去找他媽的GOOGLE大大求救 1.首先要去下載PSpice 官網: https://www.orcad.com/resources/orcad-downloads PSpice 公司OrCAD 官網當中的 RESORCES 欄頁裡有OrCAD PSpice Designer Lite (Capture & PSpice Only) 點選圖中連結下載 之後他會叫你填一堆個資 填完之後他就會將下載連結寄到妳的信箱 下載出來還是一個壓縮檔XD 點選setup.exe安裝就完成6!

Leetcode-TwoSum

圖片
今天心血來潮了完成人生第一題leetcode /** * Note: The returned array must be malloced, assume caller calls free(). */ int* twoSum(int* nums, int numsSize, int target) { int *a= (int*)malloc(2*sizeof(int)); for(int i=0; i<numsSize; i++){ for(int j=i+1; j<numsSize; j++){ if(nums[i]+nums[j]==target&&i!=j){ a[0]=i; a[1]=j; //return a; } } } return a; } 詳細之後再補

危機處理-藍芽傳送字元(HC-05)

圖片
今天來補個用藍芽傳字元給M0的程式碼 使用的藍芽模組是HC-05(主從合一),之後有空再補上HC-05的設定 查了查資料發現藍牙傳輸的方式不會對傳輸內容做任何的手腳(應該說調變?)等效於一條RS-232傳輸線 所以關於藍牙與板子的溝通就是通過UART協定去寫 而NUC140關於UART的腳位如下 (擷取自樹德科技大學資訊工程系 吳鴻志副教授之PPT) 我測試用的程式碼如下: #include <stdio.h> #include "NUC1xx.h" #include "Driver\DrvSYS.h" #include "Driver\DrvGPIO.h" #include "Driver\DrvSPI.h" #include "LCD_Driver.h" #include "ScanKey.h" #include "Seven_Segment.h" #include "LCD_Driver_Extend.h" #include "Driver/DrvUART.h" #define DATASIZE 1 uint8_t mode; extern unsigned char Ascii[]; unsigned char TEXT1[16]="Keypad = "; unsigned char LCD_Point[64]; unsigned char DisplayBuf[8*128]; int main(void) { UNLOCKREG(); DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1); SysTimerDelay(5000); /* HCLK clock source. 0: external 12MHz; 4:internal 22MHz RC oscillator */ DrvSYS_SelectHCLKSource(0); LOCKREG(); Initial_pannel(); //call initial pannel f

危機處理- 絶対に賣不出去的碼表

圖片
各位同學今天要做的是碼表 就是在跑1600那種老師可以拿來記錄秒數的碼表 是不是很簡單呢,真的很簡單~ 那我們就先來處理名次紀錄的部分 名次(秒數)紀錄: 在 void RTC_IRQHandler ( void ) 函式下尻入下列程式碼判讀鍵盤跟print出時間 歐對記得宣告 TEXT 陣列兄弟們還有 變數N 變數N 在這裡的主要功能是保持紀錄的優先順序(key1被按之前key2,key3都不能按,etc) key=Scankey();//讀取鍵盤值 if(key==1&&N==0){ N=1; sprintf(TEXT3,"%02d:%02d:%02d",sCurTime.u32cHour ,sCurTime.u32cMinute,sCurTime.u32cSecond); print_lcd(2, TEXT3); } if(key==2&&N==1){ N=2; sprintf(TEXT4,"%02d:%02d:%02d",sCurTime.u32cHour ,sCurTime.u32cMinute,sCurTime.u32cSecond); print_lcd(1, TEXT4); } if(key==3&&N==2){ N=3; sprintf(TEXT5,"%02d:%02d:%02d",sCurTime.u32cHour ,sCurTime.u32cMinute,sCurTime.u32cSecond); print_lcd(0, TEXT5); } 接下來要弄暫停跟重制: 一樣都放在 void RTC_IRQHandler ( void ) 函式下 1.暫停基本上跟記錄秒數一樣,就是把跑秒數的那一行拿來print按下key4當的秒數 但是! 此時要把不停更新當前秒數的程式碼暫停(下一段會說明) 2.重制很簡單就是先清除螢幕在重啟RTC if(key==4){ //暫停 N=4; sprintf(TEXT6,"%02d:%02d:%02d",sCurTime.u32cHour ,sCurTime.u32cMinute

危機處理-原來是LCD的部分阿~(附壓縮檔)

圖片
又到了交作業了時間了各位同學 今天的作業是利用光敏電阻(ADC)改變LCD上的電池顯示 錒......其實就是考你LCD阿 記得助教說多大都沒問題整個螢幕都可以所以我就畫了一個這樣的東西XD(彩蛋自己找) 總共畫了四張(電池一格,兩格...etc) 之後用軟體轉換成txt檔案 battery1.txt battery2.txt battery3.txt battery4.txt 之後記得 宣告 R! 判斷試的部分就直接用 draw_LCD() 函式整個畫出來 (記得add跟在主程式include driver_Extend.c ) if(ADC->ADDR[5].RSLT>2000){ Duty_Cycle=0; draw_LCD(battery1); } else if(ADC->ADDR[5].RSLT>1000){ Duty_Cycle=25; draw_LCD(battery2); } else if(ADC->ADDR[5].RSLT>800){ Duty_Cycle=50; draw_LCD(battery3); } else if(ADC->ADDR[5].RSLT>600){ Duty_Cycle=75; draw_LCD(battery4); } 最後壓縮檔附上 點我