📄 dianya.c
字号:
#include"reg52.h"
#include"intrins.h"
#define ad_con P2
#define addata P0
#define Disdata P1
#define uchar unsigned char
#define uint unsigned int
//sbit button_C=P2^7;
sbit ALE=P2^3;
sbit START=P2^4;
sbit OE=P2^5;
sbit EOC=P2^6;
sbit AddA=P2^0;
sbit AddB=P2^1;
sbit AddC=P2^2;
bit keynum;
bit keyon;
unsigned char add_howl;
uchar code dis_7[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/*共阳7段LED断码表 “0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“不亮”*/
uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; //4位列扫描控制字
uchar data ad_data; //定义数据内存单元
uint data dis[5]={0x00,0x00,0x00,0x00,0x00};
uchar ledcode[4];
uint n,m; //定义4个显示数据单元和1个数据占存单元
/********************1ms延时子函数*************/
/*delay1ms(uint t)
{
uint i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
*/
void delayms(unsigned char ms) // 延时毫秒@12M,ms最大值255 精确度高
{
unsigned char i;
while(ms--)
for(i = 0; i < 124; i++);
}
scan(unsigned char dat,bit mv) //数码管显示
{
uchar data i=0x00,j=0x00;
dis[2]=dat/51;
dis[4]=dat%51;
dis[4]=dis[4]*10;
dis[1]=dis[4]/51;
dis[4]=dis[4]%51;
dis[4]=dis[4]*10;
dis[0]=dis[4]/51;
if(mv==0)
{
ledcode[0]=dis_7[dis[0]];
ledcode[1]=dis_7[dis[1]];
ledcode[2]=dis_7[dis[2]]-0x80; //共阳极
ledcode[3]=dis_7[dis[3]];
}
for(i = 0; i < 4; i++) //扫描
{
P3 = scan_con[j];
P1 = ledcode[i];
delayms(1);
j++;
}
j=0;
}
test(unsigned char Add) //输入通道 Add=0 通道0; Add=1 通道1;
{
AddA=Add;
AddB=0;
AddC=0;
ALE=1;_nop_();_nop_();ALE=0;
START=1;_nop_();_nop_();START=0;
_nop_();_nop_();_nop_();_nop_();
while(EOC==0);
OE=1;ad_data=addata;OE=0;
ad_con=0xc0;
}
main()
{
dis[3]=0;
P0=0xff;
P2=0xc0;
P1=0xff;
P3=0xff;
while(1)
{
if(keynum==0)
{
test(0);
scan(ad_data,keynum);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -