蓝桥杯单片机笔记_蓝桥杯单片机 - CSDN
精华内容
参与话题
  • 数码管点亮时间约为1~2ms。在数码管数字变化时,先熄灭再更新数据,称为消隐。 using 0 是第0组寄存器; reentrant声明的函数为可重入函数。可重入的函数能够被多个进程同时调用。可重入函数在执行时,另外的进程...

    数码管点亮时间约为1~2ms。在数码管数字变化时,先熄灭再更新数据,称为消隐。
    using 0 是第0组寄存器;
    reentrant声明的函数为可重入函数。可重入的函数能够被多个进程同时调用。可重入函数在执行时,另外的进程可以中断当前执行的函数,并且调用同一个函数。正常情况下,C51程序中的函数不能被递归地调用,这是由于函数的参数和局部变量都被保存在固定的地址,在递归调用时操作了相同存储位置,导致数据被覆
    超声波传感器基于压电效应。施加40KHz高频电压,则压电陶瓷片就根据所加高频电压极性伸长与缩短,于是发送40KHz频率的超声波,其超声波以疏密形式传播(疏密程度可由控制电路调制),并传给波接收器。
    放大器上的输入电阻越大越好,输出电阻越小越好
    void是C51基本类型,double不是
    在这里插入图片描述
    C51 提供一个3字节的通用存储器指针,通用指针的头一个字节表明指针所指的存储区空间,另外两个字节存储16位偏移量对于DATA IDATA 和PDATA 段只需要8位偏移量
    C语言中的 ^= 意思为:按位异或后赋值
    RS485差分,RS232不是

    展开全文
  • 蓝桥杯单片机设计与开发笔记(一)

    万次阅读 多人点赞 2016-03-27 17:12:00
    近期参加了第七届蓝桥杯单片机开发与设计组省赛,在这里将备赛的一些资料总结一下,并分享给大家。 蓝桥杯单片机开发板是国信长天的CT107D开发平台,个人感觉这块开发板的设计还是很不错的。之前一直用的普中的板子...

    近期和我们实验室的小伙伴一起参加了第七届蓝桥杯单片机开发与设计组省赛,在这里将备赛期间的一些资料和经验总结一下,并分享给大家。

    蓝桥杯单片机开发板是国信长天的CT107D单片机综合训练平台,个人感觉这块开发板的设计还是很不错的。之前一直用的普中的板子,自己也做过一些最小系统板,练习了蓝桥杯的板子后根本不想再用普中的板子了。普中的板子将单片机的学习划分成很多个模块,操作各个模块时需要手动接线,因此很适合初学者,而蓝桥杯的板子则不需要自己手动接线,开发板也没有模块划的划分,能够让我们对单片机编程有更深入的理解,适合进阶练习。

    虽然CT107D中使用了很多的锁存器,电路看起来比较复杂,但是熟悉之后会发现自己对之前毫不在意的锁存器有了更深刻的认识,对于模块化编程与代码复用也有了更深入的认识。通过这次比赛我对单片机编程也有了不同的认识,学到一个很重要的单片机编程套路就是通过定时器来实现前后台的编程思想,虽然以前也这么用过中断来处理一些事务,但是没有这么深刻的认识。同时,学会看芯片文档对于你以后做开发会有很大的帮助。总之,比赛过后有很多想要分享的东西,我会慢慢的写好每一篇博客。

    在这一系列的笔记中,我会将自己蓝桥杯备赛期间写的一些代码以及做过的一些模拟题与大家进行分享,欢迎大家与我交流心得。

    展开全文
  • ##第八届蓝桥杯单片机组,发表纪念蓝桥探索过程## 百度盘链接在此,密码:j5g9

    ##第八届蓝桥杯单片机组,发表纪念蓝桥探索过程##

    百度盘链接在此,密码:j5g9

    展开全文
  • 一.原理图及引脚说明 编号 引脚名 引脚说明 编号 引脚名 引脚说明 1 VSS 电源地 9 D2 Data I/O 2 VDD 电源正极 10 D3 Data I/O 3 VL 对比度调整电压,可由Rb1电位器控制 11 D4 ...D...

    一.原理图及引脚说明

    在这里插入图片描述
    可由Rb1电位器控制LCD的对比度

    编号 引脚名 引脚说明 编号 引脚名 引脚说明
    1 VSS 电源地 9 D2 Data I/O
    2 VDD 电源正极 10 D3 Data I/O
    3 VL 对比度调节 11 D4 Data I/O
    4 RS 数据/指令选择段(H/L) 12 D5 Data I/O
    5 R/W 读/写选择段(H/L) 13 D6 Data I/O
    6 E 使能信号 14 D7 Data I/O
    7 D0 Data I/O 15 BLA 背光源正极
    8 D1 Data I/O 16 BLK 背光源负级

    二.控制接口说明

    1.1602的存储器

    DDRAM:作为显示用的RAM,其地址直接和屏幕上的位置相对应,具体可看第4点;
    CGROM:字模存储ROM,里面存入了ascall码字符,显示时自动调用,无需修改;
    CGRAM:用户自建字模RAM,可自行向其中添加想要的字模,6位地址码,每个字符占8个字节,所以最多存8个字符。

    2.基本操作时序
    序号 基本操作 时序
    1 读状态 RS=L,R/W=H,E=H,D0~7=状态字
    2 写指令 RS=L,R/W=L,D0~7=指令码,E=高脉冲
    3 读数据 RS=H,R/W=H,E=H,D0~7=数据
    4 写数据 RS=H,R/W=L,D0~7=数据,E=高脉冲
    3.状态字说明

    STA7:读写操作使能,1—禁止,0—允许
    STA6~0:当前数据地址指针的数值

    对应代码:

    //读状态
    void read_state(void)
    {
    	unsigned char sta;			//状态读取存储变量
    	LCD1602_DB=0xff;	
    	LCD1602_RS=0;
    	LCD1602_RW=1;
    	LCD1602_E=1;
    	do
    	{
    		LCD1602_E=1;
    		sta=LCD1602_DB;	//把状态字读取到sta变量中,可通过最高位判断液晶是否处于忙态,1时为忙 
    		LCD1602_E=0;	//释放总线,防止影响其他模块
    	}while(sta&0x80);	//判断最高位,直到允许读写时跳出循环
    }
    
    //写指令
    void write_cmd(unsigned char cmd)
    {
    	read_state();
    	LCD1602_RS=0; 	//RS=0->指令
    	LCD1602_RW=0;	//R/W=0->写
    	LCD1602_DB=cmd;	//写入指令
    	LCD1602_E=1;	
    	LCD1602_E=0;			
    }
     
     //写数据
    void write_data(unsigned char date)
    {
    	read_state();
    	LCD1602_RS=1;   //RS=1->数据
    	LCD1602_RW=0;	//R/W=0->写
    	LCD1602_DB=date;	//写入数据
    	LCD1602_E=1;
    	LCD1602_E=0;
    }
    
    4.DDRAM地址映射图

    在这里插入图片描述

    5.指令说明
    序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0
    1 清显示 0 0 0 0 0 0 0 0 0 1
    2 光标返回 0 0 0 0 0 0 0 0 1 *
    3 光标和显示模式设置 0 0 0 0 0 0 0 1 I/D S
    4 显示开/关控制 0 0 0 0 0 0 1 D C B
    5 光标或字符移位 0 0 0 0 0 1 S/C R/L * *
    6 功能设置 0 0 0 0 1 DL N F * *
    7 设置字符发生存储器地址 0 0 0 1 A5 A4 A3 A2 A1 A0
    8 设置数据存储器地址 0 0 1 A6 A5 A4 A3 A2 A1 A0
    9 读忙标志或AC地址 0 1 BF A6 A5 A4 A3 A2 A1 A0
    10 写数据到CGRAM/DDRAM 1 0 D7 D6 D5 D4 D3 D2 D1 D0
    11 从CGRAM/DDRAM读数据 1 1 D7 D6 D5 D4 D3 D2 D1 D0

    指令1:清显示
    1.清除显示器,将DDRAM全部写入空白的ASCll码20H;
    2.地址计数器AC的值设为0;
    3.光标复位到地址00H的位置;

    指令2:光标复位指令
    1.光标复位到地址00H的位置;
    2.地址计数器AC的值设为0;
    3.DDRAM内容不变

    指令3:光标和显示模式设置
    1.I/D:光标移动方向。0—左移,1—右移;
    2.S:屏幕上所有文字是否移动。0—关闭,1—右移

    指令4:显示开关控制
    1.D:控制整体显示的开关。0—关,1—开;
    2.C:控制光标显示的开关。0—关,1—开;
    3.B:控制光标闪烁的开关。0—关,1—开;

    指令5:光标或显示移位

    S/C R/L 功能
    0 0 光标左移1格且地址计数器AC减1
    0 1 光标右移1格且地址计数器AC加1
    1 0 屏幕上所有字符左移1格但光标不变
    1 1 屏幕上所有字符右移1格但光标不变

    指令6:功能设置
    设定数据总线位数、显示的行数及字型
    1.DL:数据总线位数。0—4位,1—8位;
    2.N:显示行数。0—1行,1—2行;
    3. F:显示点阵类型。0—5X10点阵,1— 5X7点阵

    指令7:设定CGRAM地址
    设定下一个要存入数据的CGRAM的地址,该指令在向CGRAM时数据前使用。

    指令8:设定DDRAM地址
    设定下一个要存入数据的DDRAM的地址,该指令在向DDRAM写数据(即显示)时使用。

    指令9:读取忙信号或AC地址
    1.BF:液晶显示器是否忙。0—不忙,可接收,1—忙,暂时无法接收;
    2.读取计数器AC的地址;

    指令10:写数据到CGRAM或DDRAM
    1.将字符码写入DDRAM,以使液晶显示屏显示出相对于的字符;
    2.使用者自己设计的图形存入CGRAM;

    指令11:从CGRAM或DDRAM读出数据
    读取CGRAM或DDRAM中的内容。

    初始化代码:

    //LCD初始化设置
    void lcd_init()
    {		
    	LCD1602_E=0;		 //使能关(操作前关使能使用时打开)
    	write_cmd(0x3c);     //设置16*2显示,5*7点阵,8位数据口
    	write_cmd(0x0c);     //设置开显示,不显示光标
    	write_cmd(0x06);     //设置写一个字符后地址指针自动加1
    	write_cmd(0x01);     //显示清0,数据指针清0
    }
    
    //x为列,范围0~39
    //y为行,0——第1行,1——第2行
    //将坐标转换为对应的RAM地址,实际指针地址为0x80+RAM映射地址,0x80为指令固定位
    void LCD1602_SetRAM(unsigned char x,unsigned char y)
    {
        unsigned char addr;
        if(y == 0)
            addr = 0x80 + x;
        else
            addr = 0xc0 + x;
        write_cmd(addr);
    }
    
    //对应位置显示字符串
    void LCD1602_Show(unsigned char x,unsigned y,unsigned char *str)
    {
        LCD1602_SetRAM(x,y);
        while(*str != '\0')
        {
            write_data(*str++);
        }
    }
    
    #define LCD1602_DB P0
    
    sbit LCD1602_RS=P2^0;  //RS,数据/命令选择端(H/L)
    sbit LCD1602_RW=P2^1;  //R/W,读/写选择端(H/L)
    sbit LCD1602_E=P1^2;  // E,使能信号
    
    void read_state(void);//读状态,直到lcd不忙才继续执行其他操作
    void write_cmd(unsigned char com);//写指令
    void write_data(unsigned char date);//写数据
    void lcd_init();//LCD初始化
    void LCD1602_SetRAM(unsigned char x,unsigned char y);//设置显示RAM起始地址(x,y对应屏上字符坐标)
    void LCD1602_Show(unsigned char x,unsigned y,unsigned char *str);//显示字符串
    
    void main()
    {
    	lcd_init();
    	LCD1602_Show(0,0,"Hello everyone!");	//第一行显示Hello everyone!
    	//向CGRAM中存入字符:write_cmd(0X40+num);num为8的倍数(0~56)
    	//然后用write_data(data);循环写入8个字节,即一个字符对应的8行
    	//如果要将CGRAM中自己存入的字符显示到屏幕上
    	//可先write_cmd(addr);addr为DDRAM的地址
    	//然后write_data(num);num=1~8,即CGRAM中的8个字符
    	//注意首先要保证CGRAM中已经存入字符
     	while(1)
    	{	
    //		write_cmd(0x18);	//显示器字符左移
    		//添加适当的延时函数		
    	}					 
    }
    

    注意:用此开发板时,如果插上LCD1602,可能会对其他模块产生影响,例如数码管无法正常显示等。

    展开全文
  • 蓝桥杯单片机设计与开发笔记(三)

    万次阅读 多人点赞 2016-04-03 15:57:16
    数码管显示几乎是每次蓝桥杯单片机设计与开发组竞赛的必考部分,相对于使用LCD1602作为显示设备,使用数码管来显示能够更好的考察参赛选手的单片机基本功,因为CT107D开发平台的设计使得数码管的显示不仅牵扯到...
  • 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • 蓝桥杯单片机设计与开发笔记(四)

    万次阅读 多人点赞 2016-04-04 19:26:58
    按键几乎也是每次蓝桥杯单片机设计与开发组竞赛的必考部分,因为这是CT107D开发平台上仅有的输入设备之一,而且按键也是单片机基础开发中常见的器件。一、独立按键 1、原理分析用跳帽把J5的引脚2和引脚3接起来,...
  • 最近开始准备九月份的蓝桥杯单片机比赛, 买了一块开发板开始进行学习。以前有学过51单片机,相比于CT107D单片机竞赛板V20,51单片机的操作的确要简单许多,但原理都一样,没什么变化,以前学51的时候没怎么做笔记,...
  • 源码如下 bit key_flag; //1不支持连续 0支持连续 u8 key_scan(u8 mode) { u8 num=0;//这个变量用来存返回值 P3|=0X0F;//给低四位全置一 if(((P3&0X0F)==0X0F)||(mode==0))///没有按下 ......
  • 蓝桥杯单片机设计与开发笔记(二)

    万次阅读 多人点赞 2016-03-27 17:15:50
    笔记主要讲解蓝桥杯单片机综合训练平台CT107D的流水灯、蜂鸣器、继电器的编程与控制。
  • 一、流水灯相关模块图 二、电路解析 1,74HC138(俗称38译码器...蓝桥杯比赛开发板CT107D,主要难点就是控制138译码器。 容易理解的功能表 详细芯片资料网上寻找或加QQ:2679961762 QQ群:242731
  • 蜂鸣器 电路分析 74HC138是一个译码芯片,CBA二进制对应的十进制数值与Y0~Y7位置相符,Y输出端低电平有效。 J13跳帽当1、2短接即存储器控制方式,2、3短接即IO口控制方式,习惯使用IO控制方式 ...
  • 在CT107D单片机综合实训平台上,利用NE555产生方波信号并测量其频率,具体功能要求如下: [1] 上电开机运行时,关闭蜂鸣器、继电器和8个LED指示灯。 [2] 用短路环将J13中的NAL与P34短接,NE555发生的信号输入到...
  • 蓝桥杯单片机学习1

    2016-11-06 19:44:57
    转载自 http://blog.csdn.net/u013151320/article/details/50864957 蓝桥杯单片机设计与开发笔记。 写得很好,但是我不懂得就是为什么要锁存。不锁存不行吗。
  • 通过单片机控制8个LED指示灯按照特定的顺序(工作模式)亮灭;指示灯的流转间隔可通过按键调整,亮度可由电位器RB2进行控制;各工作模式的流转间隔时间需在E2PROM中保存,并可在硬件重新上电后,自动载入。 2-设计...
  • 蓝桥杯单片机01】从历年决赛真题中寻找单片机常见的考点 广东职业技术学院 欧浩源 【第三届:门禁系统】 1、功能简述 “门禁系统”主要有两种工作模式: 模式1:7:00~22:00为自动门状态,该状态下门的开...
  • 1. 浮点数判断相等时,不可直接用等号比较 double a,b; 错误:if(a == b)… 解决方法1: if( abs(a - b) < 1E-10 ) 解决方法2: 使用整数替代浮点数 Code1: #include &...const double ...
  • 【1】PCF8591功能概述  PCF8591是具有IIC接口的8位A/D和D/A转换芯片,具有4路模拟输入、一路DAC输出和一个IIC总线接口。其主要的功能特性如下:  ●单电源供电,典型值为5V。  ●通过3个硬件地址引脚编址。...
  • 这是第一篇学习笔记,我准备简单介绍一下竞赛使用的单片机开发板——CT107开发板。 1. 概述实验板组成部分 关于开发板的相关资料可以从蓝桥杯官网下载。 大赛使用的单片机是IAP15F2K61S2,是STC公司生产的15系列1T...
  • 1.蓝桥杯单片机的led模块,数码管模块,蜂鸣器模块均用到了锁存器,要应用这些模块时,首先应该打开锁存器。尤其应该注意,在操作动态数码管时,对于多个数码管,要进行多次开锁存器,以及记得“消影” ps:关于或...
1 2 3 4 5
收藏数 100
精华内容 40
关键字:

蓝桥杯单片机笔记