TempData[0]=dofly_DuanMa[num/10];//分解显示信息,如要显示68,则68/10=6 68=8
TempData[1]=dofly_DuanMa[num]; // Display(0,8); //显示全部8位
//主循环中添加其他需要一直工作的程序 } }
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS
------------------------------------------------*/ void DelayUs2x(unsigned char t) {
while(--t); }
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0~255 这里使用晶振12M,精确延时请使用汇编 ------------------------------------------------*/ void DelayMs(unsigned char t) {
while(t--) {
//大致延时1mS DelayUs2x(245); DelayUs2x(245); } }
/*------------------------------------------------ 显示函数,用于动态扫描数码管
输入参数 FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示
如输入0表示从第一个显示。
Num表示需要显示的位数,如需要显示99两位数值则该值输入2
21
------------------------------------------------*/
void Display(unsigned char FirstBit,unsigned char Num) {
static unsigned char i=0;
DataPort=0; //清空数据,防止有交替重影 LATCH1=1; //段锁存 LATCH1=0;
DataPort=dofly_WeiMa[i+FirstBit]; //取位码 LATCH2=1; //位锁存 LATCH2=0;
DataPort=TempData[i]; //取显示数据,段码 LATCH1=1; //段锁存 LATCH1=0; i++;
if(i==Num) i=0; }
/*------------------------------------------------
定时器初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) {
TMOD |= 0x01; //使用模式1,16位定时器,使用\符号可以在使用多个定时器时不受影响
//TH0=0x00; //给定初值 //TL0=0x00;
EA=1; //总中断打开 ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 }
/*------------------------------------------------ 定时器中断子程序 ------------------------------------------------*/ void Timer0_isr(void) interrupt 1 {
TH0=(65536-2000)/256; //重新赋值 2ms TL0=(65536-2000)%6;
22
Display(0,8);
}
4.4软件仿真与调试:
4.4.1 Proteus简介:
Proteus嵌入式系统仿真与开发平台是英国Labcenter公司开发的,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台。它是一种可视化的支持多种型号单片机(如51、PIC、AVR、Motorola hcll等),并且支持与当前流行的单片机开发环境(Keil、MPLAB、IAR)连接调试的软硬件仿真系统。Proteus除了具有和其他EDA工具一样的原理图、PCB自动或人工布线及电路仿真功能外,针对微控制系统与外设的混合电路的电路仿真、软件仿真、系统协同仿真也做到了一体化和互动效果,是目前电子设计爱好者广泛使用的电子线路设计与仿真软件Proteus和Multisim功能的联合和进一步发展。
Proteus软件已有近20年的历史,在全球拥有庞大的企业用户群,是目前唯一能够对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原型时就可对系统进行设计、测试与验证。由于Proteus软件包括逼真的协同仿真功能,得到了包括剑桥大学在内的众多大学用户作为电子学或嵌入式系统的课程教学、实验和水平考试平台。目前,Proteus在国内单片机开发者及单片机爱好者之中已开始普及,有很多开发者已经开始用此开发环境进行仿真。
4.4.2 仿真结果:
如图仿真所示,用按键K1模拟一块的硬币,当按键按下时,数码管加一。当数值投入的数额达到3是,可乐的营业灯亮(D1),其仿真结果如下所示:
23
24
25