📄 ch451.c
字号:
#include <reg51.h>
#include <ch451.h>
#include <SerialPort.h>
#define uchar unsigned char
#define uint unsigned int
uchar ch451_key,flash,point; //全局变量,分别为:键值存放区,闪烁位,显示指针
uint sit;
bit ch451_flag;
uchar showram[]={30,30,30,30,30,30,30,30,30};//显存数组
/*--------------------------显示数据----------------------*/
void display(void)
{ uint i,j;
sit=0x000; //显示位指向第一位
flash=1; //闪烁位指向第一位
point=0;
while(showram[point]!=30)
{
ch451_write(CH451_DIG+sit+(showram[point]-0x30));
sit=sit+0x100; //显示位和闪烁位调整
flash=flash*2;
point++; //指针调整
}
ch451_write(CH451_TWINKLE+flash); //设置闪烁控制
ch451_write(CH451_DIG+22+sit);
for(i=point+1,j=sit+0x100;i<=7;i++)
{
ch451_write(CH451_DIG+j+30);
j=j+0x100;
}
}
/*---------------------------对按键进行处理-----------------*/
void ch451_process(void) //按键处理
{
ch451_keytest(); //转换键值
ch451_flag=0; //清标志
if((ch451_key>47) && (ch451_key<58))
{
showram[point]=ch451_key; //向显存写入数据
if(point>=8) //判断显存是否已满
{
showram[point]=30; //写入空格
point=0; //显存指针清零
}
display(); //刷新显示
ch451_write(CH451_TWINKLE+flash); //设置闪烁位
ch451_write(CH451_DIG+22+sit); //最右边数码管显示"-"并闪烁
}
if(ch451_key==8) //判断是否为backspace
{
showram[point-1]=30; //删除位用空表示
ch451_write(CH451_DIG+30+sit);
display(); //刷新
}
if(ch451_key==13) //判断是否为ENTER健
{
send();
}
}
/***********************************main********************************/
void main(void)
{
ch451_init();
ch451_key=0;
flash=1;
sit=0x000;
ch451_write(CH451_RESET); //ch451复位
ch451_write(CH451_SYSON2) ; //开CH451显示,键盘
ch451_write(CH451_BCD); //以bcd码方式显示:数码管全亮
ch451_check();
ch451_write(CH451_DIG+22); //最右边数码管显示"-"并闪烁
ch451_write(CH451_TWINKLE+flash); //设置闪烁控制
ch451_flag=0;
seriaportset();
while(1)
{
display();
if(ch451_flag)
{
ch451_keytest();
ch451_flag=0;
ch451_process();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -