搜档网
当前位置:搜档网 › 单片机基础速成

单片机基础速成

单片机基础速成
单片机基础速成

初学者单片机速成

相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚,更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机(Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已!

首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机,但是具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候,我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出,或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看我的单片机书和资料。

当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢?这个问题,困扰了我好久。具体选择C51还是A51呢?汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似,编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲的全是C方面的,完全在浪费你的时间! 呵呵^_^

第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使你每天捧着本书,把那本书翻烂,也永远学不会单片机的!刚接触单片机的朋友,看了资料,一定会对以下几个词见的比较多,但是具体的概念还是比较模糊,现作如下说明:(1)编程器编程器是用来烧单片机芯片的,是把HEX或者BIN文件烧到单片机ROM 里的。

(2)实验板实验板是专为初学者根据某些要求而特做的板,一般上面就有一个单片机的最小系统,使用者只需写好程序,烧好芯片,放到上面加以验证的这么一个工具。有了实验板,对与初学者来说,省去了焊个最小系统的麻烦。但是对于电子开发人员来说,作用并不是很大

(3)仿真器仿真器是直接把HEX或者BIN文件暂时放在一个芯片里,再通过这个芯片的引脚连接到实验板或者系统上工作。这样以来,可以省去了来回插拔芯片带来的不必要

麻烦。

我一开始也不知道上面3个的概念和作用,嘿嘿,原本想买个实验板(不想焊板,因为不可能为了点亮几个流水灯,而去焊个单片机的最小系统)的,可是结果,确和我想的正好相反,人家出售的是编程器。等货物寄到后,才知道自己搞错了!汗。。。嘿嘿。现在想想实在是又气又笑。我花了160大样买了个编程器(很不幸的是,这个编程器更本用不了,一烧芯片,芯片就烧坏了)把我给气的,这个编程器,现在还躺在我的抽屉里呢不过,现在想想,唯一让我觉得欣慰的是,那个老板每次能解答我的问题,连那种超级幼稚的问题,他也能不嫌麻烦地尽量帮我解答!这点让我很感动!

第三,想学单片机的必需品--PC。因为写程序,编译或者是仿真都是通过PC完成的。如果没有PC,什么也做不了!!!有了PC最好还要可以上网,因为如果你没有可以和你交流单片机的人,遇到自己解决不了的问题,一直都想不通,那么估计你学习单片机的热情就会随着时间的推移而慢慢耗尽。如果你能上网通过论坛或者QQ群,问题就很快得到解决。这样的学习效率一定很高!真正的高手是从论坛中泡出来的!

有了上述3个条件后,你就可以开始学你的单片机了。但是,真的做起来并没有我所说的那么简单。你一定会遇到很多很多的问题。比如为了让单片机实现某个功能,你可能不知道怎么去写某个程序。或是你看懂了资料上某个相似的程序,你自己却写不出来。遇到类似的情况,记住:千万不要急噪,就行!

(二)

说了这么多了,相信你也看了很多资料了,手头应该也有必备的工具了吧!(不要忘了上面讲过几个条件的哦)。那个单片机究竟有什么功能和作用呢?先不要着急!接下来让我们点亮一个LED(搞电子的应该知道LED是什么吧^_^)

我们在单片机最小系统上接个LED,看我们能否点亮它!对了,上面也有好几次提到过单片机最小系统了,所谓单片机最小系统就是在单片机上接上最少的外围电路元件让单片机工作。一般只须连接晶体、VCC、GND、RST即可,一般情况下,AT89C51的31脚须接高电平。

#include //头文件定义。或用#include其具体的区别在于:后者定义了更多的地址空间。//在Keil安装文件夹中,找到相应的文件,比较一下便知!

sbit P1_0 = P1 ^ 0;

void main (void)

{

while(1)

{

P1_0 = 0;//低电平有效,如果把LED反过来接那么就是高电平有效

}

}

就那么简单,我们就把接在单片机P1_0上的LED点亮了,当然LED是低电平,才能点亮。因为我们把LED的正通过电阻接至VCC。

P1_0 = 0; 类似与C语言中的赋值语句,即把0 赋给单片机的P1_0引脚,让它输出相应的电平。那么这样就能达到了我们预先的要求了。while(1)语句只是让单片机工作在死循环

状态,即一直输出低电平。如果我们要试着点亮其他的LED,也类似上述语句。这里就不再讲了。

点亮了几个LED后,是不是让我们联想到了繁华的街区上流动的彩灯。我们是不是也可以让几个LED依次按顺序亮呢?答案是肯定的!其实显示的原理很简单,就是让一个LED 灭后,另一个立即亮,依次轮流下去。假设我们有8个LED分别接在P1口的8个引脚上。硬件连接,在P1_1--P1_7上再接7个LED即可。例程如下:

#include

sbit P1_0 = P1 ^ 0;

sbit P1_1 = P1 ^ 1;

sbit P1_2 = P1 ^ 2;

sbit P1_3 = P1 ^ 3;

sbit P1_4 = P1 ^ 4;

sbit P1_5 = P1 ^ 5;

sbit P1_6 = P1 ^ 6;

sbit P1_7 = P1 ^ 7;

void Delay(unsigned char a)

{

unsigned char i;

while( --a != 0)

{

for(i = 0; i < 125; i++); //一个; 表示空语句,CPU空转。

} //i 从0加到125,CPU大概就耗时1毫秒

}

void main(void)

{

while(1)

{

P1_0 = 0;

Delay(250);

P1_0 = 1;

P1_1 = 0;

Delay(250);

P1_1 = 1;

P1_2 = 0;

Delay(250);

P1_2 = 1;

P1_3 = 0;

Delay(250);

P1_3 = 1;

P1_4 = 0;

Delay(250);

P1_4 = 1;

P1_5 = 0;

Delay(250);

P1_5 = 1;

P1_6 = 0;

Delay(250);

P1_6 = 1;

P1_7 = 0;

Delay(250);

P1_7 = 1;

}

}

sbit 定义位变量,unsigned char a 定义无符字符型变量a,以节省单片机内部资源,其有效值为0~255。main函数调用Delay()函数。Delay函数使单片机空转,LED持续点亮后,再灭,下一个LED亮。while(1)产生循环。

(三)

上面我们讲了如何使LED产生流动,但是你是否发现一个问题:写的太冗长了!能不能再简单点呢?可以!可以使用C51的内部函数INTRINS.H实现。函数unsigned char

_crol_(unsigned char a, unsigned char n) 可以使变量a循环左移n位,如果我们先给P1口赋0000 0001那么当n为1时,便会产生和上面一样的效果!

#include

#include

void Delay(unsigned char a)

{

unsigned char i;

while( --a != 0)

{

for(i = 0; i < 125; i++);

}

}

void main(void)

{

unsigned char b, i;

while(1)

{

b = 0xfe;

for(i = 0; i < 8; i++)

{

P1 = _crol_(b, 1);

b = P1;

Delay(250);

}

}

}

INTRINS.H函数中的unsigned char _cror_(unsigned char a, unsigned char n)右移也可以实现同样的效果!这里就不再累述。

流水灯的花样很多,我还写过那种拉幕式的流动等,程序很简单,有兴趣的朋友,可以自己试着写写!

对了,讲了那么多,有些朋友一定还不知道编译软件怎么用?这里给大家介绍几个吧?WAVE(伟福)大家一定听说过吧!还有一个就是KEIL2,我用的就是KEIL2,下面就来讲讲如何使用KEIL2这个编译软件!

1.安装软件,这个应该不用再讲了吧!

2.安装完后,启动KEIL软件左击Project-->New Project-->输入文件名-->选择我们所以使用的芯片(这里我们一般用到Atmel的AT89C51或AT89C2051,点确定。

3.点File-->New-->输入我们编写的程序,保存为.C文件。(一般情况下,我们保存的文件名和前面的工程名一样。)

4.展开Target 1 -->右击Source Group 1 -->Add Files to Group 'Source Group 1'-->选择刚才保存的.C文件点击ADD后,关闭对话框。这样.C文件就被加到了Source Group 1 下。

5.右击Target 1-->Options for 'Target 1' -->Target中填写晶体的大小,Output中,在Create HEX Files 前打上钩,点确定。

6.点Project-->Rebuild All Traget Files ,若提示

creating hex file from "XXX"...

"XXX" - 0 Error(s), 0 Waring(s).

表示编译和生成HEX文件成功!接下来的就是把HEX文件烧到单片机中,或是仿真器上,看是否达到预先的目的!

嘿嘿!现在是否自己好有成就感了,如果让你去做个流水彩灯,开发一个简单的产品,只要加上驱动电路,就可以做出漂亮的流动彩灯了!到现在为止,你应该知道单片机的功能有多强大了吧,如果单纯的用数字电路或模拟电路的知识去设计一个流动彩灯,可能要花点工

夫和时间才行,有了单片机,那就不一样了,你只要写程序控制他就行!有人说过这样一句话,也并不无道理的,学单片机,程序思想很重要!

(四)

呵呵,朋友!相信你的流水灯也做的不错了吧,现在能玩出几种花样了?你可能会说,只要你想得到,想怎么流就怎么流!呵呵,是的。但是工程师们设计这么一个单片机,并不是只为了让它做流水灯的,那样也太浪费点了吧... ^_^

学过数字电路的朋友,一定动手做过8路或者6路的抢答器。用纯粹的数字电路知识来做,自己设计电路,感到比较困难!抢答器上用的显示器多为7段数码管,这里我们来讲讲,如何用单片机让数码管显示0-8。抢答器的实现,我们放到后面再来探讨,因为抢答器还涉及了键盘的内容。8段数码管分为共阴和共阳两种。8段数码管是由8个LED组成(还包括一个小数点)。若为共阳,则8个LED的阳级是连接在一起的,同理若为共阴,则阴极连接在一起。8个LED对应的标号如下:

a

__

f | | b

|__|

|g | c

e |__| . dp

d

一般情况下,为了计算或取码的方便,我们把a-dp依次接到单片机某个口上的Px.0--Px.7上。x表示0,1,2,3其中的一个。这样我们只要给某个口,赋一个值,则相应的LED段就被点亮,但是在硬件连接上要注意了:单片机可能不能直接驱动LED,所以我们可以通过控制三级管的导通或截止,来控制LED的亮与灭!

如果我们把共阴的数码管的a--dp依次接到单片机的P0.0--P0.7上,注意:P0口需接上拉电阻。何为上拉电阻,简单的说,就是把电平拉高,以提高驱动能力。那么比如:P0 = 0X3F;则显示为数字0 。因为0X3F 即为2进制的0011 1111 我们低位往高位数,依次为1111 1100,其I/O的电平分别为高、高、高、高、高、高、低、低,即对应的a--dp 为亮、亮、亮、亮、亮、亮、灭、灭,由上图我们可以看出g和dp段不亮其他段均亮,即为我们所看到的数字0 字样。其他的数字或字符,也同理可以得到。但是有些朋友就会问,那我们每取一个字模,岂不是很麻烦?还有自己考虑高低电平什么的?^-^ 呵呵,其实网上有很多LED取模软件,如果有一定计算机编程语言的朋友,也可以试着自己写个取模的程序,让计算机为我们计算,诸如上述0X3F的数值。

#include

void Delay(unsigned char a)

{

unsigned char i;

while( --a != 0)

{

for(i = 0; i < 125; i++);

}

}

void main(void)

{

P0 = 0X3F; //显示0

Delay(250);//延时

P0 = 0X00;//短暂的关闭显示,若不关闭,可能会造成显示模糊不清。

P0 = 0X06; //显示1

Delay(250);

P0 = 0X00;

... //以下显示数字2-F,略。

}

看到这里,想必大家一定可以把0-F显示出来了吧!但是如果要你显示两位数,三位数呢?或许,有的朋友会这么想:在P0口上接一个数码管,再在P1口上接个数码管!但是,如果要显示4位、5位的数字呢?那岂不是一块AT8951都接不过来!难到就不能接4位或5位以上的吗?肯定不是的!

说到这里,我们来讲讲数码管的显示方式,可分为两种:动态扫描和静态显示。上面我们所说的即为静态显示。但是如果我们采用动态扫描显示,那么就可以解决上面的问题,即可以显示多个数码管了。上面我们所说的静态显示把数码管的COM脚接至VCC或GND端,其他的接至PX口上,这样只要PX口上输出相应的高低电平,就可以显示对应的数字或字符。但是如果我们采用动态扫描的方法,比如显示6个数码管,硬件连接可以这样解决:a--dp 还是接至P0.0--P0.7上,还有6个COM脚再接至另外口的P2.0--P2.5。P0口作段选(控制数字字符)P2口作位选(选通哪个数码管导通)这样我们控制P0和P2口就可以控制6个数码管了。但是,细心的朋友,会问这样的问题:P2位选,是让数码管一个一个亮的,那还是不能控制6个一起亮或灭嘛!?^_^ 想想好象是对的哦?怎么办...难道错了?

嘿嘿,问你个问题?黑夜里,拿着一支烟,在你面前快速的晃动,你会发现什么样的现象?是不是原本不连续的点变成了一条看上去连续的曲线或者直线!再回过头来,仔细想想我们的数码管!原理是一样的,你可别忘了,我们的单片机可是一个计算机哦,计算机的运算速度,大家可想而知吧!

这里再说说51单片机的机器周期和时钟周期等概念。所谓机器周期就是访问一次存储器的时间。而1个机器周期包括12个时钟周期。如果单片机工作在12M晶体下,那么一个时钟周期为:1/12微妙。一个机器周期12*1/12 = 1微妙。如果晶体为6M,时钟周期和机器周期各是多少呢?在汇编中,我们还要关心,指令执行的机器周期长短不一,有1个周期、2个周期和4个周期等。

说着说着,跑了这么远了...还是回到原来的话题,如果我们把位选的P2也看作上面的“烟”一划而过,那么我们看到的是不是6个一起亮或一起灭了!^_^ 哈哈,原来如此... 记住,在任何某一时刻,有且只有一个数码管能发光。如果你能把这句话理解了,你是真明白我的意思了!朋友,现在给你个任务,让6个数码管分别显示1、2、3、4、5、6。看你自己

可以搞定不?你自己先试着写写看咯... #include

void Delay(unsigned char a)

{

unsigned char i;

while( --a != 0)

{

for(i = 0; i < 125; i++);

}

}

void main(void)

{

while(1)

{

P0 = 0x06;//1的码段

P2 = 0x01;//选通一位,或者P2_0 = 1; Delay(20);//延时约20毫秒

P0 = 0X00;//关闭显示

P0 = 0x5b;//2的码段

P2 = 0x02; //选通一位,或者P2_1 = 1; Delay(20);

P0 = 0X00;

P0 = 0x4f;//3的码段

P2 = 0x04; //选通一位,或者P2_2 = 1; Delay(20);

P0 = 0X00;

P0 = 0x66;//4的码段

P2 = 0x08; //选通一位,或者P2_3 = 1; Delay(20);

P0 = 0X00;

P0 = 0x6d;//5的码段

P2 = 0x10;//选通一位,或者P2_4 = 1; Delay(20);

P0 = 0X00;

P0 = 0x7d;//6的码段

P2 = 0x20;//选通一位,或者P2_5 = 1; Delay(20);

P0 = 0X00;

}

}

(五)

相信大家一定见过数字时钟,教学楼大厅一定有吧。每次路过,基本上只是随便瞟上一眼,根本没去想过他的工作原理什么。但是今天你也可以把他做出来了,是不是觉得自己很有成就感呢!呵呵!^_^

接上面所讲的,我们先来做个简单的实验:在一个数码管上轮流显示0--9这10个数字。还楞着干什么,快动手写程序呀!好象有点难哦,要不先不要往下看了,嘿嘿,关机吧,自己先去想想,怎么样?

#include

unsigned char code SEG_TAB[ ] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9数字

void Delay(unsigned int a) //unsigned int 定义为无符整形,取值范围为0--32768

{

unsigned char i;

while( --a != 0)

{

for(i = 0; i < 125; i++);

}

}

void main(void)

{

unsigned char i;

while(1)

{

for(i = 0; i < 10; i++)

{

P0 = SEG_TAB[ i ]; //取SEG_TAB数组中的值

P2 = 0X01;

Delay(1000);

}

}

}

是不是显示从0--9,跳动显示,你的心是不是也跟着一起跳呀,离我们的目标又迈进了

一步!不错,继续努力!

上面只显示了一个数码管的数字0--9,但是怎么样要让他显示6个数字呢?这样我们就可以做个时钟出来玩玩了!还记不记得我们前面讲过的P2口的位选作用!嘿嘿,没忘记就好!

#include

unsigned char hour = 12, min = 0, sec = 0;

unsigned char code SEG_TAB[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9数字

void Delay(unsigned char a)

{

unsigned char i;

while( --a != 0)

{

for(i = 0; i < 125; i++);

}

}

void disp(void)

{

P0 = SEG_TAB[ sec % 10 ];//显示秒的个位

P2 = 0X01;

Delay(15);

P2 = 0;

P0 = SEG_TAB[ sec / 10 ];//显示秒的十位

P2 = 0X02;

Delay(15);

P2 = 0;

P0 = SEG_TAB[ min % 10 ];//显示分的个位

P2 = 0X04;

Delay(15);

P2 = 0;

P0 = SEG_TAB[ min / 10 ];//显示分的十位

P2 = 0X08;

Delay(15);

P2 = 0;

P0 = SEG_TAB[ hour % 10 ];//显示时的个位

P2 = 0X10;

Delay(15);

P2 = 0;

P0 = SEG_TAB[ hour / 10 ];//显示时的十位

P2 = 0X20;

Delay(15);

P2 = 0;

}

void main(void)

{

while( 1 )

{

disp( );

}

}

编译烧录芯片后,观察运行现象。矣...怎么一直显示12:00:00,难道是时钟没有启动?还是,另外的原因呢?哦,原来是3个变量sec,min,hour初始化后,其值一直没有改变!那我们怎么样才能让他改变数值呢?有的朋友一定会这么认为:让秒个位延时1秒,后加1,而秒十位延时10秒后,再加1,一直加到6,分个位加1,依次类推...这样的想法是不错,但是朋友你有没有想过C语言的一般延时(除非你把他放到中断里)极不精确!这样累计下来,一天24小时的误差,肯定很大很大,我曾经也用延时的方法写过时钟,1个小时误差8秒,那是个什么概念!一天24小时就要24*8=192,约为3分钟,一个月就是10分钟...有没有其他的方法可以改进些呢?有!这里就要涉及到单片机中另一个比较重要的核心部分:单片机的中断和定时器的运用!想写出比较精确(这里说的只的相对前面的做法而言比较精确而已,如果要做更加精确的时钟,用时钟芯片比较好点,常用的有DS12887和DS1302等)的时钟程序,就一定要调用中断和定时器。还是大家先看看教材和书吧,毕竟人家出的书,肯定比我要写的系统多了,下面我们再来简单的讲讲!

(六)

什么是中断呢?讲个比较通俗的例子:比如你正在家中看电视,突然电话响了,你的第一反应是什么?是不是先跑过去接电话!接完电话后,继续看电视。这就是个中断的例子,中断是由电话引起了,你跑过去就是响应中断,接电话就是中断的处理!接完电话后,接续看电视,即恢复中断,等待下个中断的到来!

但是这个好象和单片机没什么联系呀?有的朋友或许会这样疑问。是的。单片机当然不会看电视了,也不会接电话了!^_^ 但是,类比一下:比如单片机正在执行某个任务,突然要有更重要的事件,要求单片机响应,单片机就会应答响应,去执行更为重要的任务(中断处理),原来的任务就继续等待(现场的保护)。执行完更重要的任务后,回到中断的入口处,继续执行原来的任务(现场中断的恢复)。51系列的单片机共有5个中断源,分别为:外中断0 、定时器T0中断、外中断1、定时器T1中断、串口中断。

或许,有些朋友已经大概领会了其中的意思,有些朋友还迷迷糊糊。不过不要紧,我们继续往下看,下面我们来讲讲单片机的定时器是什么?如何工作的?定时器,大家从字面上

就可以看出其大概的意思吧?简单的说:就是起定时作用!也就是让单片机计数。定时器分为:方式0方式1、方式2和方式3等4种工作方式。有些朋友一定会问:定时器如何启动?风扇的定时器,相信大家一定都用过吧!但是单片机的定时器,该如何启动呢?总不该也用手一拧定时器吧! ^_^ 当然不是,我们只要给单片机一些指令,就可以启动定时器了!下面我们就定时器0,来说说怎么启动定时器0。

TMOD = 0X01;//设置定时器0 工作方式0

TH0 = (65536 - 5000) / 256;//载入高8位初值

TL0 = (65536 - 5000) % 256;//载入低8位初值

TR0 = 1; //启动定时器

^_^,简单吧,这样我们就可以把定时器启动了。其中TMOD为T/C方式控制寄存器:D7 D6 D5 D4 D3 D2 D1 D0

_ _

GATE C/T M1 M0 GATE C/T M1 M0

|_________ __________| |_________ __________|

| T/C1 | | T/C0 |

C/T就是counter(记数器)和timer(定时器)的选择位,若值为1,则作计数器用。为0,则为定时期用!GATE为门控位。M1和M0工作方式的选择:若M1=0;M0=0 则为方式0:13位定时/记数器。若M1=0;M0=1则为方式1,16定时/记数器。若M1=1;M0=0则为方式2,自动装载8位定时/记数器。若M1=1;M0=1则为方式3,只适用于T/C0,2个8位定时/记数器。

说了一大堆,感到有点困惑了吧。那我们还是来说说上面的。TMOD= 0X01;//至于为什么是0X01,大家看:我们选择的是定时器0方式0,所以T/C1全为0,而T/C0的M1为0。M0为1,所以D0-D7为0X01;0X01表示的是16进制数,这个大家应该都知道吧!还有D0-D7表示的是2进制数。还需要转换一下!

TH0 = (65536 - 5000) / 256;//载入高8位初值。若在12M晶体下,定时5000微秒,即为5毫秒;但是如果不是在12M下,那又该怎么计算了呢?如果是11.0592M呢?还记不记得,我们前面讲过的机器周期和时钟周期的概念?^_^忘了,还是看看前面吧!呵呵!没事,学习嘛,忘了再翻翻书,看看就可以了!其实上诉的5000 = 1 * C 很显然C=5000,但是如果是11.0592M那么就不是1了,应该是1.085了,那么5000 = 1.085 * C,则C就为5000 / 1.085 = ? 具体多少,大家自己去算算吧?同理TL0也是一样的!但是,细心的朋友会发现网上或者是资料上的TH0,TL0并不是和上面一样的,而是直接TH0 = 0XEC;TL0 = 0X78 是不是和上面的一样的,别忘了单片机也是计算机的一种哦。用C的话,直接写上计算公式就行,计算就交给单片机完成。

TR0 = 1;这句就是启动定时器0,开始记数!哦,还有一点,有些朋友会问,你是65536是哪里来的呢?呵呵你可别忘了:设置定时器0 工作方式0是16位的(2的16次方是多少,自己算算就知道了)简单吧?但是如何和中断一起使用呢?请继续看下面的讲解!

TMOD = 0X01;//设置定时器0 工作方式0

TH0 = (65536 - 5000) / 256;//载入高8位初值

TL0 = (65536 - 5000) % 256;//载入低8位初值

TR0 = 1; //启动定时器

EA = 1;//开总中断

ET0 = 1;//开定时器中断。若为0则表示关闭!

这样我们,就初始化定时器T0和中断了,也就是定时器满5毫秒后,产生一次中断。产生中断后,我们怎么处理呢?嘿嘿!仔细想想?^_^

每次中断后,我们可以让一个变量自加1,那么200次中断后,不就是1秒的时间了吗?比起上面我们说的延时来出来是不是更加精确多了呢?那是肯定的!但是想想1秒种的时间就让单片机产生那么多次的中断,单片机会不会累着呢?恩,那么不好。如果在12M的晶体下,T0每次中断不是可以产生最多65.336毫秒的时间吗?那么我们让他每50毫秒中断一次好了!这样我们就20次搞定一秒的时间了!〃爽〃

好了,讲了那么多,现在我们来写个时间的程序吧!^_^

#include

#define HI ((65536 - 50000) / 256)

#define LO ((65536 - 50000) % 256)

#define _TH0_TL0_ (65536 - 50000)

#define M 20 //(1000/25)

/******************************************************************************************* ***/

unsigned hou = 12, min = 0, sec = 0;

unsigned char SEG_TAB_B[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0-9数字unsigned char SEG_TAB_A[ ] = {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//0.-9.数字

/******************************************************************************************* **/

void Delay(unsigned char a)//延时程序a*1MS

{

unsigned char j;

while(a-- != 0)

{

for (j = 0; j < 125; j++);

}

}

/******************************************************************************************* **/

void Disp(void)//数码管显示

P2_0 = 1;

P1 = SEG_TAB_B[ hou / 10 ];

Delay(5);

P2_0 = 0;

P2_1 = 1;

P1 = SEG_TAB_A[ hou % 10 ];

Delay(5);

P2_1 = 0;

P2_2 = 1;

P1 = SEG_TAB_B[ min / 10 ];

Delay(5);

P2_2 = 0;

P2_3 = 1;

P1 =S EG_TAB_A[ min % 10 ];

Delay(5);

P2_3 = 0;

P2_4 = 1;

P1 = SEG_TAB_B[ sec / 10 ];

Delay(5);

P2_4 = 0;

P2_5 = 1;

P1 = SEG_TAB_B[ sec % 10 ];

Delay(5);

P2_5 = 0;

}

/******************************************************************************************* */

void IsrTimer0(void) interrupt 1 using 1 //定时50ms

{

static unsigned char count = 0; //定义静态变量count

count++;

if(count == M)

{

count = 0;

sec++;

if(sec == 60)

min++;

sec = 0;

if(min == 60)

{

hou++;

min = 0;

if(hou == 24)

{

hou = 0;

}

}//if

}//if

}//if

}

/******************************************************************************************/ void Timer0Init(void) //定时器0

{

TMOD = 0x01;

TH0 = HI;

TL0 = LO;

TR0 = 1;

ET0 = 1;

EA = 1;

}

/******************************************************************************************/ void main(void) //主函数

{

Timer0Init();

while(1)

{

Disp();

}

}

简单吧,还是有点看不懂哦,那你自己慢慢体会吧,如果你自己能写个时钟程序来,那么你的51单片机也就学了80 % 了。中断和定时/记数器器,是个很重要的东西,几乎用到单片机的地方都会涉及到中断和定时!所以大家要好好掌握哦!^_^

哈哈,赶紧编译HEX文件,搭好硬件,烧入单片机,上电看看效果先!呵呵,现在你应该有成就感了吧,想不到一个时钟居然那么简单,嘿嘿!但是问题来了!时钟虽然做出来了,但是他的精度怎么样呢?一两个小时,或许看不出什么误差,但是一天或者一年呢?晕,我的天呀,要是按年来算的话,那这个时钟根本没有实用价值!人家都说用C写不出,精度高的时钟程序来的!!!是不是有点后悔了,去学汇编吧!但是既然选择了C,那么就不要后悔!嘿嘿,想想C的高级语言,怎么会输给汇编呢^_^ 呵呵!看下面这段代码:static unsigned char count = 0;

TR0 = 0;

TL0 += (_TH0_TL0_ + 9) % 256;

TH0 += (_TH0_TL0_ + 9) / 256 + (char)CY;

TR0 = 1;

count++;

在中断处理服务程序中,我们加入上面的代码。TR0 = 0; 先关闭定时器T0,然后重新给TH0和TL0 赋值,再开启TR0 = 1;烧入单片机看看效果,怎么样,你第一次精确多了吧。但是还是有误差!郁闷!为什么呢?那是硬件造成的误差,我们可以用软件来弥补!我们先把时钟点亮,让他走上几个小时或者是几天,看看到底误差是多少!取个平均值。(这里比如我们10小时快1秒)那么可以通过以下语句

if(hour % 10 = 0)

{

sec--;

}

来弥补!这样可能会出现这样的现象:秒直接跳变!我们可以再通过细分来实现,不要10小时那么大,小些的就行!具体的操作还是留给朋友们吧!

(七)

这回我们来讲讲键盘,大家肯定见过银行柜员机吧,取钱输入密码就要用到键盘,超市购物取回寄存物品要输入密码,还有你现在在用的PC机的键盘。但是键盘的是怎么工作的呢?一般有2种方式:(1)扫描法,不断扫描键盘的状态,送CPU判断并处理。如果键盘数目一大的话,显然不适合(2)线反转法,通过行列状态的改变来判断有无键被按下!

现在我们在P1口接个4*4的键盘,P1.0--P1.3接行,P1.4---P1.7接列,再接4个4K7的上拉电阻至VCC。代码如下:

//----键盘扫描法程序-------

//----用数码管显示相应的键值-----

//P1.0--P1.3接行-------

//P1.4---P1.7接列-------

#include

unsigned char code tab[ ]={0x3F,0x06,0x5B,0x4F,

0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,

0x39,0x5E,0x79,0x71};//0到F的16个键植

/******************************************************************************/ void Delayt(unsigned char t)//延时函数

{

unsigned char i;

for(t=0;i

最新-单片机原理及应用期末考试必考知识点重点总结 精品

单片机概述 单片机是微单片微型计算机的简称,微型计算机的一种。 它把中央处理器(CPU),随机存储器(RAM),只读存储器(ROM),定时器\计数器以及I\O 接口,串并通信等接口电路的功能集成与一块电路芯片的微型计算机。 字长:在计算机中有一组二进制编码表示一个信息,这组编码称为计算机的字,组成字的位数称为“字长”,字长标志着精度,MCS-51是8位的微型计算机。 89c51 是8位(字长)单片机(51系列为8位) 单片机硬件系统仍然依照体系结构:包括CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、输入设备和输出设备、内部总线等。 由于一块尺寸有限的电路芯片实现多种功能,所以制作上要求单片机的高性能,结构简单,工作可靠稳定。 单片机软件系统包括监控程序,中断、控制、初始化等用户程序。 一般编程语言有汇编语言和C语言,都是通过编译以后得到机器语言(二进制代码)。 1.1单片机的半导体工艺 一种是HMOS工艺,高密度短沟道MOS工艺具有高速度、高密度的特点; 另一种是CHMOS工艺,互补金属氧化物的HMOS工艺,它兼有HMOS工艺的特点还具有CMOS的低功耗的特点。例如:8181的功耗是630mW,80C51的功耗只有110mW左右。1.2开发步5骤: 1.设计单片机系统的电路 2.利用软件开发工具(如:Keil c51)编辑程序,通过编译得到.hex的机器语言。 3.利用单片机仿真系统(例如:Protus)对单片机最小系统以及设计的外围电路,进行模拟的硬软件联合调试。 4.借助单片机开发工具软件(如:STC_ISP下载软件)读写设备将仿真中调试好的.hex程序拷到单片机的程序存储器里面。 5.根据设计实物搭建单片机系统。 2.1MCS-51单片机的组成:(有两个定时器) CPU(进行运算、控制)、RAM(数据存储器)、ROM(程序存储器)、I/O口(串口、并口)、内部总线和中断系统等。 工作过程框图如下:

单片机入门视频教程

思维电子“单片机普及风暴” 丰富的4.7G视频教程请登录https://www.sodocs.net/doc/ff18423646.html, 用户名:cumtmcu 密码:cumtmcu 视频效果演示真彩屏https://www.sodocs.net/doc/ff18423646.html,/v_show/id_XMjAyNjk1MTEy.html 视频效果演示DIY-MP3https://www.sodocs.net/doc/ff18423646.html,/v_show/id_XMjAyNjk4NzQ4.html 真彩屏电子钟https://www.sodocs.net/doc/ff18423646.html,/v_show/id_XMjAyNjk0Nzcy.html 购买地址: 需铝合金箱真彩屏只需185元(包邮,其他配置一样,永远带MP3) https://www.sodocs.net/doc/ff18423646.html,/item.htm?id=7317765314 无需铝合金箱只需169元(包邮,其他配置一样,永远带MP3)

无彩屏无铝合金箱、单片机一片预留AD接口仅129元(包邮,其他配置一样,带MP3) https://www.sodocs.net/doc/ff18423646.html,/item.htm?id=7319197800 思维电子SW-51&AVR开发板隆重推出,四重好礼:TFT2.4真彩屏(双屏)、DIY 播放器(单片机也能播放SD卡歌曲,淘宝无第二家有此等技术做出来)、高性能转换(AD0804DA0832每片市场价10元共20元,很多商家悄悄省去了哦)、铝(让你的开发板随地带到哪都方便),如此豪华的开发板仅售185元,只求薄利 思维电子SW-51&AVR开发板完全兼容网络流行的郭天翔十天学会单片机TX-1学学完51后还可以继续学习AVR单片机。超强的功能,超高的性价比,兼容所有的51单片机和部分AVR单片机,配套了非常完善的视频学习资料,使您从零基顶级高手,一般的单片机开发板只能最高学到电子钟,没有深度,脱离实际工业水平,本单片机学习板可以驱动真彩屏,教您开发一个产品的实际过程,做一个播放器设计很多知识,包括彩屏显示,SD卡读写SPI协议,FAT16文件系统,文构,单片机控制音频处理,硬件电路设计,从DA转换到功率放大再音频输出,对让您学到了顶级只是,远离停留在只会电子钟的初级水平。想学想买的朋友不要错过一个好的学习产品不仅好在质量更重要是带给您怎样的学习学习就学实际需要学习就要学应用水平不能玩其表面要深进去! 质量保证7天包退1月包换1年保修 本套餐185元(包邮)包含以下配件: 1.SW-51&AVR实验板1台,大尺寸16cm*10cm https://www.sodocs.net/doc/ff18423646.html,B供电线1条 https://www.sodocs.net/doc/ff18423646.html,B转串口通讯线1条(下载STC89C52和做串口通讯试验用) 4.STC89C52RC单片机2片或STC89C516RD+一片(SD卡读写用该芯片极为方便,择STC89C516RD+请在购买留言栏中留言) 5.蓝屏1602字符液晶1块 6.杜邦线10根 7.备用跳线帽32个 8.常用晶振(11.0592MHZ、12MHZ、24MHZ其中11.0592MHZ默认是插在开发板

单片机原理及应用课后习题参考答案~章

《单片机原理及应用》习题答案 第一章计算机基础知识 1-1 微型计算机主要由哪几部分组成?各部分有何功能? 答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):即地址总线AB、数据总线DB和控制总线CB来连接。 CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。 存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。按其功能可分为RAM和ROM。 输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件。 总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。 1-3 什么叫单片机?其主要由哪几部分组成? 答:单片机(Single Chip Microcomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。 1-4 在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用? 答:单片机片内ROM的配置状态可分四种: (1)片内掩膜(Mask)ROM型单片机(如8051),适合于定型大批量应用产品的生产; (2)片内EPROM型单片机(如8751),适合于研制产品样机; (3)片内无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品;

(4)EEPROM(或Flash ROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。 1-5 写出下列各数的另两种数制的表达形式(二、十、十六进制) 1-6 写出下列各数的BCD参与: 第二章MCS-51单片机的硬件结构 2-1 8052单片机片内包含哪些主要逻辑功能部件? 答:8052单片机片内包括: ①8位中央处理器CPU一个 ②片内振荡器及时钟电路 ③256B数据存储器RAM。 ④8KB片内程序存储空间ROM ⑤21个特殊功能寄存器SFR ⑥4个8位并行I/O端口(32条线) ⑦1个可编程全双工串行口 ⑧可寻址64KB的外部程序存储空间和外部数据存储空间 ⑨3个16位的定时器/计数器

单片机原理及应用课后答案

第1章单片机概述参考答案 1.1 答:微控制器,嵌入式控制器 1.2 答:CPU、存储器、I/O口、总线 1.3 答:C 1.4 答:B 1.5 答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不是计算机。而微计算机、单片机它们都是一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。 嵌入式处理器一般意义上讲,是指嵌入系统的单片机、DSP、嵌入式微处理器。目前多把嵌入式处理器多指嵌入式微处理器,例如ARM7、ARM9等。嵌入式微处理器相当于通用计算机中的CPU。与单片机相比,单片机本身(或稍加扩展)就是一个小的计算机系统,可独立运行,具有完整的功能。而嵌入式微处理器仅仅相当于单片机中的中央处理器。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。 1.6 答:MCS-51系列单片机的基本型芯片分别:8031、8051和8071。它们的差别是在片内程序存储器上。8031无片内程序存储器、8051片内有4K字节的程序存储器ROM,而8751片内有集成有4K字节的程序存储器EPROM。 1.7 答:因为MCS-51系列单片机中的"MCS"是Intel公司生产的单片机的系列符号,而51系列单片机是指世界各个厂家生产的所有与8051的内核结构、指令系统兼容的单片机。 1.8 答:相当于MCS-51系列中的87C51,只不过是AT89S51芯片内的4K字节Flash存储器取代了87C51片内的4K字节的EPROM。 1.9 单片机体积小、价格低且易于掌握和普及,很容易嵌入到各种通用目的的系统中,实现各种方式的检测和控制。单片机在嵌入式处理器市场占有率最高,最大特点是价格低,体积小。 DSP是一种非常擅长于高速实现各种数字信号处理运算(如数字滤波、FFT、频谱分析等)的嵌入式处理器。由于对其硬件结构和指令进行了特殊设计,使其能够高速完成各种复杂的数字信号处理算法。广泛地用于通讯、网络通信、数字图像处理,电机控制系统,生物信息识别终端,实时语音压解系统等。这类智能化算法一般都是运算量较大,特别是向量运算、指针线性寻址等较多,而这些正是DSP的长处所在。与单片机相比,DSP具有的实现高速运算的硬件结构及指令和多总线,DSP处理的算法的复杂度和大的数据处理流量以及片内集成的多种功能部件更是单片机不可企及的。 嵌入式微处理器的基础是通用计算机中的CPU,它的地址总线数目较多能扩展较大的存储器空间,所以可配置实时多任务操作系统(RTOS)。RTOS是嵌入式应用软件的基础和开发平台。正由于嵌入式微处理器能运行实时多任务操作系统,所以能够处理复杂的系统管理任务和处理工作。因此,广泛地应用在移动计算平台、媒体手机、工业控制和商业领域(例如,智能工控设备、ATM机等)、电子商务平台、信息家电(机顶盒、数字电视)以及军事上的应用。 1.10 广义上讲,凡是系统中嵌入了"嵌入式处理器",如单片机、DSP、嵌入式微处理器,都称其为"嵌入式系统"。但多数人把 "嵌入"嵌入式微处理器的系统,称为"嵌入式系统"。目前"嵌入式系统"还没有一个严格和权威的定义。目前人们所说的"嵌入式系统",多指后者。 第2章 AT89S51单片机的硬件结构 1.答:AT89S51单片机的片内都集成了如下功能部件:(1)1个微处理器(CPU);(2)128

单片机知识点总结

单片机考点总结 1. 单片机由CPU 、存储器及各种I/O 接口三部分组成。 2. 单片机即单片微型计算机,又可称为微控制器和嵌入式控制器。 3. MCS-51 系列单片机为8 位单片机,共40 个引脚,MCS-51 基本类型有8031 、8051 和8751. (1)I/O 引脚 (2)8031 、8051 和8751 的区别: 8031 片内无程序存储器、8051 片内有4KB 程序存储器ROM 、8751 片内有4KB 程序存储器EPROM 。 (3)

4. MCS-51 单片机共有16 位地址总线,P2 口作为高8 位地址输出口,P0 口可分时复用 为低8 位地址输出口和数据口。MCS-51 单片机片外可扩展存储最大容量为216=64KB ,地址范围为0000H —FFFFH 。(1.以P0 口作为低8 位地址/数据总线;2.以P2 口作为高 8 位地址线) 5. MCS-51 片内有128 字节数据存储器(RAM ),21 个特殊功能寄存器(SFR )。 (1)MCS-51 片内有128 字节数据存储器(RAM ),字节地址为00H—7FH; 00H —1FH: 工作寄存器区; 00H —1FH: 可位寻址区; 00H —1FH: 用户RAM 区。 (2)21 个特殊功能寄存器(SFR )(21 页—23 页);

(3)当MCS-51 上电复位后,片内各寄存器的状态,见34 页表2-6 。 PC=0000H, DPTR=0000H, Acc=00H, PSW=00H, B=00H, SP=07H, TMOD=00H, TCON=00H, TH0=00H, TL0=00H, TH1=00H, TL1=00H, SCON=00H, P0~P3=FFH 6. 程序计数器PC:存放着下一条要执行指令在程序存储器中的地址,即当前PC 值或现行值。程序计数器PC 是16 位寄存器,没有地址,不是SFR. 7. PC 与DPTR 的区别:PC 和DPTR 都用于提供地址,其中PC 为访问程序存储器提供地址,而DPTR 为访问数据存储器提供地址。 8. MCS-51 内部有 2 个16 位定时/计数器T0 、T1,1 个16 位数据指针寄存器DPTR ,其中MOVE DPTR, #data16 是唯一的16 位数据传送指令,用来设置地址指针DPTR 。(46 页)定时/计数器T0 和T1 各由 2 个独立的8 位寄存器组成,共有 4 个独立寄存器:TH1 、TL1 、TH0 、TL0, 可以分别对对这 4 个寄存器进行字节寻址,但不能吧T0 或T1 当作 1 个16 位寄存器来寻址。即:MOV T0,#data16 ;MOV T1 ,#data16 都是错的, MOV TH0 ,#data ;MOV TL0 ,,#data 是正确的。 9.程序状态字寄存器PSW (16 页) (1)PSW 的格式: D7 D6 D5 D4 D3 D2 D1 D0 PSW Cy Ac F0 RS1 RS0 OV —P D0H (2)PSW 寄存器中各位的含义; Cy: 进位标志位,也可以写为C。 Ac:辅助进位标志位。 RS1 、RS0:4 组工作寄存区选择控制位。

单片机基础(第三版)课后答案李广弟

单片机基础课后答案 第三版(就是它了) 第一章 一、填空题 1.1110 0EH 10011100 01100100 2. 4 3. 255 -51 4. 输入设备 5. 84 6. 630 * 8 * 1024 7. 位字节字bit btype word 8. 1111 1111 00100100 11011011 9. 110 89 -115 -50 二、单选: DBCAB BBCB 第二章 一、填空 1.PC PC 2.反向器晶振两只电容短 3.加电手动0000H 07H 第0 00H 07H 4. 6 2 1 12 5.DPTR DPH DPL 6.64KB 单选题 DCCAC AD 第三章 一、填空题: 1.1031 2.34H 1 1 1 3.略 4.1100H 5. 2 6.30H 71H 0A5H 0A5H 75H 0A7H 0AAH 0 1 IFH 1 1 0AAH 0 1 20H 1 0

0D5H 1 1 49H 0 0 二、单选题 CCBDCA 三、其它类型题 错错对 错错错 对错错 错错对 对对对 错对对 错对错 错对 (三)其它类型题 3.编写程序将RAM20H-23H 单元的高4 位写1,低4 位写0。 分析:就是把这四个单元写入F0H。用一个DJNZ 的循环。 ORG 0000H MOV R0,#1FH ;R0 指向20H 单元 MOV R5,#04H; 四个数 LOOP: INC R0 MOV @R0,#0F0H ; 写入 DJNZ R5,LOOP ; 循环4 次 END 4.把m 和m+1 单元存有两个BCD 数,将它们合并到m 单元中,编写程序完成。 (设m=30H, 高位在30H,低数在31H) ORG 0000H MOV A,30H ANL A,#0FH ;把它的高四位清零 SW AP A MOV 30H ,A;高低四位调一下,放回原处 MOV A,31H ANL A,#0FH ORL A,30H ;合并起来 MOV 30H,A END 5.将内部RAM 中从data 单元开始的10 个无符号数相加,其和送sum 单元多,假定相加结果小于255。编写程序完成。 (设data=30H, sun =50H) ORG 0000H MOV R0,#2FH ; 指向前一个单元 MOV R5,#0AH ;循环10 次 CLR A;先加到A中 LOOP: INC R0 ADD A,@R0

单片机原理及应用第三版(张毅刚)1-6章全

第1章思考题及习题1参考答案 一、填空 1. 除了单片机这一名称之外,单片机还可称为或。答:微控制器,嵌入式 控制器. 2.单片机与普通微型计算机的不同之处在于其将、、和三部分,通 过内部连接在一起,集成于一块芯片上。答:CPU、存储器、I/O口、总线 3. AT89S52单片机工作频率上限为 MHz。答:33 MHz。 4. 专用单片机已使系统结构最简化、软硬件资源利用最优化,从而大大降低和提 高。答:成本,可靠性。 二、单选 1. 单片机内部数据之所以用二进制形式表示,主要是 A.为了编程方便B.受器件的物理性能限制 C.为了通用性D.为了提高运算速度 答:B 2. 在家用电器中使用单片机应属于微计算机的。 A.辅助设计应用B.测量、控制应用 C.数值计算应用D.数据处理应用 答: B 3. 下面的哪一项应用,不属于单片机的应用范围。 A.工业控制 B.家用电器的控制 C.数据库管理 D.汽车电子设备 答:C 三、判断对错 1. STC系列单片机是8051内核的单片机。对 2. AT89S52与AT89S51相比,片内多出了4KB的Flash程序存储器、128B的RAM、1个中断 源、1个定时器(且具有捕捉功能)。对 3. 单片机是一种CPU。错 4. AT89S52单片机是微处理器。错

5. AT89C52片内的Flash程序存储器可在线写入,而AT89S52则不能。错 6. 为AT89C51单片机设计的应用系统板,可将芯片AT89C51直接用芯片AT89S51替换。对 7. 为AT89S51单片机设计的应用系统板,可将芯片AT89S51直接用芯片AT89S52替换。对 8. 单片机的功能侧重于测量和控制,而复杂的数字信号处理运算及高速的测控功能则是DSP 的长处。对 四、简答 1. 微处理器、微计算机、微处理机、CPU、单片机、嵌入式处理器它们之间有何区别? 答:微处理器、微处理机和CPU它们都是中央处理器的不同称谓,微处理器芯片本身不是计算机。而微计算机、单片机它们都是一个完整的计算机系统,单片机是集成在一个芯片上的用于测控目的的单片微计算机。 2. AT89S51单片机相当于MCS-51系列单片机中的哪一型号的产品?“S”的含义是什么? 答:相当于MCS-51系列中的87C51,只不过是AT89S51芯片内的4K字节Flash存储器取代了87C51片内的4K字节的EPROM。 3. 单片机可分为商用、工业用、汽车用以及军用产品,它们的使用温度范围各为多少? 答:商用:温度范围为0~+70℃;工业用:温度范围为-40~+85℃;汽车用:温度范围为-40~+125℃;军用:温度范围为-55~+150℃。 4. 解释什么是单片机的在系统编程(ISP)与在线应用编程(IAP)。 答:单片机的在系统编程ISP(In System Program),也称在线编程,只需一条与PC机USB口或串口相连的ISP下载线,就可把仿真调试通过的程序代码从PC机在线写入单片机的Flash存储器内,省去了编程器。在线应用编程(IAP)就是可将单片机的闪存内的应用程序在线修改升级。 5. 什么是“嵌入式系统”? 系统中嵌入了单片机作为控制器,是否可称其为“嵌入式系统”? 答:广义上讲,凡是系统中嵌入了“嵌入式处理器”,如单片机、DSP、嵌入式微处理器,都称其为“嵌入式系统”。但多数人把“嵌入”嵌入式微处理器的系统,称为“嵌入式系统”。目前“嵌入式系统”还没有一个严格和权威的定义。目前人们所说的“嵌入式系统”,多指后者。 6. 嵌入式处理器家族中的单片机、DSP、嵌入式微处理器各有何特点?它们的应用领域有何 不同? 答:单片机体积小、价格低且易于掌握和普及,很容易嵌入到各种通用目的的系统中,

最新单片机重点知识点整理

1单片机内部RAM 256个单元功能划分 通用工作寄存器区:用于存放操作数及中间结果 位寻址区:作为一般RAM单元使用,进行字节操作,也可对单元中每一位进行操作 用户区:供用户一般使用 特殊功能寄存器区:共专用寄存器使用 同步通信,依靠起始位和停止位实现同步 异步通信,依靠同步字符实现同步 1.方式0 串行接口工作方式0为同步移位寄存器方式,多用于I/O口的扩展,其波特率是固定的,为fosc/12。TXD引脚输出同步移位脉冲,RXD引脚串行输入/输出。 2.方式1 在方式l时,串行口被设置为波特率可变的8位异步通信接口。发送/接收1帧数据为10位,其中1位起始位、8位数据位(先低位后高位)和1位停止位。 3.方式2 串行口工作为方式2时,被定义为9位异步通信接口。发送/接收1帧数据为11位,其中1位起始位、8位数据位、1位控制/校验位和1位停止位。控制/校验位为第9位数据。 4.方式3 方式3为波特率可变的11位异步通信方式,除了波特率有所区别之外,其余同方式 3产品设计的步骤 1明确设计任务和性能指标2总体设计3硬件测试4软件设计5产品调试 4指令的寻址方式、分类,会举例 (1)立即数寻址指令本身直接含有所需要的8位或16位的操作数。 将此数称为“立即数”(使用#标明)。 MOV A,#5FH ;将(8位)立即数送累加器A (2)直接寻址指令直接给出了操作数的地址。 MOV A,3AH ;将RAM3AH单元内容送累加器 (3)寄存器寻址当所需要的操作数在内部某一个寄存器Rn中时,将此寄存器名Rn直接写在指令的操作数的位置上。 MOV A,R0 注意:寄存器寻址方式的指令大多是单字节指令。指令本身并不带有操数,而是含有存放操作数的寄存器的3位代码。以MOV A,Rn为例,使用R7寄存器,所以rrr=111,既指令的机器码为:0EFH (4)寄存器间接寻址指令中含有保存操作数地址的寄存器Ri。 MOV A,@Ri ( i=0、1) 如:MOV R0,#3AH ;立即数送R0寄存器 (5)变址寻址;指令使用DPTR或PC中的内容作为基地址,再与累加器A的内容相加,和作为操作数地址。 指令使用DPTR或PC中的内容作为基地址,再与累加器A的内容相加,和作为操作数地址。 MOVX A,@A+PC ;PC内容与A的内容相加得操作数地址并将此操作数送A

51单片机基础知识试题题库(含答案)

第二章习题参考答案 一、填空题: 1、当MCS-51引脚ALE有效时,表示从P0口稳定地送出了低8位地址。 2、MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。 3、当使用8751且EA=1,程序存储器地址小于1000H 时,访问的是片内ROM。 4、MCS-51系统中,当PSEN信号有效时,表示CPU要从外部程序存储器读取信息。 5、MCS-51有4组工作寄存器,它们的地址范围是 00H~1FH 。 6、MCS-51片内20H~2FH范围内的数据存储器,既可以字节寻址又可以位寻址。 7、PSW中RS1 RS0=10时,R2的地址为 12H 。 8、PSW中RS1 RS0=11时,R2的地址为 1AH 。 9、单片机系统复位后,(PSW)=00H,因此片内RAM寄存区的当前寄存器是第 0 组,8个寄存器的单元地址为 00H ~ 07H 。 10、PC复位后为 0000H 。 11、一个机器周期= 12 个振荡周期= 6 个时钟周期。 12、PC的内容为将要执行的的指令地址。 13、在MCS-51单片机中,如果采用6MHz晶振,1个机器周期为 2us 。 14、内部RAM中,位地址为30H的位,该位所在字节的字节地址为 26H 。 15、若A中的内容为63H,那么,P标志位的值为 0 。 16、8051单片机复位后,R4所对应的存储单元的地址为 04H ,因上电时PSW= 00H 。这时当前的工作寄存器区是第 0 工作寄存器区。 17、使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。 18、片内RAM低128个单元划分为哪3个主要部分:工作寄存器区、位寻址区 和用户RAM区。 19、通过堆栈操作实现子程序调用,首先就要把 PC 的内容入栈,以进行断点保护。调用返回时,再进行出栈保护,把保护的断点送回到 PC 。 20、MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS -51的PC是16位的,因此其寻址的范围为 64 KB。 21、MCS-51单片机片内RAM的寄存器共有 32 个单元,分为 4 组寄存器,每组 8 个单元,以R0~R7作为寄存器名称。 22、但单片机的型号为8031/8032时,其芯片引线EA一定要接低电平。 二、选择题: 1、当MCS-51复位时,下面说法正确的是( A )。 A、 PC=0000H B、 SP=00H C、 SBUF=00H D、 P0=00H 2、PSW=18H时,则当前工作寄存器是( D )。 A、 0组 B、 1组 C、 2组 D、 3组 3、MCS-51上电复位后,SP的内容应是( B )。 A、 00H B、 07H C、 60H D、 70H 4、当ALE信号有效时,表示( B )。 A、从ROM中读取数据 B、从P0口可靠地送出低8位地址 C、从P0口送出数据 D、从RAM中读取数据 5、MCS—51单片机的CPU主要的组成部分为( A )。 A、运算器、控制器 B、加法器、寄存器 C、运算器、加法器 D、运算器、译码器

(完整word版)单片机知识点总结

第一部分硬件基础 1、单片机的组成; 2、单片机的并行I/O口在使用时,有哪些注意的地方? 3、单片机的存储器;程序存储器和数据存储器的寻址范围,地址总线和数据总线的位数;数据存储器内存空间的分配;特殊功能寄存器区; 4、时钟及机器周期; 5、单片机的控制总线、地址总线及数据总线等。 例: 一、填空 1.MCS-51单片机有4个存储空间,它们分别是:、、、。 2、MCS-51单片机的一个机器周期包括个状态周期,个振荡周期。设外接12MHz晶振,则一个机器周期为μs。 3.程序状态字PSW由位组成。 4.在MCS-51单片机内部,其RAM高端128个字节的地址空间称 为区,但其中仅有个字节有实际意义。 5. MCS-51 系列单片机为位单片机,其数据总线为位,地址总线为位,可扩展的地址范围为。 6. MCS-51 单片机的4 个并行I/O 口若作为普通I/O 口使用时,输入操作分为读引脚和读锁存器,需要先向端口写“1”的操作是。 7. MCS-51 单片机的特殊功能寄存器分为可位寻址和不可位寻址两种,那么IE 为,TMOD 为。 8.通常MCS-51单片机上电复位时PC= H、SP= H、通用寄存器采用第组,这一组寄存器的地址范围 是 H。 9.MCS-51单片机堆栈遵循的数据存储原则。 10.在MCS-51单片机中,使用P2、P0口传送信号,且使用P0口来传送信号,这里采用的 是技术。 11.MCS-51单片机位地址区的起始字节地址为。

12.对于并行口在读取端口引脚信号时,必须先对端口写。13.PC的内容是。 14、MCS-51 单片机运行出错后需要复位,复位的方法是在复位引脚上加一个持续时间超过个时钟周期的高电平。 15、具有4KBytes 储存容量之存储器,其至少需具有根地址线。 二、问答 1.简述MCS-51 单片机的P0、P1、P2 和P3 口的功能。 2.MCS-51单片机的三总线是由哪些口线构成的。 3.MCS-51单片机的位寻址区的字节地址范围是多少?位地址范围是多少? 4. MCS-51单片机存储器在结构上有什么特点?在物理上和逻辑上各有那几个地址空间? 5.简述MCS-51单片机00H-7FH片内RAM的功能划分,写出它们的名称以及所占用的地址空间,并说明它们的控制方法和应用特性。 6.请写出MCS-51单片机的五个中断源的入口地址。 第二部分 C51程序设计 1、C51的指令规则;C51编程语句及规则; 2、C51表达式和运算符; 3、顺序程序、分支程序及循环程序设计; 4、C51的函数; 5、中断函数。 例: 1.程序的基本结构有。 2.C51的存储器模式有、、。 3.C51中int型变量的长度为,其值域为;unsigned char型变量的长度为位,其值域为。 4.C51中关键字sfr的作用,sbit的作 用。 5.函数定义由和两部分组成。 6.C51的表达式由组成。C51表达式语句由表达式和组成。

PIC 单片机基础教程

PIC 单片机基础教程 第一章PIC 系列单片机结构原理目前在全世界,利用单片机设计的嵌入式系统带来的工业年产值已超过几万亿美元。在美国,但是使用嵌入式电脑的全数字电视产品预计每年将产生超过1500亿美元的于世界市场,我国的占有率好不到1 % 。这说明单片机应用早我国才刚刚起步,有着广阔的前景。因此,培养单片机应用人才,特别是在大学和中等专业学校相关专业中普及单片机知识,有着重要现实意义。 1.1单片机概述 微型计算机是一种以电子器件为基础,可以介入输入信息,并能够对各种输入的数字化信息进行算术和逻辑运算,最后产生输出的电子设备。微型计算机机油快速运算能力,又有极强的逻辑判断能力和的容量存储功能,是20世纪人类最卓越的发明之一,而单片微型计算机就是将CPU 、RAM、ROM、定时器/计数器和多种接口都集成到一块集成电路芯片上的尖端武器和日常生活中最广泛使用的计算机。 近年来,单片机得到突飞猛进的发展,已经完全深入到了人们的生活和工作的各个方面。单片机的发展过程和性能的日益完善,实际上是对传统控制技术的一场革命,开创了为控制技术的新天地,现代控制系统的核心内涵就是嵌入式计算机应用系统(MCU),而单片机就是最典型、最广泛和最普及的嵌入式计算机应用系统。可以毫不夸张地说,在现代化的设备中,单片机无处不在,如电信、家用电器、工业控制、仪器仪表、汽车和玩具等;单片机也比比皆是,如自动调台收音机、VCD、遥控空调、微波炉、智能玩具、人体秤和心电监护仪等。随着科技的发展,单片机必将在更多的方面发挥作用。 目前,全世界各大公司的单片机品种已经形成多个系列,同一系列的单片机在软件和硬件方面有很大的相同之处。例如,PIC16F87X系列单片机有着相同的内核、相同和兼容的指令系统。 各种单片机在其内部所处理的对象都是用二进制数表示的信息,因此在学习单片机原理之前,首先要了解二进制数和二进制编码。 1、1、1 二进制数和编码 1 计算机中的二进制 数字的表示,有二进制、十进制和十六进制等。而各种数据在计算机内部都是以二进制编码形式来表示的。这些数据由1和0组成,按“逢二进一”的进位计数方式进行计数。不同的数码在不同的数位上的值不相同的,例如:二进制的0001代表1, 0010代表2 , 0100代表4, 1000代表8,那么二进制究竟有何优点呢? 二进制的优点: 简单、可行 由于二进制只有0和1两个数字,用计算机内部的电子元件开关状态来表示,不仅容易实现,而且稳定、可靠.。以我们的习惯使用的十进制为例,十进制有0,1,2,3,4,5,6,7,8,9,共10个数字,对应10种状态,用开关的状态来区分很困难;而二进制的0和1对应的电器开关的开或关,却十分方便。

单片机基础及其应用习题.doc

1. X1 = +42、X2=-82,则/1]反= B, ^2]补= 2. 3. MOV RO, 30H 中,30H 的寻址方式称之为 4. MOV C, 30H 源操作数寻址方式为 寻址。 5. MCS-51的雄栈是在— 一中开辟的。 6. MCS-51片内20H-2FH 范围内的数据存储器,即可以字节寻址又可以 寻址。 7. 8051单片机读片外程序存储器MOVC 指令采用的是— 一寻址方式。 8. 若系统晶振频率为6MHz,则MUL AB 指令的周期为— _ps 9. 12根地址线可?选择 存储单元,32KB 存储单元需要 根地址线。 10. 设(A) =55H, (R5) =0AAH,贝ij 执行ANL A, R5指令后的结果是<A)= ,( R5) 11. 12. MCS-51中T1中断服务程序入I I 地址为 13. 14. 通常单片机上电复位时PC = H 、SP = Ho A 、P0 I I 和 P2 I I B 、P0 I I C 、P2 I I 和 P3 I I 3. 在单片机内部, 反应林序运行状态或反应运算结果的一个特征奇存器是( A 、 PC B 、PSW C 、A D 、SP 4. 在堆栈操作中, 当进栈数据全部弹出后,这时SP 应指向( ) A 、 C 、栈底单元地址加 1 D 、栈底单兀地址减1 单片机基础及其应用习题(含答案) 2011-06-02 21:57:031分类:款认分类|标斜 |字号大中小订阅 填空题 PSW 中RS1=1. RS0=0,则当前工作寄存器为 组通用寄存器(从第0组排起)o 若用传送指令访bd MCS-51的程序存储器,它的操作码助记符应为 欲对300个外部事件计数,可以选用定时器/计数器的工作模式. 选择题 1. 8031单片机内部RAM 中既可位寻址又可字节寻址的单元字节地址是 A. 20H B.30H C.OOH D.70H 2. MCS-51系列单片机外部扩展存储器芯片时,4个l/OI I 中用作数据总线的是( B 、7FH 单元

51单片机基本程序

1第一位隔一秒闪烁一次 #include #define uint unsigned int sbit led1=P1^0; uint i; uint j; void main() { while(1) { led1=0; for(i=1000;i>0;i--) for(j=110;j>0;j--); led1=1; for(i=1000;i>0;i--) for(j=110;j>0;j--); } } 2复杂广告灯 #include #define uint unsigned int #define uchar unsigned char uchar discode[]={ 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,//正向流水灯 0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,//反向流水灯 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xFF,//隔灯闪烁3次 0xF0,0x0F,0xF0,0x0F,0xFF,//高四盏。低四盏闪烁2次 0x33,0xCC,0x33,0xCC,0x33,0xCC,0xFF//隔两盏闪烁3次 }; void delayms(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); } } void main(void) { uchar i; P0=0xFF;

while(1) { for(i=0;i<35;i++) { P0=discode[i]; delayms(250); } } } 3拉幕式与闭幕式广告灯 #include #define uint unsigned int #define uchar unsigned char uchar discode1[4]={0x18,0x24,0x42,0x81}; uchar discode2[4]={0x7E,0x3C,0x18,0x00}; void delayms(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); } } void main(void) { uchar i,j; P0=0xFF; while(1) { for(i=0;i<4;i++) { j=discode1[i]; P0=~j; delayms(500); } j=0xFF; P0=~j; delayms(500); for(i=0;i<4;i++) { j=discode2[i]; P0=~j;

单片机基础及应用项目五课后习题及答案

一、填空题 1.51单片机中有(2)个(16)位的定时/计数器,可以被设定的工作方式有(四)种。 2.51单片机的定时器/计数器有四种工作方式,其中方式0是(13)位计数器;方式1为 (16)位计数器;方式2为(自动重装初值)的(8)位计数器;只有定时器(T0)才能选作组合方式3,此时将形成2个(8)位的计数器。 3.单片机中,常用作地址锁存器的芯片是(74HC373),常用作地址译码器芯片的是 (74HC138)。 4.若要启动定时器T0开始计数,则应将TR0的值设置为(1)。 5.若系统晶振频率为12MHz,则T0工作方式1时最多可以定时(65536)us。 6.TMOD中M1M0=11时,定时器工作方式(3)。 7.单片机工作于定时状态时,计数脉冲来自(单片机内部的时钟脉冲)。 8.单片机工作于计数状态时,计数脉冲来自(单片机外部的时钟脉冲) 二、选择题 1.单片机的定时器/计数器设定为工作方式1时,是(D) A、8位计数器结构 B、2个8位计数器结构 C、13位计数器结构 D、16位计数器结构 2.定时器/计数器有4种工作模式,它们由(B)寄存器中的M1、M0状态决定 A、TCON B、TMOD C、PCON D、SCON 3.若单片机的振荡频率为6MHz,设定时器工作在方式1需要定时1ms,则定时器初值 应为(C) A、500 B、1000 C、216-500 D、216-1000 4.定时器1工作在计数方式时,其外加的计数脉冲信号应连接到(D)引脚 A、P3.2 B、P3.3 C、P3.4 D、P3.5 5.74LS138芯片是(B) A、驱动器 B、译码器 C、锁存器 D、编码器 6.在下列寄存器中,与定时/计数控制无关的是(C) A、TCON B、TMOD C、SCON D、IE 7.启动定时器0开始计数的指令是使TCON的(B) A、TF0位置1 B、TR0位置1 C、TR0位置0 D、TR1位置0 8.用定时器T1方式1计数,要求每计满10次产生溢出标志,则TH1、TL1的值是(A) A、FFH、F6H B、F6H、F6H C、F0H、E0H D、FFH、DFH 9.与开启定时器0中断无关的是(C) A、TR0=1 B、ET0=1 C、ES0=1 D、EA=1 10.多位数码管显示时,(D)负责输出字型码,控制数码管的显示内容。 A、显示端 B、公共端 C、位选端 D、段选端 11.若要采用定时器0,方式1,如何设置TMOD(B) A.00H B.01H C.10H D.11H 12.单片机采用方式0时是13位计数器,它的最大定时时间是多少?(B) A.81.92ms B.8.192ms C.65.536ms D.6.5536ms 13.单片机的定时器,若用软件启动,应使TMOD中的(C) A.GATE位置1 B.C/T位置1 C.GATE位置0 D.C/T位置0 14.下面哪一种工作方式仅适用于定时器T0(D)

单片机知识点总结

单片机知识点总结 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

单片机考点总结 1.单片机由CPU、存储器及各种I/O接口三部分组成。 2.单片机即单片微型计算机,又可称为微控制器和嵌入式控制器。 3.MCS-51系列单片机为8位单片机,共40个引脚,MCS-51基本类型有8031、 8051和8751. (1)I/O引脚 (2)8031、8051和8751的区别: 8031片内无程序存储器、8051片内有4KB程序存储器ROM、8751片内有4KB程序存储器EPROM。 4.MCS-51单片机共有16位地址总线,P2口作为高8位地址输出口,P0口可分时复 用为低8位地址输出口和数据口。MCS-51单片机片外可扩展存储最大容量为 216=64KB,地址范围为0000H—FFFFH。(1.以P0口作为低8位地址/数据总线;2.以P2口作为高8位地址线) 5.MCS-51片内有128字节数据存储器(RAM),21个特殊功能寄存器(SFR)。(1)MCS-51片内有128字节数据存储器(RAM),字节地址为00H—7FH; 00H—1FH: 工作寄存器区; 00H—1FH: 可位寻址区; 00H—1FH: 用户RAM区。 (2)21个特殊功能寄存器(SFR)(21页—23页); (3)当MCS-51上电复位后,片内各寄存器的状态,见34页表2-6。 PC=0000H, DPTR=0000H, Acc=00H, PSW=00H, B=00H, SP=07H, TMOD=00H, TCON=00H, TH0=00H, TL0=00H, TH1=00H, TL1=00H, SCON=00H, P0~P3=FFH

单片机基础知识点总结

单片机基础知识点总结 单片机基础知识点总结 第1章 1、微型计算机通常由哪些部分组成?各有哪些功能? 答:微型计算机通常由控制器、运算器、存储器、输入输出接口电路、输入设备和输出设备组成。控制器的功能是负责从内部存储器中取出指令 并对指令进行分析、判断、并根据指令发出控制信号,使计算机有条不紊 的协调工作;运算器主要完成算数运算和逻辑运算;存储器用于存储程序 和数据;输入输出接口电路完成CPU与外设之间相连;输入和输出设备用于和计算机进行信息交流的输入和输出。 2、单片微型计算机与一般微型计算机相比较有哪些区别?有哪些特点? 答:与通用微型计算机相比,单片机的硬件上,具有严格分工的存储器ROM和RAM和IO端口引脚具有复用功能;软件上,采用面向控制的 指令系统和硬件功能具有广泛的通用性,以及品种规格的系列化。单片机 还具备体积小、价格低、性能强大、速度快、用途广、灵活性强、可靠性 高等特点。 3、单片机的几个重要指标的定义。 答:单片机的重要指标包括位数(单片机能够一次处理的数据的宽度)、存储器(包括程序存储器、数据存储器)、IO口(与外界进行信息交换)、速度(每秒执行多少条指令)、工作电压(通常是5V)、功耗和温度。

4、单片微型计算机主要应用在哪些方面? 答:单片机的主要应用领域有智能化产品、智能化仪表、智能化测控系统、智能化接口等方面。 5、单片机的特点 存储器ROM和RAM严格分工;采用面向控制的指令系统;输入输 出端口引脚具有复用功能;品种规格的系列化;硬件功能具有广泛的通用 性 6、水塔水位的控制原理 (1)当水位上升达到上限时,B、C棒与A棒导电,从而与+5V电源连通。b、c两端均呈高电平状态,这时应使电机和水泵停止工作,不再给水 塔供水。(2)当水位降到下限以下时,B、C棒不与A棒导电,从而断开与 +5 V电源的连通。b、c两端均呈低电平状态。这时应启动电机,带动水泵工作给水塔供水。(3)当水位处于上下限之间时,B棒与A棒导电,而C棒不与A棒导电。b端呈高电平状态,c端呈低电平状态。这时无论是电机已在运转还是停止,都应维持电机和水泵的现有工作状态,直到水位上升到 水位上限或下降到水位下限。 第2章 1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答:MCS-51单片机在一块芯片中集成了CPU、RAM、ROM、定时计数器、多功能IO口和中断控制等基本功能部件。1)单片机的核心部分是CPU,CPU是单片机的大脑和心脏。2)程序存储器用于存放编好的程序或表格常数。数据存储器用于存放中间运算结果、数据暂存和缓冲、标志位等。3)

相关主题