STC单片机
两把刷子飞啊飞
技术是层窗户纸,没进去之前,会郁闷会彷徨,可是不要轻易放弃,要对自己有信心,欢迎关注微信公众号“墨迹慢慢来”,o(∩_∩)o
展开
-
什么是光耦
光耦:光耦合器(opticalcoupler,英文缩写为OC)亦称光电隔离器或光电耦合器,简称光耦。它是以光为媒介来传输电信号的器件,通常把发光器(红外线发光二极管LED)与受光器(光敏半导体管)封装在同一管壳内。当输入端加电信号时发光器发出光线,受光器接受光线之后就产生光电流,从输出端流出,从而实现了“电—光—电”转换。以光为媒介把输入端信号耦合到输出端的光电耦合器,由于它具有体积小、寿命长原创 2013-01-16 16:54:28 · 1135 阅读 · 0 评论 -
STC单片机之我见(一)-----IO口
本文以STC12C5A60S2系列单片机为例来介绍:先介绍准双向口模式,其拉电流为200mA左右,比如P2.0口外接一个100欧电阻和小led灯珠。做实验的时候会发现灯珠的亮度其实很低,因为电流太小。当设置成强推挽输出时会发现灯珠明显比较亮,因为此时的电流已经达到了20mA.P2.0口直接用准双向口模式驱动蜂鸣器的时候,蜂鸣器不响,同样是因为电流太小,此时可以外加一个10K的电阻和一个三极原创 2013-06-08 16:15:49 · 5558 阅读 · 0 评论 -
程序有误,为什么Keil却没有报错
这两天在整1602,程序都写完后用Keil编译,有报错,但后来都一一解决了,于是烧进单片机,可不管怎么调1602就是不显示,首先我可以确定硬件电路是没有问题的,因为我用另外一个程序往1602里面写一个字符串,就可以显示。最后我只得对照书上的源程序,一个字母一个字母比对,比较了有3次,问题依然没有找到,都有点灰心了,花了我一天半时间于是就放一边了。今天下班后再一次找错,总与知道错在了哪里,/**原创 2013-07-11 20:42:34 · 6183 阅读 · 2 评论 -
单片机C语言应用100例的错误和不足(第二版)王东峰
书买回来10来天了,看的不多,今天下午看P88的实例21:用for语句设计鸣笛报警程序首先声明,自己不是用的protues仿真,自己搭了一个小的电路图,其实就是一个最小系统,然后直接用杜邦线引出P37,接一个蜂鸣器,按照书中给出的程序写进单片机,接上蜂鸣器,但是却不叫,琢磨过后,想想可能是直接用普通的IO口形式电流太小,是uA级的,设置为强推挽的形式后可以了,蜂鸣器叽叽哇哇的叫了起来,可能在p原创 2013-06-22 22:34:09 · 3230 阅读 · 0 评论 -
遇到的种种问题1602 24C02
如题,奶奶的,昨天下午就弄了一下午,今天又弄了一下午再加一晚上原创 2013-07-09 13:25:25 · 1457 阅读 · 0 评论 -
Keil4出现contains an incorrect path的提示
用Keil4进行程序编译后,如果没有错误的话,在项目文件下的头文件会自动加载到.c文件的下面,如下所示:原创 2013-07-05 15:34:14 · 66920 阅读 · 5 评论 -
单片机C语言应用100例(第二版)光盘资料 作者王东峰 陈圆圆 郭向阳
单片机C语言应用100例(第二版)光盘资料 ,如下所示;360网盘;原创 2014-01-03 01:20:07 · 6418 阅读 · 17 评论 -
STC12C5A32S2单片机之1602渐入显示
基本框架根据郭天祥Lesson8中的程序来编写,但是渐入显示的时候郭用的指令是write_com(0x18);可我用的时候就是显示不出来,于是根据1602的说明书,用了另外一个指令write_com(0x07) //当写一个字符,整屏显示左移程序如下:可直接运行,已调试OK#include sbit LCD_rs=P1^0;sbit LCD_rw=P1^1原创 2016-09-11 16:46:44 · 2421 阅读 · 0 评论 -
C51 定时器 TL0=(65536-50000)%256是怎么推导出来的?
文章1:如果你选的单片机的晶振一定,比如12MHZ来说吧,机器周期是1us,就是说每1us产生一次计数,就拿50ms来说,这是你想要的计时,意思是,对机器周期进行50000计数就可以得到我想要的,可T0是一个可以对机器周期能进行65536次计数,也就是说我想要的50MS不能让T0溢出,怎么办,那么先给这个定时器里面放些数,放多少,就是我们想要的50MS在加上一个多少就能等于65536,也就是655转载 2016-09-13 22:16:21 · 18975 阅读 · 4 评论 -
STC单片机控制PCA9554A程序
/****对PCA9554A操作时要特别注意的是在主函数写数据之前,一定要先用函数 PCA9554A_Config(0x00)写0x00,否则收不到数据****/#include #include sbit SDA=P2^0;sbit SCL=P2^1;sbit beep=P2^3;void Delay(unsigned int i){ unsigne原创 2016-10-26 00:18:53 · 4740 阅读 · 2 评论 -
为什么单片机不能直接驱动继电器和电磁阀
注意:此文是写给单片机初学者的。为什么要写篇文章?虽然这个问题对于电子老白来说不值一提,不过对于初学单片机的朋友,问这个问题的人实在是太多了,以前总是一句一句的解释给你们听,重复的劳动实在没有意义,看来非常有必要在这里统一的说一下了。既然是初学者,还得简单介绍一下继电器是个什么东西。(这是我手头上的一个继电器)继电器就是个开关,这个开关是由它内部的线圈控制的,给它的线圈转载 2016-10-17 22:57:48 · 7636 阅读 · 2 评论 -
STC单片机之1602显示时钟
/****为了简单起见,调整时间是只添加了s1和s2,删除了s3的功能,若调过了可通过s2循环一圈 ****//****From Brandon 2016-09-17 ****//****关键点:按键扫描和定时器0的中断程序比较生疏,需再看 ****/#includesbit LCD_rs=P1^0;sbit LCD_rw=P1^1;sbit LCD_en=P2^5;原创 2016-09-23 00:22:44 · 2448 阅读 · 0 评论 -
ADC采样芯片ADS7822使用方法
最近,做项目中使用了一款TI(德州仪器)公司的ADC采样芯片ADS7822。现在把我的电路和程序发出来与大家分享。最重要的是,深入了解ADC芯片的使用方法,达到触类旁通。在我的项目中,有一个微弱的电流信号,被放大电路放大成了电压信号,范围是0~2500mV,所以,我需要采集这个电压信号到单片机。在我以前的文章中,我也强调过多次,在使用一款芯片之前,一定要去这转载 2016-11-09 21:20:42 · 23501 阅读 · 5 评论 -
1602显示数字不稳定一直跳动(AD转换)
程序如下所示#include #include sbit SDA=P2^0;sbit SCL=P2^1;sbit lcd_rs=P1^0;sbit lcd_rw=P1^1;sbit lcd_en=P2^5;sbit beep=P2^3;bit ADFlag;unsigned char num,count;unsigned char table[]="Voltage:原创 2016-12-12 22:41:02 · 10616 阅读 · 5 评论 -
关于基础,不得不说
最近遇到好多问题,都与基本概念相关。忍不住,就想多说几句。 研究生面试,我出了一个问题,一个100kHz的方波信号,幅度大约是几伏的数量级,想测量其有效值,用什么仪器,怎么测?多数学生一脸茫然,搞的我不好意思,惭愧题目是不是太难了。我急了,问学生,一个1.5V的电池,其电压有效值是多少?学生问我,直流量有有效值吗?我忍。我不得不忍。 什么是有效值?一个变化电压的转载 2013-06-08 09:49:00 · 1073 阅读 · 0 评论 -
一个大三学生对杨教授博文《关于基础,不得不说》的深入
杨老师,我是一个电子信息工程的大三学生。看到您的《关于基础,不得不说》此文,很感激您对我们青年学生的关怀和教导,毕竟我遇到像您这样的好老师真的不是很多。但有些话不得不说。 一、自大一接触51单片机开始,慢慢对电子有了兴趣,甚至痴迷,也经常自己制板,单纯经常为做点东西而熬夜、通宵。做的大多是和单片机相关的,大二发现其实51单片机这东西很多年前就开始火了,而自己只会用单片机写点液晶、数码管、转载 2013-06-07 18:04:15 · 1685 阅读 · 0 评论 -
什么是波特率
1.什么是波特率?原创 2013-01-16 16:34:56 · 1706 阅读 · 4 评论 -
STC单片机的命名规则
STC单片机的命名规则:别的型号的STC单片机与此大致相同,如果还有疑问,可以任意下载其对应的数据手册,一章第9小节原创 2013-02-22 09:43:57 · 8210 阅读 · 0 评论 -
LM2576S上电瞬间烧坏
3.19公司新来一批电路板,但是在下载程序的时候ISP下载线插上后上电瞬间LM2576S立马烧坏,师傅说应该是制板厂在制板时温度没有调节好,什么下泻电流·········说先不要插ISP下载线,先给电路板上一次电关了之后再下载程序,果然之后再也没有烧坏过3,23最新发现,应该是电路板焊接的问题,LM2576S周围的某个地方短路,造成输出引脚接地,由于输入为24V,相当于24V电压直原创 2013-03-19 16:10:06 · 7350 阅读 · 0 评论 -
STC12系列单片机的空闲模式、休眠模式(又叫掉电模式、停机模式)
1. 空闲模式空闲模式是指只有单片机不工作的状态。此时CPU无时钟停止工作,但是外部中断、外部低压检测电路、定时器、A/D转换、串行口等仍正常运行。在空闲模式下,RAM、堆栈指针(SP)、程序计数器(PC)、程序状态字(PSW)、累加器(A)等寄存器都保持原有数据。I/O口保持着空闲模式被激活前那一刻的逻辑状态。此时单片机所有的外围设备都能正常运行,当任何一个中断产生时,它们都可以将单原创 2013-04-16 11:47:08 · 34171 阅读 · 1 评论 -
51单片机keilC中头文件absacc.h作用
当51单片机通过8255和锁存器74LS273来扩展IO时,经常用到头文件absacc.h。在程序中,用“#include”即可使用其中定义的宏来访问绝对地址,包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD例如:rval=CBYTE[0x0002];指向程序存贮器的0002h地址rval=XWORD [0x0002];指转载 2013-04-16 17:26:10 · 21196 阅读 · 0 评论 -
STC12系列单片机的位变量
在51中的位变量包含2类,一类是特殊功能寄存器中的可位寻址的位,比如EA,TR0等;这部分位在C中通过sbit来特殊声明,比如sbit Beep=P1^0; ;另一种即为bdata存储模式的位变量。 bdata是布尔变量的存储方式,表示位变量存储在位于单片机内部RAM字节地址0x20~0x2F的16个字节中,每个字节8位,共计16x8=128个可寻址位,位地址从0x00~0x7F转载 2013-04-16 11:16:24 · 4103 阅读 · 0 评论 -
STC12系列单片机冷启动、热启动
冷启动——是指在断电状态下重新上电。冷启动,是在下载程序开始时,为了是单片检测有无下载信号。若有则下载;若无则执行原来的程序。热启动——是指已经处于上电状态,给复位端加复位信号(还有其他类型的复位),程序重新运行。怎样判断是冷启动、热启动?可通过查询PCON寄存器中的POF位来判断,单片机上电冷启动后,POF位变为1,可由软件清0实际判断流程图:怎样才能产生冷启原创 2013-04-16 15:33:56 · 6137 阅读 · 0 评论 -
STC单片机用户应用程序区和ISP监控程序区的区别
用户应用程序区(AP区): 是指用户自己编写的程序区ISP监控程序区: ISP区是指芯片出厂时就已经固化在单片机内部的一段程序,STC单片机可以进行ISP串行下载程序,这就是因为芯片在出厂时已经在单片机内部固化了ISP引导码,程序首次上电时先会从ISP区开始执行代码,体现在实际实验中时,就是我们在下载程序时,先要点击下载软件界面上的下载,然后再开启单片机电源,当单片机检转载 2013-04-16 09:50:21 · 7265 阅读 · 0 评论 -
蜂鸣器发出很低的不正常声音
蜂鸣器的相关知识总结:今天调试一个小程序,但是蜂鸣器的声音却感觉不是很对,刚上电时发出很低的不正常的声音,经检查是IO口的设置有问题,应该把接蜂鸣器的那个管脚设置成强推挽输出的形式,STC单片机刚上电时默认的是传统IO口模式,我用的是STC12C5612AD的P37,所以设置的时候只需: P3M0=0X00; P3M1=0X80; 1.怎样让蜂鸣器响1秒停5秒,然后再一次响1秒原创 2013-05-02 13:21:56 · 10375 阅读 · 0 评论 -
stc单片机ad转换程序心得
话说stc内部自带ad,但是功能多了!必然控制起来就啰嗦了!不像外部ad。stc如果不用中断ad方式需要注意一下几个问题:1、在初始化ad的时候,一定要第一个给ad提供电源,即adc_power一定要第一个置1;2、在每次对adc-contr进行操作后,必须延时至少4个时钟周期,原因是adc_contr这个寄存器需要时间存储信息;3、在对adc_contr进行操作时,尽量不要用位寻址。转载 2013-05-18 23:18:58 · 6762 阅读 · 0 评论 -
STC单片机下载不进程序及解决办法
网上收刮了一大圈,还是没有找到是什么原因。自己能想到的都想了, 主要包括以下几点:1.更换单片机芯片,(更换之后没有解决)2.检查单片机供电电压是否正常(单片机供电电压正常)3.检查ISP下载器是否损坏(经检查,没坏)4.检查ISP下载线的RXD,DXD到单片机的RXD,TXD引脚没有断开(经检查,正确)5.单片机晶振是否正确工作(经检查,正确)现附上此板子的电路图:原创 2013-05-07 00:08:49 · 10797 阅读 · 1 评论 -
上电复位后
上电复位后P1口为弱上拉型I/O口原创 2013-05-26 10:50:42 · 791 阅读 · 0 评论 -
单片机汇编伪指令DATA和EQU的区别
1、EQU 指令用于将一个数值或寄存器名赋给一个指定的符号名。格式: 符号名 EQU 表达式 符号名 EQU 寄存器名表达式必须是一个简单再定位表达式。用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。比如:s equ bx+simov cx,[s]那么上面两句代码相当于如下指令:mov cx,[bx转载 2013-06-07 11:35:51 · 11562 阅读 · 0 评论 -
STC单片机控制BH1750测量光照强度程序
/****备注:此程序最低值为00212lux,时序可能还有一些问题,有时候乱改的话还会出现一直是00212或者00000的情况,****//****且数据变化是不连续的00212,00425,00639,00852,01065等等****//****2016.10.18日补充:后来发现是BH1750_Write_Byte最后6句写的不对****//****2016.10.18日补充:原创 2016-10-18 23:53:55 · 17987 阅读 · 13 评论