蓝桥杯历届所有考过的模块(IIC,DS1302,DS18B20,NE555,串口模块)汇总(一)

本文介绍了作者在准备蓝桥杯比赛期间,针对历届比赛中常见的IIC,DS1302,DS18B20,NE555,串口模块进行的总结,包括数码管显示、独立按键和矩阵按键的实现代码。作者分享了自己在大三时获得省赛一等奖的经历,并将代码开源。" 102540054,8166089,Freemarker与静态化页面生成及JMS消息中间件详解,"['前端开发', '后端开发', 'Web开发', '数据处理', '消息队列']
摘要由CSDN通过智能技术生成

        本人大二进实验室,大二觉得自己不行,就没参加蓝桥杯,现大三参加第九届蓝桥杯也就准备了一个月,获得省赛一等奖,现后天决赛比赛,突发想法想发第一个帖子。希望大家支持,我也会更加努力。

下面贴代码。(只是数码管)

    base.c该文件用来写底层驱动文件。

代码:

#include "base.h"//用来写底层驱动文件
//所有IO口操作没有用”与或“运算,些许地方会有影响。理应用的,这里偷懒


uchar tab[] = {0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//位选码
uchar tab1[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6};//段选码0xbf为“-”,0xc6为“C”


uchar ds[] = {50,57,23,23,5,3,18};//初始时间 :50秒 57分 23时 23日 5月 星期三 2018年(严格按照顺序)
uchar time[7];//实时时钟


void allinit()//初始化
{
P2 = 0XFF;
P0 = 0XFF;//关闭数码管段选

P2 = 0XA0;
P0 = 0X00;//关闭蜂鸣器、继电器

P2 = 0X80;
P0 = 0XFF;//关闭LED;
}


void delayms(uint ms)//11.0592mhz 延时 1ms
{
uint i,j;
for(i=ms;i>0;i--)
for(j=845;j>0;j--);
}


void display(uchar m,uchar n)//数码管显示,m为位选,n为段选。
{
P2 = 0XFF;
P0 = 0XFF;//关闭段选码,消隐

P2 = 0XC0;
P0 = tab[m];//位选

P2 = 0XFF;
P0 = tab1[n];//片选

delayms(1);
P0 = 0XFF;//延时1ms,关闭段选,可解决数码管最后一位亮度较其他数码管亮的小bug。
}


uchar keyscan()//独立按键
{
uchar key;
if(P30 == 0)
{
delayms(5);//防抖
if(P30 == 0)
{
key = 7;
while(!P30);//松手检测
}
}
if(P31 == 0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值