基于KeilC51和Proteus花样流水灯系统的设计

谭艳春 朱又敏 刘目磊
摘 要:单片机技术日益成熟,已广泛应用于工业自动化、交通控制、智能仪表等众多领域。为了进一步研究并拓展单片机的应用,本文利用80C51单片机、KeilC51和Proteus软件对花样流水灯系统进行了完整的软硬件开发与设计。Proteus在线仿真验证了系统设计的稳定性和正确性。该系统的框架结构具有良好的可移植性,可根据实际需求生成不同的智能派生产品,具有较强的实际指导意义和应用价值。
关键词:KeilC51;Proteus;单片机;LED流水灯;系统设计
中图分类号:TP399 文献标识码:A
文章编号:2096-1472(2018)-11-14-03
1 引言(Introduction)
单片机无论从组成还是逻辑功能上都具有微机系统的特性,是一门实践性很强的软硬件结合的技术,且体积小巧,因此可以嵌入到各种应用系统中作为指挥决策中心,实现系统的智能化[1-3]。目前比较流行的单片机仿真软件和集成开发软件分别为Proteus和Keil。
Proteus不仅具有其他EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。Keil是德国Keil Software公司出品的单片机集成开发环境,该软件支持51单片机的所有兼容机,它包括了C编译器、宏汇编、连接器、库管理及一个功能强大的仿真调试器在内的所有开发模块[4-7]。
2 硬件电路设计(Design of hardware circuit)
该系统的硬件电路主要包括时钟电路(采用内部时钟方式,晶振频率为12MHz)、复位电路、输入和输出电路四部分。其中输入电路是四个按钮开关K1—K4,并通过四输入与门74AS21将按键信息从外部中断引脚0(P3.2)读入系统,以触发中断,让CPU及时响应按键操作。由于80C51单片机P0口的内部电路结构问题,P0口作为I/O时必须接上拉电阻。输出部分由八个共阳型发光二极管及限流电阻(200Ω)组成。利用Proteus仿真软件生成的硬件电路如图1所示。
按钮开关K1—K4对应的功能如下。
(1)K1:启动按钮,当K1按下时,流水灯自上而下,又自下而上轮流被点亮,即D1→D2→D3…D8→D7→D6→D5…D1,反复重复,直到有新的按鍵按下,闪烁间隔是50ms。简记为模式1方式。
(2)K2:当K2按下时,流水灯自上而下,又自下而上间隔被点亮,即D1→D3→D5→D7→D8→D6→D4→D2,反复重复,直到有新的按键按下,闪烁间隔是50ms。简记为模式2方式。
(3)K3:当K3按下时,D1、D3、D5和D7同时被点亮,然后D2、D6、D4、D8同时被点亮,反复重复,直到有新的按键按下,间隔是1s。简记为模式3方式。
(4)K4:关闭按钮,当K4按下时,流水灯D1—D8同时被点亮,闪烁三次(间隔为100ms)后,全部熄灭。简记为模式4方式。
3 KeilC51环境下的编程(Programming in the KeilC51)
3.1 软件编程要点分析
(1)通过P0口的低四位引脚将按键信息读取进来,由电路连接方式可知,无按键按下时,四个引脚全部为高电平,若有按键按下,对应的引脚将由高电平变为低电平。可利用指令P0&0x0f获取P0口低四位引脚电平的变化信息。
(2)定义位变量on_off、style1、style2,根据这三个位电平的变化来控制程序的转移。这里需用到关键字bit,而不是sbit,虽然二者都可以进行位定义,区别在于sbit只能用来对特殊功能寄存器的位进行定义,如以下写法bit on_off;sbit botton1=P3^2是正确的,而sbit on_off;bit botton1=P3^2是错误的。
(3)P2口接的是共阳极LED发光二级管,因此只有对应引脚输出低电平时等才会被点亮,可将D1、D2、D3…D8被点亮时P2口对应的输出放到一个数组中,即led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}。
(4)该系统可通过查询法和中断法两种思路来实现。与查询法相比,中断法具有以下优点:首先,只有在按键按下时,CPU才执行相关的中断程序,而其他时间是不占用CPU的时间;其次,中断法可以更及时快速地响应按键操作。因此,为了提高CPU的工作效率,本系统采用中断扫描方式进行设计实现。
(5)关于中断方式的几点说明:(1)要使用外部中断,必须将中断允许打开,即对中断允许寄存器IE进行正确设置。IE的字节地址为A8H,所以即可以字节操作,又可以位操作,如要开启外部中断0,即可写IE=0x81H,也可写EX0=1,EA=1,二者的作用是等同的。(2)外部中断包括电平触发(ITx=0)(外部中断源接P3.2脚时,x=0;外部中断源接P3.3脚时,x=1)和边沿触发(ITx=1)两种触发方式。其中边沿触发的外部中断请求,在CPU响应中断后,自动由硬件对中断请求标志位EIx清0,即系统自动撤销中断请求;而电平触发的外部中断请求,硬件不能自动对中断请求标志位EIx清0,必须在撤销P3.2或P3.3引脚上的低电平后,再利用软件对中断请求标志位清0,比较繁琐。因此本系统采用边沿触发方式。
3.2 程序流程图
该系统的程序流程图如图2所示。
3.3 系统源代码
该花样流水灯系统的完整源代码如下:
#include;头文件reg51.h或reg52.h中包含了对8051型单片机特殊功能寄存器(SFR)名的集中说明。
Unsigned char led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void delay(unsigned char time);//延时函数的声明
bit on_off=0, style1=0, style2=0;//定义位控制变量
button() interrupt 0{ //中断0函数
switch(P0&0x0f) {
case 0x0e: on_off=1, style1=1;break; //模式1方式的启动条件
case 0x0d: on_off=1, style1=0; style2=1;break; //模式2方式的启动条件
case 0x0b: on_off=1, style1=0;style2=0;break; //模式3方式的启动条件
case 0x07: on_off=0;break; //模式4方式的启动条件
}}
void main() {
char i;
IT0=1;EX0=1;EA=1; //边沿触发、外部中断0允许、总中断允许
while(1) {
if (on_off)
if (style1) //模式1运行方式
for (i=0;i<=7;i++) {
P2=led[i];
delay(5);
}
for (i=6;i<=0;i--) {
P2=led[i];
delay(5);
}
else if (style2) //模式2运行方式
for (i=0;i<=7&i;%2==0;i++) {
P2=led[i];
delay(5);
}
for (i=7;i<=0&i;%2!=0;i--) {
P2=led[i];
delay(5);
}
else //模式3运行方式
P2=0x55;
delay(100);
P2=0xaa;
delay(100);
else //模式4运行方式
for (i=3;i<0;i--) {
P2=0x00;
delay(10);
P2=0xff;
}}}
void delay(unsigned char time) { //定义延时函数
unsigned int i;
for(;time>0;time--)
for(i=10000;i>0;i--);
}
3.4 系统的拓展
该系统的框架结构具有良好的可移植性,可根据实际需求生成不同的智能派生产品,主要可从流水灯的控制开关、闪烁节奏、闪烁花样三个方面进行改变。
(1)流水灯控制开关的改变
首先控制开关的数量可以根据实际需要进行增减。80C51一共有四组I/O口P0、P1、P2、P3,它们的地址分别为80H、90H、A0H、B0H,都是8的整数倍,因此这32个引脚全部可以位操作。若是独立按键,最多可以接(32—N)个;若是接行列式键盘开关,最多可以扩充为(32—N)2个,其中N为流水灯的数量。
其次控制开关的作用完全可以通过修改源代码进行改变,无需进行硬件变动。
(2)流水灯闪烁节奏的改变
基本延时函数delay(unsigned char time)的定时时间为10000*机器周期,若采用12MHz晶振,机器周期则为1us,即delay(1)=10ms,delay(50)=500ms,delay(t)=10*tms。因此通过简单的调用delay(t)函数并根据需要修改t的取值即可改变流水灯闪烁的快慢。
(3)流水灯闪烁花样的改变
首先流水灯的数量可以根据实际需要进行增减,这点与控制开关相类似,不再累述。其次流水灯的闪烁花样亦可通过修改源代码实现。
4 程序加载及仿真演示(Program loading and simulation demonstration)
将调试过无语法错误的代码文件*.HEX加载到Proteus原理图的80C51单片机中,运行后,依次按下K1—K4,可以观察到与预期一致的流水灯效果。由于文本的限制,无法展示系统运行的动态过程,故略。
5 结论(Conclusion)
本文设计的花样流水灯系统可以根据输入信息的不同,按照预先设定的花样(如灯亮持续时间、流向等)进行显示。该流水灯系统可以应用到装饰、交通等生活中许多领域,并可以根据实际需求进行修改。借助这种通用框架结构,很容易生成不同的智能派生产品,以适应不同的应用场合。因此该系统具有较强的实际指导意义和应用价值。
参考文献(References)
[1] 曾宇,宋永端,王弼堃.基于Proteus和Keil軟件的温室环境监测系统开发[J].农业工程学报,2012,28(14):177-183.
[2] 单纯,荆高鹏,胡昌振,等.基于漏洞知识库的8031单片机系统软件漏洞检测算法[J].北京理工大学学报,2017,37(4):371-375.
[3] 吴可汗,何怡刚.基于单片机的低功耗电能收集充电器设计[J].电工技术学报,2013,28(S2):185-188.
[4] 于博,杨晓庆.基于Keil C51与Proteus仿真联合的单片机应用研究[J].软件工程师,2015,18(9):51-52.
[5] 林立等.单片机原理及应用——基于Proteus和Keil C[M].北京:电子工业出版社,2018.
[6] 徐磊,申红军,蔡亚永.单片机开发Keil C51与Proteus仿真联合应用研究[J].电子设计工程,2013(9):178-181.
[7] 杜树春.基于Proteus和Keil C51的单片机设计与仿真[M].北京:电子工业出版社,2012.
作者简介:
谭艳春(1980-),女,硕士,讲师.研究领域:系统设计,信号处理.
朱又敏(1966-),男,硕士,工程师.研究领域:射频通信.本文通讯作者.
刘目磊(1980-),男,本科,工程师.研究领域:雷达系统设计及故障分析.
相关文章!
  • 融合正向建模与反求计算的车用

    崔庆佳 周兵 吴晓建 李宁 曾凡沂<br />
    摘 要:针对减振器调试过程中工程师凭借经验调试耗时耗力等局限性,引入反求的思想,开展了

  • 浅谈高校多媒体教育技术的应用

    聂森摘要:在科学技术蓬勃发展的今天,我国教育领域改革之中也逐渐引用了先进技术,如多媒体技术、网络技术等,对于提高教育教学水平有很

  • 卫星天线过顶盲区时机分析

    晁宁+罗晓英+杨新龙<br />
    摘 要: 分析直角坐标框架结构平台和极坐标框架平台结构星载天线在各自盲区状态区域附近的发散问题。通过建