结合蓝桥杯西风老版本大模板进行优化的省赛解题思路

用最简单直白的话解决大家大部分的小错误

**************************************************************************************

本次解题思路结合

1——第九套蓝桥杯省赛真题

2——B站小蜜蜂的暴力解题思想

在大概完成B站西风的大模板的Led Seg Key Ds1302后就可以开始解题

下面讲的是在写底层时会出现的一些常见错误

/********1号底层文件**********/
#include "init.h"
void System_Init() {
  P0 = 0xff;
  P2 = P2 & 0x1f | 0x80;
  P2 &= 0x1f;

  P0 = 0x00;
  P2 = P2 & 0x1f | 0xa0;
  P2 &= 0x1f;
}


1号底层文件在写出来后记得把函数放到main函数的while前面 ,不然没分。

/*********************2号底层文件***************/
unsigned char seg_dula[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x88};
unsigned char seg_wela[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

void Seg_Disp(unsigned char wela,dula,point)
{
	P0 = 0xff;
	P2 = P2 & 0x1f | 0xe0;
	P2 &= 0x1f;

	P0 = seg_wela[wela];
	P2 = P2 & 0x1f | 0xc0;
	P2 &= 0x1f;
	
	P0 = seg_dula[dula];
	if(point)
		P0 &= 0x7f;
	P2 = P2 & 0x1f | 0xe0;
	P2 &= 0x1f;	

在写2号底层的时候 段码表 位码表 有时候会出错 要看清是共阴极 共阳极  (其实没啥差别加个取反就行)

有不会写段码表位码表的 直接推荐你们去stc_-isp上复制

还有就是数码管显示时间的时候会有  “-”  标志 这个标志建议 西风的底层生成这个看不懂的话直接

在位码表后面加上 “-” 的位码 建议记一下 “-”的段码表 0xfe  

if(point)
	P0 &= ?;
	P2 = P2 & 0x1f | 0xe0;
	P2 &= 0x1f;	

然后西风的东西太复杂了 让我们搞点骚操作

unsigned char Seg_Point[8];
unsigned char Seg_Point[8]={0,0,1,0,0,1,0,0};// “-” 

我们卡好 “-” 的位置在主函数里面的 Seg_Point[] 里面的位置把0换成一

这个是简单好用 但是不要忘记了 切换到别的模式后记得改一改 

时间显示还好 但是要是换成温度显示了 就直接重定义 在条件函数里面记得重复改变 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

底层敲完之后之后开始解题

***************************************************************************************************

通读题目快速形成思维导图

思维导图对解题很有帮助   有个思维导图在 在设计程序的时候就能从最底层开始设计 

有个大概的逻辑性 这样程序不会出现问题

有了思维导图就能给程序进行分层次

例如 Seg_Mode=0  就是时间显示

                         =1  就是温度显示

就这样分层次的往下写就行    

能避免逻辑上出的问题

这里博主和西风的模板最大不同之处就体现出来了

博主的方法能帮你规避掉西风模板中复杂的位运算 即使你是小白 也能轻松运用其解题

将16进制加减转化为十进制加减(因为ds13b20底层我不会改 所以还是保留了它的十六进制  不过  最后进行Bcd转码赋值给数组就行)

*****************************************插图省略***********************************************************

另外注意一下理论上涉及数组转换 要想写的舒服就直接定义一个新数组  在这个数组里面把要输出的值弄对 直接输出给Seg_Buf []   就行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值