当前位置:网站首页>The second game of the 12th provincial single chip microcomputer competition of the Blue Bridge Cup
The second game of the 12th provincial single chip microcomputer competition of the Blue Bridge Cup
2022-07-02 03:38:00 【Super 561】




mian.c
#include <STC15F2K60S2.H>
#include <IIC.H>
unsigned int dianya_set;
unsigned int freq_ne555_set;
void Device_ctrl(unsigned char p2date,unsigned char p0date)
{
P0=p0date;
P2=P2&0X1F|p2date;
P2&=0X1F;
}
void write_24c02(unsigned char add,unsigned int date)
{
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_SendByte(date);
IIC_WaitAck();
IIC_Stop();
}
unsigned int read_24c02(unsigned char add)
{
unsigned int date;
IIC_Start();
IIC_SendByte(0xa0);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0xa1);
IIC_WaitAck();
date=IIC_RecByte();
IIC_SendAck(1);
IIC_Stop();
return date;
}
unsigned int ad_count;
unsigned int dianya;
unsigned char mode=1;
bit dianya_flag=1;
unsigned char read_ad(unsigned char add)
{
unsigned char date;
IIC_Start();
IIC_SendByte(0x90);
IIC_WaitAck();
IIC_SendByte(add);
IIC_WaitAck();
IIC_Start();
IIC_SendByte(0x91);
IIC_WaitAck();
date=IIC_RecByte();
IIC_SendAck(1);
IIC_Stop();
return date;
}
void ad_process()
{
if(ad_count>10)
{
ad_count=0;
if(mode==1)
{
dianya=read_ad(0x01);
dianya=dianya/51.0f*100;
}
if(mode==3)
{
dianya=read_ad(0x03);
dianya=dianya/51.0f*100;
}
}
}
unsigned char smg_display[8];
unsigned char smg_du[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
unsigned int smg_count;
unsigned char display_mode;
unsigned int zhouqi;
unsigned int freq_ne555;
unsigned int ne555_count;
void Init_ne555()
{
TMOD|=0x05;
TH0=0;
TL0=0;
TR0=1;
}
void ne555_process()
{
ne555_count++;
if(ne555_count>1000)
{
ne555_count=0;
freq_ne555=(TH0<<8)|TL0;
TH0=0;
TL0=0;
}
}
void smg_show()
{
unsigned char i;
Device_ctrl(0xc0,0);
Device_ctrl(0xe0,~smg_display[i]);
Device_ctrl(0xc0,0x01<<i);
i=(i+1)%8;
}
void smg_process()
{
if(smg_count>3)
{
smg_count=0;
if(display_mode==0)
{
smg_display[0]=0x71;
if(freq_ne555>999999)
{
smg_display[1]=smg_du[freq_ne555/1000000];
smg_display[2]=smg_du[freq_ne555/100000%10];
smg_display[3]=smg_du[freq_ne555/10000%10];
smg_display[4]=smg_du[freq_ne555/1000%10];
smg_display[5]=smg_du[freq_ne555/100%10];
smg_display[6]=smg_du[freq_ne555/10%10];
smg_display[7]=smg_du[freq_ne555%10];
}
else if(freq_ne555>99999)
{
smg_display[1]=0x00;
smg_display[2]=smg_du[freq_ne555/100000];
smg_display[3]=smg_du[freq_ne555/10000%10];
smg_display[4]=smg_du[freq_ne555/1000%10];
smg_display[5]=smg_du[freq_ne555/100%10];
smg_display[6]=smg_du[freq_ne555/10%10];
smg_display[7]=smg_du[freq_ne555%10];
}
else if(freq_ne555>9999)
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=smg_du[freq_ne555/10000];
smg_display[4]=smg_du[freq_ne555/1000%10];
smg_display[5]=smg_du[freq_ne555/100%10];
smg_display[6]=smg_du[freq_ne555/10%10];
smg_display[7]=smg_du[freq_ne555%10];
}
else if(freq_ne555>999)
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=smg_du[freq_ne555/1000];
smg_display[5]=smg_du[freq_ne555/100%10];
smg_display[6]=smg_du[freq_ne555/10%10];
smg_display[7]=smg_du[freq_ne555%10];
}
else if(freq_ne555>99)
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=0x00;
smg_display[5]=smg_du[freq_ne555/100];
smg_display[6]=smg_du[freq_ne555/10%10];
smg_display[7]=smg_du[freq_ne555%10];
}
else if(freq_ne555>9)
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=0x00;
smg_display[5]=0x00;
smg_display[6]=smg_du[freq_ne555/10];
smg_display[7]=smg_du[freq_ne555%10];
}
else
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=0x00;
smg_display[5]=0x00;
smg_display[6]=0X00;
smg_display[7]=smg_du[freq_ne555%10];
}
}
if(display_mode==1)
{
zhouqi=1000000/freq_ne555;
smg_display[0]=0x37;
if(zhouqi>999999)
{
smg_display[1]=smg_du[zhouqi/1000000];
smg_display[2]=smg_du[zhouqi/100000%10];
smg_display[3]=smg_du[zhouqi/10000%10];
smg_display[4]=smg_du[zhouqi/1000%10];
smg_display[5]=smg_du[zhouqi/100%10];
smg_display[6]=smg_du[zhouqi/10%10];
smg_display[7]=smg_du[zhouqi%10];
}
else if(zhouqi>99999)
{
smg_display[1]=0x00;
smg_display[2]=smg_du[zhouqi/100000%10];
smg_display[3]=smg_du[zhouqi/10000%10];
smg_display[4]=smg_du[zhouqi/1000%10];
smg_display[5]=smg_du[zhouqi/100%10];
smg_display[6]=smg_du[zhouqi/10%10];
smg_display[7]=smg_du[zhouqi%10];
}
else if(zhouqi>9999)
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=smg_du[zhouqi/10000%10];
smg_display[4]=smg_du[zhouqi/1000%10];
smg_display[5]=smg_du[zhouqi/100%10];
smg_display[6]=smg_du[zhouqi/10%10];
smg_display[7]=smg_du[zhouqi%10];
}
else if(zhouqi>999)
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=smg_du[zhouqi/1000%10];
smg_display[5]=smg_du[zhouqi/100%10];
smg_display[6]=smg_du[zhouqi/10%10];
smg_display[7]=smg_du[zhouqi%10];
}
else if(zhouqi>99)
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=0x00;
smg_display[5]=smg_du[zhouqi/100%10];
smg_display[6]=smg_du[zhouqi/10%10];
smg_display[7]=smg_du[zhouqi%10];
}
else if(zhouqi>9)
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=0x00;
smg_display[5]=0x00;
smg_display[6]=smg_du[zhouqi/10%10];
smg_display[7]=smg_du[zhouqi%10];
}
else
{
smg_display[1]=0x00;
smg_display[2]=0x00;
smg_display[3]=0x00;
smg_display[4]=0x00;
smg_display[5]=0x00;
smg_display[6]=0x00;
smg_display[7]=smg_du[zhouqi%10];
}
}
if(display_mode==2)
{
smg_display[0]=0x3E;
smg_display[1]=0x40;
smg_display[2]=smg_du[mode];
smg_display[3]=0x00;
smg_display[4]=0x00;
smg_display[5]=smg_du[dianya/100]|0x80;
smg_display[6]=smg_du[dianya/10%10];
smg_display[7]=smg_du[dianya%10];
}
}
}
unsigned char Trig_btn;
unsigned char Cont_btn;
unsigned int key_count;
void key_btn()
{
unsigned char readdate=P3^0XFF;
Trig_btn=readdate&(Cont_btn^readdate);
Cont_btn=readdate;
}
void key_process()
{
if(key_count>=10)
{
key_count=0;
key_btn();
if(Trig_btn==0x08)
{
display_mode++;
if(display_mode==3)
{
display_mode=0;
}
}
if(Trig_btn==0x04)
{
dianya_flag=~dianya_flag;
if(dianya_flag==1)
{
mode=1;
}
else
{
mode=3;
}
}
if(Trig_btn==0x02)
{
write_24c02(0,dianya);
dianya_set=read_24c02(0);
}
if(Trig_btn==0x01)
{
write_24c02(0x01,freq_ne555);
freq_ne555_set=read_24c02(0x01);
}
}
}
unsigned int led_count;
unsigned char led_ctrl=0xff;
void led_process()
{
if(led_count>10)
{
led_count=0;
if(dianya>dianya_set)
{
led_ctrl&=~0X01;
}
else
{
led_ctrl|=0X01;
}
if(freq_ne555>freq_ne555_set)
{
led_ctrl&=~0X02;
}
else
{
led_ctrl|=0X02;
}
if(display_mode==0)
{
led_ctrl&=~0X04;
}
else
{
led_ctrl|=0X04;
}
if(display_mode==1)
{
led_ctrl&=~0X08;
}
else
{
led_ctrl|=0X08;
}
if(display_mode==2)
{
led_ctrl&=~0X10;
}
else
{
led_ctrl|=0X10;
}
Device_ctrl(0x80,led_ctrl);
}
}
void Timer2Init() //1 millisecond @12.000MHz
{
AUXR &= 0xFB; // Timer clock 12T Pattern
T2L = 0x18; // Set initial value of timing
T2H = 0xFC; // Set initial value of timing
AUXR |= 0x10; // Timer 2 Start timing
IE2|=0X04;
EA=1;
}
void main()
{
Timer2Init();
Init_ne555();
Device_ctrl(0xa0,0x00);
Device_ctrl(0x80,0xff);
while(1)
{
smg_process();
key_process();
led_process();
ad_process();
}
}
void timer2service() interrupt 12
{
smg_count++;
key_count++;
ad_count++;
smg_show();
led_count++;
ne555_process();
}iic.c
#include "iic.h"
#define DELAY_TIME 5
//I2C Bus internal delay function
void IIC_Delay(unsigned char i)
{
do{_nop_();}
while(i--);
}
//I2C Bus start signal
void IIC_Start(void)
{
SDA = 1;
SCL = 1;
IIC_Delay(DELAY_TIME);
SDA = 0;
IIC_Delay(DELAY_TIME);
SCL = 0;
}
//I2C Bus stop signal
void IIC_Stop(void)
{
SDA = 0;
SCL = 1;
IIC_Delay(DELAY_TIME);
SDA = 1;
IIC_Delay(DELAY_TIME);
}
// Send a reply or non reply signal
void IIC_SendAck(bit ackbit)
{
SCL = 0;
SDA = ackbit;
IIC_Delay(DELAY_TIME);
SCL = 1;
IIC_Delay(DELAY_TIME);
SCL = 0;
SDA = 1;
IIC_Delay(DELAY_TIME);
}
// Waiting for an answer
bit IIC_WaitAck(void)
{
bit ackbit;
SCL = 1;
IIC_Delay(DELAY_TIME);
ackbit = SDA;
SCL = 0;
IIC_Delay(DELAY_TIME);
return ackbit;
}
//I2C The bus sends a byte of data
void IIC_SendByte(unsigned char byt)
{
unsigned char i;
for(i=0; i<8; i++)
{
SCL = 0;
IIC_Delay(DELAY_TIME);
if(byt & 0x80) SDA = 1;
else SDA = 0;
IIC_Delay(DELAY_TIME);
SCL = 1;
byt <<= 1;
IIC_Delay(DELAY_TIME);
}
SCL = 0;
}
//I2C The bus receives a byte of data
unsigned char IIC_RecByte(void)
{
unsigned char i, da;
for(i=0; i<8; i++)
{
SCL = 1;
IIC_Delay(DELAY_TIME);
da <<= 1;
if(SDA) da |= 1;
SCL = 0;
IIC_Delay(DELAY_TIME);
}
return da;
}
iic.h
#ifndef __IIC_H
#define __IIC_H
#include <STC15F2K60S2.H>
#include "intrins.h"
sbit SDA = P2^1;
sbit SCL = P2^0;
void IIC_Start(void);
void IIC_Stop(void);
bit IIC_WaitAck(void);
void IIC_SendAck(bit ackbit);
void IIC_SendByte(unsigned char byt);
unsigned char IIC_RecByte(void);
#endif边栏推荐
- Yan Rong looks at how to formulate a multi cloud strategy in the era of hybrid cloud
- [HCIA continuous update] working principle of OSPF Protocol
- 蓝桥杯单片机数码管技巧
- MySQL之账号管理
- Verilog reg register, vector, integer, real, time register
- Kotlin基础学习 17
- [golang] leetcode intermediate bracket generation & Full Permutation
- 汇率的查询接口
- Go执行shell命令
- Account management of MySQL
猜你喜欢

