单片机C语言应用程序设计针对目前最通用的单片机8051和最流行的程序设计语言——C语言,以KEII。公司8051单片机开发套件讲解单片机的C语言应用程序设计。该套件的编译器有支持经典8051及8051派生产品的版本,统称为Cx51。Windows集成开发环境μVision2把μVisionl用的模拟调试器dScope与集成环境无缝结合起来,使用更方便,支持的单片机品种更多。 本书的特点是取材于原文资料,总结实际教学和应用经验,实例较多,实用性强。本书中C语言是针对8051特有结构描述的,这样,即使无编程基础的人,也可通过本书学习单片机的c编程。单片机C语言应用程序设计目录第1章 单片机基础知识 1.1 8051单片机的特点 1.2 8051的内部知识 1.3 8051的系统扩展 习题一第2章 C与8051 2.1 8051的编程语言 2.2 Cx51编译器 2.3 KEIL 8051开发工具 2.4 KEIL Cx51编程实例 2.5 Cx51程序结构 习题二第3章 Cx51 数据与运算 3.1 数据与数据类型 3.2 常量与变量 3.3 Cx51数据存储类型与8051存储器结构 3.4 8051特殊功能寄存器(SFR)及其Cx51定义 3.5 8051并行接口及其Cx51定义 3.6 位变量(BIT)及其Cx51定义 3.7 Cx51运算符、表达式及其规则 习题三第4章 Cx51 流程控制语句 4.1 C语言程序的基本结构及其流程图 4.2 选择语句 4.3 循环语句 习题四第5章 Cx51 构造数据类型 5.1 数组 5.2 指针 5.3 结构 5.4 共用体 5.5 枚举 习题五第6章 Cx51 函数第7章 模块化程序设计第8章 8051内部资源的C编辑第9章 8051扩展资源的C编辑第10章 8051输出控制的C编程第11章 8051数据采集的C编程第12章 8051机间通信的C编程第13章 8051人机交互的C编程附录A μVision2集成开发环境使用附录B KEIL Cx51 上机制南
上传时间: 2013-10-21
上传用户:行者Xin
单片机音乐中音调和节拍的确定方法:调号-音乐上指用以确定乐曲主音高度的符号。很明显一个八度就有12个半音。A、B、C、D、E、F、G。经过声学家的研究,全世界都用这些字母来表示固定的音高。比如,A这个音,标准的音高为每秒钟振动440周。 升C调:1=#C,也就是降D调:1=BD;277(频率)升D调:1=#D,也就是降E调:1=BE;311升F调:1=#F,也就是降G调:1=BG;369升G调:1=#G,也就是降A调:1=BA;415升A调:1=#A,也就是降B调:1=BB。466,C 262 #C277 D 294 #D(bE)311 E 330 F 349 #F369 G 392 #G415A 440. #A466 B 494 所谓1=A,就是说,这首歌曲的“导”要唱得同A一样高,人们也把这首歌曲叫做A调歌曲,或叫“唱A调”。1=C,就是说,这首歌曲的“导”要唱得同C一样高,或者说“这歌曲唱C调”。同样是“导”,不同的调唱起来的高低是不一样的。各调的对应的标准频率为: 单片机演奏音乐时音调和节拍的确定方法 经常看到一些刚学单片机的朋友对单片机演奏音乐比较有兴趣,本人也曾是这样。在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。 在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与 ,2(来)与 ……正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。以1—i八音区为例, 12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。这12个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。 知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例: A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272μs 由上图可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136μs这个时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定: t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为: TH = THL / 256 = ( TALL – t* f0/12) / 256 TL = THL % 256 = ( TALL – t* f0/12) %256 将t=1136μs代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高A在单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值为 : TH440Hz = (65536 – 1136 * 12/12) /256 = FBH TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。 音符的节拍我们可以举例来说明。在一张乐谱中,我们经常会看到这样的表达式,如1=C 、1=G …… 等等,这里1=C,1=G表示乐谱的曲调,和我们前面所谈的音调有很大的关联, 、 就是用来表示节拍的。以 为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如: 其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms 。我们以一拍的时长为400ms为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。下面给出部分音符(三个八度音)的频率以及以单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值 : C调音符 频率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC调音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7频率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C调音符 频率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02
上传时间: 2013-10-20
上传用户:哈哈haha
P C B 可测性设计布线规则之建议― ― 从源头改善可测率PCB 设计除需考虑功能性与安全性等要求外,亦需考虑可生产与可测试。这里提供可测性设计建议供设计布线工程师参考。1. 每一个铜箔电路支点,至少需要一个可测试点。如无对应的测试点,将可导致与之相关的开短路不可检出,并且与之相连的零件会因无测试点而不可测。2. 双面治具会增加制作成本,且上针板的测试针定位准确度差。所以Layout 时应通过Via Hole 尽可能将测试点放置于同一面。这样就只要做单面治具即可。3. 测试选点优先级:A.测垫(Test Pad) B.通孔(Through Hole) C.零件脚(Component Lead) D.贯穿孔(Via Hole)(未Mask)。而对于零件脚,应以AI 零件脚及其它较细较短脚为优先,较粗或较长的引脚接触性误判多。4. PCB 厚度至少要62mil(1.35mm),厚度少于此值之PCB 容易板弯变形,影响测点精准度,制作治具需特殊处理。5. 避免将测点置于SMT 之PAD 上,因SMT 零件会偏移,故不可靠,且易伤及零件。6. 避免使用过长零件脚(>170mil(4.3mm))或过大的孔(直径>1.5mm)为测点。7. 对于电池(Battery)最好预留Jumper,在ICT 测试时能有效隔离电池的影响。8. 定位孔要求:(a) 定位孔(Tooling Hole)直径最好为125mil(3.175mm)及其以上。(b) 每一片PCB 须有2 个定位孔和一个防呆孔(也可说成定位孔,用以预防将PCB反放而导致机器压破板),且孔内不能沾锡。(c) 选择以对角线,距离最远之2 孔为定位孔。(d) 各定位孔(含防呆孔)不应设计成中心对称,即PCB 旋转180 度角后仍能放入PCB,这样,作业员易于反放而致机器压破板)9. 测试点要求:(e) 两测点或测点与预钻孔之中心距不得小于50mil(1.27mm),否则有一测点无法植针。以大于100mil(2.54mm)为佳,其次是75mil(1.905mm)。(f) 测点应离其附近零件(位于同一面者)至少100mil,如为高于3mm 零件,则应至少间距120mil,方便治具制作。(g) 测点应平均分布于PCB 表面,避免局部密度过高,影响治具测试时测试针压力平衡。(h) 测点直径最好能不小于35mil(0.9mm),如在上针板,则最好不小于40mil(1.00mm),圆形、正方形均可。小于0.030”(30mil)之测点需额外加工,以导正目标。(i) 测点的Pad 及Via 不应有防焊漆(Solder Mask)。(j) 测点应离板边或折边至少100mil。(k) 锡点被实践证实是最好的测试探针接触点。因为锡的氧化物较轻且容易刺穿。以锡点作测试点,因接触不良导致误判的机会极少且可延长探针使用寿命。锡点尤其以PCB 光板制作时的喷锡点最佳。PCB 裸铜测点,高温后已氧化,且其硬度高,所以探针接触电阻变化而致测试误判率很高。如果裸铜测点在SMT 时加上锡膏再经回流焊固化为锡点,虽可大幅改善,但因助焊剂或吃锡不完全的缘故,仍会出现较多的接触误判。
上传时间: 2014-01-14
上传用户:cylnpy
附件附带破解补丁 浩辰CAD 2012专业版破解方法: 按正常安装浩辰CAD 2012专业版,点击安装KeyGen.exe。 浩辰CAD2012,以增强软件实用性、易用性为主要目标,新增了大量实用功能,改进了着色、消隐的正确性,提升了大幅面光栅图像处理的性能,同时改进了LISP\VBA二次开发接口的正确性和兼容性。 浩辰CAD 2012根据国内外用户的需求,增加了大量实用功能,例如动态块、DWF文件插入、隔离隐藏对象、转换EXCEL表格、块属性管理器、放样、超级填充等。 浩辰cad2012新增功能: 1、动态块(bedit) 动态块具有灵活性和智能性。 用户在操作时可以轻松地更改图形中的动态块参照。 可以通过自定义夹点或自定义特性来操作动态块参照中的几何图形。 a)通过设置图块中元素的可见性,一个图块中可以包含一种图形的多种形态,如下图的汽车模块就包含跑车、轿车和卡车的各向视图,只需在可见性列表中选择一个选项,就可以显示相应的图形。 还可对图块中的图形设置参数和动作,可对图块的整体或部分图形进行移动、旋转、翻转、缩放、阵列等;并可建立查询列表,对图块进行参数化控制。通过图块的动作设置,一个图块可以派生出数个图块,如下图所示: 2、DWF参考底图(dwfattach) 可以将dwf文件插入到当前图中作为参考底图,并可以捕捉到底图的端点、中点,如下图所示: 3、对象隔离、对象隐藏、取消对象隔离 可将选择的对象暂时隐藏,也可将选择对象以外的其他所有对象隐藏。当图中对象较多,利用此命令可以简化图纸,方便后续操作,操作起来比图层隔离更加简便、直观。 4、冻结其它图层和锁定其它图层 浩辰CAD 之前版本提供了图层隔离的功能,冻结其他图层和锁定其它图层与图层隔离功能类似,可以通过选择需要显示或可编辑对象,将其他图层进行冻结和锁定。 5、CAD表格转EXCEL表格 可以直接选择CAD中由直线、多段线和单行文字、多行文字组成的表格输出为EXCEL表格。 6、文字递增 可以对序号、编号、数值进行递增复制,间距、数量和增量均可随心所欲地控制。 7、多段线布尔运算 可直接对封闭的多段线进行差并交计算,无需转换面域,有时比修剪更简便。 8、拼写检查(spell) 此功能实现对用户输入的单词或文章进行单词校验,提示匹配的单词列表,方便用户进行正确的单词填写工作。可以实现不同语言的单词校验工作,包括英文,德文,等8种语言。 可以对全部实体(包括布局,模型中的所有实体)进行校验。 可以分别对布局或模型中的实体进行校验。 可以单独对一个实体或一个选择集进行校验。 方便用户自定义词典。 兼容的自定义词典。 支持文字,块内文字,块属性,属性,标注的校验。 9、放样(Loft) 通过对包含两条或者两条以上的横截面曲线的一组曲线进行放样(绘制实体或曲面)来创建三维实体或曲面。 10、块属性管理器(battman) 创建带属性的块后,执行 battman 对块中属性定义进行查询和修改,如果将修改应用到所有块参照,则对应块的块参照中属性实体也会做对应修改。 11、超级填充(superhatch) 超级填充命令有点像hatch命令,不同的是,可以使用该命令将光栅图像、块、外部参照和擦除这些实体作为填充实体对闭合区域进行填充。 12、线上写字 可以在选择线上书写文字,线会被自动打断,文字会放到线中间。 ◆ 重要功能改进 1、超链接 浩辰CAD 2012版的超链接不仅修改了以前存在的一些错误,而且提供了更为丰富的功能。 a)支持web链接的浏览和连接的设置。 b)支持打开操作系统可打开的所有文件。 c)支持dwg图纸的视图定位。 d)支持超链接的复制粘贴。 e)可以通过鼠标光标状态来判断是否存在链接,方便用户判断是否存在链接。 f)可以通过ctrl+鼠标点击打开设置的文件,方便用户的操作。 g)可以通过右键打开块内实体的链接。 2、光栅图像 浩辰CAD 2012版不仅增加了图像格式的支持,同时提升了大分辨率光栅图像的插入、显示和打印的效果和速度。 a) 增加了对多种图像格式的支持,诸如:CALS-1(*.cal,*.mil,*.rst,*.cg4)、RLC、GEOSPORT(.bil)、PICT(.pct/.pict)、IG4、Autodesk Animator(.fil/.flc)。 b) 内存使用问题,可以插入多张图片,内存不会增加。 c) 光栅图像打印问题(不清晰)。 d) 插入大图像时,预览速度大幅提升。 3、二次开发改进 浩辰CAD 2012版针对二次开发商和用户提出的一些LISP及VBA与AutoCAD存在的兼容性问题进行了系统梳理,兼容性有明显提升,此外还针对国外二次开发商的需求开发了Lisp调试器。 a) Lisp改进 处理了线程问题、命令范围值问题、VLX解析问题,对Lisp程序执行速度进行了优化。 b) VBA改进 处理了VBA的文档管理、接口不全、接口错误、类派生关系错误问题。 c) Lisp调试器 用户在使用浩辰CAD时,由于LISP与AutoCAD不完全兼容,用户需要一个工具进行调试,以协助用户解决及分析报告LISP问题。此系统以完成调试功能为主,不处理词法分析前的映射。适用于中级以上开发用户。
上传时间: 2013-11-24
上传用户:lepoke
RSA算法 :首先, 找出三个数, p, q, r, 其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数...... p, q, r 这三个数便是 person_key,接著, 找出 m, 使得 r^m == 1 mod (p-1)(q-1)..... 这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了..... 再来, 计算 n = pq....... m, n 这两个数便是 public_key ,编码过程是, 若资料为 a, 将其看成是一个大整数, 假设 a < n.... 如果 a >= n 的话, 就将 a 表成 s 进位 (s
标签: person_key RSA 算法
上传时间: 2013-12-14
上传用户:zhuyibin
prolog 找路例子程序: === === === === === === Part 1-Adding connections Part 2-Simple Path example | ?- path1(a,b,P,T). will produce the response: T = 15 P = [a,b] ? Part 3 - Non-repeating path As an example, the query: ?- path2(a,h,P,T). will succeed and may produce the bindings: P = [a,depot,b,d,e,f,h] T = 155 Part 4 - Generating a path below a cost threshold As an example, the query: ?- path_below_cost(a,[a,b,c,d,e,f,g,h],RS,300). returns: RS = [a,b,depot,c,d,e,g,f,h] ? RS = [a,c,depot,b,d,e,g,f,h] ? no ==================================
标签: Part connections example prolog
上传时间: 2015-04-24
上传用户:ljt101007
This section contains a brief introduction to the C language. It is intended as a tutorial on the language, and aims at getting a reader new to C started as quickly as possible. It is certainly not intended as a substitute for any of the numerous textbooks on C. 2. write a recursive function FIB (n) to find out the nth element in theFibanocci sequence number which is 1,1,2,3,5,8,13,21,34,55,…3. write the prefix and postfix form of the following infix expressiona + b – c / d + e * f – g * h / i ^ j4. write a function to count the number of nodes in a binary tr
标签: introduction the contains intended
上传时间: 2013-12-23
上传用户:liansi
LCD-7279的经过调试多次已经能够实现在指定的位置显示特定的数据。 程序lcd1.c实现基本的功能,即:键盘输入0、1、2、3、4、5、6、7、8、9、a\b\c\d\e\f 在液晶的指定位置显示实现满屏或半屏显示点阵和字符,调入一幅图画的代码进行显示;
上传时间: 2014-01-14
上传用户:hgy9473
一个基于GTK+的单词数值计算器,1、 按照规则计算单词的值,如果 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 26个字母(全部用大写)的值分别为 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26,如: WINJACK这个单词的值就为:W+I+N+J+A+C+K=23+9+14+1+3+11=71% HARDWORK=H+A+R+D+W+O+R+D=8+1+18+4+23+15+18+11=98% LOVE=L+O+V+E=12+15+22+5=54% LUCK=L+U+C+K=12+21+3+11=47% ATTITUDE= A+T+T+I+T+U+D+E=1+20+20+9+20+24+4+5=100% 2、对程序的界面布局参考如下图所示,在第一个单行文本框输入一个单词,点击“计算”按钮,按照以上算法计算出该单词的值。 3、如果在最下面的单行文本框输入一个文件路径,此文件每行记录一个单词,那么经过程序计算出各个单词的值,并把结果输出到当前目录下result.txt文件中。如果文件不存在,应该提示错误。
上传时间: 2014-01-11
上传用户:康郎
课程设计: 1.求出在一个n×n的棋盘上,放置n个不能互相捕捉的国际象棋“皇后”的所有布局。 2.设计一个利用哈夫曼算法的编码和译码系统,重复地显示并处理以下项目,直到选择退出为止。 【基本要求】 1) 将权值数据存放在数据文件(文件名为data.txt,位于执行程序的当前目录中) 2) 分别采用动态和静态存储结构 3) 初始化:键盘输入字符集大小n、n个字符和n个权值,建立哈夫曼树; 4) 编码:利用建好的哈夫曼树生成哈夫曼编码; 5) 输出编码; 6) 设字符集及频度如下表: 字符 空格 A B C D E F G H I J K L M 频度 186 64 13 22 32 103 21 15 47 57 1 5 32 20 字符 N O P Q R S T U V W X Y Z 频度 57 63 15 1 48 51 80 23 8 18 1 16 1
标签:
上传时间: 2017-04-24
上传用户:zhyiroy