导航:首页 > 操作系统 > 51单片机原理与实践c语言版

51单片机原理与实践c语言版

发布时间:2022-09-02 23:10:22

① 用c语言写51单片机

#include<reg51.h>
#defineucharunsignedchar
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitled1=P1^4;
sbitled2=P1^5;
main()
{
if(key1==0)
{
while(key1==0);
led1=0;
led2=1;
}
if(key2==0)
{
while(key2==0);
led1=1;
led2=0;
}
if(key3==0)
{
while(key3==0);
led1=0;
led2=0;
}
if(key4==0)
{
while(key4==0);
led1=1;
led2=1;
}
}

② 自学51单片机的书籍

如下:
《51单片机工程师是怎样炼成的:基于C语言+Proteus仿真》老杨 电子工业出版社
《单片机C语言程序设计实训100例——基于8051+Proteus仿真》彭伟 电子工业出版社
《新概念51单片机C语言教程——入门、提高、开发、拓展》 郭天祥 电子工业出版社
《实例解读51单片机完全学习与应用》 电子工业出版社
《手把手教你学单片机》 北航
《单片机基础》李广弟 北航
《单片机原理及接口技术》李朝青 北航
《51单片机应用从零开始》汇编 杨欣 清华出版社
《爱上单片机》 杜洋 人民邮电出版社
《例说51单片机(C语言版)》 张义和 人民邮电出版社
《单片机原理与技术》
《51单片机开发与应用技术详解》
《单片机技术与原理教材》
《匠人手记》
《手把手教你学单片机》
《8051单片机》
《单片机原理及应用》 张毅刚
《51单片机原理与实践》
《单片机应用技术》 哈尔滨工业大学出版社
《8051单片机教程》 平凡
《单片机轻松入门》平凡
《单片机原理与应用》 西安电子科技大学

③ 求51单片机P1口输入实验C语言版程序。

//P2接74ls273
D0~7
//P3.0

74ls273
clk
引脚
//P3.0

WR
#include
<reg52.h>
//52系列单片机头文件
sbit
CLK=P3^0;
sbit
WR=P3^1;
void
main()
//主函数
{
CLK=0;
WR=1;
while(1)
//大循环
{
unsigned
int
time=10;
P2=P1;
//P2直接
读取
P1数值
CLK=1;
while(time--);
CLK=0
}
}
试试
估计差不多

④ 学51单片机推荐书籍,要求是入门的

单片机入门书籍,推荐3本书给你吧。

1.《新型单片开关电源设计与应用技术》

⑤ 51单片机项目教程 C语言版 高清带书签(吴险峰)pdf,哪里可以下载

