单片机概括
所谓的单片机也就相当于人的大脑,所有的命令都由其发出。与之通信通过各个管脚,上电运行之后,单片机能自动运行存储在其内部的程序,先是启动代码(为后续程序能够运行提供一个良好的环境,例如:分配堆、栈空间等,启动代码是用汇编程序写的,与具体的硬件环境相关)(为什么用汇编,因为汇编也就相当于机器语言,只不过汇编用助记符而已,机器可直接运行,至于启动代码完成什么工作,最基础的是能让后续代码正常运行。而高级语言相当于通用语言,其生成的机器语言与使用的编译器有关,每种硬件对应的都有其编译器。而高级语言为达到通用目的,自然会提取每个事物的共性,而忽略其个性。)(可以为其举个例子就是我们所说的语言,地球上有许多种语言,为方便交流,我们把英语作为国际语言,在国际事物中,我们都可以用英语交流,若不会英语,我们就需要有翻译人员,翻译给不同的国家的人,就需要不同能力的翻译人员)。
之后跳到main函数执行,除非有跳转语句,否则程序会顺序执行。为了防止main函数过于庞大及方便管理,我们编写一个个小程序,然后在main中调用这些小函数。所以说程序的执行过程不过是调用各个函数而已。
数码管
当数码管个数较多时,为节省io口,利用了74hc573锁存器,分段锁存,位锁存。位是决定哪个数码管工作,段是显示什么。利用人眼的视觉暂留,快速的进行切换,即可给人以都在工作的错觉。
LED
要让led点亮,需让led通过电流,若一端接vcc,则只需让单片机的对应管脚输出低电平,又因单片机输入输出的电流有一定限制 ,所以对于led的小负载需加限流电阻,当负载为直流电动机时,单片机就驱动不了,此处利用了uln2003,通过其来增大带负载能力(四两拨千斤)。对于直流电动机,练习了pwm控制,固定一个周期,改变通入电流的时间。(这个周期怎么取还不清楚)(应该根据通与不通应该最少要保证可以工作)
点阵
双色点阵也就是一个发光孔里有两个不同颜色的小灯,共用一个公共端,控制另一端可让其发光或不发光。这里利用了74hc595,也相当于一个串转并芯片,由一个移位寄存器和存储器组成,通过级联可依次传输(因为每个芯片都有一个串行输出端口,串行输入的同时也从这里串行输出),8位传输完毕后可锁存,即可一次一直输出8位数据。
AD/DA
pcf85914路ad、da转换器,通过i2c通信。ad、da都要用到参考电压,通过与之比较进行转换。(相当于天平秤重,饭吗相当于各二进制),ad转换的值放在了对应的寄存器中,读取即可。
scl=0;//因为没写这个,读命令时无应答的后一个上升沿,故pcf8991无法转换,可能初始化时转换的寄存器为全1,故一直显示的为全1.(因此对于关键部分必须搞清楚)
I2C总线
I2c总线:一根数据线,一根时钟线,由开始信号,之后传输数据,应答信号,结束信号组成。一条i2c总线上可挂接多个i2c器件,通过发送地址确认。(利用线与的功能)