新概念51单片机C语言教程例题Word文档下载推荐.docx
- 文档编号:17602368
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:24
- 大小:19.03KB
新概念51单片机C语言教程例题Word文档下载推荐.docx
《新概念51单片机C语言教程例题Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《新概念51单片机C语言教程例题Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
sfrSADEN=0xB9;
sfrT2CON=0xC8;
sfrT2MOD=0xC9;
sfrRCAP2L=0xCA;
sfrRCAP2H=0xCB;
sfrTL2=0xCC;
sfrTH2=0xCD;
/*BITRegisters*/
/*PSW*/
sbitCY=PSW^7;
sbitAC=PSW^6;
sbitF0=PSW^5;
sbitRS1=PSW^4;
sbitRS0=PSW^3;
sbitOV=PSW^2;
sbitP=PSW^0;
/*TCON*/
sbitTF1=TCON^7;
sbitTR1=TCON^6;
sbitTF0=TCON^5;
sbitTR0=TCON^4;
sbitIE1=TCON^3;
sbitIT1=TCON^2;
sbitIE0=TCON^1;
sbitIT0=TCON^0;
/*P3*/
sbitRD=P3^7;
sbitWR=P3^6;
sbitT1=P3^5;
sbitT0=P3^4;
sbitINT1=P3^3;
sbitINT0=P3^2;
sbitTXD=P3^1;
sbitRXD=P3^0;
/*SCON*/
sbitSM0=SCON^7;
#include<
>
Allrightsreserved.
//alternatively"
FE"
sbitFE=SCON^7;
sbitSM1=SCON^6;
sbitSM2=SCON^5;
sbitREN=SCON^4;
sbitTB8=SCON^3;
sbitRB8=SCON^2;
sbitTI=SCON^1;
sbitRI=SCON^0;
sbitT2EX=P1^1;
sbitT2=P1^0;
/*T2CON*/
sbitTF2=T2CON^7;
sbitEXF2=T2CON^6;
sbitRCLK=T2CON^5;
sbitTCLK=T2CON^4;
sbitEXEN2=T2CON^3;
sbitTR2=T2CON^2;
sbitC_T2=T2CON^1;
sbitCP_RL2=T2CON^0;
/*PCAPin*/
sbitCEX3=P2^4;
sbitCEX2=P2^0;
sbitCEX1=P3^5;
sbitCEX0=P3^7;
sbitECI=P3^4;
/*IE*/
sbitEA=IE^7;
sbitEPCA_LVD=IE^6;
sbitEADC_SPI=IE^5;
sbitES=IE^4;
sbitET1=IE^3;
sbitEX1=IE^2;
sbitET0=IE^1;
sbitEX0=IE^0;
/*IP*/
sbitPPCA_LVD=IP^6;
sbitPADC_SPI=IP^5;
sbitPS=IP^4;
sbitPT1=IP^3;
sbitPX1=IP^2;
sbitPT0=IP^1;
sbitPX0=IP^0;
ISD400x系列语音芯片C语言参考程序:
(P425)
#include<
sbitcs_4004=P0^0;
sbitsclk_4004=P0^3;
sbitmosi_4004=P0^1;
sbitmiso_4004=P0^2;
sbitrac_4004=P0^4;
sbitint_4004=P0^5;
voiddelay(unsignedinti)//延时程序
{
while(i--);
}
voidstopmode()//停止
unsignedcharm,i,j;
cs_4004=1;
sclk_4004=0;
cs_4004=0;
m=0x30;
for(i=0;
i<
8;
i++)
{
m=_cror_(m,1);
j=m<
<
1;
mosi_4004=CY;
sclk_4004=0;
sclk_4004=1;
}
voidpowerdown()//下电
m=0x10;
voidpowerup()//上电
m=0x20;
i)
voidrecord4004(unsignedintaddress)
{//录音address--录音地址0---2400
unsignedchari,m,j;
unsignedintdatasoute=0;
powerup();
delay(5118);
//上电延时
m=0xa0;
16;
address=_iror_(address,1);
datasoute=address<
m=0xb0;
P0=0xff;
datasoute=0;
while(int_4004==1)//存储地址换行标志
if(rac_4004)//记录本次录音所占的行数(也就是本次录音有多大)
{
delay(20000);
datasoute++;
}
//在这里应该加上自己的程序,就是录音退出程序
}//whileend;
voidaudioout(unsignedintaddress)//放音程序
unsignedintdatasoute;
m=0xe0;
m=0xf0;
while(int_4004==1)
voidmain()
record4004(0);
audioout(0);
while
(1);
例使用TX-1C实验板上两个独立按键调节直流电机的转速,同时在实验板的数码管上象征性的显示相应的转速值。
通过控制单片机输出不同占空比的PWM信号来控制直流电机的转速(感性认识)。
(P434)
#defineucharunsignedchar
sbitdula=P2^6;
//数码管显示段选I/O口定义
sbitwela=P2^7;
sbitdianji=P1^7;
//控制电机I/O口定义
sbitjia_key=P3^6;
//加速键
sbitjian_key=P3^7;
//减速键
ucharnum=0,show_num=1,gao_num=1,di_num=3;
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
voiddelay(uchari)//延时函数
ucharj,k;
for(j=i;
j>
0;
j--)
for(k=125;
k>
k--);
voiddisplay()//数码管显示函数
dula=0;
P0=table[show_num];
dula=1;
wela=0;
P0=0xfe;
wela=1;
delay(5);
P0=table[0];
P0=0xfd;
P0=0xfb;
P0=0xf7;
voidkey()//按键检测处理函数
if(jia_key==0)
//消抖
num++;
//加速键按下,速度标志加1
if(num==4)
num=3;
//已经达到最大3,则保持
while(jia_key==0);
//等待按键松开
if(jian_key==0)
if(num!
=0)//减速键按下,速度标志减1
num--;
else
num=0;
//已经达到最小0,则保持
while(jian_key==0);
voiddispose()//根据速度标志进行数据处理
switch(num)
case0:
show_num=1;
//数码管第一位显示的数据
gao_num=1;
//PWM信号中高电平持续时间标志为1
di_num=3;
//PWM信号中低电平持续时间标志为3,此时速度最慢
break;
case1:
show_num=2;
gao_num=2;
di_num=2;
case2:
show_num=3;
gao_num=3;
di_num=1;
case3:
show_num=4;
gao_num=4;
di_num=0;
//此时速度最快
voidqudong()//控制电机程序
uchari;
if(di_num!
=0)
di_num;
dianji=0;
//实现PWM信号低电平输出
display();
//利用显示函数起延时作用,这样也不影响数码管显示,一举两得
gao_num;
dianji=1;
//实现PWM信号高电平输出
while
(1)
key();
dispose();
qudong();
例步进电机应用C语言程序设计(P444)
//数码管显示位选I/O口定义
//电机加速I/O口定义
//电机减速I/O口定义
sbitzf_key=P3^5;
//电机正反转I/O定义
bitflag=0;
//电机正反转标志位
ucharnum=0,show_num=2,maichong=4,table_begin=0;
ucharcodetable1[]={0x01,0x02,0x04,0x08,0x08,0x04,0x02,0x01};
//ucharcodetable1[]={0x09,0x03,0x06,0x0c,0x08,0x04,0x02,0x01};
//ucharcodetable1[]={0x01,0x04,0x02,0x08,0x08,0x02,0x04,0x01};
voiddisplay()//显示函数
//加速键按下,消抖
//速度标示加1
//达到最大3则保持
//等待松开按键
//减速键按下
=0)
//速度标示减1
//达到最小0则保持
if(zf_key==0)
//正反转按键按下
flag=~flag;
//正反转标识取反
while(zf_key==0);
voiddispose()//根据速度标识进行数据处理
//数码管第一位显示的数字
maichong=5;
//利用maichong数据控制送给电机脉冲的频率,控制速度
maichong=4;
show_num=6;
maichong=3;
show_num=8;
maichong=2;
if(flag==0)
table_begin=0;
//flag为0,正转
else
table_begin=4;
//flag为1,反转
voidqudong()//电机速度,和正反转控制
uchari,j;
for(j=0+table_begin;
j<
4+table_begin;
j++)
P1=table1[j];
//读取控制电机转动I/O口表
maichong;
//利用显示函数起延时作用,控制电机速度
}//这样也不影响数码管显示,一举两得
例舵机应用C语言程序设计实例:
开机时舵机角度自动转为0度,通过实验板上的独立按键调节舵机的角度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新概念 51 单片机 语言 教程 例题
![提示](https://static.bdocx.com/images/bang_tan.gif)