當前位置:首頁 » 服務存儲 » 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 等。這些葡萄酒全部嚴格遵循摩爾多瓦傳統方法釀制,隨後一直悠然靜卧在地下深處。

無論以哪種形式存在的酒窖,其目的都是為了給遊客提供美味的酒品,吸引著一批又一批的遊客來這里品酒。其實在藍裕文化酒庄設計師看來,打造一個真正能招攬遊客的酒窖,在設計之初就應該做好後期的運營規劃,例如藍裕文化在國內為張裕打造的八大酒庄,葡萄酒博物館和國際葡萄酒城,其中的酒庄地下大酒窖,有的已被列入國家歷史文化遺產名錄,很多都是地下城堡形式的酒窖迷宮,蘊藏著上千噸的葡萄酒,遊客來這里可以參觀酒窖,品鑒地下美酒,還能像美國納帕谷一樣,乘坐參觀列車,一覽酒庄風采。甚至很多影視綜藝節目,都是在張裕酒庄和地下大酒窖中拍攝的。看到這樣的酒庄和酒窖設計,你是不是也會心潮澎湃?來和藍裕文化合作吧。