① 如何自製簡易cpu
1.從沙子中提取二氧化硅。
2.把二氧化硅還原成硅(化學純)。
3.用菜刀切割純硅成片(尺寸0.4公分x0.4公分x0.05公分)。
4.用0.001納米的激光束在電子顯微鏡下,在硅表面畫出10個晶體管的布局圖(不用自己畫,網上下載一個數據包就可以,計算機會自己執行,這個數據是3000G左右)。
5.之後用化學試劑蝕刻就成了。
6.製作電路板,並焊好針腳。
7.蓋上屏蔽罩,就OK了。
8.插上開機。
9.1分鍾後電腦出現一下文字。
10.成功進入進入系統,打開瀏覽器進入網頁讀新聞。
② 單片機簡易電子琴程序
22. 電子琴
1. 實驗任務
(1. 由4X4組成16個按鈕矩陣,設計成16個音。
(2. 可隨意彈奏想要表達的音樂。
2. 電路原理圖
圖4.22.1
3. 系統板硬體連線
(1. 把「單片機系統」區域中的P1.0埠用導線連接到「音頻放大模塊」區域中的SPK IN埠上;
(2. 把「單片機系統「區域中的P3.0-P3.7埠用8芯排線連接到「4X4行列式鍵盤」區域中的C1-C4 R1-R4埠上;
4. 相關程序內容
(1. 4X4行列式鍵盤識別;
(2. 音樂產生的方法;
一首音樂是許多不同的音階組成的,而每個音階對應著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構成我們所想要的音樂了,當然對於單片機來產生不同的頻率非常方便,我們可以利用單片機的定時/計數器T0來產生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應頻率關系弄正確即可。現在以單片機12MHZ晶振為例,例出高中低音符與單片機計數T0相關的計數值如下表所示
音符 頻率(HZ) 簡譜碼(T值) 音符 頻率(HZ) 簡譜碼(T值)
低1 DO 262 63628 # 4 FA# 740 64860
#1 DO# 277 63731 中 5 SO 784 64898
低2 RE 294 63835 # 5 SO# 831 64934
#2 RE# 311 63928 中 6 LA 880 64968
低 3 M 330 64021 # 6 932 64994
低 4 FA 349 64103 中 7 SI 988 65030
# 4 FA# 370 64185 高 1 DO 1046 65058
低 5 SO 392 64260 # 1 DO# 1109 65085
# 5 SO# 415 64331 高 2 RE 1175 65110
低 6 LA 440 64400 # 2 RE# 1245 65134
# 6 466 64463 高 3 M 1318 65157
低 7 SI 494 64524 高 4 FA 1397 65178
中 1 DO 523 64580 # 4 FA# 1480 65198
# 1 DO# 554 64633 高 5 SO 1568 65217
中 2 RE 587 64684 # 5 SO# 1661 65235
# 2 RE# 622 64732 高 6 LA 1760 65252
中 3 M 659 64777 # 6 1865 65268
中 4 FA 698 64820 高 7 SI 1967 65283
下面我們要為這個音符建立一個表格,有助於單片機通過查表的方式來獲得相應的數據
低音0-19之間,中音在20-39之間,高音在40-59之間
TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0
DW 0,63731,63928,0,64185,64331,64463,0,0,0
DW 0,64580,64684,64777,64820,64898,64968,65030,0,0
DW 0,64633,64732,0,64860,64934,64994,0,0,0
DW 0,65058,65110,65157,65178,65217,65252,65283,0,0
DW 0,65085,65134,0,65198,65235,65268,0,0,0
DW 0
2、音樂的音拍,一個節拍為單位(C調)
曲調值 DELAY 曲調值 DELAY
調4/4 125ms 調4/4 62ms
調3/4 187ms 調3/4 94ms
調2/4 250ms 調2/4 125ms
對於不同的曲調我們也可以用單片機的另外一個定時/計數器來完成。
下面就用AT89S51單片機產生一首「生日快樂」歌曲來說明單片機如何產生的。
在這個程序中用到了兩個定時/計數器來完成的。其中T0用來產生音符頻率,T1用來產生音拍。
5. 程序框圖
貼不了.
7. C語言源程序
#include <AT89X51.H>
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]={64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178};
void main(void)
{
TMOD=0x01;
ET0=1;
EA=1;
while(1)
{
P3=0xff;
P3_4=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=0;
break;
case 0x0d:
key=1;
break;
case 0x0b:
key=2;
break;
case 0x07:
key=3;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
P3=0xff;
P3_5=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;
break;
case 0x07:
key=7;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
P3=0xff;
P3_6=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=8;
break;
case 0x0d:
key=9;
break;
case 0x0b:
key=10;
break;
case 0x07:
key=11;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
P3=0xff;
P3_7=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=12;
break;
case 0x0d:
key=13;
break;
case 0x0b:
key=14;
break;
case 0x07:
key=15;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
}
}
void t0(void) interrupt 1 using 0
{
TH0=STH0;
TL0=STL0;
P1_0=~P1_0;
}
根據自己的情況稍微改改就好了
③ 跪求單片機課程設計 要完全呦
題 目:單片機課程設計報告
目 錄
一、設計目的
二、程設計具體要求
三、單片機發展簡史
四、8051單片機系統簡介
五、8051單片機內部定時器/計數器簡介
六、程序電路
七、程序流程
八、程序代碼
九實驗總結-要求寫出完整的論文以及心得體會
十參考資料及小結
原 文 : 一.目的
1. 進一步熟悉和掌握8051單片機的結構及工作原理。
2. 掌握單片機的介面技術及相關外圍晶元的外特性,控制方法。
3. 通過課程設計,掌握以單片機核心的電路設計的基本方法和技術,了解表關電路參數的計算方法。
4. 通過實際程序設計和調試,逐步掌握模塊化程序設計方法和調試技術。
5. 通過完成一個包括電路設計和程序開發的完整過程,使學生了解開發一單片機應用系統的全過程,為今後從事相應打下基礎。
二.課程設計的體要求
a) 原理圖設計。
1. 原理圖設計要符合項目的工作原理,連線要正確,端了要不得有標號。
2. 圖中所使用的元器件要合理選用,電阻,電容等器件的參數要正確標明。
3. 原理圖要完整,CPU,外圍器件,擴器介面,輸入/輸出裝置要一應俱全。
b) 程序調計
1. 根據要求,將總體項能分解成若干個子功能模塊,每個功能模塊完成一個特定的功能。
2. 根據總體要求及分解的功能模塊,確定各功能模塊之間的關系,設直出完整的程序流程圖。
c) 程序調試將設計完的程序輸入,匯編,排除語法錯誤,生成*OBJ文件。
1. 按所設計的原理圖,在實驗平台上連線,檢查無誤。
2. 將匯編後生成的*OBJ文件傳送到實驗裝置的,執行該程序,檢查該程序、是否達到設計要求,若未達到,修改程序,直到達到要求為止,
d) 說明書
1. 原理圖設計說明
簡要說明設計目的,原理圖中所使用的元器件功能及在圖中的作用,各器件的工作過程及順序。
2. 程序設計說明
對程序設計總體功能及結構進行說明,對各子模塊的功能以及各子模塊之間的關系作較詳細的描述。
3. 畫出工作原理圖,程序流程圖並給出程序清單。
目前,單片機已廣泛應用到圖民經濟建設和日常生活的許多領域,成為測控技術現代化必不可少的重要工具。下面介紹一本單片機課程設計的好書,介紹了很多實例有興趣者可以去買哦,價格不貴【圖書目錄】 - 8051單片機課程設計實訓教材
第1章 緒論
1.1 課程設計所需硬體工具
1.2 專題製作所需軟體使用工具
1.3 8051程序開發測試平台
1.4 使用免費匯編編譯器
1.5 89CXX燒錄模擬器操作實例
1.6 自製8051微電腦單板IO51
1.7 IO51操作實例
1.8 以Windows98 工作模式結合DOS模式來執行
第2章 8051單片機課程設計中的基本軟硬體設計
2.1 8051各種基本的硬體設計
2.2 工作指示燈LED
2.3 8051延遲時間計算
2.4 基本按鍵設計
2.5 建立8051通信介面
2.6 簡易8051調試界面
2.7 壓電喇叭測試
2.8 鍵盤掃描
2.9 掃描控制七段顯示器
2.10 LCD介面控制
2.11 8051定時器模式的工作
2.12 定時器模式0測試
2.13 定時器模式1測試
2.14 定時器模式2測試
2.15 以定時器產生各種頻率的聲音
2.16 以定時器演奏—段旋律
第3章 帶單片機的LCD時鍾
第4章 定時鬧鈴
第5章 定時鬧鈴LCD
第6章 音樂倒數定時器
第7章 密碼鎖控制
第8章 可存儲式電子琴
第9章 8051八音盒
第10章 紅外線遙控器研究
10.1 紅外線遙控器動作原理
10.2 如何觀察紅外線遙控器信號
10.3 紅外線遙控器解碼功能說明
第11章 紅外線家電遙控
第12章 8051伺服機控制
12.1 伺服機工作原理及改裝
第1.3章 8051伺服車控制
13.1 功能說明
13.2 伺服車組裝及實驗
第14章 紅外線遙控伺服車
14.1 功能說明
14.2 遙控伺服車組裝及實驗
14.3 控制電路
14.4 控製程序
第15章 無線電家電遙控
15.1 功能說明
15.2 遙控編碼解碼控制
第16章 8051聲控設計
16.1 聲控基本知識介紹
16.2 系統組成
16.3 聲控模塊介紹
16.4 基本控制電路
16.5 基本控製程序
16.6 聲控課題設計
附錄H 如何使用KEIL 8051開發系統匯編和編譯程序及調試
附錄I EPM89 890XX燒錄模擬器特性
附錄J 1051 8051 10控制板特性
附錄K VCMM聲控模塊特性
附錄L IO51控制板完整電路圖
附錄M 需要從網站下載的相關資料的使用說明
附錄N 硬體介面板版權聲明及如何訂購
附錄A 簡易穩壓電源製作
附錄B 本書實驗所需軟硬體工具及零件
附錄C 8051內部控制寄存器介紹
附錄D 8051指令集
附錄E 如何自製8051單板
附錄F 課程設計報告參考內容
附錄G IO51控制板窗口版驅動程序使用說明
④ 鐢靛瓙淇℃伅宸ョ▼涓撲笟姣曚笟璁烘枃棰樼洰鎬庝箞閫
銆銆鐢靛瓙淇℃伅宸ョ▼鐨 姣曚笟 璁烘枃鍐欎綔涓錛岃烘枃鐨勯樼洰璧風潃鐢婚緳鐐圭潧鐨勪綔鐢錛岃侀噸瑙嗚烘枃鐨勯樼洰銆備笅闈㈡槸鎴戝甫鏉ョ殑鍏充簬鐢靛瓙淇℃伅宸ョ▼姣曚笟璁烘枃棰樼洰鐨勫唴瀹癸紝嬈㈣繋闃呰誨弬鑰!
銆銆鐢靛瓙淇℃伅宸ョ▼姣曚笟璁烘枃棰樼洰(涓)
銆銆1. 鍩轟簬80C51鐨勬櫤鑳芥苯杞﹁嚜鎺х郴緇熺殑璁捐
銆銆2. PLC瀹炵幇鍗佸瓧璺浜ら氱伅鑷鍔ㄦ帶鍒
銆銆3. 鏅鴻兘鍨嬪厖鐢靛櫒鐨勭數婧愬拰鏄劇ず璁捐
銆銆4. 鍩轟簬鍗曠墖鏈虹殑鐢靛瓙鏃墮挓璁捐″強搴旂敤
銆銆5. 鍩轟簬鍗曠墖鏈虹殑鏅鴻兘鐢靛瓙鏃墮挓鐨勮捐″強搴旂敤
銆銆6. 瓚呭栧樊涓娉㈣皟騫呮敹闊蟲満緇勮呭強璋冭瘯
銆銆7. 鍩轟簬USB鎺ュ彛鐨勬ヨ繘鐢墊満鎺у埗鐨勭爺絀朵笌瀹炵幇
銆銆8. 鍩轟簬鍗曠墖鏈虹殑鐢靛瓙鐞磋捐
銆銆9. 鍩轟簬FPGA鐨勭洿搴忔墿棰戦氫俊鐮旂┒涓庤捐
銆銆10. 鍩轟簬鍗曠墖鏈虹殑鍙戝皠鏈烘帶鍒剁郴緇
銆銆11. 澹板厜鎶ヨ﹀櫒鐨勮捐′笌鐮旂┒
銆銆12. 鍗曠墖鏈虹數婧
銆銆13. 鍩轟簬P87LPC768鐨勭數鏈烘帶鍒剁郴緇
銆銆14. 鍩轟簬鍗曠墖鏈虹殑LCD鐢靛瓙閽熻捐
銆銆15. 闊沖搷鏀懼ぇ鍣ㄧ殑璁捐
銆銆16. 瓚呭栧樊鏀墮煶鏈哄埗浣滃強鍒嗘瀽鐮旂┒
銆銆17. 2DPSK棰戝甫浼犺緭緋葷粺鐨勮捐′笌瀹炵幇
銆銆18. 鍩轟簬鍗曠墖鏈烘櫤鑳界數瀛愰挓鐨勮捐
銆銆19. USB涓庝覆琛屾帴鍙h漿鎹㈠櫒鐨勮捐
銆銆20. 鍩轟簬FPGA鐨勬暟瀛楅戠巼璁$殑璁捐
銆銆鐢靛瓙淇℃伅宸ョ▼姣曚笟璁烘枃棰樼洰(浜)
銆銆1. 瀹跺涵闃茬洍鎶ヨ︾郴緇
銆銆2. 鍗曠墖鏈哄疄鐜板崟姝ヨ繘鐢墊満鍙8浣嶆祦姘寸伅鎺у埗鐨勮捐
銆銆3. 綃鐞 絝炶禌璁℃椂緋葷粺
銆銆4. 鍗曠墖鏈89C51鍦ㄧ洿嫻佽皟閫熸帶鍒剁郴緇熶腑鐨勫簲鐢
銆銆5. 鍏璺鏁板瓧鎶㈢瓟鍣
銆銆6. 鍩轟簬51鏈虹殑鐩存祦鐢墊満璁捐
銆銆7. 鍩轟簬51鍗曠墖鏈虹殑姝ヨ繘鐢墊満鎺у埗緋葷粺
銆銆8. 鍩轟簬涓縐岲C-DC妯″潡鐢墊簮緋葷粺鐨勮捐
銆銆9. 鍩轟簬555瀹氭椂鍣ㄩ棯鍏夌伅鐨勮捐
銆銆10. 澶氬姛鑳界ǔ鍘嬬數婧愮殑鍒朵綔
銆銆11. 鐩存祦紼沖帇鐢墊簮鐨勫埗浣
銆銆12. 姝ヨ繘鐢墊満鐨勫崟鐗囨満鎺у埗緋葷粺
銆銆13. 鍗曠墖鏈轟氦閫氱伅綆$悊緋葷粺
銆銆14. AT89S51鍗曠墖鏈轟氦閫氱伅鎺у埗緋葷粺鍒朵綔
銆銆15. 鍩轟簬鍗曠墖鏈虹殑姝ヨ繘鐢墊満緋葷粺璁捐
銆銆16. 鍩轟簬WML鐨勫︾敓緗戠珯寮鍙
銆銆17. 鍩轟簬鍗曠墖鏈虹殑鐢靛瓙瀵嗙爜閿
銆銆18. 鍗曠墖鏈洪┍鍔ㄦヨ繘鐢墊満鎺у埗緋葷粺鐨勮捐
銆銆19. 鍩轟簬鍗曠墖鏈虹殑嫻佹按鐏璁捐
銆銆鐢靛瓙淇℃伅宸ョ▼姣曚笟璁烘枃棰樼洰(涓)
銆銆1. 鍩轟簬鍗曠墖鏈虹殑鐏鐏炬姤璀﹀櫒璁捐
銆銆2. 鍩轟簬NE555鐨勮Е鎽稿紡鎶ヨ﹀櫒
銆銆3. 鏁板瓧瀵嗙爜閿佽捐
銆銆4. 鍩轟簬鍗曠墖鏈烘櫤鑳界數瀛愭椂閽熻捐″強搴旂敤
銆銆5. 嫻佹按鐏鎺у埗鐢佃礬璁捐
銆銆6. 綆鏄撳崟鐗囨満鎺у埗鐢佃礬瀹為獙寮鍙戞澘
銆銆7. 鍏ㄨ嚜鍔ㄦ礂琛f満鑷鍔ㄦ帶鍒剁數璺閮ㄥ垎璁捐
銆銆8. 鍩轟簬鍗曠墖鏈虹殑鍏璺鎶㈢瓟鍣ㄧ殑璁捐″強PCB鏉跨殑璁捐
銆銆9. 鍩轟簬鍗曠墖鏈虹殑鏁板瓧娓╁害璁$殑璁捐
銆銆10. 浠撳簱娓╂箍搴︾殑鐩戞祴緋葷粺
銆銆11. 鐢靛瓙闂ㄩ搩鐨勮捐
銆銆12. 鍩轟簬鍗曠墖鏈虹殑姝ヨ繘鏈虹數璺璁捐
銆銆13. 浜ら氱伅鎺у埗鐢佃礬璁捐
鐚滀綘鍠滄錛
1. 鐢靛瓙淇℃伅姣曚笟璁烘枃鑼冩枃
2. 鐢靛瓙淇℃伅宸ョ▼璁烘枃鑼冩枃
3. 鐢靛瓙淇℃伅宸ョ▼鍙戝睍鐜扮姸
4. 鏈鏂扮増緗戠粶宸ョ▼涓撲笟姣曚笟璁烘枃棰樼洰
5. 鐢靛瓙淇℃伅宸ョ▼姣曚笟璁烘枃鑼冩枃
6. 鐢靛瓙淇℃伅宸ョ▼璁烘枃棰樼洰澶у叏