郭天祥51单片机授课视频内容
单片机内部RAM的扩展
STC单片机内部扩展RAM的应用作者:郭天祥来源:原创更新时间:2008-11-27 21:19:35 浏览次数:5803RAM是用来在程序运行中存放随机变量的数据空间,51单片机默认的内部RAM只有128字节,52单片机增加至256字节,STC89C52增加到512字节,STC89C54、55、58、516等增加到1280字节,对于编程者来说,一个芯片的RAM越多,写起程序来就越容易得心应手,不会总考虑RAM不够用而担心这担心那,连过多的变量都不敢定义。
在前面我们写程序时曾讲到过,如果定义一个变量后,不对这个变量进行初始化,这个变量默认的初值就是0,其实这个结论是需要一定的条件的,在用KEIL编写程序时,总程序中所有变量占用的字节之和小于128字节,并且存储器模式为small模式的前提下,对定义的变量不进行初始化时,编译器会默认将变量值设定为0。
一旦程序中的总变量超过128字节,必须对所有变量进行初始化,否则,没有被初始化的变量默认值将是不确定的。
当变量总和超过128字节时,必须还要在编译器中重新设定存储器的存储模式,存储器模式一共有3种,分别为small、compact和large模式,在KEIL编译器中有选项可进行选择,选项表如图4.4.1所示。
它决定了没有明确指定存储类型的变量、函数参数等数据的默认存储区域。
如果在某些函数中需要使用非默认的存储模式,也可以使用关健字直接说明。
下面对这三种模式分别做介绍。
1. small模式small模式中,所有缺省变量参数均装入单片机内部128字节RAM中,当定义类似如:uchar a; float b;等变量时,这些变量都装入内部128字节RAM中。
使用该模式的优点是访问速度快,缺点是空间有限,而且是对堆栈的空间分配比较少,难以把握,碰到需要递归调用的时候需要小心。
所以这种模式只适用于小程序。
2. compact模式compact模式中,所有缺省变量均位于单片机内部256字节RAM中,和在small模式中使用关健字pdata 来定义变量的效果相同,如:uchar pdata a[100];在该种模式下,程序总变量不得超过256字节,对于只有128字节的单片机,使用此模式定义变量超过128字节时,程序将出错。
51单片机,郭天祥,第三章,PDF,Word
3.4中断概念中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。
它也是单片机最重要的功能之一, 是我们学习单片机必须要掌握的。
很多初学者被困在中断中,学了很久仍然不知道中断究竟是个什么东西,大家千万不要认为它有多难,其实只要掌握正确的学习方法,没有哪个知识点是学不会的。
51单片机内部一共有5个中断源,也就是说,有5种情况发生时,会使单片机去处理中断程序。
在本章我们只讲解其中的一种中断情况——定时器中断,只要大家从理论和实践中真正明白了中断的概念,其他几种情况便能轻松掌握。
为了能让大家更容易理解中断概念,我们先来举一个生活事例:你打开火,烧上一壶水, 然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。
这个过程中实际上就发生了一次中断,其流程图如图3.4.1所示。
对于单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU 迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B (中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A (中断返回),这一过程称为中断,其流程图如图3.4.2所示。
再回来看前面讲的生活事例,与单片机中断结合分析,你的主任务是洗衣服,水开报警这是一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。
这里需要注意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗刚才那件衣服。
单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。
单片机天才郭天祥的大学经历
致阅读本书的大学生朋友在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备;在与众多电子爱好者的交流中,使我学到了更多的专业知识;在学校老师们的教导下,让我学会了如何做一名合格的大学生。
因此,在这里我要感谢哈尔滨工程大学的历任领导,我今天成绩的取得得益于他们不断完善的教育体制;衷心地感谢曾经教导过我的刁鸣教授、付永庆教授、王松武教授,没有他们对我的培养,也就没有我的今天。
同时我也希望能有更多的电子爱好者加入创新实验室,在完善自我的同时,在电子行业做出更突出的业绩。
2007年,我以全新的教学方式推出了一套讲述51单片机的教学视频课程——“十天学会单片机”,该视频自从网上发布后,得到了电子爱好者的一致好评,诸多的单片机初学者通过这套视频走上了单片机开发之路。
有很多学员来信或打电话希望我能够将视频中的内容著书出版,让更多的人受益。
为此,从2007年9月至2008年7月,我用了近十个月的时间将本书写完。
本书的写作风格与我在教学视频中的讲课风格相似,它与传统讲授单片机的书籍完全不同,我以学单片机“过来人”的思路,抱着如何才能更容易掌握单片机的态度,理论与实践完全结合的方式清晰地讲解了单片机部分。
其余大部分内容为我多年做项目的经验积累,也有部分内容来自于网络电子高手们的精华总结,应当说,在本书中有太多的知识是大家平时在书本上学不到的。
在这里,先将我在大学期间的学习和生活经历与大家分享,借此鼓舞大家珍惜大学时光,多学习文化知识,开创更加美好的明天。
我的大学写这篇文章的时候,我正处于硕士研究生毕业论文的准备阶段,眼睁睁看着我的大学生活即将画上句号,再看看身边有很多低年级的学生们一天天把时间白白荒费掉,我在心里替他们惋惜,在即将结束我的大学生活之际,我将我的大学几年的有意义的生活与大家分享,看过这篇文章后也许能让那些有梦想的同学为了实现自己的人生目标少走些弯路,大家要相信,大学校园——将为你提供一生最好的学习环境。
郭天祥pdf
跑飞的情况,因此我们也很难人为制造出使单片机程序跑乱的情况,下面的
程序演示利用看门狗的溢出时间来使程序自动复位运行。
【例】:在 TX-1C 实验板上实现如下描述:程序启动后设定看门狗溢
出时间为 2 秒左右,然后点亮第一个发光二极管,稍延时一会,然后熄灭发
光二极管,使程序进入等待死循环状态,并且在死循环中大约每隔 1 秒喂狗
一次,看程序运行是否正常。
新建文件 part3.4.2.c,程序代码如下:
#include <reg52.h>
//52 系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sfr WDT_CONTR=0xe1;
sbit led1=P1^0;
上图设置存储器模式为 large 模式 其次,为安全起见,当程序中定义多于 128 字节的其它变量时,最好申明为 xdata 型,如 uchar xdata table[100];意思为定义一个 100 个字节容量的数组,将其在扩展 RAM 中分配存储空间。另外 一定要注意,在 large 模式下,编写程序时,定义的变量总数千万不要超过对应单片机的内部最大
倍速与双倍速的设置在下载程序软件界面上有设置选择,大家可自行
下载测试程序运行速度。预分频数的值由 PS2、PS1 和 PS0 的组合确
定,如表 4.2.2 所示。晶振频率即为当前系统的时钟频率。
下面我们通过两个例子来进一步讲解使用看门狗和不使用看门狗时程
序运行的区别,由于 STC 单片机的高抗干扰特点,至今我还未曾遇到过程序
ቤተ መጻሕፍቲ ባይዱRAM 字节数,因为即使超过了,编译器也不会提示错误,但是程序必定会出错。
51单片机第四节数码管
51单⽚机第四节数码管本笔记默认学习者已拥有:1.Keil5和stc 烧写⼯具 等各种软件、驱动、环境;2.有⼀个属于⾃⼰的 51单⽚机开发板及相关零件 ;3.认识C 语⾔的语法;本⼈使⽤的51开发板为 郭天祥C51 TX-1C 增强版开发板 ;本笔记根据B 站up 主:江科⼤⾃化协的教学视频 整理得到ヾ(•ω•)4-1 静态数码管显⽰上图为TX-1C 的 数码管及LED 模块 原理图138译码器和74HC245 都是⽤来控制 数码管显⽰ 的;单数码管1.上图为 ⼀位数码管,数码管有两种连接⽅式(对应 右边上下两幅图);2.右上图的原理图,8个LED的阴极都连在⼀个引脚上,称为共阴极连接;3.右下图的原理图,8个LED的阳极都连在⼀个引脚上,称为共阳极连接;TX-1C 开发板的连接⽅式是 共阴极连接;4.左下⾓的 左边图⽚ ,定义了8个LED的名称;5.左下⾓的 右边图⽚ ,定义了引脚的名称,与右图的引脚名称⼀⼀对应假设数码管连接⽅式为 共阳极连接,观察可以发现,数码管中的 LED 的引脚引出,使⽤的是就近原则;假设数码管连接⽅式为 共阴极连接,如果上数码管显⽰ 数字6 ?1.要让数码管显⽰ 数字6,让要 LED-A、C、D、E、F、G亮起;2.共阴极的公共端 要接地(给数据‘0’,或者是低电平);3.阳极(称为位选端)根据LED的亮灭需求给 数据0或1(1亮、0灭) ,称为 段码(阳码) (1011 1110 即为段码);如果 共阳极连接,共阳极端 要接到 VCC (⾼电平),阴极给 数据0或1 (1灭,0亮),称为 段码(阴码),和共阴极正好是相反关系;共阳极连接→共阳极端接VCC 并选中→阴极(位选端)传递(阴码)段码(1亮、0灭)→数码管显⽰共阴极连接→共阴极端接GND 并选中→阳极(位选端)传递(阳码)段码(1灭、0亮)→数码管显⽰四位⼀体数码管开发板上即为 四位⼀体的数码管,且有两个,正好组成了 ⼋位数码管;⽽TX-1C 上 包含的是六位数码管,⽽⾮⼋位;1.四位数码管 也有 两种连接⽅式,即 共阴极连接 和 共阳极连接 ;{Processing math: 100%2.四位数码管,(每位的公共端 单独引出来,位选端全部连在⼀起(所有A段连在⼀起、所有B段连在⼀起……),总共有12个引脚;假设数码管连接⽅式为共阴极连接,如何在第三位显⽰数字1 ?1.给第三位的公共端 赋值 0(低电平),给其他位的公共端 赋值 1(⾼电平);这样等同于 其他位的公共端(负极)接到了正极上,⽆论如何都亮不了;只有第三位能亮;2.这样给 LED-B、C 的位选端 赋值 1,其他 位选端 赋值0共阳极连接即为公共端赋值 1(⾼电平)亮,其他以此类推;3.发现这样⼀个现象,数码管⽆法在同⼀时间显⽰多个数字,其在同⼀时刻下只能有⼀个显⽰,只有⼀个数码管能被点亮,即使有多个被选中的数码管,显⽰的数字也是相同的;这种共⽤引脚的现象,是为了减少控制数码管IO⼝;(四位数码管有32个LED,如果都采⽤共阴极连接的⽅式,也要32+1(公共端)=33个引脚;)(采⽤这种链接,就只需要12个引脚即可控制四位数码管;)如何让数码管多位显⽰不同数字(动态数码管显⽰)?1.利⽤ ⼈眼视觉的暂留 和 数码管显⽰的余辉 的原理先让第⼀位数码管显⽰1,然后很快地让第⼆位数码管显⽰2,再很快地让第三位数码管显⽰3,让它不断地扫描,重复显⽰1、2、3的过程,这样三个数字就“同时”显⽰了;原理分析138译码器1.观察到 原理图右图 与数码管有关的,有138译码器(74LS138)和74HC245两枚芯⽚;TX-1C的原理图为左图,也有两个74HC573芯⽚与数码管有关;芯⽚名称与功耗、电压、说明符号有关,具体内容不做分析;2.如图,数码管连接⽅式为 共阴极连接,这样传输数据,就能让第三位显⽰ 数字1 了;3.⽽上⾯的 LED1 ~ 8,其实接在了138译码器的输出端,138译码器正好可以实现让LED1 ~ 8输出 0或1;LED1 ~ 8 对应了 TX-1C 六位数码管的SEG DS 1 ~ 6;4.138译码器可将LED 1 ~ 8的⼋个端⼝ 转化为 由 3个端⼝ (P22、P23、P24)控制,⽽G1、G2A、G2B端⼝ 被 称为 使能端;使能端相当于⼀种开关,如果电平有效,它就可以⼯作;如果电平⽆效,它就不⼯作;观察原理图发现,使能端是已经接好 VCC 和 GND 的,也就是说,其上电其实就会⼯作TX-1C的74HC573也是同理,但其并未压缩控制端⼝的数量;5.138译码器也叫“38线译码器”,是由3个线到8个线,其中C是⾼位、A是低位,CBA组成的数符合8进制,控制着Y0 ~ Y7 这8个端⼝;6.所以,138译码器的作⽤就是⽤来选中某⼀位数码管的74HC2451.74HC245是⼀种 双向数据缓冲器,VDD、GND都可视为电源,OE为使能(其 接地 就⼯作);2.DIR(direction),是⽅向的意思,它接到了VCC(⾼电平)上,将数据从左边输出到右边,从右边将数据读取回左边;DIR若接到低电平上,会将数据从右边输出到左边,从左边将数据读取回右边;3.单⽚机的⾼电平 驱动能⼒有限,其输出的最⼤电流不能太⼤;其低电平 驱动能⼒强;因此,LED模块才采⽤了低电平点亮的模式;4.如果⽤⾼电平 直接点亮 数码管,电流会很⼩,灯会很暗;所以其加⼀个缓冲器,缓冲器可以提⾼ 其驱动能⼒,如果直接将 数据 输出 给 数码管,数据就会被视为 驱动数据;现在增加了缓冲器,数据 就变成了 控制信号,控制信号 只需要很微弱,缓冲器 就可以接收到,缓冲器再通过⾃⼰接到的电源,输出 数据 到引脚上,这样控制的电流只需要⾮常⼩,就能驱动数码管 以⽐较亮的形式显⽰;2电容 是⽤来 稳定电源的,叫电源滤波;6.图右有 ⼀ 排阻,阻值为100R(即为100Ω),作⽤为 限流电阻 ,防⽌数码管的电流过⼤;TX-1C既没有电容,也没有排阻;原理总结1.⽤ 138译码器 使 数码管 的某⼀位 被选中;2.再给P0⼝⼀个 段码数据;TX-1C虽然⽤P0⼝控制段码输⼊,但也⽤P0⼝控制位选;需要先⽤ P2.6⼝和P2.7⼝控制输⼊数据是段码还是位选;P2.6⼝控制段码的输⼊;P2.7⼝控制位选的输⼊;例,给P2.6 数据1 (⾼电压)、给P2.7 数据 0 (低电压),就可以确定现在给数据是段码;1.由TX-1C的原理图可知,数码管内 LED灯 与 P0端⼝ 的顺序关系:(1)LED的名称定义是通⽤⽆疑的;(2)数码管本⾝的引脚名称不重要,重要的是 LED与哪个 P0 的 引脚 相连;2.由TX-1C的原理图可知, P0.0引脚 控制 数码管的最左位,P0.5引脚控制 数码管的最右位,剩余引脚是没有控制 数码管 位选 的作⽤的,哪个P0 的 引脚 控制 六位数码管的 哪位 很重要;代码实现静态数码管显⽰(让数码管第三位显⽰3).c#include<reg51.h>sbit D=P2^6; //段码⼝sbit W=P2^7; //位选⼝void main(){D=0;W=1;P0=0xFB;//1111 1011W=0;D=1;P0=0x4F;//0100 1111while(1);}下⾯写出了⼀个通⽤函数,可以让数码管在 第⼏个位置 显⽰ 哪个数#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;void NixieTube(uchar wei,uchar duan){ //NixieTube是数码管的英⽂uchar WEI,DUAN; //(Nixie是⼥⽔妖的意思)D=0;W=1;switch(wei){ //位选部分case 1:WEI=0xFE; break;case 2:WEI=0xFD; break;case 3:WEI=0xFB; break;case 4:WEI=0xF7; break;case 5:WEI=0xEF; break;case 6:WEI=0xDF; break;}P0=WEI;W=0;D=1;switch(duan){ //段码部分case 0:DUAN=0x3F; break;case 1:DUAN=0x06; break;case 2:DUAN=0x5B; break;case 3:DUAN=0x4F; break;case 4:DUAN=0x66; break;case 5:DUAN=0x6D; break;case 6:DUAN=0x7D; break;case 7:DUAN=0x07; break;case 8:DUAN=0x7F; break;case 9:DUAN=0x6F; break;case 10:DUAN=0x77; break; //Acase 11:DUAN=0x7F; break; //Bcase 12:DUAN=0x39; break; //Ccase 13:DUAN=0x3F; break; //Dcase 14:DUAN=0x79; break; //Ecase 15:DUAN=0x71; break; //Fcase 16:DUAN=0x80; break; //.}P0=DUAN;}void main(){NixieTube(3,3);while(1);}运⾏结果如下:4-2 动态数码管显⽰1.如果只是单纯让其显⽰完⼀个再显⽰⼀个,代码如下:#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};//将两个switch改进为数组void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:2.这是⼀个数码管的常见问题,称为 数码管的消影 ;位选-->段选-->位选-->段选-->位选-->......在这⼀位的段选(输⼊段码)结束,进⾏下⼀位的位选时,很短的时间内,上⼀位的数据会串到下⼀位数据⾥⾯去;所以我们在段选和位选之间,增加⼀个 P0 清零的操作;动态数码管显⽰(数码管同时显⽰123).c#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};void Delayms(unsigned int x){unsigned int j;for(;x>0;x--) for(j=110;j>0;j--);}void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];Delayms(1); //让数码管稳定显⽰,⽴刻清零会让数码管显⽰较暗P0=0; //清零操作}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:相关知识1.在运⾏某些代码时,TX-1C的LED点阵模块会乱闪2.将左下⾓ DOT-OE旁的跳线帽 拔下来即可 断开LED点阵模块,3.拔下来的跳线帽不要乱丢,可以 只插⼀个脚放在原处,也可以妥善保管在其他地⽅上图即为拔下来的跳线帽1.此元件为电容;2.104的数量规则与 第⼆节 所讲的电容是相同的,其单位是pF1000pF=1nF, 1000nF=1uF, 1000uF=1000mF, 1000mF=1FF 是⼀个很⼤的单位,正常电容都是uF、nF级别的;超级电容能达到1 ~ 2 F,其⼀般作为备⽤电池;3.TX-1C的原理图上,电容的量都是直接⽤单位标记好的。
郭天祥之十天学会单片机视频配套程序-实用!
Lesson1作业1、用位操作点亮第一个发光管.适用TX-1C单片机实验板晶振为 11.0592M/*********************************************************/#include<reg52.h>// 52单片机头文件sbit led1=P1^0; void main()// 单片机管脚位声明// 主函数{led1=0;// 将单片机P1.0 口清零while(1);// 程序停止在这里,在后面会讲到为什么这样写。
}2 、用总线操作点亮第一个发光管./*********************************************************/#include<reg52.h> // 52 单片机头文件void main(){// 主函数P1=0xfe; while(1);// 将单片机P1 口的 8 个口由高到低分别赋值为11111110 // 程序停止在这里,在后面会讲到为什么这样写。
}3、用位操作点亮最后一个发光管./*********************************************************/ #include<reg52.h>// 52单片机头文件sbit led8=P1^7; void main()// 单片机管脚位声明// 主函数{led8=0;// 将单片机P1.7 口清零while(1);// 程序停止在这里,在后面会讲到为什么这样写。
}4、用总线操作点亮最后一个发光管./*********************************************************/#include<reg52.h> // 52 单片机头文件void main(){// 主函数P1=0x7f; while(1);// 将单片机P1 口的 8 个口由高到低分别赋值为01111111 // 程序停止在这里,在后面会讲到为什么这样写。
单片机实训报告参考文献
一、引言随着科技的发展,单片机技术已经成为电子技术领域的重要分支,广泛应用于工业控制、智能家居、通信等领域。
为了更好地学习和掌握单片机技术,本文整理了单片机实训报告的相关参考文献,以供读者参考。
二、单片机基础理论参考书籍1. 李广弟,单片机基础[M],北京航空航天出版社,2001年。
本书详细介绍了单片机的基本原理、硬件结构、指令系统、程序设计等基础知识,适合初学者学习。
2. 王东峰,单片机C语言应用100例[M],电子工业出版社,2009年。
本书通过100个实例,深入浅出地讲解了单片机C语言编程技巧,适合有一定基础的读者学习。
3. 陈海宴,51单片机原理及应用[M],北京航空航天大学出版社,2010年。
本书以51单片机为例,详细介绍了单片机的原理、应用及编程技巧,适合有一定基础的读者学习。
4. 刘守义,单片机技术基础[M],西安电子科技大学出版社,2007年。
本书全面介绍了单片机技术的基础知识,包括硬件结构、指令系统、程序设计等,适合初学者学习。
5. 钟富昭,8051单片机典型模块设计与应用[M],人民邮电出版社,2007年。
本书以8051单片机为例,介绍了单片机在实际应用中的典型模块设计及编程技巧,适合有一定基础的读者学习。
三、单片机开发环境参考书籍1. 郭天祥,51单片机C语言教程[M],清华大学出版社,2013年。
本书详细介绍了Keil uVision4集成开发环境的使用方法,以及51单片机C语言编程技巧,适合初学者学习。
2. 李朝青,单片机原理及接口技术[M],电子工业出版社,2012年。
本书以51单片机为例,介绍了单片机的原理、接口技术及开发方法,适合有一定基础的读者学习。
3. 马忠梅,单片机的C语言应用和设计[M],机械工业出版社,2015年。
本书以单片机的C语言编程为核心,介绍了单片机在实际应用中的设计方法,适合有一定基础的读者学习。
四、单片机应用案例参考书籍1. 王明,单片机应用系统设计[M],北京航空航天大学出版社,2010年。
单片机51——郭天祥
术语:
电阻:180:18凹。103:10的三次方。
4R7:4.7K。
发光二极管:
点亮的电流是3~10MA左右,1.7V左右。
锁存器:
三极管:
显示器和接口:
单片机和LED的接口:
锁存器:
interrupt 0指明是外部中断0;
interrupt 1指明是定时器中断0;
interrupt 2指明是外部中断1;
interrupt 3指明是定时器中断1;
interrupt 4指明是串行口中断;using 0Fra bibliotek第0组寄存器;
using 1是第1组寄存器;
using 2是第2组寄存器;
using 3是第3组寄存器;
using 2时设置RS1=1,RS0 =0,用第2组寄存器,R0--R7的在数据存储区里的实际地址是08H-0FH。R0(10H)....R7(17H)
using 3时设置RS1=1,RS0 =1,用第3组寄存器,R0--R7的在数据存储区里的实际地址是00H-07H。R0(18H)....R7(1FH)
动态显示:
D/A和A/D的分辨率:
串口通信:
串行通信时传输的速率越快,传输的距离就越短。
TXD发送:。RXD接收:。
异步通信:
同步通信:
比特率:
用到右边的二。三。五线就可以通信的了。
PCON中只有字节地址97H:SMOD和串行通信接口有关:(在方式1.2.3时波特率和SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD为原来。)
lesson1_2:第一个灯亮。
STC89C51单片机介绍
资料多 郭天祥视频选用STC89C51型号 本学院大部分同学研究51单片机时以 STC89C51为基础
VCC,GND XTAL1:内部振荡电路反相放大器输入端,使用外部 晶体是连接晶体,使用外部振荡源时接地 XTAL2:与XTAL1不同是输出端 ALE/PROG:地址锁存信号输出引脚 PSEN:外部程序程序存储器读选通引脚 RST/VDD:复位信号引脚 EA/VPP:高电平,程序从外部程序存储器开始执行; 低电平从内存开始
IO引脚:P0,P1,P2和P3,其中P2P0组成了16位数据总线,P2位 高位,P0还可以复用为8位数据总线,P0,P1,P2可做普通IO口, P3具有第3功能 P3:P3.0:RXD串行口输入 P3.1:TXD串行口输出 P3.2:INT0外部中断0输入 P3.3:INT1外部中断1输入 P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入 P3.6:WR外部写控制 P3.7:RD外部读控制
Leabharlann 何为I/O口
I: 输入(input) 输入高低电平 O:输出(output) 输出高低电平
IO口是单片机最为重要的控制端口,是单片机实 现功能的基础,有输入输出的电流限制。输入 电流过大会烧坏管脚
51单片机编程
《单片机C51程序设计》课程标准一、课程性质课程名称:单片机C51程序设计课程代码:109025学时数:84其中课内实验学时数:34学分数:6适用专业:应用电子技术、电子信息工程技术二、课程教学目标1、课程知识目标掌握单片机基本原理,熟悉KEILL软件的使用,熟悉基于proteus软件的单片机的仿真方法,熟悉MCS-51的结构与应用设计方法,掌握C51结构与基本的程序设计方法,通过应用实例熟悉单片机C语言的在单片机应用设计中的用法。
2、课程技能目标通过本课程的教学,要求学生初步具有用C语言进行单片机系统设计的能力。
3、职业能力目标掌握电子产品设计的基本方法,能够以单片机作为核心进行电子产品的设计与开发。
三、课程内容本课程由理论教学模块、实验教学模块两大模块组成。
其中理论教学模块50学时、占60%,实践(含实验和实训)教学模块34学时,占40%。
各教学模块如下:1、理论教学模块2、实验教学模块四、学生学习指南模块一keil软件与proteus软件的使用Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选。
Proteus ISIS是一款Labcenter 出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。
该软件的特点:①全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS-232动态仿真、C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
51单片机实验心得体会5篇
51单片机实验心得体会5篇(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如述职报告、演讲发言、汇报材料、对照材料、心得体会、策划方案、规章制度、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays for everyone, such as job reports, speeches, presentation materials, reference materials, insights, planning plans, rules and regulations, teaching materials, complete essays, and other sample essays. If you want to learn about different sample formats and writing methods, please pay attention!51单片机实验心得体会5篇心得体会是内在世界的翻译,将情感的语言变为思考的文字,重视体会的写作,我们才能让自己的观点影响更多人,本店铺今天就为您带来了51单片机实验心得体会5篇,相信一定会对你有所帮助。
51单片机控制智能小车(3)
51单片机控制智能小车(毕业论文)目录前言方案设计与论证控制器模块选取电机模块选取电机驱动器模块选取电源模块选取硬件设计主控系统电机模块电机驱动模块电源模块按键模块软件设计直行设计转弯设计调试中存在的问题参考文献一、前言:随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。
全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。
可见其研究意义很大。
本设计就是在这样的背景下提出的,指导教师已经有充分的准备。
本题目是结合科研项目而确定的设计类课题。
我们设计的智能电动小车该具有圆形运行、三角形运行、矩形运行和三者一起运行的功能。
都是运行一循环自动停车。
根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加了四个按键,实现对电动车的运行轨迹的启动,并将按键的状态传送至单片机进行处理,然后由单片机根据所检测的各种按键状态实现对电动车的智能控制。
这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。
本设计采用STC89C52单片机。
以STC89C52为控制核心,利用按键的动作,控制电动小汽车的轨迹。
实现四种运行轨迹。
STC89C52是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。
二、方案设计与论证控制器模块选取我们采用STC公司的STC89S52单片机作为主控制器,STC公司的单片机内部资源比起ATMEL公司的单片机来要丰富的多,它在5V供电情况下,最多支持80M晶振、且内部有512B的RAM数据存储器、片内含8k空间的可反复擦些1000次的Flash只读存储器、1K的EEPROM、8个中断源、4个优先级、3个定时器、32个IO口、片机自带看门狗、双数据指针等。
但是不兼容Atmel。
从方便使用的角度考虑,我们选择了此方案电机模块选取采用普通直流电机。
直流电机运转平稳,精度有一定的保证。
直流电机控制的精确度虽然没有步进电机那样高,但完全可以满足本题目的要求。
单片机课设数码管同时循环显示0-9
电子信息工程学院电子设计应用软件训练任务【训练任务】:1、熟练掌握PROTEUS软件的使用;2、按照设计要求绘制电路原理图;3、能够按要求对所设计的电路进行仿真;【基本要求及说明】:1、按照设计要求自行定义电路图纸尺寸;2、设计任务如下:利用51单片机、BCD译码芯片和两位LED构成一个数码管扫描显示系统,两个数码管同时循环显示0~9。
3、按照设计任务在Proteus 6 Professional中绘制电路原理图;4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。
【按照要求撰写总结报告】指导教师年月日负责教师年月日学生签字年月日成绩评定表摘要该专业是前沿学科,现代社会的各个领域及人们日常生活等都与电子信息技术有着紧密的联系。
全国各地从事电子技术产品的生产、开发、销售和应用的企事业单位很多,随着改革步伐的加快,这样的企事业单位会越来越多。
为促进市场经济的发展,培养一大批具有大专层次学历,能综合运用所学知识和技能,适应现代电子技术发展的要求,从事企事业单位与本专业相关的产品及设备的生产、安装调试、运行维护、销售及售后服务、新产品技术开发等应用型技术人才和管理人才是社会发展和经济建设的客观需要,市场对该类人才的需求越来越大。
为此电子信息工程专业的人才有着广泛的就业前景,毕业生可从事电子设备、信息系统和通信系统的研究、设计、制造、应用和开发工作。
目录一、任务说明 (1)1.1 专业介绍 (1)1.2 专业背景与市场预测 (1)1.3 本课题分析 (1)二、绘制原理图 (2)2.1 Proteus软件介绍 (2)2.2 原理图绘制说明 (2)2.3 原理图绘制步骤 (3)三、程序编译说明及程序流程图 (6)3.1 Main程序说明 (6)3.2 初始化子程序说明 (6)3.3 display(uchar tmp)子程序说明 (7)3.4 延时子程序说明 (8)3.5 中断子程序说明 (9)四、Proteus仿真说明 (11)4.1 导入仿真文件 (11)4.2 进行仿真 (12)五、课程设计体会及合理化建议 (14)致谢 (16)一、任务说明1.1专业介绍电子信息工程是一门应用计算机等现代化技术进行电子信息控制和信息处理的学科,主要研究信息的获取与处理,电子设备与信息系统的设计、开发、应用和集成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
郭天祥51单片机授课视频内容 讲次内容细节
第一讲学单片机预备知识、
如何点亮一个发光管
单片机能做什么,基本电子知识,如何用TX-1C单
片机学习板学习单片机,C51知识简介,如何申请
免费芯片样品。
点亮一个发光管,
第二讲流水灯设计、蜂鸣器发声、
继电器控制
简单延时程序、子程序调用、带参数子程序设计、
流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱
动继电器,集电极开路的概念及应用。
第三讲数码管显示的原理、
数码管的静态显示
共阳、共阴数码管显示原理、定时器工作方式介绍、
重点讲述工作方式2、中断概念及中断函数写法、
外部中断试验、定时器中断应用
第四讲数码管的动态显示原理及
应用实现
动态扫描概念、
定时器、中断加深
用单片机的定时器及中断设计一个60秒定时器
第五讲独立键盘、矩阵键盘
的检测原理及实现
键盘用来做什么、如何键盘检测、消抖、键盘编码、
带返回值函数写法及应用
第六讲AD、DA的工作原理
及实现、运放电路
模拟电压与数字电压的关系、为什么要使用AD及
DA、ADC0804的操作方法、DAC0832的操作方法
第七讲串口通讯原理及操作流程串口通讯工作方式、
10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。
第八讲 1602液晶最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作
第九讲IIC总线AT24C02芯片工
作原理
IIC总线工作原理、
目前非常通用的一种通信机制
第十讲利用51单片机的定时器设
计一个时钟
综合运用51单片机知识设计一个可以随意调节时
间、带整点闹铃的时钟。
(其中用到定时器、中断、
按键、蜂鸣器、数码管或串口通信)
第十一讲用DS12C887时钟芯片设
计一个高精度时钟
DS12C887内部带有锂电池,系统掉电情况下可自
行精确走10年,并带有闹钟功能、年、月、日、
时、分、秒等。
(本节由学生自己设计电路)
第十二讲使用Protell99绘制电路图
全过程
Protell99软件使用、元件库、封装库设计、绘制原
理图、错误检查、生成PCB、手动、自动布线、送
去加工
第十三讲Altium designer 6.5绘制电
路图全过程
最顶级电路板设计软件Altium Designer使用、元件
库、封装库设计、绘制原理图、错误检查、生成PCB、
手动、自动布线、送去加工。