tag 标签: Keil

相关帖子
相关博文
  • 热度 7
    2023-6-9 13:12
    2471 次阅读|
    0 个评论
    keil 的集成开发环境对中文支持是比较差的。通常遇到显示乱码的事情。通常通过配置解码方式为GB2312。可以部分解决。 在程序中向串口或GUI输出中文时,有可能不能正确解码。结果是无法显示或显示乱码。 比如: GUI_DispStringAt("请输入:",10,50); 碰到这种情况,可以试试使用其它编辑工具单独编辑源程序并另存为UTF8 格式,或UNICODE格式。再重新编译,一般能解决汉字乱码的问题。 如果事先设在开发环境中设置好中文编码,再在编辑器中输入中文。有的时候也能正确。
  • 热度 11
    2022-1-22 23:11
    1915 次阅读|
    0 个评论
    stm32f4标准库开发——模拟iic
    stm32f4标准库开发——模拟iic 主要概念: IIC总线:I2C 总线是一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。 IIC总线定义:时钟线:sck 数据线:sda 软件模拟:通过软件控制普通 GPIO 引脚高低点评切换,来模拟总线时序,从而达到与总线协议一样的效果。 缺点:与使用硬件 IIC 相比,会占用更多的 CPU 时间。 实验目的: 本实现通过软件模拟 IIC 时序,编写 IIC 发送接收函数。 硬件电路: 本实验的蜂鸣器为有源蜂鸣器 IIC_SCL IIC_SDA 主要库函数调用: MODER&=~(3< MODER|=0<<9*2;} MODER&=~(3< MODER|=1<<9*2;} #define iic_sda_out(x) PBout(9)=x #define iic_scl_out(x) PBout(8)=x #define iix_read_sda() PBin(9) 代码: //iic.c #include "iic.h" #include "base.h" #include "delay.h" //*********************************************************************** //移植修改部分 MODER&=~(3< MODER|=0<<9*2;} MODER&=~(3< MODER|=1<<9*2;} #define iic_sda_out(x) PBout(9)=x #define iic_scl_out(x) PBout(8)=x #define iix_read_sda() PBin(9) static void iic_gpio_init( void ) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOB, &GPIO_InitStructure); } static void iic_gpio_deinit( void ) { GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOB, &GPIO_InitStructure); } //*********************************************************************** void iic_init( void ) { iic_gpio_init(); iic_scl_out( 1 ); iic_sda_out( 1 ); } void iic_deinit( void ) { iic_gpio_deinit(); iic_scl_out( 1 ); iic_sda_out( 1 ); } void iic_start( void ) { sda_out(); iic_sda_out( 1 ); iic_scl_out( 1 ); delay_us( 4 ); iic_sda_out( 0 ); delay_us( 4 ); iic_scl_out( 0 ); } void iic_stop( void ) { sda_out(); iic_scl_out( 0 ); iic_sda_out( 0 ); delay_us( 4 ); iic_scl_out( 1 ); iic_sda_out( 1 ); delay_us( 4 ); } uint8_t iic_wait_ack( void ) { uint8_t ucerrtime = 0 ; sda_in(); iic_sda_out( 1 ); delay_us( 1 ); iic_scl_out( 1 ); delay_us( 1 ); while (iix_read_sda()) { ucerrtime++; if 250 ) { iic_stop(); return 1 ; } } iic_scl_out( 0 ); return 0 ; } void iic_ack( void ) { iic_scl_out( 0 ); sda_out(); iic_sda_out( 0 ); delay_us( 2 ); iic_scl_out( 1 ); delay_us( 2 ); iic_scl_out( 0 ); } void iic_nack( void ) { iic_scl_out( 0 ); sda_out(); iic_sda_out( 1 ); delay_us( 2 ); iic_scl_out( 1 ); delay_us( 2 ); iic_scl_out( 0 ); } void iic_send_byte( uint8_t txd) { uint8_t t; sda_out(); iic_scl_out( 0 ); for (t = 0 ; t < 8 ; t++) { iic_sda_out((txd & 0x80 7 ); txd <<= 1 ; delay_us( 2 ); iic_scl_out( 1 ); delay_us( 2 ); iic_scl_out( 0 ); delay_us( 2 ); } } uint8_t iic_read_byte( unsigned char ack) { unsigned char i, receive = 0 ; sda_in(); for (i = 0 ; i < 8 ; i++ ) { iic_scl_out( 0 ); delay_us( 2 ); iic_scl_out( 1 ); receive <<= 1 ; if (iix_read_sda()) receive++; delay_us( 1 ); } if (!ack) iic_nack(); else iic_ack(); return receive; } //iic.h #ifndef _IIC_H #define _IIC_H #include "stdint.h" void iic_init( void ); void iic_deinit( void ); void iic_start( void ); void iic_stop( void ); void iic_send_byte( uint8_t txd); uint8_t iic_read_byte( unsigned char ack); uint8_t iic_wait_ack( void ); void iic_ack( void ); void iic_nack( void ); void iic_write_one_byte( uint8_t daddr, uint8_t addr, uint8_t data); uint8_t iic_read_one_byte( uint8_t daddr, uint8_t addr); #endif 编译运行:result 如下,编译无报错,无警告。 总结: 理论上gpio操作加上精确的延时,能模拟出任何总线的时序 iic.c将移植部分单独摘取出来,方便未来的移植开发 公众号: 关注公众号 InsertingAll,获取嵌入式学习资源,学习更多嵌入式知识 搜索 复制
  • 热度 6
    2021-2-2 17:42
    592 次阅读|
    0 个评论
    概述 在写程序时经常会进行一些配置,比如开启关闭某些功能、修改一些常量等,会反复去修改配置文件。实际上MKD可以将其变为配置界面,这样在修改时更加直观、方便。只需要根据configuration wizard的格式来编写我们的配置文件即可。 功能介绍 1.头尾 文件中的开头和结尾需要用两段字符串来包含 开头: //<< 结尾: //<< 当MDK检测到开头和结尾则表示该文件可以用configuration wizard进行配置,并把头尾间的内容在配置界面显示出来,当打开该文件后自动显示出该配置项。 注意: << 和<< 必须被“//”屏蔽 或者“;”。因 为是额外的信息不能影响到文档的编译所以,必须屏蔽,但是屏蔽不可以用批量屏蔽如“/* 。。。。 /,即使“/ ”和“*/”在同一行也不可以。并且“//”或者“;”必须在行首。 2.命令字 标题命令字 和 和 必须成对出现, 表示一个段落(组)开始, 表示段落(组)结束,如果只有 没有 系统就会报错。 使能组 和 和 类似,可以勾选则为1,否则为0。通过 命令,n表示第几位。 infomations命令 当鼠标停留在当前的条目的时候可以显示提示信息。该处可以显示汉字。 输入命令字 可以进行数据的输入。 对输入值进行限制。 可以跟一个步进值,即每次增加或减少的值。 1 2下拉进行选择。 字符串输入 对输入字符个数限制。 3.例子: //<< #ifndef __CONFIGURE_H__ #define __CONFIGURE_H__ /***************************电机、风扇********************************/ // 电机、风扇开启 // 电机开启 // // 设置为1开启,0则关闭 #define MOTOR_START 1 // 风扇开启 // // 设置为1开启,0则关闭 #define FAN_START 1 // /***************************温度、速度********************************/ // 温度、速度设置 // 风扇转速设置 // 设置风扇的转速 #define FAN_SPEED 250 // 温度预设值 // // 范围0到500℃ #define TEMP 500 // /***************************试剂、条码********************************/ // 试剂、条码设置 // 试剂类型 // 1:P2Y12 2:阿司匹林 // 1 2 #define CARD_TYPE 2 // 条码预设值 // // 一共四位 #define BAR_CODE 6666 // /***************************字符串********************************/ // 字符串 // 系统启动 // 系统正在启动 unsigned char system_start = "system start ..."; // 系统自检 // 系统自检 unsigned char system_check = "system check ..."; // #endif //<< 4.效果图:
  • 热度 8
    2020-2-13 15:24
    5264 次阅读|
    1 个评论
    工作之后用的最多的51单片机AT89C2051 (2)
    最近的工作主要内容是写文件,准确的说是修改文件,真的很。。。 单位文件挺乱的,关键是制度流程乱,没啥可操作性,也没培训。。。全靠个人水平编。。。 再来一个没看出有啥水平的老巫婆河东狮吼。。。 我就奇怪了,领导们就没一个实实在在能解决问题吗?还是都坏掉了? ---------------------------------------------------------------------------------------------- 说正题,AT89C2051的比较器,官网手册里,特性 On-chip Analog Comparator,片上模拟比较器 然后有框图 输入连的是P1.0、P1.1,输出连的是P3.6 然后有具体描述 P1.0、P1.1要外部上拉电阻,要写1 英文自己看哈。。。不要懒 程序挺简单的 P3.7是一个工作指示灯 P1.7也是一个指示灯,用来指示比较结果 ~~~~~~~~~~~~~~~ 没有试过比较器的精度,个人觉得,做个简单的电量指示还是可以的 AT89C2051手册的页数挺少的,也许可以参考C51的看看 ~~~~~~~~~~~~~~~ DIP-20的AT89C2051,是用下载器离线下载程序的的,用着很麻烦,而且连底座一起高度太高了 虽然,今天再看手册,发现还有个SOIC的矮很多,但是,个人觉得下载程序用的引脚太多,留插座也很占地方,还得做转接线 所以,准备换掉 看上了AT89LP4052,但是一年了一直没有时间买来试,还得先打听好买不,会不会断货等等,好多麻烦事。。。 朋友们,有其他型号推荐吗?
  • 热度 3
    2019-6-26 16:22
    10001 次阅读|
    3 个评论
    【零基础】入门51单片机图文教程(Proteus+Keil)
    参考资料: https://www.jianshu.com/p/88dfc09e7403 https://blog.csdn.net/feit2417/article/details/80890218 零、前言   我一直认为看资料还不如先动手试试,在“做”的过程中“学”,先打下基础、建立兴趣,再戒骄戒躁好好看看书,搞明白一些常识。但是网上的教程往往都比较片面,要么给几张图、几段代码就算完事了,环境如何安装、细节小问题是怎么回事都讲的不是很详细,所以这篇文章就是要把每一步都讲的详细了,真正0基础也能看得懂、学的会,不用再去搜其他资料,真的手把手也就这个效果了。 一、准备    1 硬件: 需要有一台电脑,笔记本、台式机都行    2 环境: 请使用官方原版(不要用ghost、精简系统)的XP或WIN7,很多莫名其妙的问题都是缺少一些dll文件,所以一定要用官方原版的系统,若不想重装电脑可以使用VMware安装虚拟机。另外尽量使用32位的系统,毕竟这些软件都比较老了    3 软件:     1) Proteus 8.4 SP0          下载地址:http://www.ddooo.com/softdown/26979.htm 注意看破解方法,其中针对WIN7 X64有部分有误的地方:       1)第七步:正确路径可能是“C:\Program Files(x86)\Labcenter Electronics\Proteus 8 Professional”,将破解包中的BIN目录覆盖到这里即可       2)第八步:正确路径可能是“C:\ProgramData\Labcenter Electronics\Proteus 8 Professional”,将破解包中的MODELS目录覆盖到这里即可       (不要修改默认安装位置,找不到正确路径的话可以搜索下“Proteus 8 Professional”这个关键词)     2) Proteus 8.4 汉化包          下载地址:本文末尾处     3) Keil 5               下载地址:http://www.ddooo.com/softdown/79273.htm 需要注意的是:       1)使用注册机生成注册码时,因为现在Keil 5是针对ARM的所以在注册机的Target栏需选择为ARM而不是C51     4) Keil 5 C51依赖包          下载地址:https://share.weiyun.com/5WSwsJv(密码:0000)       (Keil 5是默认不支持51单片机的,但是可以通过依赖包实现,安装和使用方法:https://blog.csdn.net/feit2417/article/details/80890218)    4 安装: 按下载页面的方法安装好,如果安装过程中有什么问题,一定要注意你操作系统的版本,以及是否是原生系统 二、在proteus绘制硬件电路   这里我们只实现最简单的功能:点亮一个LED灯    1、打开proteus,点击首页的“新建工程”新建一个项目    2、在新建工程向导里依次操作如下:   1)输入项目名称、选择项目存储位置   2)原理图:DEFAULT   3)PCB布板设计:不创建   4)固件:没有固件的项目   5)点击“完成”按钮完成新项目的创建    3、在电路图中放置我们需要的三个器件:51单片机、LED灯、电源并连线   1)51单片机   在界面中点击“P”(P和L代表的是元件模式)   在元器件选择窗口中输入51单片机的型号进行搜索,关键字“C52”(51单片机的常用型号是AT89C52)。   选择需要的型号后点击右下角的“确认”按钮,然后将其放置到电路图中即可   2)LED   重复前面的操作,关键字改为“LED”即可,这里选择的是“LED-YELLOW”,将LED放到单片机旁边   3)电源   电源在界面左侧选择“终端模式”,然后找到POWER这个元件即是电源。将电源也拖到单片机旁边   4)连接电路   使用鼠标将LED一端与电源连接,另一端连接单片机的P0.1,要注意LED的方向不要接反了。 三、Keil编写控制代码    1、启动Keil   2、新建项目 New μVersion Project”   2)输入项目名称   3)在新窗口中Search关键字“C51”,找到Atmel下的AT89C51,点击OK按钮完成项目创建    3、添加代码文件   1)右键“Source Group 1”   2)点击下图中画红线的地方   3)新弹出的窗口中选择C File,Name栏输入“main”   4)在main.c中输入下述代码,然后保存(画红圈的地方)    4、生成HEX文件(单片机运行使用的文件格式)   1)右键左侧的Target按钮,选择Opention for Target 'Target 1'   2)新弹出的窗口中选择Output选项卡,把“Creat HEX File”勾上,点击OK按钮即可(这一步是设置程序编译时要输出HEX文件)   3)点击下图画红线的按钮,编译程序,注意下侧“Build Output”栏是否有提示错误,输出 0 Error即是OK了   4)找到生成的HEX文件备用(在项目目录下的Objects目录内) 四、Proteus仿真运行    1、导入HEX文件   1)再次打开Proteus,右键单片机,点击“编辑属性”按钮   2)新窗口中点击“Program File”会弹出寻找HEX文件的小窗口,找到前面生成的HEX文件    2、点击Proteus左下角的启动按钮,开始仿真    3、运行结果:LED灯被点亮啦! 五、思考   1、为什么代码中LED=0,电源要加在LED的一侧   实际上,代码中LED=1,电路中LED旋转180度,LED一侧接地而不是电源也可以将LED点亮。但一般不这么做,因为单片机启动时会进行初始化,初始化过程中各引脚会出现瞬间的通电、断电,如果LED一侧不接电源而接地,单片机初始化时会导致LED闪烁。   2、代码中引用的reg52.h是什么文件   C语言中.h是头文件,reg52.h是51单片机的通用头文件,里面是单片机的寄存器声明 六、相关资料   看完本文你就已经学会了如何使用Proteus+Keil进行51单片机的开发啦!不过这只是最最基础的内容,后面进阶的学习还需要你多多动手,不过毛大闲已经为你准备了后续学习的必备资料。   关注公众号 “零基础爱学习”回复“51” 可获得下面的资料    1、本文所述的Proteus8安装包、Proteus8汉化包、Keil5安装包、Keil5 C51支持包   2、上述软件安装方法的PDF文档   3、Proteus8中文使用手册   4、AT89C52中文说明书   5、51单片机入门实例(仿真电路图+C代码)   后续还会继续补充更多学习资料,敬请关注“ 零基础爱学习 ”!
