📄 display.c
字号:
/*
*********************************************************************************
* 此模块为显示程序,刷新速率为50Hz,每刷新一次为20ms,每个字段显示5ms *
*********************************************************************************
*/
#include <reg668.h>
#include <constant.h>
sbit Disp0 = P1^0; //数位(1)选通位
sbit Disp1 = P1^1; //数位(2)选通位
sbit Disp2 = P1^2; //数位(3)选通位
sbit Disp3 = P1^3; //数位(4)选通位
sbit Disp4 = P1^4; //数位(5)选通位
sbit Disp5 = P1^5; //数位(6)选通位
sbit Disp6 = P1^6; //数位(7)选通位
sbit Disp7 = P1^7; //数位(8)选通位
sbit Speaker = P3^5; //扬声器控制脚
sbit Dot = P0^7; //小数点显示位
extern bit Dot_Value;
extern unsigned char formflag;
extern unsigned char CountTime2;
extern unsigned char Disp_array[Eight];
unsigned char code Seven_seg[26][2]={
{0x00,0x0C0}, //字形0
{0x01,0x0F9}, //字形1
{0x02,0x0A4}, //字形2
{0x03,0x0B0}, //字形3
{0x04,0x99}, //字形4
{0x05,0x92}, //字形5
{0x06,0x82}, //字形6
{0x07,0x0F8}, //字形7
{0x08,0x80}, //字形8
{0x09,0x90}, //字形9
{0x0A,0x88}, //字形A
{0x0b,0x83}, //字形b
{0x0C,0x0C6}, //字形C
{0x0d,0x0A1}, //字形d
{0x0E,0x86}, //字形E
{0x0F,0x8E}, //字形F
{0x10,0x0FF}, //无显示
{0x11,0x0F8}, //字形T
{0x12,0x0FE},
{0x13,0x0C9}, //字形||
{0x14,0x0C8}, //字形n
{0x15,0x86}, //字形E
{0x16,0x0CE}, //字形r
{0x17,0x92}, //字形S
{0x18,0x89}, //字形H
{0x19,0x0C7} //字形L
};
/*
共阳极数码管,低电平有效。
**********************************************************************************
* (1) (2) (3) (4) *
* P0.0----$$$$$$ $$$$$$ $$$$$$ $$$$$$-----a *
* P0.1----$ $ $ $ $ $ $ $-----b *
* P0.2----$ $ $ $ $ $ $ $-----c *
* P0.3----$____$ $____$ $____$ $____$-----d *
* P0.4----$ $ $ $ $ $ $ $-----e *
* P0.5----$ $ $ $ $ $ $ $-----f *
* P0.6----$ $ $ $ $ $ $ $-----g *
* P0.7----$$$$$$ $&&&&& * $$$$$$ $$$$$$-----dp *
* | | | | *
* P1.0 P1.1 P1.2 P1.3 *
**********************************************************************************
Disp_array[0]第一位字段值;
Disp_array[1]第二位字段值;
Disp_array[2]第三位字段值;
Disp_array[3]第四位字段值;
P0.7 ------- 对应Dot(小数点);
*/
void Display (void) interrupt 1 using 1 //使用Time2产生5ms中断
{
unsigned char i;
register unsigned char Seg_data;
TH0 = 0x0E2; //刷新定时常数;
TL0 = 0x00;
TF0 = 0;
i = Disp_array[CountTime2];
Seg_data = Seven_seg[i][1];
switch (CountTime2)
{
case 0: //显示第一位
Disp7 = 0;
P0 = ~Seg_data;
Disp0 = 1;
//Disp1 = 0;
//Disp2 = 0;
//Disp3 = 0;
break;
case 1: //显示第二位
Disp0 = 0;
P0 = ~Seg_data;
//Dot = Dot_Value; //显示小数点
Disp1 = 1;
//Disp2 = 0;
//Disp3 = 0;
break;
case 2: //显示第三位
//Disp0 = 0;
Disp1 = 0;
P0 = ~Seg_data;
Disp2 = 1;
//Disp3 = 0;
break;
case 3: //显示第四位
//Disp0 = 0;
//Disp1 = 0;
Disp2 = 0;
P0 = ~Seg_data;
Disp3 = 1;
//CountTime2 = 0x00;
break;
case 4:
//Speaker = ~Speaker;
Disp3 = 0;
P0 = ~Seg_data;
Disp4 = 1;
break;
case 5:
Disp4 = 0;
P0 = ~Seg_data;
if (formflag==0)
{
Dot = Dot_Value;//显示小数点
}
Disp5 = 1;
//P0=0x0ff;
//while (TRUE);
break;
case 6:
Disp5 = 0;
P0 = ~Seg_data;
Disp6 = 1;
break;
case 7:
Disp6 = 0;
P0 = ~Seg_data;
Disp7 = 1;
//CountTime2=0x00;
break;
}
CountTime2 = (CountTime2+1)%8;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -