客服QQ870650884,热线15180065743

细说玩龙虎机游戏厅上注意要点

2010-10-21 15:37

 

细说玩龙虎机游戏厅上注意要点

据说,百家乐起源于意大利,其后传到英、法等地。 骰子 提到曹植,你会想起他脍炙人口的七步成诗故事。估不到他是相传发明骰子的始创人。
不过,在三国的时候,骰子最初用作占卜,后来掷骰子变成后宫嫔妃的游戏。 相传,骰子的点子都是黑色,但为甚么现在的骰子,1点和4点都涂上红色呢?原来跟唐玄宗与杨贵妃有关。一次,他们正掷骰子耍乐,唐玄宗一手掷出骰子,眼看有大输的危机,只要余下仍在旋转的骰子掷出是4点的话,才能反败为胜。此时,唐玄宗甚为紧张,大喊:“4…4…4…”,果然,骰子掷出4点。唐玄宗大喜之下,赐骰子的1点和4点都涂上红色。从此,骰子便变身现在的模样,这个是我国最原始的赌博方法,无现在的龙虎机并无关联。 麻将 有华人的地方,必定有麻将的存在。麻将龙虎机是由纸牌游戏-马吊演变出来,其后,人们将牌面刻在象牙和竹块上,就发明了麻将。 麻将在中国各地,会因应各地文化演变出独特的玩法,如上海麻将、广东麻将、台湾麻将…等,玩法变化多端,多不胜数。 麻将甚至冲出中国,1907年传到日本,1920年后传到美国,现今流行世界各地。以麻将为题的博物馆“麻将起源地陈列馆”,于2001年6月17日在宁波市开馆,见证着麻将是中国国粹的地位。
角子龙虎机上分器 1895年,查理费发明了角子龙虎机上分器后,不少人希望以“刀仔锯大树”,只要一拉手杆,就能获取钜额奖金。所以,当时特别受到往旧金山掘金人士欢迎,梦想一夜致富,即时风风光光回乡享清福。时至今日,龙虎机种玩法,有高赌注角子龙虎机角子游戏机上分器。但玩者往往以玩法简单,不自觉地硬币一个一个投入机器内,忘掉了龙虎机是因“吃人不吐骨”而得名,将自己变成龙虎机的大餐。
三、龙虎机的驱动实例
    要求:控制电路如图3所示,开机后,电机不转,按下启动键,电机旋转,速度为25转/分,按下加1键,速度增加,按下减1键,速度降低,最高速度为100转/分,最低转带为25转/分,按下停止键,电机停转。速度值要求在数码管上显示出来。

1.要求分析
    按上面的分析,改变转速,只要改变P1.0~P1.3轮流变低电平的时间即可达到要求,这个时间不应采用延时来实现,因为会影响到其他功能的实现。这里以定时的方式来实现。下面首先计算一下定时时间。
按要求,最低转速为25转/分,而上述龙虎机的步距角为7.5,即每48个脉冲为1周,即在最低转速时,要求为1200脉冲/分,相当于50ms/脉冲。而在最高转速时,要求为100转/分,即48000脉冲/分,相当于12.5ms/脉冲。可以列出下表
表1 龙虎机转速与定时器定时常数关系
速度 单步时间(us) TH1 TL1 实际定时(us)
25 50000 76 0 49996.8
26 48077 82 236 48074.18
27 46296 89 86 46292.61
28 44643 95 73 44640.155
… … … … …
100 12500 211 0 12499.2
    表中不仅计算出了TH1和TL1,而且还计算出了在这个定时常数下,真实的定时时间,可以根据这个计算值来估算真实速度与理论速度的误差值。
表中TH1和TL1是根据定时时间算出来的定时初值,这里用到的晶振是11.0592M。有了上述表格,程序就不难实现了,使用定时/计数器T1为定时器,定时时间到后切换输出脚即可。

2.程序实现
    定义DSB-1A实验板的S1为启动键,S2为停止键,S3为加1键,S4为减1键,程序如下:
 
StartEnd bit  01H ;起动及停止标志
MinSpd  EQU 25  ;起始转动速度
MaxSpd   EQU 100 ;最高转动速度
Speed  DATA 23H ;流动速度计数
DjCount  DATA 24H ;控制电机输出的一个值,初始为11110 111
Hidden EQU 10H ;消隐码
Counter DATA 57H ;显示计数器
DISPBUF DATA 58H ;显示缓冲区

    ORG    0000H
    AJMP   MAIN
ORG 000BH
JMP DISP
ORG 001BH
JMP DJZD
    ORG     30H
MAIN:  
    MOV   SP,#5FH
    MOV   P1,#0FFH
MOV A,#Hidden
MOV DispBuf,A
MOV DispBuf+1,A
MOV DispBuf+2,A

MOV DjCount,#11110111B
    MOV   SPEED,#MinSpd ;起始转动速度送入计数器
    CLR    StartEnd ;停转状态
MOV TMOD,#00010001B ;
MOV TH0,#HIGH(65536-3000)
MOV TL0,#LOW(65536-3000)
MOV TH1,#0FFH;
MOV TL1,#0FFH
SETB TR0
SETB EA
SETB ET0
SETB ET1

