① 如何自制简易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. 鐢靛瓙淇℃伅宸ョ▼璁烘枃棰樼洰澶у叏