当前位置:首页 » 服务存储 » marq存储空间
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

marq存储空间

发布时间: 2022-07-08 00:15:18

‘壹’ 用单片机开发板能否把流水灯数码管动态显示结合起来,两个程序中都有while(1),不知道怎么结

改改你的想法,这种 汇编思想 编C语言程序要不得。
/***数显电子时钟——火柴天堂作品-20120603***/
/***源程序默认硬件环境:52单片机,12MHz晶振,四位共阳数码管,P0段选,P20-P23低电平位选,P20最高位,P23最低位,P24~P25独立按键,P1口8位低电平驱动LED***/
/***功能描述:4位数显时钟:HH.MM,小数点闪烁表示秒,P24设置键,P25调时键,不调秒,P1口流水灯(间隔1s)***/
#include"reg52.h" //包含52头文件
#define TRUE 1 //定义布尔量'1':真
#define FALSE 0 //定义布尔量'0':假
#define uchar unsigned char //定义 无符号字符型数据 简称
#define uint unsigned int //定义 无符号整型数据 简称

#define th0 0x3c
#define tl0 0xb0 //50ms at 12MHz(定时器工作模式1 状态)
#define th1 0xfc
#define tl1 0x18 //1ms at 12MHz(定时器工作模式1 状态)
#define T500msAt50msCount 10 //定义 500ms 在 50ms 计时基准状态下的计数值为10
#define T1sAt50msCount 20 //定义 1s 在 50ms 计时基准状态下的计数值为20

#define SEG_Num 4 //数码管位数
#define SEG_Data P0 //数码管段驱动接口
#define SEG_En P2 //数码管位驱动接口
#define SEG_AllOff (SEG_En|=0x0f) //关闭所有数码管(位驱动)
#define DisTimeAt1msCount 4 //单'位'数码管显示时间,数码管刷新频率f=1/(N*t),其中 N为数码管位数,t 为单'位'数码管显示时间
#define SetStatus 3 //设置状态数量,三个,0 显示态,1调时态,2调分态

uchar SEG_B_List[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳数码管代码表"0-9"
#define SEG_B_Point 0x7f //共阳数码管小数点
sbit KeySet=P2^4; //定义 设置键接口
sbit KeyAdj=P2^5; //定义 调整键接口
#define KeySetValue 1 //定义 设置键键值为1
#define KeyAdjValue 2 //定义 调整键键值为2
#define LED_Port P1 //定义 流水灯端口
#define LED_Num 8 //定义 流水灯数量

uchar Sec=0,Min=0,Hour=0,SetLoca=0;
uchar bdata Flag=0x12; //可位寻址标志位寄存器
sbit T1sTimesUpFlag=Flag^0; //1s时间标志位
sbit DisplayFlag=Flag^1; //显示标志位
sbit FlickFlag=Flag^2; //闪烁显示标志位:1显示,0不显示
sbit SettingFlag=Flag^3; //设置标志位
sbit MarqFlag=Flag^4; //流水标志位

void Timer0() interrupt 1 //定时器0中断函数
{
static uchar t50ms;
TL0=tl0;
TH0=th0;
t50ms=++t50ms%T1sAt50msCount; //先对50ms计时变量加1,后对变量范围进行限制(0~19)(即对20取模)
if(!t50ms) //若计时变量归0,表示计时变量曾经到达20(1s),则
{
MarqFlag=TRUE; //流水标志位 置位
if(!SettingFlag) T1sTimesUpFlag=TRUE; //若在显示态,则对1s计时标志位 置位
}
if(!(t50ms%T500msAt50msCount)) FlickFlag=~FlickFlag; //每500ms 秒(小数点)切换状态一次(即1s闪一次)
}
void Timer1() interrupt 3
{
static uchar t1ms;
TL1=tl1;
TH1=th1;
t1ms=++t1ms%DisTimeAt1msCount; //先计数值加1,后对计数范围进行限制0~(DisTimeAt1msCount-1)
if(!t1ms) DisplayFlag=TRUE; //若定时计数值归0,则表示计数值曾到达 单'位'显示时间(DisTimeAt1msCount),显示标志 置位
}
void TimerInit()
{
TMOD=0x11; //开启定时器0、定时器1,并都工作在模式1
TH0=th0;
TL0=tl0;
TR0=1; //启动T0定时器 计时
ET0=1; //允许定时器0中断
TH1=th1;
TL1=tl1;
TR1=1; //启动T1定时器 计时
ET1=1; //允许定时器1中断
EA=1; //开启系统中断功能
}
void TimesUpdata() //时间更新函数
{
if(T1sTimesUpFlag) //若 1s计时标志位 为 真,即 1s定时时间到
{
Sec=++Sec%60; //秒Sec在0-59范围内加1
if(!Sec) //若秒Sec 为0,则
{
Min=++Min%60; //分Min 在0-59范围内加1
if(!Min) Hour=++Hour%24; //若 分Min 为0,则 时Hour 在0-23范围内加1
}
T1sTimesUpFlag=FALSE; //清 1s计时标志位
}
}
float Pow_Self(float x,uint y)//自编简易 x 的 y 次方函数,y只能是 非负整数
{
float sum;
if(x==0 && y==0) return; //0 的 0 次方无意义
else if(x==0) sum=0; //可有可无,y!=0的情况已经包含x=0,不加不影响结果,但影响运算速度
else if(y==0) sum=1; //除上述情况外,任何数的 0 次方均为 1
else if(y==1) sum=x; //任何数的 1 次方 均为 本身
else if(y>1) sum=Pow_Self(x,--y)*x; //递归调用,降幂
return sum; //返回计算结果
}
void Display(uint dis_num) //显示函数,显示内容为 无符号整型数据 dis_num
{
static uchar dis_loca; //定义静态变量 显示位置
dis_loca=++dis_loca%SEG_Num; //先对 显示位置 加1,后对变量范围进行限制 0~(SEG_Num-1)
SEG_AllOff; //关闭所有数码管显示(位驱动)
if(!SettingFlag || FlickFlag ||(SetLoca==1 && dis_loca<2)||(SetLoca==2 && dis_loca>1))//显示态、闪烁显示态、调Hour时的分位 或 调Min时的时位,均正常显示
SEG_Data=SEG_B_List[(dis_num/(uint)(Pow_Self(10,dis_loca)))%10]; //将显示内容(dis_num) 本次需显示的位(dis_loca)上的数值转成代码,并送到数据端口
if(dis_loca==2 &&(SettingFlag||FlickFlag)) SEG_Data &=SEG_B_Point; //闪烁显示 小数点,代替 秒Sec(共阳数码管)
SEG_En&=~(1<<SEG_Num-1-dis_loca); //开启本次需要显示的位驱动(低驱动)
}
void ClockDisplay() //时钟显示函数
{
if(DisplayFlag) //若 显示标志位 为 真
{
Display(Hour*100+Min); //调用 显示函数,显示内容为:高2位显示 分Min,低2位显示 秒Sec
DisplayFlag=FALSE; //清 显示标志
}
}
uchar KeyScan() //按键扫描函数
{
if(KeySet && KeyAdj) return 0; //无按键 返回0
if(!KeySet) return KeySetValue; //设置键 返回设置键键值
if(!KeyAdj) return KeyAdjValue; //调整键 返回调整键键值
return 0; //非以上按键,返回0
}
void KeyResp() //按键响应函数
{
static uchar KeyValue; //定义静态变量 存储按键值
static bit KeyDownFlag,KeyReadyFlag; //定义静态变量 按键按下标志位,按键准备(响应)标志位
uchar key_value=KeyScan(); //调用 按键扫描函数,并将扫描结果放在 key_value中
if(key_value) //若扫描结果 有按键
{
KeyValue=key_value; //存储按键值
KeyDownFlag=TRUE; //按键按下标志位 置位
KeyReadyFlag=TRUE; //按键准备(响应)标志位 置位
}
else KeyDownFlag=FALSE; //若扫描结果 无按键,则 清 按键按下标志位
if(KeyReadyFlag && !KeyDownFlag) //若按键准备就绪,且无按键按下,则表示已松手情况
{
switch(KeyValue) //选择按键对应处理
{
case KeySetValue: //设置键处理
SetLoca=++SetLoca%SetStatus; //切换状态,0显示态,1调时态,2调分态
if(SetLoca) SettingFlag=TRUE; //若非显示态,则设置标志位 置位
else SettingFlag=FALSE; //否则,清 设置标志位
break; //设置键处理完毕
case KeyAdjValue: //调整键处理
switch(SetLoca) //选择状态对应处理对象
{
case 1:Hour=++Hour%24;break; //调时态,时Hour在0-23之间加1
case 2:Min=++Min%60;break; //调分态,分Min在0-59之间加1
default: //其他情况
SetLoca=0; //切换回显示态,或忽略操作
SettingFlag=FALSE; //清 设置标志位
break;
}
break; //调整键处理完毕
default:break; //按键处理完毕
}
KeyValue=0; //清 按键值
KeyReadyFlag=FALSE; //清 按键准备(响应)标志位
}
}
void Marquee() //跑马灯函数
{
static uchar marq_loca=LED_Num-1; //静态变量,初始化为最后一盏LED,进入if后,直接到第一盏LED
if(MarqFlag) //若流水标志位为真,则
{
marq_loca=++marq_loca%LED_Num; //切换下一个LED
LED_Port=~(1<<marq_loca); //显示当前流水灯位置
MarqFlag=FALSE; //清 流水标志位
}
}
void SystemInit()
{
TimerInit(); //调用 定时器初始化函数
KeySet=1;
KeyAdj=1; //初始化按键端口
}
void main()
{
SystemInit(); //调用 系统初始化函数
while(1) //循环系统
{
KeyResp(); //调用 按键响应函数
TimesUpdata(); //调用 时间更新函数
ClockDisplay(); //调用 时钟显示函数
Marquee(); //调用 跑马灯函数
}
}

‘贰’ 贵宾接待为什么一定要在酒窖就餐

酒店餐饮区不能就餐?一定要去酒窖?这里有什么特色?酒窖本是藏酒的地方,空间弥漫着酒香,环境恒温恒湿。很多酒窖对游客开放之后,例如蓝裕文化设计的张裕瑞那城堡酒庄地下大酒窖,游客可以参观酒窖迷宫,还可以订制自己的红酒,酒瓶上贴有个人专属酒标??但是很少能感受到酒窖用餐的意境,今天蓝裕文化酒庄设计师就带大家一起去世界多个传奇酒窖一起去感受一下就餐意境,享受一把贵宾级的待遇,或许会让你三观错位,颠覆你的人生认知。

充满娱乐感设计的酒窖:只顾让人们看他们玩杂技,忘了点餐

英国伦敦斯坦斯特德机场的丽笙SAS酒店或许并不是优雅、奢华的代名词,但这里却有着一座别出心裁的趣味酒窖令来客过目不忘。这座矗立在室内空间离地43英尺的葡萄酒塔吧,存储着数千瓶各具特色的世界精品葡萄酒。

MILETII MICI酒厂地下的延绵的葡萄酒“围城”

这座始建于上世纪70年代的酒窖,几乎囊括了摩尔多瓦国内的各类葡萄酒:贝露、琼瑶浆、麝香、雷司令;又或者一些罕见的本地品种:Feteasca、Dnestrovskoe、Milestskoe、Codru、Trandafirul Moldovei、Auriu、Cahor-Ciumai、Marsala、Utreneaia Rosa、Nejnosti 等。这些葡萄酒全部严格遵循摩尔多瓦传统方法酿制,随后一直悠然静卧在地下深处。

无论以哪种形式存在的酒窖,其目的都是为了给游客提供美味的酒品,吸引着一批又一批的游客来这里品酒。其实在蓝裕文化酒庄设计师看来,打造一个真正能招揽游客的酒窖,在设计之初就应该做好后期的运营规划,例如蓝裕文化在国内为张裕打造的八大酒庄,葡萄酒博物馆和国际葡萄酒城,其中的酒庄地下大酒窖,有的已被列入国家历史文化遗产名录,很多都是地下城堡形式的酒窖迷宫,蕴藏着上千吨的葡萄酒,游客来这里可以参观酒窖,品鉴地下美酒,还能像美国纳帕谷一样,乘坐参观列车,一览酒庄风采。甚至很多影视综艺节目,都是在张裕酒庄和地下大酒窖中拍摄的。看到这样的酒庄和酒窖设计,你是不是也会心潮澎湃?来和蓝裕文化合作吧。