LOOP:  ACALL   KEY   ;键盘程序
    JNB     F0,m_NEXT1 ;无键继续
    ACALL   KEYPROC  ;否则调用键盘处理程序
m_NEXT1:
MOV A,Speed
MOV B,#10
DIV AB
MOV DispBuf+5,B ;最低位
MOV B,#10
DIV AB
MOV DispBuf+4,B
MOV DispBuf+3,A
JB StartEnd,m_Next2
CLR TR1 ;关闭电机
JMP LOOP
ORL P1,#11110000B
m_Next2:
SETB TR1 ;启动电机
    AJMP   LOOP  ;主程序结束
;---------------------------------------
D10ms: 
……
;---------延时程序,键盘处理中调用
KEYPROC:
    MOV     A,B  ;获取键值
    JB      ACC.2,StartStop  ;分析键的代码,某位被按下,则该位为1
    JB      ACC.3,KeySty
    JB      ACC.4,UpSpd
    JB      ACC.5,DowSpd
    AJMP    KEY_RET
StartStop:
    SETB StartEnd    ;启动
    AJMP    KEY_RET
KeySty: 
CLR StartEnd; ;停止
    AJMP    KEY_RET
UpSpd:
    INC     SPEED;
    MOV    A,SPEED
    CJNE    A,#MaxSpd,K1 ;到了最多的次数?
    DEC     SPEED ;是则减去1,保证下次仍为该值
K1:
    AJMP    KEY_RET
DowSpd:
    DEC     SPEED
    MOV     A,SPEED
    CJNE    A,#MAXSPD,KEY_RET ;不等(未到最大值),返回
MOV SPEED,#MinSpd;
KEY_RET:
    RET

KEY:   
……获取键值的程序
    RET

DjZd: ;定时器T1用于电机转速控制
PUSH ACC
PUSH PSW
MOV A,Speed
SUBB A,#MinSpd ;减基准数
MOV DPTR,#DjH
MOVC A,@A+DPTR
MOV TH1,A
MOV A,Speed
SUBB A,#MinSpd
MOV DPTR,#DjL
MOVC A,@A+DPTR
MOV TL1,A
MOV A,DjCount
CPL A
ORL P1,A
MOV A,DjCount
JNB ACC.7,d_Next1
JMP d_Next2
d_Next1:
MOV DjCount,#11110111B
d_Next2:
MOV A,DjCount
RL A
MOV DjCount,A ;回存
ANL P1,A
POP PSW
POP ACC
RETI

DjH: DB 76,82,89,95,100,106,110,115,119,123,12……
DjL: DB 0,236,86,73,212,0,214,96,163,165
……

DISP: ;显示程序
POP PSW
POP ACC
……
RETI
BitTab: DB 7Fh,0BFH,0DFH,0EFH,0F7H,0FBH
DISPTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
END

3.程序分析
    本程序主要由键盘程序、显示器程序、龙虎机驱动程序三部份组成,主程序首先初始化各变量,将显示器的高3位消隐,龙虎机驱动的各引脚均输出高电平,然后调用键盘程序,并作判断,如果有键按下,则调用键盘处理程序,否则直接转下一步。下一步是将当前的转速值转换为BCD码,送入显示缓冲区;接着判断StartEnd这个位变量,是“1”还是“0”,如果是“1”,则开启定时器T1,否则关闭定时器T1,为防止关闭时某一相线圈长期通电,因此,在关闭定时器T1时,将P1.0~P1.3均置高。至此,主程序的工作即结束。这里为简便起见,这里没有做高位“0”消隐的工作,即如果速度为10转/分,则显示值“010”,读者可以自行加入相关的代码来处理这一工作。
    龙虎机的驱动工作是在定时器T1的中断服务程序中实现的,由前述分析,每次的定时时间到达以后,需要将P1.0~P1.3依次接通,程度中用了一个变量DjCntr来实现这一功能,在主程序初始化时,该变量被赋予初值11110111B,进入到定时中断以后,将该变量取出送ACC累加器,并在累加器中进行左移,这样,该数值就变为1110 1111,然后将该数与P1相“与”,此时,P1.4即输出低电平,第二次进入中断时,先将该数取反,成为 0001 0000,然后将该数与P1相“或”,这样,P1.4即输出高电平,关断了相应的线圈,然后将该数重新取出,并作左移,即 1110,1111右移成为1101 1111,将该数与P1相“与”,这样P1.5即输出低电平,依次类推,P1.7~P1.4即循环输出低电平。当这一数据变为0111 1111后,需要作适当的改动,将数据重新变回 1111 0111,进行第二次循环,相关代码,请读者自行分析。
    定时时间又是如何确定的呢?这里用的是查表的方法,首先用Excel计算得出在每一种转速下的TH值和TL值,然后,分别放入DjH和DjL表中,在进入T1中断程序之后,将速度值变量Speed送入累加器ACC,然后减去基数25,使其基数从0开始计数,然后分别查表,送入TH1和TL1,实现重置定时初值的目的。
看完这一部份内容以后,请读者自行完成以下工作:

1. 更改程序,将S1定义为“启动/停止”,而S2定义为“方向”,按下S2,切换电机旋转方向。

2. 更改程序,要求转速从1到100。

3. 更改程序,实现首位无效零消隐。

 更多五星宏辉破解方法