使用Keil语言的嵌入式C程序设计教程

嵌入式C是用于开发电子小工具的软件领域中最受欢迎的编程语言。每个处理器都与嵌入式软件相关联。嵌入式C编程在处理器执行特定功能时发挥重要作用。在我们日常生活中,我们经常使用许多电子设备,如洗衣机,手机,数码相机等,将基于由嵌入式C编程的微控制器工作。

嵌入式系统编程
嵌入式系统编程

编写的C代码更可靠,便携和可扩展;事实上,更容易理解。第一个和最重要的工具是嵌入式软件,可以决定嵌入式系统的操作。嵌入式C编程语言最常用于编程微控制器。


嵌入式C编程教程(8051)

为了编写程序,嵌入式设计人员必须对特定处理器或控制器的硬件有足够的知识,因为嵌入式C编程是一种全硬件相关的编程技术。

编程教程
编程教程

早些时候,使用组装级编程开发了许多嵌入式应用程序。然而,他们没有提供克服这个问题的可移植性,以便在C,COBOL和Pascal等各种高级语言的出现。但是,这是C语言,可接受广泛验收嵌入式系统应用程序开发,它继续这样做。

嵌入式系统

嵌入式系统是指嵌入式C语言编程软件与以微控制器为主的硬件组成部分的结合,其目的是完成特定的任务。这些类型的嵌入式系统正在我们的日常生活中使用,如洗衣机、录像机、冰箱等。嵌入式系统是由8051单片机首次引入的。

嵌入式系统
嵌入式系统

8051单片机简介

8051单片机是一种基本的单片机,它是由“英特尔公司”自1970年首次推出的。它是采用8086处理器架构开发的。8051是由Philips、Atmel、dalls等不同制造商开发的一种微控制器。8051微控制器已在大型儿童玩具到大型汽车系统的许多嵌入式产品中使用。

8051单片机
8051单片机

8051微控制器是8位'CISC'建筑.它由存储器、串行通信、中断、输入/输出端口和计时器/计数器组成,bob的是什么网站内置在一个集成芯片中,该芯片通过编程来控制与它接口的外围设备。程序存储在微控制器的RAM中,但在编写程序之前,我们必须知道RAM组织的微控制器。

嵌入式系统编程:基础声明

每个功能都是执行特定任务的语句集合,并且一个或多个函数的集合称为编程语言。每种语言都包含一些基本元素和语法规则。C语言编程旨在使用字符集,变量,数据类型,常量,关键字,表达式等功能用于编写C程序。所有这些都在标题文件或库文件下考虑,它表示为

#include

嵌入式C编程开发
嵌入式C编程开发

C语言的扩展称为嵌入式C编程语言。与前面相比,C语言中的嵌入式编程具有一些额外的特性,如数据类型和关键字,头文件或库文件表示为

#include <微控制器名称。H>

嵌入式C附加关键字

  • Sbit.
  • 少量
  • SFR.
  • 挥发性
  • 宏定义

“sbit”用于声明微控制器的单PIN。例如,LED连接到P0.1引脚,不建议直接将值发送到端口引脚,首先,我们必须用另一个变量声明引脚,然后我们可以在程序中的任何地方使用。

语法:SBit A = P0 ^ 1;//用变量//声明相应的引脚
一个= 0 x01;//将值发送到端口管脚

“位”用于检查变量的状态。

语法:位c;//声明位变量//
c = a;//将一个值分配给c变量//
if(c == 1)//检查条件true或false //

{
......
......
}

“SFR”关键字用于通过另一个名称访问SFR寄存器。SFR寄存器定义为a特殊功能寄存器,它通过指示地址包含所有外围相关的寄存器。SFR寄存器由SFR关键字声明。SFR关键字必须是大写字母。

语法:SFR端口= 0 x00;//0x00是一个端口0地址,它由端口变量声明//
端口= 0 x01;//然后将值发送到port0//
延迟();
端口= 0x00;
延迟();

在嵌入式系统开发中,关键字“volatile”是最重要的。不能意外地更改使用volatile关键字值声明的变量。它可以用于内存映射的外围寄存器,isr修改的全局变量。如果不使用volatile关键字来发送和接收数据,就会发生代码错误或优化错误。

语法:volatile int k;

宏是它用于将语句块作为预处理器指令声明的名称。每当使用名称时,它将被宏的内容替换。宏表示#define。整个端口引脚由宏定义。

语法:#define dat po;//整个端口由变量//声明
dat = 0 x01;//数据发送到port0//

基本嵌入式C程序

微控制器编程将不同于每个操作系统类型.即使存在许多操作系统,也存在如Linux,Windows,RTO等。但是,RTOS对嵌入式系统开发具有几个优点。本文讨论了基本嵌入式C编程,以使用8051微控制器开发嵌入式C编程。

嵌入式C编程步骤
嵌入式C编程步骤
  • LED闪烁采用8051单片机
  • 使用8051微控制器显示7段显示器的编号
  • 定时器/计数器的计算和程序使用8051单片机
  • 使用8051微bob的是什么网站控制器串行通信计算和程序
  • 中断程序采用8051单片机
  • 采用8051单片机进行键盘编程
  • LCD编程,带8051微控制器

LED闪烁使用8051单片机

LED是许多应用中使用的半导体器件,主要用于指示目的。它在测试期间,在测试期间发现巨大的应用程序是指标,以检查不同阶段的结果的有效性。它们非常便宜,可轻松提供各种形状,颜色和尺寸。LED用于设计信息显示板和交通控制信号灯等。这里,LED与8051微控制器的PORT0接口。

LED闪烁使用8051单片机
LED闪烁使用8051单片机

1.01010101
10101010

# include < reg51.h > / / / /头文件
Void main() //程序执行状态
{
unsigned int我;/ / / /数据类型
虽然(1)//用于连续循环//
{
P0 = 0 x55;//发送hexa值到port0//
(我= 0;< 30000;我+ +)/ /正常延迟/ /
p0 = 0x3aa;//发送hexa值到port0//
(我= 0;< 30000;我+ +)/ /正常延迟/ /
}
}

2. 00000001.

00000010

00000100

10000000

# include < reg51.h >

void main()

{

unsignedint我;

无符号char j,b;

而(1)

{

P0 = 0 x01;

b = P0;

for(J-0; J <3000; J ++);

(j = 0; < 8; j + +)

{

b = b << 1;

p0 = b;

for(J-0; J <3000; J ++);

}

}

}

3. 00001111.

11110000

# include < reg51.h >

void main()

{

unsignedint我;

而(1)

{

p0 = 0x0f;

for(J-0; J <3000; J ++);

p0 = 0xF0;

for(J-0; J <3000; J ++);

}

}

4. 00000001.

00000011

00000111

11111111.

# include < reg51.h >

void main()

{

unsignedint我;

无符号char j,b;

而(1)

{

P0 = 0 x01;

b = P0;

for(J-0; J <3000; J ++);

(j = 0; < 8; j + +)

{

b = b << 1;

b = b | 0 x01;

p0 = b;

for(J-0; J <3000; J ++);

}

}

}

使用8051微控制器在7段显示器上显示数字

7段显示是基本的电子显示器,在许多系统中用来显示数字信息。它由8个led组成,当正确组合的led打开时,这些led按顺序连接,以显示从0到9的数字。它们一次只能显示一个数字。

使用8051微控制器在7段显示器上显示数字
使用8051微控制器在7段显示器上显示数字

1. WAP在四个7Segment显示屏上显示数字表单'0到F'?

# include < reg51.h >
sbit = P3 ^ 0;
sbit b = P3 ^ 1;
SBIT C = P3 ^ 2;
sbit d = P3 ^ 3;
void main()
{
unsignedchar n[10] ={0×40 0 xf9 0×24日0×30 0×19日0×12 0×02,0 xf8 0 xe00 0×10};
无符号印锑,j;
a = b = c = d = 1;
而(1)
{
for(i = 0; i <10; i ++)
{
P2 = n[我];
(j = 0; < 60000; j + +);
}
}
}

2. WAP在7SEGINGY显示屏上显示从'00到10'的数字?

# include < reg51.h >
sbit = P3 ^ 0;
sbit b = P3 ^ 1;
空白display1 ();
void display2();
空白延迟();
void main()
{
unsignedchar n[10] ={0×40 0 xf9 0×24日0×30 0×19日0×12 0×02,0 xf8 0 xe00 0×10};
无符号印锑,j;
DS1 = DS2 = 0;
而(1)
{
(我= 0,< 20;我+ +)
display1();
display2();
}
}
void display1()
{
a = 1;
B = 0;
P2 = s (ds1的);
延迟();
a = 1;
B = 0;
P2 = s (ds1的);
延迟();
}
void display2()
{
ds1 + +;
如果(ds1 > = 10)
{
DS1 = 0;
DS2 ++;
if(DS2> = 10)
{
DS1 = DS2 = 0;
}
}
}
void delay()
{
unsignedint k;
for(k = 0; k <30000; k ++);
}

用8051单片机进行定时器/计数器的计算和程序编写

延迟是影响应用软件开发的重要因素之一。然而,在实现定时器延迟时,正常的延迟并不能给出克服这个问题的宝贵结果。这定时器和计数器是微控制器的硬件组件,其在许多应用中使用,以提供具有计数脉冲的宝贵时间延迟。这两个任务都是通过软件技术实现的。

计时器延迟

WAP使用T1M2(timer1和mode2)产生500us时延?

# include < reg51.h >

void main()
{
无符号字符我;
TMOD = 0 x20;//设置定时器模式
For (i=0i<2;i++) //加倍时间daly//
{
TL1 = 0 x19;//设置时间延迟
th1 = 0x00;
TR1 = 1;/ / / /计时器
而(TF1 = = 0);//检查标志位
TF1 = 0;
}
tr1 = 0;// timer关闭//
}

普通循环延迟

void delay()

{
unsignedint k;
for(k = 0; k <30000; k ++);
}

使用8051微bob的是什么网站控制器串行通信计算和程序

串行通信通常用bob的是什么网站于发送和接收信号。8051微控制器组成UART串行通信bob的是什么网站由Rx和Tx引脚发送和接收的信号。UART获取数据的字节并以顺序的方式发送单个位。寄存器是在内存中收集和存储数据的一种方法。UART是一种半双工协议。半双工是指传输和接收数据,但不是同时进行。

使用8051微bob的是什么网站控制器串行通信计算和程序
使用8051微bob的是什么网站控制器串行通信计算和程序

1.WAP将字符' S '传输到串行窗口,使用9600波特率?

28800是8051微控制器的最大波特率

28800/9600 = 3

波特率'3'存储在计时器中

# include < reg51.h >

void main()

{
SCON = 0×50;//启动串口通信//bob的是什么网站
TNOD = 0 x20;//选择定时器模式
th1 = 3;//加载波特率//
TR1 = 1;//打开定时器//
sbuf ='s';//将字符存储在寄存器//中
而(Ti == 0);//检查中断寄存器
ti = 0;
tr1 = 0;//关闭计时器//
(1);/ /连续循环/ /
}

2.WAP从超级终端接收数据,并使用9600波特率将数据发送到微控制器的PORT 0。

28800是8051微控制器的最大波特率

28800/9600 = 3

波特率'3'存储在计时器中

# include < reg51.h >

void main()
{
SCON = 0×50;//启动串口通信//bob的是什么网站
TMOD = 0 x20;//选择定时器模式
th1 = 3;//加载波特率//
TR1 = 1;//打开定时器//
PORT0 = SBUF;//从SBUF发送数据到port0//
而(RI = = 0);//检查中断寄存器
国际扶轮= 0;
tr1 = 0;//关闭计时器//
(1);//在收到字符时停止程序//
}

使用8051微控制器的中断程序

中断是强制停止当前程序并立即执行其他程序的信号。8051微控制器提供6个中断,内部和外部中断源.当中断发生时,微控制器暂停当前任务,并通过执行ISR来处理中断,然后微控制器返回最近的任务。

当定时器0中断发生时,WAP执行左移操作,然后在主函数中执行P0的中断操作?

# include < reg51.h >

无符号字符b;

void timer0()中断2 //所选Timer0中断//
{
b = 0x10;
p1 = b << 2;
}
void main()
{
无符号字符,我;
IE = 0x82 //启用Timer0中断//
tmod = 0x01;
TLo = 0 xfc;/ /中断定时器/ /
th1 = 0xFB;
tr0 = 1;
一个= 0 x00;
而(1)
{
for(i = 0; i <255; i ++)
{
+ +;
阿宝=一个;
}
}
}

采用8051单片机进行键盘编程

矩阵键盘是一种模拟开关设备,在许多嵌入式应用程序中使用,以允许用户执行必要的任务。一个矩阵键盘由按矩阵格式按行和列排列的开关组成。行和列连接到微控制器,这样行开关连接到一个引脚,每列开关连接到另一个引脚,然后执行操作。

采用8051单片机进行键盘编程
采用8051单片机进行键盘编程

1.按下开关,WAP切换LED