相关资源
  • 所需E币: 1
    时间: 2023-4-26 19:04
    大小: 286.08KB
    上传者: 张红川
    基于proteus和keil的单片机课程设计.pdf
  • 所需E币: 1
    时间: 2023-4-22 16:59
    大小: 8.74MB
    上传者: zhusx123
    keil5 主题设置和字体设置, 字体双击安装。 主题把文件复制到UV4文件夹里替换就ok啦
  • 所需E币: 1
    时间: 2023-3-29 17:34
    大小: 266.32KB
    上传者: 张红川
    基于Proteus和Keil仿真实验平台在单片机教学中的应用.pdf
  • 所需E币: 1
    时间: 2023-3-29 17:34
    大小: 559.31KB
    上传者: 张红川
    基于Proteus和Keil接口的单片机外围硬件电路仿真.pdf
  • 所需E币: 1
    时间: 2023-3-29 17:34
    大小: 314.53KB
    上传者: 张红川
    基于Proteus和Keil的单片机实验教学探究.pdf
  • 所需E币: 1
    时间: 2023-3-29 17:35
    大小: 350.34KB
    上传者: 张红川
    基于proteus和keil接口的虚拟波形发生器仿真.pdf
  • 所需E币: 1
    时间: 2023-3-29 17:34
    大小: 281.87KB
    上传者: 张红川
    基于Proteus和Keil构建的单片机虚拟实验室.pdf
  • 所需E币: 0
    时间: 2022-9-29 20:23
    大小: 12.32MB
    上传者: 西风瘦马
    keil经典应用1888页.pdf
  • 所需E币: 5
    时间: 2021-9-29 15:25
    大小: 607.96KB
    上传者: zendy_731593397
    第1章Keil工程文件的建立和目标文件的获得第2章Keil程序调试命令在线汇编第3章Keil程序调试窗口第4章Keil的辅助工具和部份高级技巧第5章其于Keil的实验仿真板的使用
  • 所需E币: 0
    时间: 2021-9-15 18:54
    大小: 1.68MB
    上传者: Argent
    FPGA是一个技术密集型的行业,没有坚实的技术功底,很难形成有竞争力的产品。从技术上来看FPGA未来的发展有广阔的空间,嵌入式开发需要了解不同领域的产品工作原理,包括快速读懂数据手册,搜集了部分数据手册,第三方教育机构的指导性文档,希望对您有所帮助。
  • 所需E币: 1
    时间: 2021-4-27 13:26
    大小: 1.92MB
    上传者: symic
    Keil与proteus完美结合教程
  • 所需E币: 0
    时间: 2021-4-24 21:29
    大小: 269.88KB
    上传者: Argent
    电子产品日新月异,不管是硬件工程师还是软件工程师,基本的模电、数电知识也是必备的条件,从二极管到三极管,从单片机到多核MCU,3G网络到5G产品的普及,不管电子产品的集成度怎么高,其产品还是少不了电阻电容电感,每个元器件在电路中必然有其作用,有兴趣了解的网友,下载学习学习吧。
  • 所需E币: 0
    时间: 2021-4-24 21:29
    大小: 116.58KB
    上传者: Argent
    电子产品日新月异,不管是硬件工程师还是软件工程师,基本的模电、数电知识也是必备的条件,从二极管到三极管,从单片机到多核MCU,3G网络到5G产品的普及,不管电子产品的集成度怎么高,其产品还是少不了电阻电容电感,每个元器件在电路中必然有其作用,有兴趣了解的网友,下载学习学习吧。
  • 所需E币: 0
    时间: 2021-4-24 21:29
    大小: 703.81KB
    上传者: Argent
    电子产品日新月异,不管是硬件工程师还是软件工程师,基本的模电、数电知识也是必备的条件,从二极管到三极管,从单片机到多核MCU,3G网络到5G产品的普及,不管电子产品的集成度怎么高,其产品还是少不了电阻电容电感,每个元器件在电路中必然有其作用,有兴趣了解的网友,下载学习学习吧。
  • 所需E币: 0
    时间: 2021-4-24 21:28
    大小: 323.6KB
    上传者: Argent
    电子产品日新月异,不管是硬件工程师还是软件工程师,基本的模电、数电知识也是必备的条件,从二极管到三极管,从单片机到多核MCU,3G网络到5G产品的普及,不管电子产品的集成度怎么高,其产品还是少不了电阻电容电感,每个元器件在电路中必然有其作用,有兴趣了解的网友,下载学习学习吧。
  • 所需E币: 2
    时间: 2021-4-14 22:31
    大小: 1.17MB
    上传者: xiaosh728
    51单片机KeilC语言入门教程.zip
  • 所需E币: 3
    时间: 2021-4-14 23:34
    大小: 1.17MB
    上传者: stanleylo2001
    51单片机KeilC语言入门教程.zip
  • 所需E币: 4
    时间: 2021-4-13 18:57
    大小: 238.83KB
    上传者: wxlai1998
    keil入门.rarkeil新手入门_信息与通信_工程科技_专业资料
  • 所需E币: 2
    时间: 2021-4-6 20:53
    大小: 1.11MB
    上传者: Goodluck2020
    51单片机KeilC语言入门教程.rar
  • 所需E币: 5
    时间: 2021-4-6 21:02
    大小: 1.71MB
    上传者: Goodluck2020
    keil的经典使用-单片机编程者必须会.rar