标题:
单片机棋牌游戏仿真设计 附源码和仿真图
[打印本页]
作者:
izhineng
时间:
2018-1-10 04:08
标题:
单片机棋牌游戏仿真设计 附源码和仿真图
棋牌的设计,附源码和仿真图
0.png
(19.82 KB, 下载次数: 82)
下载附件
2018-1-10 04:06 上传
单片机源程序如下:
#include <MSP430f249.h>
#define uchar unsigned char
#define uint unsigned int
uchar const led_tab[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管段选码表,无小数点
uchar key; //按键值
uint flag1=0,flag2=0,flag3=0;
void delayus(uint t)
{
uint i;
while(t--)
for(i=1300;i>0;i--);
}
void system_Initial(void)
{
P3SEL &= 0x00; //选择P3为输入/输出口
P3DIR |= 0XFF; //选择P3为输出功能
P3OUT=0xFF;
P1DIR = 0xFF; // 设置方向为输出
P4DIR = 0xFF; // 设置方向为输出
P2DIR = BIT0 + BIT1+BIT2+BIT3;
P1OUT = 0x00; //LED输出全部关闭
P4OUT = 0x00; //LED输出全部关闭
P2OUT = BIT0 + BIT1+BIT2+BIT3;
P2IE |= BIT4+BIT5+BIT6; //P2.2中断使能
P2IES |= BIT4+BIT5+BIT6; //P2.2下降沿中断
P2IFG &=~(BIT4+BIT5+BIT6); //P2.2清除中断标志
_EINT();
}
// 端口2中断服务程序
#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
P2IFG &= ~(BIT4+BIT5+BIT6); //清除中断标志
}
//**********************************************************************
int main(void)
{
uchar i;
uchar count = 29; //计数值
uchar disp_buf[4]; //显示缓冲区
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
system_Initial();
while(1)
{
if(!(0x10 & P2IN)) {
flag1=1;
if(flag2==1)
count=29;
flag2=0;
}
if(!(0x20 & P2IN)) {
flag2=1;
if(flag1==1)
count=29;
flag1=0;
}
if(!(0x40 & P2IN)) {
flag3=1;
}
if(flag1 == 1)
{
flag3=0;
if(count>0)
{
disp_buf[1] = count / 10; //对计数值取十位数
disp_buf[0] = count % 10; //对计数值取个位数
for(i = 0;i < 25; i++) //总共循环25次,计时1s
{
P1OUT = 0;
P1OUT = led_tab[disp_buf[1]];
P2OUT = ~BIT0; //显示十位数
delayus(2); //软件仿真时,取20不闪烁
P1OUT = 0;
P1OUT = led_tab[disp_buf[0]];
P2OUT = ~BIT1; //显示个位数
delayus(2); //软件仿真时,取20不闪烁
}
count--;
}
if(count==0)
{
P1OUT = 0;
P1OUT = led_tab[0]; //30s倒计时结束,显示0;
P2OUT = ~BIT1;
P3OUT=~BIT1;
}
}
if(flag2 == 1)
{
flag3=0;
if(count>0)
{
disp_buf[3] = count / 10; //对计数值取十位数
disp_buf[2] = count % 10; //对计数值取个位数
for(i = 0;i < 25; i++) //总共循环25次,计时1s
{
P4OUT = 0;
P4OUT = led_tab[disp_buf[3]];
P2OUT = ~BIT2; //显示十位数
delayus(2); //软件仿真时,取20不闪烁
P4OUT = 0;
P4OUT = led_tab[disp_buf[2]];
P2OUT = ~BIT3; //显示个位数
delayus(2); //软件仿真时,取20不闪烁
}
count--;
}
if(count==0)
{
P4OUT = 0;
P4OUT = led_tab[0]; //30s倒计时结束,显示0;
P2OUT = ~BIT3;
P3OUT=~BIT0;
}
}
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
棋牌.rar
(152.8 KB, 下载次数: 18)
2018-1-10 04:08 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1