第一次用单片机,经过从完全陌生开始的几天学习,作为自己这次磕磕绊绊经历的总结,也记录一些在过程中遇到的问题及解决方法,希望能帮到
遇到同样问题的小伙伴。
*********************************************************************码表*******************************************************************************
扫描方式驱动的话,频率低就更亮,但太低会显得闪烁,所以尽量频率在60Hz以上
想用数码管做一个码表,开始用了几个for循环来做,但是忽略了每执行一条指令所消耗的时间,所以秒表总是不准确,而且误差算相当大的一分钟差三秒左右。
#include<stc15.h> unsigned char scan; unsigned char i,j,n,m; unsigned char smg_dw[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit dit1=P4^4; sbit dit2=P4^5; void Delay1(int x) { int t; while(x--) for(t=0;t<1;t++); } main() { P4M0 = 0xff; P4M1 = 0x00; while(1) { for(j=0;j<10;j++) { for(i=0;i<10;i++) { for(n=0;n<79;n++) { for(m=0;m<255;m++) { P2=smg_dw[j]; dit1=0; dit2=1; Delay1(4); P2=smg_dw[i]; dit1=1; dit2=0; Delay1(4); } } } } } }
后来在书上看到应该采用中断的方法,那么现在就来学习一下。
中断是什么,中断就是暂时放下目前执行的程序,先去执行特定的程序,以提高效率。
【中断的应用】:包括中断向量的设置,和中断子程序的编写。
中断向量:外部中断,定时器/计数器中断,串行口中断
中断子程序格式:void 中断子程序名称(void) interrupt中断编号 using寄存器组
{
子程序
}
***********************************************************简易电子琴**************************************************************
首先用到了一个三极管,三极管是什么呢?
三极管,全称应为半导体三极管,也称双极型晶体管、晶体三极管,是一种控制电流的半导体器件其作用是把微弱信号放大成幅度值较大的电信号, 也用作无触点开关。晶体三极管,是半导体基本元器件之一,具有电流放大作用,是电子电路的核心元件。三极管是在一块半导体基片上制作两个相距很近的PN结,两个PN结把整块半导体分成三部分,中间部分是基区,两侧部分是发射区和集电区,排列方式有PNP和NPN两种。
也就是说它的作用是放大信号及控制电路
明白了这些我就有点疑问了,我手里这个三极管是PNP还是NPN呢,只要对应地查一下三极管上的型号就可以了,型号是8050
从百科就可以得到答案,是NPN型,图示如下
既然说三极管的功能是放大信号,那他是如何放大信号的呢?在网上看到讲的蛮清晰的一篇文章,分享大家
http://blog.163.com/haiyu_tian/blog/static/52604816201011204222718/
仅允许非商业转载,转载请注明出处