单片机C51程序设计 数码管显示.ppt
C51内部函数内部函数 有一些函数有一些函数,用汇编语言编写非常直接、简用汇编语言编写非常直接、简单、目标代码短,而用单、目标代码短,而用C C编写却很长。对于用编写却很长。对于用汇编语言编写的这类库函数叫内部函数。内部汇编语言编写的这类库函数叫内部函数。内部函数在函数在C51C51中已按中已按C C的规范用汇编语言写好。用的规范用汇编语言写好。用户右以直接当作户右以直接当作C C语言函数调用。内部函数原语言函数调用。内部函数原型说明放在型说明放在intrans.hintrans.h文件中。文件中。左左/右移多位函数右移多位函数格式:格式:_crol_/_iror_/_lrol_crol_/_iror_/_lrol_(参数表(参数表););原型说明:原型说明:unsigned char _crol(unsigned char val,unsigned char n);unsigned char _crol(unsigned char val,unsigned char n);unsigned int _irol(unsigned val,unsigned char n);unsigned int _irol(unsigned val,unsigned char n);unsigned long _lrol(unsigned long val,unsigned char n);unsigned long _lrol(unsigned long val,unsigned char n);第一个参数是被移位的变量,第二个是欲移位位数:无符号字符第一个参数是被移位的变量,第二个是欲移位位数:无符号字符型变量为型变量为0-70-7;无符号整型为;无符号整型为0-15(0-15(右移为右移为0-32)0-32);无符号长整型;无符号长整型是是0-310-31。例:例:#include void main()unsigned int y;y=0 x00FF;y=_irol_(y,4);空操作函数空操作函数格式格式:void _nop_(void);:void _nop_(void);作用作用:产生单一汇编指令产生单一汇编指令nop.nop.执行该函数实际上无实质性操作执行该函数实际上无实质性操作,仅仅是延时一个机器周期是延时一个机器周期.例例:从从P0.7P0.7输出三个机器周期宽的正脉冲输出三个机器周期宽的正脉冲 P0&=P0&=0 x80;0 x80;P0|=0 x80;P0|=0 x80;_nop_;_nop_;_nop_;_nop_;P0&=P0&=0 x80;0 x80;位位测试函数函数格式格式:bit _testbit_(bit x);:bit _testbit_(bit x);说明说明:参数和返回值必须是位变量参数和返回值必须是位变量.该函数产生汇编指令该函数产生汇编指令JBC X,-JBC X,-。用于测试位变量是。用于测试位变量是X,X,是是0,0,还是还是1,1,并将其值经并将其值经CYCY返回返回.例例:#include#include bit flag;bit flag;char val;char val;void main()void main()if(!_teatbit_(flag)if(!_teatbit_(flag)val-;val-;JBCflag?C002 JBCflag?C002 DECval DECval C002:RET C002:RET 函数式宏定函数式宏定义 行末标志前加行末标志前加,则其后语句将作为单个预处理命令则其后语句将作为单个预处理命令.函数函数式宏定义声明正式参数名式宏定义声明正式参数名,放在括号中放在括号中,用逗号分隔用逗号分隔;左括号与宏左括号与宏名之间不能有空格名之间不能有空格,如果出现空格如果出现空格,则定义成不带参数的宏和以则定义成不带参数的宏和以左括号开始的宏体左括号开始的宏体.正式参数名应为标识符正式参数名应为标识符,参数不能重名参数不能重名,宏体宏体中不一定要出现这些参数名中不一定要出现这些参数名.宏参数中可出现花括号和下标方括宏参数中可出现花括号和下标方括号号,但不能包含逗号但不能包含逗号.#define WR573(dat)P0=dat;LE573=1;_nop_();LE573=0;中断源的符号、名称及产生的条件中断源的符号、名称及产生的条件 INT0INT0:外部中断:外部中断0 0,由,由P3P32 2端口线引入,低电平或下跳沿引起。端口线引入,低电平或下跳沿引起。INT1INT1:外部中断:外部中断1 1,由,由P3P33 3端口线引入,低电平或下跳沿引起。端口线引入,低电平或下跳沿引起。T0T0:定时器计数器:定时器计数器0 0中断,由中断,由T0T0计满回零引起。计满回零引起。T1T1:定时器计数器:定时器计数器l l中断,由中断,由T1T1计满回零引起。计满回零引起。TITIRIRI:串行:串行I IO O中断中断,串行端口完成一帧字符发送接收后引起。串行端口完成一帧字符发送接收后引起。第一个任务第一个任务:流水灯流水灯以以74HC57374HC573扩展输出端口的方法驱扩展输出端口的方法驱动动8 8只只LED,LED,低电平点亮低电平点亮74HC57374HC573输入接输入接P0P0端口端口,输出接输出接8 8只只LEDLED,P1.4P1.4控制控制LED.LED.第二个任第二个任务:动态数数码管管扫描描两片两片74HC57374HC573驱动动态数码管,输入端驱动动态数码管,输入端都接到都接到P0P0端口端口,I/O,I/O方式控制。方式控制。P1.2P1.2和和P1.3P1.3分别控制两个分别控制两个74HC57374HC573的的LEDLED信号信号,P1.2,P1.2对应位选、对应位选、P1.3P1.3对应段选。对应段选。基基础知知识 七段数码管加上一个小数点,共计七段数码管加上一个小数点,共计8 8段。因此段。因此LEDLED显示器提显示器提供的编码正好是一个字节。供的编码正好是一个字节。0 x3f0 x3f 0 x060 x06 0 x5b0 x5b 0 x4f0 x4f 0 x660 x66 0 x6d0 x6d 0 x7d 0 x07 0 x7f0 x7d 0 x07 0 x7f 0 0 1 12 3 4 52 3 4 5 6 7 8 6 7 80 x6f 0 x77 0 x7c0 x6f 0 x77 0 x7c 0 x39 0 x5e 0 x79 0 x71 0 x000 x39 0 x5e 0 x79 0 x71 0 x00 9 A B C D9 A B C D E E F F 无显示无显示静态显示方式静态显示方式 LEDLED显示器工作方式有两种:静态显示方式显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码和动态显示方式。静态显示的特点是每个数码管的段选必须接一个管的段选必须接一个8 8位数据线来保持显示的字位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优保持,直到送入新字形码为止。这种方法的优点是占用点是占用CPUCPU时间少,显示便于监测和控制。缺时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。点是硬件电路比较复杂,成本较高。动态显示动态显示 动态显示的特点是将所有位数码管的段选动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路所以在选择限流电阻时应略小于静态显示电路中的。中的。定时器初值定时器初值 计算算设单片机晶振频率为设单片机晶振频率为6MHZ,6MHZ,求方式求方式1 1时的定时器初值时的定时器初值 定时时间定时时间=(2=(2X X-初值初值)机器周期机器周期 X X由定时器工作方式决定由定时器工作方式决定,分别为分别为1313、1616、8.8.机器周期机器周期12/12/单片机晶振频率单片机晶振频率 foscfosc。由以上公式可知由以上公式可知:定时定时lmslms所需的机器周期为所需的机器周期为2us.2us.个数个数为为500D500D,即,即0lF4H,0lF4H,工作方式为工作方式为1(161(16位方式位方式)时定时初值时定时初值是是01F4H.01F4H.定定时/计数器数器编程程应用用初始化程序应完成如下工作:初始化程序应完成如下工作:1.1.对对TMODTMOD赋值,以确定赋值,以确定T0T0和和T1T1的工作方式。的工作方式。2.2.计算初值计算初值,并将其写入并将其写入TH0TH0、TL0TL0或或TH1TH1、TL1TL1。3.3.中断方式时,则对中断方式时,则对IEIE赋值,开放中断。赋值,开放中断。4.4.使使TR0TR0或或TR1TR1置位,启动定时置位,启动定时/计数器定时或计数。计数器定时或计数。TR1:TR1:定时器定时器1 1控制位控制位,置位时定时器置位时定时器1 1工作工作TR0:TR0:定时器定时器0 0控制位控制位,置位时定时器置位时定时器0 0工作工作