㈠ 求一高手解析一下单片机源程序,每一步的意思,表达了什么,可追加分数。
#include<reg52.h> //头文件,定义硬穗判件相关的寄存器等
#define uchar //宏,下面中的uchar 全部用unsigned char替代。缺宽编译器处理的第一步
sbit P3_4=P3^4; //sbit单片机特有的位变量地址类型,相当于给p3.4引脚重命名
//数码管的显示编码,要显示5就把tab[5]的值输出到对应引脚;code也是
//单片机特有,tab数组存到代码区,不占用内存
code uchar tab[10]={0xbf,0x06,0xdb,0xcf,0x66,0xed,0xfd,0x87,0xff,0xef,};
//c程序从main开始看。
main()
{
//开机扫描按键伏族亮
void KEY();
//寄存器设置,这些都在头文件定义。以下是定时器初始化,具体数值查数据手册
TMOD=0x15;
IE=0X88;
TH1=0X3C;
TL1=0XB0;
TR0=1;
TR1=1;
a=0;
//mian通常 初始化 + 大循环;循环没内容,肯定加了中断,
//从void scjs(void)interrupt 3 中断入口看
while(1);
}
//全局变量设太多。。。。没时间看
㈡ 单片机程序 解析一下 谢谢 急
ISP_ERASE(0x2c00); //执行 ISP_ERASE(int16 data)函数卖知,0x2c00是形参。
ISP_PROGRAM(0x2c00, SET_H/256);
ISP_PROGRAM(0x2c01, SET_H);
ISP_PROGRAM(0x2c02, SET_L/256);
ISP_PROGRAM(0x2c03, SET_L);
这几个都是一样的。SET_H、SET_L。这2个雀配颂是参数。顷郑 看意思是 取高位。
㈢ 51单片机流水灯程序解析,求大神指导,本人是初学者。
首先,楼主要搞清楚P口的值与P口每一个输出端的关系,也即楼上所说的,要转换成二进制来看,数据0xfe = 1111 1110中的每一个1或0对应一个端口的高或低电平;其次楼主要结合电路图LED的接法与单片机端口的属性,搞清楚是1使得灯亮还是0使得灯亮;最后楼主要知道函数_crol_(P0,1)的作用,它是将P0的值循环左移后,即比如原来P0为1111 1110,循环左移后为1111 1101,再赋值给P0,你如果给P0一开始设置的初值为0x00,那当然不论怎么循环都是0x00,没有流水灯的效果。
㈣ 单片机 解析8421码 (望高手选一种单片机进行稍具体的说明)
设错,就是这样搞
传送出去是指用串口或其它通讯方式? 或者只是传送给上一层次处理模块?
这是一个串岩亩行通讯,当然要“转换/处理”下,应该是每 8 个位 发送一次
三种脉冲 0, 1, p 前两个好理解,后一个p 是啥? 字节结束标记?
按我理解应该是个结束标搭厅记
这样收到 p 脉冲即把前面收集的 0,1 序列组合成若干字节发送出去知枣隐。
㈤ 单片机最小系统原理图解析 看完新手也能自己动手制作
单片机最小系统就是能够运行的最少元件组合,虽然这样过的单片机看起来非常简单,但实际操作并没有那么容易,特别是对于一些新手来说,没有手把手来教,确实还是有点小为难,不过没关系,这里提供单片机最小系统原理图,让你理解每一个步骤,就可以自己动手操作了。
一、单片机最小系统的特点
单片机最小系统是用最少的元件组成的单片机可以工作的系统,最大的特点局势系统资源完全开放,能够配合其他模块板或自行搭建用户电路可实现任意实验功能。单片机最小系统的借口设计灵活,使用起来就会非常方便,所以适合创新实践活动,下面来看看单片机最小系统原理图。
二、单片机最小系统原理图解析
上图就是单片机最小系统原理图,对于一个完整的电子设计,首先就要搞定供电模块,电源模块的稳定可靠是系统平稳运行的前提和基础,51单片机虽然应用范围最广,但实际上还有个弊端,那就是容易受到干扰而出现程序跑飞的现象,克服这个现象的重要手段就是为单片机最小系统配置一个稳定而可靠的电源供电模块。
单片机最小系统的电源供电模块可以通过计算机的USB接口供给,也可以用外部稳定的5V电源,电源电路中接入电源指示LED。图中R11为LED的限流电阻。S1 为电源开关。 上一页 0 /3 下一页
㈥ c51单片机原理及应用重点
1、单片机内部资源
STC89C52:8KFLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源
(1)Flash(硬盘)——程序存储空间 —— 擦写10万次,断电数据不丢失,读写速度慢
(2)RAM(内存)——数据存储空间 —— 断电数据丢失,读写速度快,无限次使用
(3)SFR —— 特殊功能寄存器
2、单片机最小系统
51单片机的内部组成及应用原理解析
最小系统:最少组件组成单片机可以工作的系统。
三要素:
(1)、 电源电路:5V
(2)、 晶振电路:11.0592MHZ、两个30PF
(3)、 复位电路:
P0:开漏输出,必须加上拉电阻
准双向口:
强推挽输出:电流驱动能力强
高阻态
上下拉电阻:上拉电路就是将不确定的信号通过一个电阻拉到高电平,同时限流作用。下拉电阻就是下拉到低电平。
上下拉电阻选取:从降低功耗方面考虑应该足够大,因为电阻越大,电流越小;驱动能力来看,小电阻
3、硬件基础知识
(1)、电磁干扰(EMI)——静电放电(ESD)、快速瞬间脉冲群(EFT)、浪涌(Surge)
(2)、去耦电容的使用
低频滤波电容,平常应用最多的事钽电容,电解电容,陶瓷电容,起到去除电源低频纹波,稳定电源的作用。
高频滤波电容,电容附近,通常用104电容来进行去除高频干扰。
(3)、三极管(PNP,NPN) b,c,e --- 电压驱动
控制应用
驱动应用
4、LED发光二极管——电流驱动
51单片机的内部组成及应用原理解析
通常红色贴片LED, 靠电流驱动,电压1.8V~2.2V,电流1~20mA,在1~5mA亮度有所变化,5mA以上亮度基本不变。
VCC 电压是 5V,发光二极管自
身压降大概是 2V,那么在右边 R34 这个电阻上承受的电压就是 3V。
R = U/I —— 1~20mA —— R:150~3K
5、C语言基础
(1)、基本运算符
+ - * / % ++ -- = == != += -= 《《 》》
㈦ 求单片机相关程序解析(1/3)
#include "reg52.h"//声明调用了reg52.h单片机特征库
#include"18b20.h"//声明调用了18b20.h自定义头文件
#include "intrins.h" //声明调用了intrins.h函数库
sbit io_LCD12864_RS = P1^5 ;//将单片机的P1.5口用io_LCD12864_RS来关联,以后对io_LCD12864_RS的操作就是对p1.5口的操作
sbit io_LCD12864_RW = P1^4 ;//原理同上
sbit io_LCD12864_EN = P1^3 ;//原理同上
#define io_LCD12864_DATAPORT P0 //将单片机的P0口用io_LCD12864来关联,以后对io_LCD12864的操作就是对整个P0口的操作(8bit)
#define SET_DATA io_LCD12864_RS = 1 ;//这是#define带赋值的用法,用SET_DATA来代表对io_LCD12864_RS赋1的操作,以后程序中一出现SET_DATA,则io_LCD12864_RS对应的P1.5口就被写1
#define SET_INC io_LCD12864_RS = 0 ;//原理同上
#define SET_READ io_LCD12864_RW = 1 ;//原理同上
#define SET_WRITE io_LCD12864_RW = 0 ;//原理同上
#define SET_EN io_LCD12864_EN = 1 ;//原理同上
#define CLR_EN io_LCD12864_EN = 0 ;//原理同上
unsigned char code table[]={"0123456789"};//在程序代码区定义了一个数组table内容是一个字符串0123456789
/*******************************
忙检测函数
检查12864是否将之前对其写入的指令处理完毕
*********************************/
void v_Lcd12864CheckBusy_f( void ) //
{
unsigned int nTimeOut = 0 ;//定义一个整形的循环次数累加变量
SET_INC //io_LCD12864_RS = 0 指向指令寄存器
SET_READ //io_LCD12864_RW = 1 当前操作变为读操作
CLR_EN //io_LCD12864_EN = 0 EN先变低电平
SET_EN //io_LCD12864_EN = 1 上升沿跳变,指令寄存器的数据被读到12864的端口上
while( ( io_LCD12864_DATAPORT & 0x80 ) && ( ++nTimeOut != 0 ) ) ;
//查看此时数据端口的最高位(忙标志位)是不是为1,若为1说明12864还忙着,则等待nTimeOut加到0时退出循环
//nTimeOut要在这个while里面循环65535次才退出循环,原因是需要累加到溢出其值才会变成0,这样起到延时的作用;
//也就是查询忙标志位,如果不忙了就立即退出循环,执行下面的指令,忙的话我给你延时一段时间,你肯定也忙完了,我也退出循环.
CLR_EN //EN回到0电平(对液晶不操作的时候EN都应该回到低电平,防止错误数据的出入,加强抗干扰)
SET_INC //冗余操作,上面已经执行了SET_INC
SET_READ //冗余操作,上面已经执行了SET_READ
}
/**************************************
发送命令
输入变量:byCmd-发给12864的指令代码
***************************************/
void v_Lcd12864SendCmd_f( unsigned char byCmd ) //发送命令
{
v_Lcd12864CheckBusy_f() ;//确认液晶不在忙状态
SET_INC //io_LCD12864_RS = 0 指向指令寄存器
SET_WRITE //io_LCD12864_RW = 0 当前操作变成写操作
CLR_EN //io_LCD12864_EN = 0 EN先变低电平
io_LCD12864_DATAPORT = byCmd ;//将指令代码放到液晶端口上
_nop_();//延时等待端口数据稳定
_nop_();//延时等待端口数据稳定
SET_EN //io_LCD12864_EN = 1 上升沿跳变,端口的数据(指令代码)被12864读入到数据寄存器
_nop_();//延时等待12864读完
_nop_();//延时等待12864读完
CLR_EN//EN回到0电平
SET_READ//回到读状态(平时都应该在读状态,防止误写)
SET_INC//冗余操作
}
/**************************************
发送数据
输入变量:byData-发给12864的数据代码
***************************************/
void v_Lcd12864SendData_f( unsigned char byData ) //发送数据
{
v_Lcd12864CheckBusy_f() ;//确认液晶不在忙状态
SET_DATA //io_LCD12864_RS = 1 指向液晶的数据寄存器
SET_WRITE //io_LCD12864_RW = 0 当前操作变成写操作
CLR_EN //io_LCD12864_EN = 0 EN先变低电平
io_LCD12864_DATAPORT = byData ;//将数据代码放到液晶端口上
_nop_();//延时等待端口数据稳定
_nop_();//同上
SET_EN//io_LCD12864_EN = 1 上升沿跳变,端口的数据(数据代码)被12864读入到数据寄存器
_nop_();//延时等待12864读完
_nop_();//同上
CLR_EN//EN回到0电平
SET_READ//回到读状态
SET_INC//冗余操作
}
㈧ 单片机 解析8421码 (望高手选一种单片机进行稍具体的说明)
设错,就是这样搞
传送出去是指用串口或其它通讯方式?
或者只是传送给上一层次处理谨陆带模块?
这是一个串行通讯,当然要“转换/处理”下,应该是每
8
个位
发送一次
三种脉冲
0,
1,
p
前两个好理解,后一个p
是啥?
字节结束标悉绝记?
按我理解应该是个结束标记
这样收到
p
脉冲即把前面收集的
0,1
序列组合成祥芦若干字节发送出去。
㈨ 什么叫单片机
单片机的名词解析我就不多说了,我说说它的结构吧
目前市面上单片机分几种51系列(8位,最早被开发的系列)、AVR、PIC、ARM系列
51系列的典型实例就是80C51了,不过由于它不具备在线编程能力,已经淘汰,取而代之的是89S51,它内部集成了运算器、存储器、输入输出单元,具有典型的冯诺依曼结构,简单的说,它就是一台微型计算机,我们常称之为微处理器(MCU)。
AVR单片机是ATmega公司推出的,具有哈佛结构的单片机,它具有预取值的功能,教传统单片机来说,各个性能上都有所提升。
ARM则是新时代的产物,由于人们生活对处理器要求越来越高,对速度以及存储容量还有片上外设要求越来越高,51等8位单片机已经远不能满足了,ARM公司推出的处理器核心,ARM系列处理器,被众多的芯片制造商认可,并在ARM核心的基础上加上了诸如AD转换器,DMA控制器,串口,USB,网口,SD卡读取接口,摄像头接口等外设,设计并制造了许多优秀的ARM处理芯片,被广泛应用与军事航天等领域。我们生活中用的手机,里面的主控CPU就是单片机,U盘里面有单片机,数码相机等,几乎无处不在。
硬件设计工程师通过编写单片机程序,对单片机的各种外设和寄存器进行操作,实现对单片机的控制,一般说来,单片机是可以烧写程序的,也存在一次性烧写的单片机。
差不多了吧,我想你应该了解了