MSP430F149单片机
LCD1602投票器一个主持人开始停止复位3个按键投票
cppchar state = 0; /*三个状态 开始 停止复位 */
char piaoshu = 0;
char ifg1 = 0, ifg2 = 0, ifg3 = 0;
int main( void )
{
char key_v;
WDTCTL = WDTPW | WDTHOLD; /* Stop watchdog timer */
Clock_Init(); /* 系统时钟设置 */
key_init(); /*按键初始化 */
Port_init(); /* 显示器引脚初始化 */
LCD_init(); /* 显示器初始化 */
LCD_Desk(); /* 显示界面初始化 */
_EINT(); /* 开中断 */
state = 2; /* 初始状态 */
LCD_write_char( 11, 1, piaoshu + '0' ); /* 显示投票数 */
while ( 1 )
{
key_v = KeySscan();
if ( key_v != 0 )
{
if ( key_v == 1 )
{
state++;
if ( state == 3 )
state = 0; /* 改变状态 */
if ( state == 0 )
{
LCD_write_str( 0, 1, "start" );
}else if ( state == 1 )
{
LCD_write_str( 0, 1, "stop " );
}else if ( state == 2 )
{
LCD_write_str( 0, 1, "reset" );
delay_ms( 100 );
LCD_write_str( 0, 1, " " );
piaoshu = 0; /* 投票数归零 */
ifg1 = 0, ifg2 = 0, ifg3 = 0; /* 标志归零 */
LCD_write_char( 11, 1, piaoshu + '0' ); /* 显示投票数 */
}
}
if ( state == 0 )
{
/* 状态开始状态 就可以投票 */
if ( key_v == 2 )
{
if ( ifg1 == 0 )
{
piaoshu++; /* 票数+1 */
ifg1 = 1; /* 只有复位后才恢复0 投票只能投一次 */
}
LCD_write_char( 11, 1, piaoshu + '0' ); /* 显示投票数 */
}else if ( key_v == 3 )
{
if ( ifg2 == 0 )
{
piaoshu++; /* 票数+1 */
ifg2 = 1; /* 只有复位后才恢复0 投票只能投一次 */
}
LCD_write_char( 11, 1, piaoshu + '0' ); /* 显示投票数 */
}else if ( key_v == 4 )
{
if ( ifg3 == 0 )
{
piaoshu++; /* 票数+1 */
ifg3 = 1; /* 只有复位后才恢复0 投票只能投一次 */
}
LCD_write_char( 11, 1, piaoshu + '0' ); /* 显示投票数 */
}
}
}
}
}
cpphttps://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!