1. 单片机入门 杜洋老师的好还是郭天详老师的好
郭天祥是系统的从0开始的教学吧,杜洋老师的是趣味性的教学,以趣味小制作为基础的教学,适合有点基础需要提高的人和对制作有兴趣的人
2. 学习c51有什么好的网站。。拜托了
www.doyoung.net
这是杜洋的网站,上面“教学”一栏里面有很多文章和视频,例如视频用面包板入门单片机,这种方法不用焊接,拆解方便,入门简单。还有《单片机编程魔法学校》《单片机入门制作专辑》这样的免费文章,还都在《无线电》上刊登过。首页上许多精简设计,制作只需十来分钟,但是不乏趣味。
(里面介绍的STC系列单片机是51系列的高级型,完全和51单片机通用,却速度更快,功能更多)
3. 毕业设计我想用单片机做一个电子琴,程序最好是c语言编写的,那个好心人可以帮我提供点资料,要钱的免进!
www.doyoung.net
上有好多,要的话我还有流程图
/*********************************************************************************************
程序名:DoToy系列作品MidTouch21电子琴程序
编写人:杜洋
编写时间:2009年6月3日
硬件支持:STC11L60XE外部12MHZ晶振电源3V
接口说明:详见《DoToy_MidTouch21电路原理图》
修改日志:
NO.1-20090603_17.54完成电子琴21键的测试(20090603_1备)
NO.2-20090604_01.29改为第二次新板的硬件电路(20090604_2备)
/*********************************************************************************************
说明:
用STC11Fxx单片机I/O接口的高阻态输入功能,扫描I/O接口电平。
手指将VCC线和I/O接口线半连接,产生高电平信号。
/*********************************************************************************************/
voidINIT(void);
#include<STC11Fxx.H>
/*********************************************************************************************/
sbitSPEAKER=P1^0;//扬声器,低使能
sbitLED=P3^0;//LED正极,强推
sbitLED2=P3^1;//LED负极
sbitKEY11=P2^0;
sbitKEY12=P2^1;
sbitKEY13=P2^2;
sbitKEY14=P2^3;
sbitKEY15=P2^4;
sbitKEY16=P2^5;
sbitKEY17=P2^6;
sbitKEY21=P2^7;
sbitKEY22=P4^4;
sbitKEY23=P4^5;
sbitKEY24=P4^6;
sbitKEY25=P0^7;
sbitKEY26=P0^6;
sbitKEY27=P0^5;
sbitKEY31=P0^4;
sbitKEY32=P0^3;
sbitKEY33=P0^2;
sbitKEY34=P0^1;
sbitKEY35=P0^0;
sbitKEY36=P3^3;
sbitKEY37=P3^2;
/*********************************************************************************************/
unsignedcharMUSIC;
unsignedcharSTH0,STL0;
unsignedintcodetab[]={//音阶表
63628,63835,64021,64103,64260,64400,64524,//低音1-7
64580,64684,64777,64820,64898,64968,65030,//中音1-7
65058,65110,65157,65178,65217,65252,65283//高音1-7
};
/*********************************************************************************************/
voiddelay1ms(unsignedinta){//1ms延时程序(12MHz10倍于51单片机速度时)
unsignedinti;
while(--a!=0){
for(i=0;i<600;i++);
}
}/***************************************************************************************/
voidINIT(void){//初始化程序
TMOD=0x11;
ET0=1;
ET1=1;
EA=1;
P0M1=0xff;//I/O接口工作方式
P0M0=0x00;//P0全为高阻输入
P1M1=0xfe;//P1.0为准双向,其他为高阻输入
P1M0=0x00;
P2M1=0xff;//P2全为高阻输入
P2M0=0x00;
P3M1=0xfc;//P3.0为强推,其他为标准双向
P3M0=0x01;
P4M1=0xff;//P4全为高阻输入
P4M0=0x00;
P4SW=0xff;
LED=1;
LED2=0;
SPEAKER=0;
}
/***************************************************************************************/
voidmain(void){
INIT();//初始化
while(1){
if(KEY37==1){delay1ms(20);if(KEY37==1){MUSIC=20;}}//高音B(37)
if(KEY36==1){delay1ms(20);if(KEY36==1){MUSIC=19;}}
if(KEY35==1){delay1ms(20);if(KEY35==1){MUSIC=18;}}
if(KEY34==1){delay1ms(20);if(KEY34==1){MUSIC=17;}}
if(KEY33==1){delay1ms(20);if(KEY33==1){MUSIC=16;}}
if(KEY32==1){delay1ms(20);if(KEY32==1){MUSIC=15;}}
if(KEY31==1){delay1ms(20);if(KEY31==1){MUSIC=14;}}
//3
if(KEY27==1){delay1ms(20);if(KEY27==1){MUSIC=13;}}
if(KEY26==1){delay1ms(20);if(KEY26==1){MUSIC=12;}}
if(KEY25==1){delay1ms(20);if(KEY25==1){MUSIC=11;}}
if(KEY24==1){delay1ms(20);if(KEY24==1){MUSIC=10;}}
if(KEY23==1){delay1ms(20);if(KEY23==1){MUSIC=9;}}
if(KEY22==1){delay1ms(20);if(KEY22==1){MUSIC=8;}}
if(KEY21==1){delay1ms(20);if(KEY21==1){MUSIC=7;}}
//2
if(KEY17==1){delay1ms(20);if(KEY17==1){MUSIC=6;}}
if(KEY16==1){delay1ms(20);if(KEY16==1){MUSIC=5;}}
if(KEY15==1){delay1ms(20);if(KEY15==1){MUSIC=4;}}
if(KEY14==1){delay1ms(20);if(KEY14==1){MUSIC=3;}}
if(KEY13==1){delay1ms(20);if(KEY13==1){MUSIC=2;}}
if(KEY12==1){delay1ms(20);if(KEY12==1){MUSIC=1;}}
if(KEY11==1){delay1ms(20);if(KEY11==1){MUSIC=0;}}
//1
if(MUSIC!=0xff){//如果有音阶数值(非0XFF时)
STH0=tab[MUSIC]/256;//将音阶的频率值装入定时器T0
STL0=tab[MUSIC]%256;
TR0=1;//启动定时器
MUSIC=0xff;//清除寄存器
}else{//否则
SPEAKER=1;//关扬声器
LED=1;
TR0=0;//关定时器
}
}
}
/***************************************************************************************/
voidt0(void)interrupt1using0{//定时器0产生音频
TH0=STH0;
TL0=STL0;
SPEAKER=~SPEAKER;//取反频率产生音调
LED=SPEAKER;//LED同频闪烁
}
/***************************************************************************************/
/*************************************************************
*杜洋工作室www.DoYoung.net
/*************************************************************/
4. 杜洋工作室单片机引脚触摸控制原理
其实就是设定单片机引脚旁边两个IO口为高电平,中间那个引脚为高阻输入,一旦扫到高电平,就可认为有按键按下
关键词: 高阻输入,其余的处理方式和按键一样,中断也好,扫描也可以。
# include <reg51.h>
# include <intrins.h>
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sfr P1M1=0x91; //I/O口工作状态寄存器
sfr P1M0=0x92;
void delay(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_();
}
void main()
{
P1M1=0x02;
P1M0=0x00;
P10=1;
P12=1;
P11=0;
while(1)
{
if(P11==1)
{
P2=0x00;//P2接LED
delay();
delay();
}
else
{
P2=0xFF;
}
}
}
5. 51单片机c语言学习哪本书讲的比较详细,适合入门的看呢
你可以看看《爱上单片机》(杜洋着),超简单的哦。
如果你不想买书,你可以下载《单片机编程魔法学校》,或者硬件的《单片机入门制作专辑》(其实就是从书里面截取的片段)
还可以购买视频,你到www.doyoung.net看看
其实没必要买一块开发板,也不必要自己做一块
完全可以用面包板搭建,无需焊接,拆装方便,而且真正能理解硬件电路,让自己动手实践,例如第一次试验只需要用三个元器件单片机(推荐用STC12C5A60S52,也是51内核的,完全通用,但是功能丰富,千万不要用AT89S51,以后你就会知道,比如说以后用到ADC数模转换,PWM输出,STC就都集成好了,而AT就需要一个个用芯片外扩)LED灯、电池盒三个元件,而不需要面对连电路都不熟悉的开发板。详见视频“用面包板入门单片机”:
http://www.doyoung.net/video/BREAD_1/index.html
学习C语言可以配合着《单片机入门制作专辑》(网页最后可以下载光盘及文章):
http://www.doyoung.net/articles/0711_MCU_entry_album/index.html
《单片机编程魔法学校》(最后也有下载):
http://www.doyoung.net/articles/0711_MCU_entry_album/index.html
推荐书籍:《爱上单片机》