《51单片机项目教程C语言版 赠单片机开发板.pdf》(选择普通下载即可!

1、找到这本资料,美中不足就是没有书签,凑合看吧;

2、手机浏览器网页端登 陆 或 PC电脑端登 陆,即可查看、下载;

3、文件有时效性,若失效或下载问题,留言;

⑥ 急需基于51单片机的红外遥控开关的设计原理图和程序(c语言版)

/*------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit IR=P3^2; //红外接口标志

#define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换
sbit DUAN=P2^6;//定义锁存使能端口 段锁存
sbit WEI=P2^7;// 位锁存
/*------------------------------------------------
全局变量声明
------------------------------------------------*/
unsigned char code dofly_DuanMa[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~F
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码
unsigned char TempData[8]; //存储显示值的全局变量
unsigned char irtime;//红外用全局变量

bit irpro_ok,irok;
unsigned char IRcord[4];
unsigned char irdata[33];

/*------------------------------------------------
函数声明
------------------------------------------------*/

void Ir_work(void);
void Ircordpro(void);
/*------------------------------------------------
显示函数,用于动态扫描数码管
输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
如输入0表示从第一个显示。
Num表示需要显示的位数,如需要显示99两位数值则该值输入2
------------------------------------------------*/
void Display(unsigned char FirstBit,unsigned char Num)
{
static unsigned char i=0;

DataPort=0; //清空数据,防止有交替重影
DUAN=1; //段锁存
DUAN=0;

DataPort=dofly_WeiMa[i+FirstBit]; //取位码
WEI=1; //位锁存
WEI=0;

DataPort=TempData[i]; //取显示数据,段码
DUAN=1; //段锁存
DUAN=0;

i++;
if(i==Num)
i=0;

}
/*------------------------------------------------
定时器0中断处理
------------------------------------------------*/

void tim0_isr (void) interrupt 1 using 1
{
irtime++; //用于计数2个下降沿之间的时间
}
/*------------------------------------------------
定时器中断子程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3
{

TH1=(65536-2000)/256; //重新赋值 2ms
TL1=(65536-2000)%256;

Display(0,8); // 调用数码管扫描

}
/*------------------------------------------------
外部中断0中断处理
------------------------------------------------*/
void EX0_ISR (void) interrupt 0 //外部中断0服务函数
{
static unsigned char i; //接收红外信号处理
static bit startflag; //是否开始处理标志位

if(startflag)
{
if(irtime<63&&irtime>=33)//引导码 TC9012的头码,9ms+4.5ms
i=0;
irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1
irtime=0;
i++;
if(i==33)
{
irok=1;
i=0;
}
}
else
{
irtime=0;
startflag=1;
}

}

/*------------------------------------------------
定时器0初始化
------------------------------------------------*/
void TIM0init(void)//定时器0初始化
{

TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值
TH0=0x00; //重载值
TL0=0x00; //初始化值
ET0=1; //开中断
TR0=1;
}
/*------------------------------------------------
定时器初始化子程序
------------------------------------------------*/
void Init_Timer1(void)
{
TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
//TH1=0x00; //给定初值
//TL1=0x00;
EA=1; //总中断打开
ET1=1; //定时器中断打开
TR1=1; //定时器开关打开
}
/*------------------------------------------------
外部中断0初始化
------------------------------------------------*/
void EX0init(void)
{
IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)
EX0 = 1; //使能外部中断
EA = 1; //开总中断
}
/*------------------------------------------------
键值处理
------------------------------------------------*/

void Ir_work(void)//红外键值散转程序
{

TempData[0]=dofly_DuanMa[IRcord[0]/16];
TempData[1]=dofly_DuanMa[IRcord[0]%16];
TempData[2]=dofly_DuanMa[IRcord[1]/16];
TempData[3]=dofly_DuanMa[IRcord[1]%16];
TempData[4]=dofly_DuanMa[IRcord[2]/16];
TempData[5]=dofly_DuanMa[IRcord[2]%16];
TempData[6]=dofly_DuanMa[IRcord[3]/16];
TempData[7]=dofly_DuanMa[IRcord[3]%16];
//Display(0,8); // 调用数码管扫描
irpro_ok=0;//处理完成标志

}
/*------------------------------------------------
红外码值处理
------------------------------------------------*/
void Ircordpro(void)//红外码值处理函数
{
unsigned char i, j, k;
unsigned char cord,value;

k=1;
for(i=0;i<4;i++) //处理4个字节
{
for(j=1;j<=8;j++) //处理1个字节8位
{
cord=irdata[k];
if(cord>7)//大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差
value|=0x80;
if(j<8)
{
value>>=1;
}
k++;
}
IRcord[i]=value;
value=0;
}
irpro_ok=1;//处理完毕标志位置1
}

/*------------------------------------------------
主函数
------------------------------------------------*/
void main(void)
{
EX0init(); //初始化外部中断
TIM0init();//初始化定时器
Init_Timer1();

while(1)//主循环
{
if(irok) //如果接收好了进行红外处理
{
Ircordpro();
irok=0;
}

if(irpro_ok) //如果处理好后进行工作处理,如按对应的按键后显示对应的数字等
{
Ir_work();
}
}
}

51P3^2是外部中断,红外接收管接这个引脚就能接收到数据然后显示在数码管上

⑦ 急求简单51单片机控制电路C语言程序

【2011-3-8已更新,有结果吱一下】
砖头如下:
#inlcude <reg51.h>
sbit OUT=P2^0;
sbit Key=P3^3;

#define DELAYCONST 50000//
#define DELAYCONST2 20//简单的定时参数设定。
void Delay(char j)
{
unsigned int k,l;
for(j=0;j<60;j++)
for(k=0;k<DELAYCONST2;k++)
for(l=0;l<DELAYCONST;l++)
;
}
main()
{
char i=3;
while(1)
{
while(i==3)
{
OUT=!Key;
i=P1&3;
}
if(i==2)
{
OUT=0;Delay(1);OUT=1;
}
else
{
OUT=0;Delay(5);OUT=1;
}
while(P1&3==3);//此后按任意键,还可以复位重来。
OUT=0;
i=3;//【补充】
}
}
希望能对你入门编程有所帮助。如有错误,自行调试。谢谢!

⑧ 51单片机c语言版,编写程序:单片机控制八位LED数码管显示20220204间隔两秒后显示2022

摘要 显示程序和硬件关联,如驱动方式、位数等,所以没有统一的程序,假定动态显示,大概思路如下:

⑨ 51单片机C语言开发与实例的内容提要

书中列举了大量应用实例,着重介绍了51单片机的一些新技术及其应用方法,同时还介绍了几款简易编程器的编制和使用方法,使读者尽快、尽可能容易地掌握利用C51对MCS-51单片机进行开发的方法。
系统全面、突出重点、由浅入深、通俗易懂、学用结合、软硬兼备、实例丰富是本书的主要特色,因此,本书适用于具备一定电子技术基础和具有一定的单片机基础知识的学生、教师、单片机爱好者、电子制作爱好者、电器维修人员、电子产品开发设计者、工程技术人员阅读参考。

⑩ 单片机初学者该看什么书

《51单片机工程师是怎样炼成的:基于C语言+Proteus仿真》老杨 电子工业出版社
《单片机C语言程序设计实训100例——基于8051+Proteus仿真》彭伟 电子工业出版社
《新概念51单片机C语言教程——入门、提高、开发、拓展》 郭天祥 电子工业出版社
《实例解读51单片机完全学习与应用》 电子工业出版社
《手把手教你学单片机》 北航
《单片机基础》李广弟 北航
《单片机原理及接口技术》李朝青 北航
《51单片机应用从零开始》汇编 杨欣 清华出版社
《爱上单片机》 杜洋 人民邮电出版社
《例说51单片机(C语言版)》 张义和 人民邮电出版社
《单片机原理与技术》
《51单片机开发与应用技术详解》
《单片机技术与原理教材》
《匠人手记》
《手把手教你学单片机》
《8051单片机》
《单片机原理及应用》 张毅刚
《51单片机原理与实践》
《单片机应用技术》 哈尔滨工业大学出版社
《8051单片机教程》 平凡
《单片机轻松入门》平凡

阅读全文

与51单片机原理与实践c语言版相关的资料

热点内容
加密货币换平台 浏览:609
手机内存压缩软件 浏览:33
生成树是否与遍历算法有关 浏览:727
python强化学习迷宫 浏览:449
老包子解压视频 浏览:885
服务器注册是什么意思 浏览:418
程序员群体焦虑如何破局 浏览:584
程序员在广州上班 浏览:802
androidlinuxadt 浏览:512
广联达软件加密锁原装芯片 浏览:338
如何打开数据库服务器 浏览:310
kppm是什么app 浏览:538
python多个数组命名 浏览:192
a算法csdn 浏览:23
r720服务器什么年代 浏览:975
本地电脑怎么设置传奇服务器 浏览:1002
安卓10框架怎么制作 浏览:959
程序员退休工资待遇 浏览:609
湛江中文编程数控系统代理 浏览:419
openglandroid书 浏览:170