# include < reg51.h >
SBIT A = P3 ^ 0;
sbit b = P3 ^ 1;
SBIT C = P3 ^ 2;
SBIT D = P3 ^ 3;
空白延迟();
void main()
{
而(1)
{
= 0;
B = 1;
c = 1;
d = 1;
延迟();
a = 1;
B = 0;
c = 1;
d = 1;
void delay()
{
无符号字符我;
TMOD = 0 x20;//设置定时器模式
For (i=0i<2;i++) //加倍时间daly//
{
TL1 = 0 x19;//设置时间延迟
th1 = 0x00;
TR1 = 1;/ / / /计时器
而(TF1 = = 0);//检查标志位
TF1 = 0;
}
tr1 = 0;// timer关闭//
}

2.WAP通过按键盘上的“1”键打开LED ?

# include < reg51.h >

sbit r1 = P2 ^ 0;
SBIT C1 = P3 ^ 0;
SBIT LED = P0 ^ 1;

void main()
{

R1 = 0;
如果(c1 = = 0)
{

LED = 0xFF;
}
}

3. WAP通过按键盘上的相应键在七个段显示0,1,2,3,4,5?

# include < reg51.h >

sbit r1 = P2 ^ 0;

SBIT C1 = P3 ^ 0;

SBIT R2 = P2 ^ 0;

sbit c2 = P3 ^ 0;

SBIT A = P0 ^ 1;

void main()

{

R1 = 0;a = 1;

如果(c1 = = 0)

{

a = 0xFc;

}

if(c2 == 0)

{

a = 0x60;

}

if(c3 == 0)

{

a = 0xDA;

}

if(c4 == 0)

{

= 0 xf2;

}

}

LCD编程,带8051微控制器

液晶显示器是一种电子设备,其经常用于以文本或图像格式显示信息的许多应用程序。LCD是一个可以在其屏幕上轻松显示字符的显示屏。LCD显示器拥有8个数据线和3个控制线,用于与微控制器接口。

LCD编程,带8051微控制器
LCD编程,带8051微控制器

WAP显示LED显示屏上的“EDGEFX套件”?

# include < reg51.h >
#define kam p0

voidlcd_initi();
voidlcd_dat (unsigned char);
voidlcd_cmd(无符号字符);
空白延迟();
void显示(无符号char * s,未签名的char r)

sbitrs = p2 ^ 0;
sbitrw = p2 ^ 1;
sbit en = P2 ^ 2;
void main()
{

lcd_initi();
lcd_cmd(0x80);
延迟(100);
lcd_cmd(0xc0);
显示(“Edgefx Kits”,11);
(1);
}

void显示(无符号char * s,未签名的char r)
{
unsignedint w;
(w = 0; w < r。w + +)
{
lcd_data (s [w]);
}
}
voidlcd_initi ()
{
lcd_cmd(0×01);
延迟(100);
lcd_cmd(0×38);
延迟(100);
lcd_cmd(0×06);
延迟(100);
lcd_cmd(0x0c);
延迟(100);
}
voidlcd_dat(无符号字符dat)
{
金= dat;
Rs = 1;
rw = 0;
en = 1;
延迟(100);
en = 0;
}
}
voidlcd_cmd(无符号char cmd)
{
kam = cmd;
rs = 0;
rw = 0;

en = 1;
延迟(100);
en = 0;
}
空白延迟(无符号int n)
{

unsignedint;
for(a = 0; a }

希望本文提供了有关使用8051微控制器的嵌入式系统编程的基本信息,其中包含一些示例程序。有关详细的嵌入式C编程教程,请在下面的评论部分发布您的评论和查询。

19日的评论

  1. Sudha Mohan. 说:

    不错的教程。请在ARM7上做教程[LPC2148]

    1. 塔伦阿加瓦尔 说:

      嗨Sudha Mohan.

      请参阅我们的博客中的本主题 - 介绍ARM7的LPC2148微控制器架构

  2. 叫我khurshed ullah 说:

    精彩,非常有帮助

  3. 国家托马斯·k 说:

    你能帮我吗?你能用8051写一个家庭自动化的例子吗

  4. Lovella Thulmer 说:

    我的兄弟推荐我可能会喜欢这个网站。他完全是对的。这篇文章实际上是我的一天。你无法想象我为此信息花了多少时间!谢谢!|

  5. Denae Colbaugh. 说:

    嗯,似乎你的博客吃掉了我的第一条评论(它很长),所以我想我还是总结一下我写的东西吧,我非常喜欢你的博客。我也是一个有抱负的博客作者,但我仍然是整个事情的新。你对新手博客写手有什么建议吗?我真的很感激

  6. Uday 说:

    我得到了关于8051接口的基本信息。一个优秀的

  7. 丹尼尔 说:

    非常有用的信息。我把elprocus.com作为我的电子项目的书签。非常感谢

  8. 安纳布尔纳 说:

    海先生
    你能给我在嵌入式c编程中使用atmega28 MC进行基于指纹的考场认证的代码吗

  9. Shubham库马尔 说:

    你好,

    愿你发给我自动铁路门控制器代码的代码。

    请。

  10. pavithra 说:

    我从未见过如此清晰的教程。谢谢,我需要一个帮助如何发送数据使用Spi协议与8051。你能帮我吗?

  11. Rohith. 说:

    主席先生,这是一个很棒的网站,可以获得8051的编程基本思想。我想要一个整个程序用C语言进行指纹认证,可以为我分享这一点

  12. 普拉巴卡兰 说:

    非常spr先生............我非常喜欢谢谢你先生......你做了很好的工作。先生

    1. 塔伦阿加瓦尔 说:

      谢谢你!

  13. vinoth 说:

    你好
    谢谢,很清楚,我在电梯公司工作,他们想让我找到可以解除锁定的程序
    我可以使用什么样的工具?
    什么是发现程序使用的方法?
    在这个问题上你有什么可以帮助我的吗
    ......急切地等待你的回复

  14. 达瓦 说:

    哇,非常好和清楚,我希望你能给我一个非常好的网站,我可以去那里学习这些东西.................我真的很感激。

  15. 达瓦 说:

    很好的。我很开心,请求扣除与我分享
    移动控制家庭自动化

  16. Tulasi. 说:

    谢谢Tarun!您的教程建设得很好。这个网站是我最喜欢了解8051微控制器编程的地方。

  17. harshini 说:

    哇,非常好和清楚,我希望你能给我一个非常好的网站,我可以去那里学习这些东西.................我真的很感激。

添加评论