内容07电科电子档_第1页
内容07电科电子档_第2页
内容07电科电子档_第3页
内容07电科电子档_第4页
内容07电科电子档_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.1111222233LED5555899.1111222233LED5555899I/0FlashFlex51 CMOS是采用 8051 的指令集, 并和标准的 805116/24/40/72Kbyte 的片内 FLASH SSTCMOS器,第一块(BLOCK0)的FLASH8/16/32/64KbyteEEPROMFlashFlex51 CMOS是采用 8051 的指令集, 并和标准的 805116/24/40/72Kbyte 的片内 FLASH SSTCMOS器,第一块(BLOCK0)的FLASH8/16/32/64KbyteEEPROM040MHzMicrocontroller-bas

2、edMulti-FunctionElectronicSCM technology can be used to make a memory of multiple sets of data and time the record is Microcontroller-basedMulti-FunctionElectronicSCM technology can be used to make a memory of multiple sets of data and time the record is complete data set can display memory! We use

3、51 microcontroller as the core! SCM specific for the SST89E516RD2 SST company is 8-bit FlashFlex51 family members,Flash memory is the use of advanced design and CMOS semiconductor technology, these are using the 8051 instruction set, and patible controller. With 16/24/40/72Kbyte chip FLASH chip, usi

4、ng the SSTs proprietary CMOS flash memory technology, memory o two independent program memory, one (BLOCK0) occupation 8/16/32 ernal program memory space, the second block (BLOCK0) occupied ernal program memory space. 8Kbyte of the second block can be mapped to a ow address space so be hidden and as

5、 similar to the independent EEPROMThe designuses SST89E516RD2the core with the sary circuitry, and then cathode 7-segment 4 to display the output, with the key control option supplywither is 4.50V - 5.50V operation, so the frequency of 0 40MHz er Design is o (1) Features (2) systems engineering and

6、material selection production programs and production flow chart (4) programming (5) circuit (6) production kind。How to use microcontroller technology is the core of my graduation! not of and technology with the development elligent single chip technology e a technology products are now the core and

7、 foundation. SCM knowledge is about to wehave very importantKeywords:SCM ;multifunctional;electronic第一章 绪论单片机的器、I/O 单片机的初级阶段 1974 年1978elMCS-48第一章 绪论单片机的器、I/O 单片机的初级阶段 1974 年1978elMCS-48elMCS-51系列单片机:8位CPU、4KROM、128RAM、48 位并口、1 个全双工串行口、2 16 位定时/计数器。寻址范围 控制的特点进一步突出。现在,MCS-51 8KROM、232RAM、58位并口、1个全双工串

8、行口、216位定时/64K810ADC、1 I/OI/O一的影响,所以单片机的可靠性非常高设计I/O口;而中间需要有一定的延时,原因 材料STT 公司的 SST89E516RD 与 设计I/O口;而中间需要有一定的延时,原因 材料STT 公司的 SST89E516RD 与 805 完全兼容, 开发工具兼容,封装与引脚兼容。其RAM 共有 1Kbyte(256Byte + 768Byte)256Bytes寄存器/数据 8K/16K/32K/64Kbyte内含两块高性能 SuperFlash器(EEPROM)块(每个块的扇区大小的主块 + 8Kbyte 的次都是 128Byte)用 SoftLoc

9、k 可以独立地对每个块进行安全加锁。实现应用中再编程(IAPIn-Application-Programming)IAP 过程中可实现器的覆盖,支持中断响应。支持最大 64KByte 外部程序和数据存储空间 P1 的 5、6、7 等三个引脚可驱动大电流( 每个可达 16mA)3 个 位定时/计数器(T0T1T2) 全双工增强型串行通讯口(UART) 帧错误识别自动地址识别,10 个中断源, 4 个优先级,提供 4 个外部中断输入,带内部可编程看门狗(WDT),可编程计数器阵列(PCA),4 个 8 位 I/O个 识别自动地址识别,10 个中断源, 4 个优先级,提供 4 个外部中断输入,带内部

10、可编程看门狗(WDT),可编程计数器阵列(PCA),4 个 8 位 I/O个 I/O 引脚)和 1 个 4 位口,共 36 个 I/O。这款 51 单片机具备设计所需要的所有功能, 同时他也是市面上常见的一款单片机, 所以它作为本次设计的单片机。口(本次选择通常把数码管、符号管、米字管共称为笔画显示器; 而把笔画显示器和矩阵管统称为字符显示器。因为这里采用的 7 段数码管所以详细介绍一下数码管的分类: 数码管可以按字高、颜色、结构、各发光段的连接方的LED 显示的原理。如图 2.1 所示为七段 LED 数码管的原理图,通过该图可以很容易LED 管的工作原理的不同点。对于共阴极的数码管,所LED

11、 是否点亮。若阳极引出脚接地,则 LED 被熄灭;若阳极引出脚接高电平, 则 LED 被点亮。图7段数码管的原理 LED LED LED 主要主要的设计方定义/主要主要的设计方定义/定义共阳极字符编码表uchar code TABLE10=0 xa0,0 xf9,0 xc4,0 xd0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x98;uum;/计数值LED0,LED1,LED2,LED3; / 各位的数值uchar ms;/用于表示数码管显示位及计算是否 10ms 到设定定时器 T0 的工作方式TMOD0 x01T0 方式 1 计时 1ms TL0=0 x18;TH0=

12、0 xfc;EA1开中断, 启动定时器TR0=1TR0=1;动态显示字符的子程序void display(void)switch(ms%4) case P3=0 xfe;/点亮百分一秒位的 LED 数码管 P1=tableLED3; / 输出百分一秒位数值 P1_7=1;break; case P3=0 xfd;P1=tableLED2;/点亮十分一秒位的 P1_7=1;/ 输出十分一秒位数值 break;case P3=0 xfb;/点亮秒位的 LED 数码管 P1=tableLED1; / 输出秒位数值 P1_7=0;/点亮小数点位break; case P3=0 xf7;/点亮十秒位的

13、LED 数码管 P1=tableLED0输出十秒位数值 P1_7=1;break;default: 数码管计算各位显示字符的子程序void add1(time)uua=time/1000; LED计算各位显示字符的子程序void add1(time)uua=time/1000; LED0=a;/计算十秒位数值 n=time%1000; LED1=(n/100);/计算秒位数值n=n%100LED2=(n/10);/ 计算十分一秒位数值 LED3=n10计算百分一秒位数值图应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8 个显示笔划 a,b,c,d,e,f,g,dpCOM 增加位选通

14、控制 应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的 8 个显示笔划 a,b,c,d,e,f,g,dpCOM 增加位选通控制 uchar delay; for(;)display();/调用显示子程序for(delay=0;delay=200;delay+);/延时程序ms+;/点亮下一个数码管这是一个很简单的动态显示程序,完全按照动态显示的规则来编写的,在很多单片机的入门中对单片机的显示都是采用类似的编程法。但是这个程序有一个很大,就是延时程序的出现。延时程序实际上就是使单片机不断地进行递减或递加计数,而在这一段时间内单片机是不能做其他任何事情的。这显然不符合实际应用的要求,因为在

15、实际的应用中单片机除了显示外还有很多其他的事情是要处理的。 实际应用时这个显示程序要进行改写。的功能。对于一组键盘,必定会通过一个接口电路与单片机相连。CPU 以消抖。硬件消抖:硬件消抖主要可以通过双稳态电路和滤波电路等消抖电路对按键进行消抖处理。常用的消抖电路如图 3.2 消抖消抖其实10ms10ms 单片机除了显示外还有很多其他的事情是要处理的。 实际应用时这个显示程序要进行改写。的功能。对于一组键盘,必定会通过一个接口电路与单片机相连。CPU 以消抖。硬件消抖:硬件消抖主要可以通过双稳态电路和滤波电路等消抖电路对按键进行消抖处理。常用的消抖电路如图 3.2 消抖消抖其实10ms10ms

16、图(10ms进行一次查键)图(10ms进行一次查键)图图 3.2 为其中一个查键的流程图,cheak 为该键消抖标志位。当没有键被按下,则 cheak 0cheak0,则说明了还没有进行消抖处理, 将 cheak 置为 1 同时返回。因为过 10ms 才再进入一次查键, 所以相当于进行了 10ms 的延时效果,程序不需要进行延时。若再次查键的时候发现该键的消抖标志位 cheak 为 1bit /cheak P2_1 bit keydown;bit start; bit stop;void scan(void)P2=0 x0f; if(P2_1=0).的消抖标志位/keydown P2_1 /秒

17、表启动标志位/秒表停止标志位/读入前先将电位拉高 if(cheak=0)cheak=1;返回/若 为 0,则将 cheak 置 1 elsekeydown=1;置 1 cheak=0;if(P2_1=1) if(cheak=0)cheak=1;返回/若 为 0,则将 cheak 置 1 elsekeydown=1;置 1 cheak=0;if(P2_1=1) while(keydown=1)键/若 为 1/同时将 cheak 置 /若 P2_1 和 keydown 均为1,则该 keydown=0; if(start=0)start=1;stop=0; else start=0;stop=1;

18、键才开始实现该按键的功。CUP Voidif errupt1using 复位路如图 4.1 所示。图对于复位路如图 4.1 所示。图对于 51 单片机来说他是高频复位,所谓高频复位就是 RST 保持两个机器周期以上的高电平时自动复位。从图 4.1 中可以看出该电路可以实现两个功能:手动复位:首先经过上电复位,当按下按键时,RST 直接与 VCC 相连,为高电平上,RSTRST4.2 元件及其单片机: SST89E516RD,主控制器。七段共阴数码管: LED1-LED4, 用于显示。NPN 三极管: SS9012, 制作放大电路。按键 K1: 在正常情况下, 用于控制单一计时模式下秒表的启动/

19、停止。在倒计时初值设定的情况下为倒计时初值的增加按键, 按一下 K1,倒计时初值增加 1; 按住 K1 不放,倒计时初值连续增加;快速连按两下 K1 然后不放, 则倒计时初值快速增加, 增加的速度是连续增加的 10 倍。按键 K2: 在正常情况下, 用于控制连续计时 8 个的计时模式下秒表的启动/停止。在倒计时初值设定的情况下为倒计时初值的减少按键, 按一下 K2, 倒计时初值减少 1;按住 K2 不放, 倒计时初值连续减少; 快速连按两下 K2 然后不放, 则倒计时初值快速减少, 减少的速度是连续减少的 10 倍。K3: 用于秒表的功能的选择, 在默认情况下, 为秒表的计时准备模式。按下 K

20、3 后秒表进入倒计时的状态, 这时通过按键 K1 和 K2 可以进行倒计时初值的调整, 再按下 K3K3: 用于秒表的功能的选择, 在默认情况下, 为秒表的计时准备模式。按下 K3 后秒表进入倒计时的状态, 这时通过按键 K1 和 K2 可以进行倒计时初值的调整, 再按下 K3 则进入倒计时。按键 RESET: 在复位电路中, 对单片机起复位作用。LED5: 用于显示单片机的工作状态, 在准备计时的时候, LED5 点亮; 在计时的时候,LED5 闪烁;在倒计时初值设定和倒计时工作的时候, LED5 熄灭。LED6: 用于显示单片机的工作状态, 在准备计时和计时工作的时候, LED6 熄灭;

21、在倒计时初值设定的时候, LED6 点亮; 在倒计时工作的时候, LED6 闪烁4.3 I/0接P1.0P1.7: 与数码管的各个位相连, 用于传送数码管的段位码。P3.0P3.3: 与数码管 LED1LED4 相连, 通过单片机的 P3.0可以控制 LED 的显示。P2.1: 和按钮 倒计时初值的增加。P2.0: 和按钮 用于决定单一计时模式下的秒表启动/停止和相连,相连,用于决定连续计 8 个的计时模式下秒表启动/停止和倒计时初值的减少。P2.2: 和按钮 K3 相连,用于单片机工作模式的选择。P2.6:和 LED6 相连, 用于显示单片机的工作状态。P2.7:和 LED5 相连, 用于显

22、示单片机的工作状态程序流5.1图程序流5.1图5.35.3倒计时的初值增加流程图倒计时的初值减少流程图倒计时的功能流程图程倒计时的初值减少流程图倒计时的功能流程图程。MCS-51 系列单片机系统及应用M. 2009,35(02:422002.7(1MCS-51 系列单片机系统及应用M. 2009,35(02:422002.7(1:,2006.MAX232 MCS-51 PC理工学院学报11.SST单片机应J 弘微科总程序头文件和变量定义包含 reg52.h 头文件。变量定义:在程序中用到的变量如表 1 所示。/头文件及变量声名 #include #define uchar unsigned 总

23、程序头文件和变量定义包含 reg52.h 头文件。变量定义:在程序中用到的变量如表 1 所示。/头文件及变量声名 #include #define uchar unsigned #define /定义各管脚P2_0=P20; P2_1=P21; P2_2=P22; P1_7=P17; P2_6=P26; /各变量的声名uchar code TABLE10=0 xa0,0 xf9,0 xc4,0 xd0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x98;/段位码uchar ms,mm;m,tab8;LED0,LED1,LED2,LED3;/各位的数字bit_add1; ke

24、ydown; double_key; K2_keydown; double_sub; K3_keyup; K3_keydown; count_down;bit start; bit stop;bit eight_start; bit eight_stop;主程序在主程序中需要完成以下的功能: 首先调用初始化函数对各个变量进行初始化, 再对定时器的定时初值进行设定, 接着根据各个标志位的值来判断单片机的工作模式及工作状态。键盘扫描由scan( )来完成,各个位的数值的计算由 add1( )来完成。void man bit eight_start; bit eight_stop;主程序在主程序中需

25、要完成以下的功能: 首先调用初始化函数对各个变量进行初始化, 再对定时器的定时初值进行设定, 接着根据各个标志位的值来判断单片机的工作模式及工作状态。键盘扫描由scan( )来完成,各个位的数值的计算由 add1( )来完成。void man begin1(); TMOD=0 x01; TL0=0 x18;TH0=0 xfc; EA= 1; TR0=1for(;) if(scan key=1)/调用初始化函数/进行键盘扫描ey=0;scan();if(double_key=1) P2_6=0; P2_7=1; m=m+10add1(m);/倒计时初值快速增加i/倒计时初值连续增加P2_6=0;

26、P2_7=1; m + + ;add1(m);bit_add1=0;if(add=1)P2_6=0;P2_7=1;add=0; m + + ;add1(m);/倒计时初值增加 if(double_sub=1) P2_6=0;P2_7=1; m=m-add1(m);/倒计时初值快速减少iif(double_sub=1) P2_6=0;P2_7=1; m=m-add1(m);/倒计时初值快速减少i/倒计时初值连续减少P2_6= P2_7=1; m-;add1(m); bit_sub=0;if(sub=1)P2_6=0;P2_7=1;sub=0; m-;add1(m);if(start=1)/计时开

27、始1/倒计时初值减少if(mm=0)P2_7=!P2_7; P2_6=1;m+if(m=6000)m=0;add1(m);if(stop=1) /计时停止if(count_down=1)/倒计时开始 if(m0)m-; P2_7=1;if(mm=0)P2_6=!P2_6;初始化子程序初始化子程序通常是在一开始就被调用, 用来初始化各个变量, 同时也显示了单片机上电后的工作状态。虽然有些变量在定义的时候已被默认初始化了, 但是为了自己检查方便,void begin1(void)fast_add=0; bit_add1=0; m m = 0 ;m=0初始化子程序通常是在一开始就被调用, 用来初始化

28、各个变量, 同时也显示了单片机上电后的工作状态。虽然有些变量在定义的时候已被默认初始化了, 但是为了自己检查方便,void begin1(void)fast_add=0; bit_add1=0; m m = 0 ;m=0ms=0LED0=0; LED1=0; LED2=0; LED3=0add=double_key=0;还是应该加上初始化的子程序。ey=0;keydown=0;K3_keydown=0; count_down=0; P2_6=1;P2_7=0;定时器中断子程序这里的秒表的计时、键盘的扫描及数值显示等都是利用定时中断来完成的。定时的时间 设为 1ms, 用于数值显示; 同时利用累

29、加的方法实现 10ms 和 200ms 的定时, 用于键盘的扫描及控制显示灯的闪烁。void time0(void)TL0=0 x18;TH0=0 xfc; ms+;if(ms=10) ms=0; mm+if(mm=20)mm=0;ey=1;显示子程序显示子程序其实包括了 display()add1(time)两个子程序。add1(time)是用来计算数码管各个位要显示的数值的子程序, display()是查段位码表及进行动态扫描的子程序。 显示子程序其实包括了 display()add1(time)两个子程序。add1(time)是用来计算数码管各个位要显示的数值的子程序, display(

30、)是查段位码表及进行动态扫描的子程序。 void add1(time)uua=time/1000; LED0=a;/计算十秒位数值 n=time%1000; LED1=(n/100);/计算秒位数值 n=n% 100 LED2=(n/10);/计算十分一秒位数值 LED3=n% 10/计算百分一秒位数值void display(void)switch(ms%4) case 0: P3=0 xfe;P1=tableLED3; P1_7=1;break; case P3=0 xfd;P1=tableLED2; P1_7=1;break; case P3=0 xfb;P1=tableLED1;P1_

31、7=1break; case P3=0 xf7;P1=tableLED0; P1_7=1;break;default: 键盘扫描键盘扫描的子程序完成的任务是每 结果对相应的标志位进行赋值。因为要实现比较多的功能,void键盘扫描键盘扫描的子程序完成的任务是每 结果对相应的标志位进行赋值。因为要实现比较多的功能,void scan(void) char P2=0 x0f;/实现倒计时的功能 if(cheak=0)cheak=1;/若 cheak 为 0, 则按键没消抖 else K3_keydown=1;cheak=0;P2=0 x0f;/K3 弹起 K3_keyup=1; K3_keydown=0; if(K3_keyup=1)if(mm=0) /0.2 秒内连按 2 次 K1,则快速增double_key=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论