焱融看 | 混合雲時代下,如何制定多雲策略

蓝桥杯单片机省赛第七届

Generate random numbers that obey normal distribution

焱融看 | 混合云时代下,如何制定多云策略

Exchange rate query interface

0 foundation how to learn automated testing? Follow these seven steps step by step and you will succeed

《MATLAB 神經網絡43個案例分析》:第42章 並行運算與神經網絡——基於CPU/GPU的並行神經網絡運算

Pointer array & array pointer

Fourier series
![[designmode] builder model](/img/e8/855934d57eb6868a4d188b2bb1d188.png)
[designmode] builder model
随机推荐
汇率的查询接口
Grpc quick practice
[database]jdbc
PY3 link MySQL
近段时间天气暴热,所以采集北上广深去年天气数据,制作可视化图看下
High performance and low power cortex-a53 core board | i.mx8m Mini
Halcon image rectification
C#聯合halcon脫離halcon環境以及各種報錯解决經曆
Kotlin basic learning 16
《MATLAB 神经网络43个案例分析》:第41章 定制神经网络的实现——神经网络的个性化建模与仿真
VS2010 plug-in nuget
"Analysis of 43 cases of MATLAB neural network": Chapter 42 parallel operation and neural network - parallel neural network operation based on cpu/gpu
Imageai installation
NLog use
Oracle的md5
"Analysis of 43 cases of MATLAB neural network": Chapter 41 implementation of customized neural network -- personalized modeling and Simulation of neural network
蓝桥杯单片机数码管技巧
Haute performance et faible puissance Cortex - A53 Core Board | i.mx8m mini
MySQL index, transaction and storage engine
Didi open source Delta: AI developers can easily train natural language models