附件为:LCD12864显示汉字和数字的程序与电路 /* 自定义延时子函数 */ void delayms(uchar z) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /* 判断LCD忙信号状态 */ void buys() { int dat; RW=1; RS=0; do { P0=0x00; E=1; dat=P0; E=0; dat=0x80 & dat; } while(!(dat==0x00)); } /* LCD写指令函数 */ void w_com(uchar com) { //buys(); RW=0; RS=0; E=1; P0=com; E=0; } /* LCD写数据函数 */ void w_date(uchar date) { //buys(); RW=0; RS=1; E=1; P0=date; E=0; } /* LCD选屏函数 */ void select_screen(uchar screen) { switch(screen) { case 0: //选择全屏 CS1=0; CS2=0; break; case 1: //选择左屏 CS1=0; CS2=1; break; case 2: //选择右屏 CS1=1; CS2=0; break; /* case 3: //选择右屏 CS1=1; CS2=1; break; */ } } /* LCDx向上滚屏显示 */ void lcd_rol() { int x; for(x=0;x<64;x++) { select_screen(0); w_com(0xc0+x); delayms(500); } } /* LCD清屏函数:清屏从第一页的第一列开始,总共8页,64列 */ void clear_screen(screen) { int x,y; select_screen(screen); //screen:0-选择全屏,1-选择左半屏,2-选择右半屏 for(x=0xb8;x<0xc0;x++) //从0xb8-0xbf,共8页 { w_com(x); w_com(0x40); //列的初始地址是0x40 for(y=0;y<64;y++) { w_date(0x00); } } } /* LCD显示汉字字库函数 */ void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-3,mun:显示第几个汉字的参数 int a; mun=mun*32; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } } /* LCD显示字符字库函数 */ void lcd_display_zifuk(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } } /* LCD显示数字字库函数 */ void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } } /* LCD初始化函数 */ void lcd_init() { w_com(0x3f); //LCD开显示 w_com(0xc0); //LCD行初始地址,共64行 w_com(0xb8); //LCD页初始地址,共8页 w_com(0x40); //LCD列初始地址,共64列 } /* LCD显示主函数 */ void main() { //第一行 int x; lcd_init(); //LCD初始化 clear_screen(0); //LCD清屏幕 lcd_display_shuzi(1,0,4,5); //LCD显示数字 lcd_display_shuzi(1,0,5,1); //LCD显示数字 lcd_display_hanzi(1,0,3,0); //LCD显示汉字 lcd_display_hanzi(2,0,0,1); //LCD显示汉字 //LCD字符汉字 lcd_display_hanzi(2,0,1,2); //LCD显示汉字 //第二行 lcd_display_zifuk(1,1,2,0); //LCD显示字符 lcd_display_zifuk(1,1,3,0); //LCD显示字符 lcd_display_zifuk(1,1,4,0); //LCD显示字符 lcd_display_zifuk(1,1,5,4); //LCD显示字符 lcd_display_shuzi(1,1,6,8); //LCD显示字符 lcd_display_shuzi(1,1,7,9); //LCD显示字符 lcd_display_shuzi(2,1,0,5); //LCD显示字符 lcd_display_shuzi(2,1,1,1); //LCD显示字符 lcd_display_zifuk(2,1,2,4); lcd_display_zifuk(2,1,3,1); lcd_display_zifuk(2,1,4,2); lcd_display_zifuk(2,1,5,3); //第三行 for(x=0;x<4;x++) { lcd_display_hanzi(1,2,x,3+x); //LCD显示汉字 } for(x=0;x<4;x++) { lcd_display_hanzi(2,2,x,7+x); //LCD显示汉字 } //第四行 for(x=0;x<4;x++) { lcd_display_zifuk(1,3,x,5+x); //LCD显示汉字 } lcd_display_shuzi(1,3,4,7); lcd_display_shuzi(1,3,5,5); lcd_display_shuzi(1,3,6,5); lcd_display_zifuk(1,3,7,9); lcd_display_shuzi(2,3,0,8); lcd_display_shuzi(2,3,1,9); lcd_display_shuzi(2,3,2,9); lcd_display_shuzi(2,3,3,5); lcd_display_shuzi(2,3,4,6); lcd_display_shuzi(2,3,5,8); lcd_display_shuzi(2,3,6,9); lcd_display_shuzi(2,3,7,2); while(1); /* while(1) { // LCD向上滚屏显示 lcd_rol(); } */ }
上传时间: 2013-11-08
上传用户:aeiouetla
欧姆龙plc编程软件CX-Programmer使用手册 第一章安装和启动 1. 安装 1-1. 安装CX-Programmer 1-2. 在线注册 2. 打开新工程和设置设备型号 3. 打开新工程和设置设备型号 4. 主窗口 4-1.兼容SYSWIN软件的按键分配 4-2. 段 4-3.删除和显示其他窗口 5.创建程序 5-1.常开接点的输入 5-2.线圈的输入 5-3.符号注释的编辑 5-4.条注释的输入 5-5.常闭接点的输入 5-6.元素注释的输入 5-7.上升沿微分接点的输入 5-8.下降沿微分接点的输入 5-9.向上垂线的输入 5-10.向下垂线的输入 5-11.高级指令的输入1 - 字符串的输入 5-12.高级指令的输入1 - 有用的功能 5-13.辅助继电器的输入- 1.0 秒时钟脉冲位 5-14.高级指令的输入2 – 微分指令的输入 5-15.或逻辑的条输入 5-16.高级指令的输入3 – 通过功能号来输入 5-17.定时器指令的输入 5-18.计数器指令的输入 5-19.条的编辑…复制和粘贴 5-20. END指令的输入 第二章在线/调试 1. 程序错误检查(编译) 2. 进入在线 3. 监视 4. 监视- 2 同时监视程序中多处位置 5. 监视- 3 以十六进制数监视 6. 监视- 4 查看窗口 7. 监视- 5 查看窗口的当前值修改和二进制数监视 8. 查看窗口的有用功能 9. 监视- 6 监视窗口- 2 10.监视- 7 以短条形式显示 11.监视- 8 微分监视 12.强制为On/Off 13.强制-on/off 位的显示列表 14.修改定时器的设定值 15.修改定时器的当前值 16.查找功能- 1 通过地址引用工具查找 17.查找功能- 2 梯形图的折回查找 18.查找功能- 3 通过注释的关键字来查找 19.查找功能- 4 进入条注释 20.查找功能- 5 查找位地址 21.在线编辑 实用的功能 相关资料: 欧姆龙PLC编程软件CX-Programmer7.1 简体中文版
上传时间: 2013-10-25
上传用户:84425894
○1 RS232 串口 ○2 ISP程序下载接口 ○3 18B20 数字传感器接口 ○4 EEPROM ○5 七彩跑马灯 ○6 驱动芯片 ○7 蜂鸣器 ○8 继电器 ○9 直流电机接口 ○10 继电器输出口 ○11 步进电机接口 ○12 矩阵按键
上传时间: 2013-10-14
上传用户:semi1981
本书面向由传统51单片机转向ARM嵌入式开发的硬件工程师、由硬件转嵌入式软件开发的工程师、没有嵌入式开发经验的软件工程师。分9个部分:1、开发环境建立2、S3C2410功能部件介绍与实验(含实验代码)3、bootloader vivi详细注释4、linux移植5、linux驱动6、yaffs文件系统详解7、调试工具8、GUI开发简介9、UC/OS移植通过学习第二部分,即可了解基于ARM CPU的嵌入式开发所需要的外围器件及其接口。对应的实验代码实现了对这些接口的操作,这可以让硬件工程师形成一个嵌入式硬件开发的概念。这部分也可以当作S3C2410的数据手册来使用。一个完整的嵌入式linux系统包含4部分内容:bootloader、parameters、kernel、root file system。3、4、5、6部分详细介绍了这4部分的内容,这是linux底层软件开发人员应该掌握的。通过学习这些章节,您可以详细了解到如何在一个裸板上裁减、移植linux,如何构造自己的根文件系统,如何编写适合客户需求的驱动程序——驱动程序这章将结合几个经典的驱动程序进行讲解。您还可以了解到在用在nand flash上的非常流行的yaffs文件系统是如何工作的,本书将结合yaffs代码详细介绍yaffs文件系统。第7部分介绍了嵌入式linux开发中使用gdb进行调试的详细过程。
上传时间: 2013-10-31
上传用户:yunfan1978
1 FEATURES· Single chip LCD controller/driver· 1 or 2-line display of up to 24 characters per line, or2 or 4 lines of up to 12 characters per line· 5 ′ 7 character format plus cursor; 5 ′ 8 for kana(Japanese syllabary) and user defined symbols· On-chip:– generation of LCD supply voltage (external supplyalso possible)– generation of intermediate LCD bias voltages– oscillator requires no external components (externalclock also possible)· Display data RAM: 80 characters· Character generator ROM: 240 characters· Character generator RAM: 16 characters· 4 or 8-bit parallel bus or 2-wire I2C-bus interface· CMOS/TTL compatible· 32 row, 60 column outputs· MUX rates 1 : 32 and 1 : 16· Uses common 11 code instruction set· Logic supply voltage range, VDD - VSS: 2.5 to 6 V· Display supply voltage range, VDD - VLCD: 3.5 to 9 V· Low power consumption· I2C-bus address: 011101 SA0.
上传时间: 2013-11-08
上传用户:laozhanshi111
提出了采用两段式同轴波纹慢波结构实现双频高功率微波输出的相对论返波振荡器, 推导了该结构的TM0n模式色散方程,数值求解了两段式同轴波纹慢波结构TM0n模色散曲线,分析了该器件X波段双频高功率微波输出的产生机理, 分析中考虑了电子注在慢波结构第二段工作效率不变和下降时的双频工作点情况,并运用2.5 维全电磁粒子模拟程序验证了双频微波信号的可靠性。关键词高功率微波;双频;X 波段;相对论返波振荡器 当前, 应用于高功率微波效应的微波器件只有一个主频率,已有的实验结果表明,在现有条件下,单频高功率微波用于攻击敌方的电子系统所需的功率远远大于单只高功率微波源所能产生的功率,即破坏阈值很高[1]。但是,如果用两个或多个频率相近的高功率微波波束产生拍频后用于攻击电子系统,那么所需的功率密度将大大减小,即效应阈值大大下降, 采用这种方式将有可能在现有的技术下使高功率微波实用化[2],但是双频及多频高功率微波源器件的研究目前是十分前沿的课题,处于刚起步阶段,在国内外极少有报道[2~4],因而,用单个微波源器件产生稳定输出的双频甚至多频高功率微波具有重要的实际应用价值和学术价值,是高功率微波领域又一个新兴的研究方向, 在高功率微波武器和新体制雷达等方面将有良好的应用前景。
上传时间: 2013-10-31
上传用户:kxyw404582151
在s3型试验板上实现:使LED1~LED8这8个二极管实现1、3、5、7及2.4、6、8的交替点亮,周期约1S。在我的文档中建立一个文件目录(csl),然后建立csluv2的工程项目.最后建立源程序文件(cs1.C)。
上传时间: 2013-10-09
上传用户:古谷仁美
P87LPC767 OTP 单片机原理 P87LPC767 是20 脚封装的单片机适合于许多要求高集成度低成本的场合可以满足许多方面的性能要求作为Philips 小型封装系列中的一员P87LPC767 提供高速和低速的晶振和RC 振荡方式可编程选择具有较宽的操作电压范围可编程I/O 口线输出模式选择可选择施密特触发输入LED 驱动输出有内部看门狗定时器P87LPC767 采用80C51 加速处理器结构指令执行速度是标准80C51 MCU 的两倍特性 操作频率为20MHz 时除乘法和除法指令外加速80C51 指令执行时间为300600ns VDD=4.5 5.5V 时时钟频率可达20MHz VDD=2.7 4.5V 时时钟频率最大为10MHz 4 通道多路8 位A/D 转换器在振荡器频率fosc=20MHz 时转换时间为9.3μs 用于数字功能时操作电压范围为2.7 6.0V 4K 字节OTP 程序存储器128 字节的RAM 32Byte 用户代码区可用来存放序列码及设置参数 2 个16 位定时/计数器每一个定时器均可设置为溢出时触发相应端口输出 内含 2 个模拟比较器 全双工通用异步接收/发送器UART 及I2C 通信接口 八个键盘中断输入另加2 路外部中断输入 4 个中断优先级 看门狗定时器利用片内独立振荡器,无需外接元件,看门狗定时器溢出时间有8 种选择 低电平复位使用片内上电复位时不需要外接元件 低电压复位选择预设的两种电压之一复位可在掉电时使系统安全关闭也可将其设置为一个中断源 振荡器失效检测看门狗定时器具有独立的片内振荡器因此它可用于振荡器的失效检测 可配置的片内振荡器及其频率范围和RC 振荡器选项(用户通过对EPROM 位编程选择) 选择RC 振荡器时不需外接振荡器件 可编程 I/O 口输出模式准双向口,开漏输出,上拉和只有输入功能可选择施密特触发输入 所有口线均有20mA 的驱动能力 可控制口线输出转换速度以降低EMI,输出最小上升时间约为10ns 最少 15 个I/O 口,选择片内振荡和片内复位时可多达18 个I/O 口 如果选择片内振荡及复位时,P87LPC767 仅需要连接电源线和地线 串行 EPROM 编程允许在线编程2 位EPROM 安全码可防止程序被读出 空闲和掉电两种省电模式提供从掉电模式中唤醒功能低电平中断输入启动运行典型的掉电电流为1μA 低功耗 4MHz-20MHz,1.7-10mA@3.3v 100KHz-4MHz,0.044-1.7mA@3.3v 20KHz-100KHz,9-44μA@3.3v 20 脚DIP 和SO 封装
上传时间: 2013-11-06
上传用户:xcy122677
PHILIPS单片机选型指南 ★ 80C51体系结构:如果您用过8051内核的单片机就很容易入门;★ 超高速CPU内核:18MHz的LPC900相当于108MHz的传统80C51;2 ★ 丰富的片内外围资源:WDT,UART,I C,SPI, D/A,2 E PROM, RTC,A/D,比较器,CCU,掉电检测等;★ 内置高精度RC振荡器:标称频率7.3728MHz,精度可达1%;★ 超小型TSSOP封装(另有DIP、PLCC封装),能最大限度节省电路板面积;★ 超低功耗:支持低速晶振,3级省电模式,典型掉电电流仅1μA;★ 在线ICP编程,仅需引出5根线(VCC, GND, RST,P0.4, P0.5);★ Flash存储器:容量1~16KB,具有ISP、IAP功能,2 可以当作E PROM使用;★ 工业级产品,抗干扰能力强,操作电压2.4~3.6V,管脚数8~44,I/O可兼容5V逻辑。
上传时间: 2013-11-12
上传用户:rlgl123
Keil 软件实例教程 2 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51 单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发MCS-51 系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil 即可看出。Keil 提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil 软件需要Pentium 或以上的CPU,16MB或更多RAM、20M 以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51 系列单片机的爱好者来说是十分必要的,如果你使用C 语言编程,那么Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C 语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。我们将通过一些实例来学习Keil 软件的使用,在这一部份我们将学习如何输入源程序,建立工程、对工程进行详细的设置,以及如何将源程序变为目标代码。图1 所示电路图使用89C51 单片机作为主芯片,这种单片机性属于MCS-51 系列,其内部有4K 的FLASH ROM,可以反复擦写,非常适于做实验。89C51 的P1 引脚上接8 个发光二极管,P3.2~P3.4 引脚上接4 个按钮开关,我们的第一个任务是让接在P1 引脚上的发光二极管依次循环点亮。 一、Keil 工程的建立首先启动Keil 软件的集成开发环境,这里假设读者已正确安装了该软件,可以从桌面上直接双击uVision 的图标以启动该软件。UVison启动后,程序窗口的左边有一个工程管理窗口,该窗口有3 个标签,分别是Files、Regs、和Books,这三个标签页分别显示当前项目的文件结构、CPU 的寄存器及部份特殊功能寄存器的值(调试时才出现)和所选CPU 的附加说明文件,如果是第一次启动Keil,那么这三个标签页全是空的。
上传时间: 2013-10-26
上传用户:ruan2570406