久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3570|回復: 3
收起左側

基于STC15W4K32S4單片機的兩路搶答器Proteus仿真程序

[復制鏈接]
ID:832456 發表于 2021-7-15 21:11 | 顯示全部樓層 |閱讀模式
功能組成:運行仿真,LCD1602顯示24C04保存的數據,按鍵一:搶答開始按鍵,當按鍵按下,倒計時開始,規定時間內,按鍵A,按鍵B做出搶答,刷新LCD1602的得分并保存到24C04中,按鍵4清零24C04的數據。仿真圖如下:
STC15兩路搶答器.png

單片機源程序如下:
#include "config.h"
#include "USART1.h"
#include "delay.h"
#include "lcd1602.h"
#include "IIC.h"
#include "timer.h"
#include "GPIO.h"

sbit k1=P4^0;
sbit k2=P4^2;
sbit k3=P4^5;
sbit k4=P4^7;

sbit A0=P7^0;
sbit A1=P7^1;
sbit A2=P7^2;
sbit BEEP = P7^7;

uchar code DSY_CODE[]=
{
  0x90,0x80,0xf8,0x82,0x92,0x99,0xb0,0xa4,0xf9,0xc0
};
unsigned char dat1=0, dat2=0, dat3 =0;
unsigned char times=0,tim=0,start=0,off=0,kes=0;

void UART_config(void);
void Timer_config(void);
uchar scan_key(void);

void main(void)
{
        u8        i;

        UART_config();
        Timer_config();
        EA = 1;

            LCD_init();        
        s_connectionreset();
        
            dat1 = Read_24C02(0x01);
            dat2 = Read_24C02(0x03);
                dat3 = Read_24C02(0x05);
        
        LCD_disp_str(0,1," Responder Game");
                LCD_disp_str(0,2,"A->");
            LCD_disp_str(5,2,"B->");
        LCD_disp_char(3,2,dat1+'0');
            LCD_disp_char(8,2,dat2+'0');
        
         
//                Write_24C02(0x01, dat1);
//                delay_ms(100);
//                Write_24C02(0x03, dat2);
//                delay_ms(100);
//                Write_24C02(0x05, dat3);
               
                BEEP = 0;
               
               
        while (1)
        {        
//                dat1++;
//                Write_24C02(0x01, dat1);
//                delay_ms(300);
//        dat1 = Read_24C02(0x01);
//                LCD_disp_char(3,2,dat1+'0');
                scan_key();
                if(dat1>=9) dat1=0;
                if(dat2>=9) dat2=0;
                //delay_ms(600);

               
                if(COM1.RX_TimeOut > 0)                //超時計數
                {
                        if(--COM1.RX_TimeOut == 0)
                        {
                                if(COM1.RX_Cnt > 0)
                                {
                                        for(i=0; i<COM1.RX_Cnt; i++)        TX1_write2buff(RX1_Buffer[ i]);        //收到的數據原樣返回
                                }
                                COM1.RX_Cnt = 0;
                        }
                }
        }
}

uchar scan_key(void)
{
     if(k1==0)
                {
                        delay_ms(100);
                        if(k1==0)
                        {
                                A0=1;A1=1;A2=1;
                                start=1;
                                PrintString1("游戲開始!開始搶答\r\n");
                        }               
                }
               
        if((k2==0)&&(start==1))
        {
           delay_ms(10);
           if(k2==0)
                {
                        A0=0;A1=0;A2=0;
                        kes=2;
                        off=1;
                        dat1++;
                        Write_24C02(0x01, dat1);
                        LCD_disp_char(3,2,dat1+'0');
                        PrintString1("A組搶答成功...\r\n");
                        BEEP = 1;
                        delay_ms(500);
                        BEEP = 0;
                }
        }
        if((k3==0)&&(start==1))
        {
           delay_ms(10);
           if(k3==0)
                {
                        A0=1;A1=0;A2=0;
                        off=1;
                        dat2++;
                        kes=3;
                        Write_24C02(0x03, dat2);
                        LCD_disp_char(8,2,dat2+'0');
                        PrintString1("B組搶答成功...\r\n");
                        BEEP = 1;
                        delay_ms(500);
                        BEEP = 0;
                }
        }
        if(k4==0)
        {
           delay_ms(10);
           if(k4==0)
                {
                        dat1=dat2=0;
                        Write_24C02(0x01, dat1);
                        delay_ms(100);
                        Write_24C02(0x03, dat2);
                        delay_ms(100);
                        LCD_disp_char(3,2,dat1+'0');
                LCD_disp_char(8,2,dat2+'0');
                }
        }
}
/*************  串口1初始化函數 *****************/
void        UART_config(void)
{
        COMx_InitDefine                COMx_InitStructure;                                        //結構定義
        COMx_InitStructure.UART_Mode      = UART_8bit_BRTx;                //模式,       UART_ShiftRight,UART_8bit_BRTx,UART_9bit,UART_9bit_BRTx
        COMx_InitStructure.UART_BRT_Use   = BRT_Timer2;                        //使用波特率,   BRT_Timer1, BRT_Timer2 (注意: 串口2固定使用BRT_Timer2)
        COMx_InitStructure.UART_BaudRate  = 9600ul;                        //波特率, 一般 110 ~ 115200
        COMx_InitStructure.UART_RxEnable  = ENABLE;                                //接收允許,   ENABLE或DISABLE
        COMx_InitStructure.BaudRateDouble = DISABLE;                        //波特率加倍, ENABLE或DISABLE
        COMx_InitStructure.UART_Interrupt = ENABLE;                                //中斷允許,   ENABLE或DISABLE
        COMx_InitStructure.UART_Polity    = PolityLow;                        //中斷優先級, PolityLow,PolityHigh
        COMx_InitStructure.UART_P_SW      = UART1_SW_P30_P31;        //切換端口,   UART1_SW_P30_P31,UART1_SW_P36_P37,UART1_SW_P16_P17(必須使用內部時鐘)
        COMx_InitStructure.UART_RXD_TXD_Short = DISABLE;                //內部短路RXD與TXD, 做中繼, ENABLE,DISABLE
        USART_Configuration(USART1, &COMx_InitStructure);                //初始化串口1 USART1,USART2

        PrintString1("STC15F2K60S2 UART1 Test Prgramme!\r\n");        //SUART1發送一個字符串
}

void Timer_config(void)
{
        TIM_InitTypeDef                TIM_InitStructure;                                        //結構定義
        TIM_InitStructure.TIM_Mode      = TIM_16BitAutoReload;        //指定工作模式,   TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
        TIM_InitStructure.TIM_Polity    = PolityLow;                        //指定中斷優先級, PolityHigh,PolityLow
        TIM_InitStructure.TIM_Interrupt = ENABLE;                                //中斷是否允許,   ENABLE或DISABLE
        TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T;                        //指定時鐘源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
        TIM_InitStructure.TIM_ClkOut    = ENABLE;                                //是否輸出高速脈沖, ENABLE或DISABLE
        TIM_InitStructure.TIM_Value     = 65536UL - (MAIN_Fosc / (50*12));                //初值,
        TIM_InitStructure.TIM_Run       = ENABLE;                                //是否初始化后啟動定時器, ENABLE或DISABLE
        Timer_Inilize(Timer1,&TIM_InitStructure);                                //初始化Timer1          Timer0,Timer1,Timer2
}

/********************* Timer1中斷函數************************/
void timer1_int (void) interrupt TIMER1_VECTOR //20ms
{
if(start==1)
{
           times++;
           if(times>50)
           {
                 times=0;
                 tim++;
                 P6= DSY_CODE[tim];
                 if((tim==9)||(off==1))
                         {start=0;
                          tim=0;
                          off=0;}
                        
           }
}

}

全部資料51hei下載地址:
基于STC15W4K32S4的兩路搶答器.rar (239.68 KB, 下載次數: 153)
回復

使用道具 舉報

ID:328014 發表于 2021-7-17 03:50 | 顯示全部樓層
用Proteus8.8打開LCD顯示空白,仿真失敗了
回復

使用道具 舉報

ID:192215 發表于 2022-5-16 10:28 | 顯示全部樓層
我調試時候也遇到過LCD都是白色的問題,大家有解決的辦法嗎a
回復

使用道具 舉報

ID:316613 發表于 2024-6-18 11:09 | 顯示全部樓層

我調試時候也遇到過LCD都是白色的問題,大家有解決的辦法嗎a
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线视频亚洲 | 久久一区二区三区四区五区 | 亚洲大片 | 国产精品成人一区二区三区 | 亚洲不卡在线观看 | 久久91av | 亚洲精品电影 | 日韩av一区二区在线观看 | 第四色影音先锋 | 成人精品国产一区二区4080 | 欧美视频免费在线 | 天天影视综合 | 日韩av福利在线观看 | 一区二区三区观看视频 | 99在线观看视频 | 69电影网| 成人精品久久日伦片大全免费 | 日韩aⅴ视频 | 国产在线h| 日韩精品在线看 | 国产成人免费在线 | 国产精品爱久久久久久久 | 欧美在线观看黄色 | 久久av网| 亚洲一区二区视频 | 亚洲精品一区二区三区在线 | av资源中文在线天堂 | 国产黄色在线观看 | 日韩精品无码一区二区三区 | 九九导航 | 日韩精品成人av | 国产成人精品久久二区二区91 | 91精品无人区卡一卡二卡三 | 国产一级黄色网 | 中文字幕视频免费 | 第一区在线观看免费国语入口 | 九九热精品视频 | 中文字幕亚洲无线 | 国产一区二 | www久久久 | 九热在线|