MCU最强科普总结(收藏版)
MCU是Microcontroller Unit 的简称,中文叫微控制器,俗称单片机,是把CPU的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级的计算机,为不同的应用场合做不同组合控制,诸如手机、PC外围、遥控器,至汽车电子、工业上的步进马达、机器手臂的控制等,都可见到MCU的身影。
1
2
单片机的分类及应用
3
单片机的基本功能
4
全球主流单片机制造商
5
单片机的学习窍门
6
单片机的程序编写
要防止在中断和主程序体中同时访问或设置同一个变量或数据的情况。有效的预防方法是,将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否执行该数据的相关操作;而在其他的程序体中(主要是中断),对需要进行该数据的处理的地方只设置触发的标志。――这可以保证数据的执行是可预知和唯一的。
7
工程师对单片机编程的总结
8
单片机开发技巧
物理参数:这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。 资源参数:这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆叠深度。 应用参数:这些应用参数常表现为一些单片机、功能单元的应用条件。过程参数:指系统运行中的有序变化的参数。
测试单片机软件功能的完善性 上电、掉电测试 老化测试 ESD和EFT等测试
9
芯片操作总结
GB1616.h//------------------ 汉字字模的数据结构定义 ------------------------//
struct typFNT_GB16 //汉字字模数据结构
{
unsignedchar Index[3]; //汉字内码索引
unsignedchar Msk[32]; //点阵码数据
};
/////////////////////////////////////////////////////////////////////////
// 汉字字模表 //
// 汉字库: 宋体16.dot,横向取模左高位,数据排列:从左到右从上到下 //
/////////////////////////////////////////////////////////////////////////
conststruct typFNT_GB16 codeGB_16[]= //数据表
{
/*------------------------------------------------------------------------------
; 源文件 /文字 :徐
; 宽×高(像素):16×16
------------------------------------------------------------------------------*/
'徐',0x10,0x80,0x10,0x80,0x21,0x40,0x42,0x20,0x94,0x10,0x1B,0xEC,0x20,0x80,0x60,0x80,
0xAF,0xF8,0x20,0x80,0x22,0xA0,0x24,0x90,0x2A,0x88,0x21,0x00,0x00,0x00,0x00,0x00,
[cpp] view plain copy// 显示汉字 voiddispString (uchar X, Y,uchar *msg) //X为哪一行,Y 为哪一列。msg 为汉字 { if(X==0) X = 0x80; // 第一行,汉字显示坐标 else if(X==1) X = 0x90; // 第二行 else if(X==2) X = 0x88; // 第三行 else X = 0x98; //第四行 Y = X Y; //Y 为1 往右移一位 write_com(Y); // 写入坐标 while (*msg) { write_data(*msg ); //显示汉字 } } //////////////////////////////// //////////////// ///////////////// 显示图象 voiddisppicture(uchar code *adder) { uint i,j; //*******显示上半屏内容设置 for(i=0;i<32;i ) // 上半屏32个列地址 { write_com(0x80 i); //SET 垂直地址 VERTICALADD write_com(0x80); //SET 水平地址 HORIZONTAL ADD for(j=0;j<16;j ) { write_data(*adder); adder ; } } //*******显示下半屏内容设置 for(i=0;i<32;i ) // { write_com(0x80 i); //SET 垂直地址 VERTICALADD write_com(0x88); //SET 水平地址 HORIZONTAL ADD for(j=0;j<16;j ) { write_data(*adder); adder ; } } }
单片机可以定义位变量,但是不可以定义位数组。用c语言写只是看着简单,实际生成的代码量是最多的,用于控制的单片机几乎不用浮点数运算,不仅慢还麻烦还占地方,如果是DSP芯片,本身有适合的硬件结构,会好很多。
赞 (0)