附件为: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
对应程序: #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar code tab[]={ 0x81, 0x42, 0x24, 0x18, }; void delay(uint z) { uint i,j; for(i=z;i>0;i--) for(j=120;j>0;j--); } void init() { P0=0x00; }
上传时间: 2014-01-17
上传用户:ruan2570406
序号 参数 数据 单位 参数 说 明 . 输 入 参 数 变 量 1 umin V 交流输入电压最小值 2 umax V 交流输入电压最大值 3 fL Hz 电网频率 4 f kHz 开关频率 5 UO V 直流输出电压 6 PO W 输出功率 7 η % 电源效率 8 Z 0.5 损耗分配系数 9 UFB V 反馈电压
上传时间: 2013-10-14
上传用户:小码农lz
主要内容: 1、Sonix 26xx单片机简介;2、Sonix 26xx单片机特点;3、Sonix 26xx单片机内部结构;4、Sonix 26xx单片机资源;5、Sonix 26xx单片机ROM、RAM的映射;6、Sonix 26xx寄存器(ACC、PFLAG、PC、Y、Z、R);
上传时间: 2013-10-29
上传用户:远远ssad
1.C语言和汇编语言在开发单片机时各有哪些优缺点?答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。对于目前普遍使用的RISC架构的8bitMCU来说,其内部ROM、RAM、STACK等资源都有限,如果使用C语言编写,一条C语言指令编译后,会变成很多条机器码,很容易出现ROM空间不够、堆栈溢出等问题。而且一些单片机厂家也不一定能提供C编译器。而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,我们还是建议采用汇编语言比较好。如果对单片机C语言有兴趣,HOLTEK的单片机就有提供C编译器,可以到HOLTEK的网站(www.holtek.com.cn)免费下载使用。
上传时间: 2013-10-24
上传用户:qb1993225
本文以PIC24FJ64GA002 16位单片机为处理器控制10BASE-T SPI以太网控制器ENC28J60,实现了单片机的上网。应用Microchip TCPIP Stack协议,实现了HTTP,FTP协议和基于CGI动态网页的设计。操作员可以在远程计算机上以Web页面的方式实现系统的监控,也可以通过FTP更新系统参数和数据。最后将本系统应用在了生物发酵远程监控系统中,得到了良好的效果。
上传时间: 2013-11-08
上传用户:赵一霞a
CiA全称为“CAN in Automation-国际用户和厂商协会”,在德国Erlangen注册。CiA总部位于Erlangen,并由CiA董事会建立各个办事处。1992年,为促进CAN以及CAN协议的发展,欧洲的一些公司组成一个商业协会,提供CAN的技术、产品以及市场信息。到2002年6月时,共有约400家公司加入了这个协会,协作开发和支持各类CAN高层协议。经过近十年的发展,该协会已经为全球应用CAN技术的权威。CiA提供的各种服务有: 发布各类技术规范。免费下载CAN文献资料,提供CANopen规范、DeviceNet规范。 发布CAN产品数据库、CANopen产品指南。 出版CAN时事通讯杂志。 组织国际CAN会议(iCC)、CAN入门培训、CAN内部讲座。 在国际商业展览会上负责分发印刷资料,并举办CAN技术研讨会。 提供CANopen验证工具,执行CANopen认证测试。 为最终用户提供技术咨询服务,解答有关DeviceNet和CANopen的问题。 通过email、传真或电话等方式为器件开发人员、系统设计人员提供免费的咨询服务。 开发CAN规范(包括物理层定义、应用层和设备协议),并发布为CiA标准。在CiA的努力推广下,CAN技术在汽车电控制系统、电梯控制系统、安全监控系统、医疗仪器、纺织机械、船舶运输等方面均得到了广泛的应用。2002年6月17日,广州周立功单片机发展有限公司与CiA正式签订协议,成为中国的第一家CiA团体会员(FCM)。我们将从CiA获得各类CAN技术资料、市场信息,并在CiA支持下,从事CAN技术在中国的推广工作。作为Philips公司在亚太地区的销量最大的微控制器元件销售商,广州周立功单片机发展有限公司提供Philips的CAN控制器、CAN收发器,以及LIN收发器。同时,广州周立功单片机发展有限公司提供CAN开发工具、CAN调试仪器,并为最终产品应用提供CAN嵌入模块、CAN接口模块、CAN高层协议软件库、CAN应用方案。第 1
标签: CiA
上传时间: 2013-12-22
上传用户:时代将军
8SH702&703用户接口电路 概述:SHL7038是本公司于2005年在60系列产品(SHL6014和SHR6024)、70系列产品(SHL703和SHR702)基础上设计的一种同时具备8路用户接口(选用2片SHL6014,等同于8路SHL703)或者8路中继接口(选用2片SHR6024,等同于8路SHR702)或者4路用户接口加4路中继接口(选用1片SHL6014加1片SHR6024,,等同于4路SHL703加4路SHR702)的通用接口模板; 其中的用户接口性能指标描述详见SHL6014资料介绍(附后); 其中的中继接口性能指标描述详见SHR6024资料介绍(附后); 阻抗可调整; 100mm * 64mm * 6mm MAX拔插式结构,体积超小,使用方便。 特别适用于语音卡、调度机、交换机、环路终端等既要求密度高、又要求拔插方便、尤其希望能灵活变更模块类型的场合。 单电源供电。
上传时间: 2013-10-17
上传用户:haoxiyizhong
MPLAB C30用户指南(英文) HIGHLIGHTSThe information covered in this chapter is as follows:• About this Guide• Recommended Reading• Troubleshooting• The Microchip Web Site• Development Systems Customer Notification Service• Customer Support Document LayoutThe document layout is as follows:• Chapter 1: Compiler Overview – describes MPLAB C30, development tools andfeature set.• Chapter 2: Differences between MPLAB C30 and ANSI C – describes thedifferences between the C language supported by MPLAB C30 syntax and thestandard ANSI-89 C.• Chapter 3: Using MPLAB C30 – describes how to use the MPLAB C30 compilerfrom the command line.• Chapter 4: MPLAB C30 Runtime Environment – describes the MPLAB C30runtime model, including information on sections, initialization, memory models, thesoftware stack and much more.• Chapter 5: Data Types – describes MPLAB C30 integer, floating point and pointerdata types.• Chapter 6: Device Support Files – describes the MPLAB C30 header and registerdefinition files, as well as how to use with SFR’s.• Chapter 7: Interrupts – describes how to use interrupts.• Chapter 8: Mixing Assembly Language and C Modules – provides guidelines tousing MPLAB C30 with MPLAB ASM30 assembly language modules.
上传时间: 2013-10-21
上传用户:13925096126
SPCE061A的指令周期表 SPCE061A的指令周期表[注意]:表中目标寄存器为PC时,部分指令周期会发生改变;建议在非必要的情况下,尽量不用PC作为目标寄存器。[符号约定]:表中符号代表的含义如下:R1,R2,R3,R4: 通用寄存器;BP(R5): 基址指针寄存器,也可以作为通用寄存器使用;SR: 段寄存器;SP: 堆栈指针寄存器;PC: 程序计数器;N: 负标志;Z: 零标志;S: 符号标志;C: 进位标志;IM6: 6位立即数寻址;IM16: 16位立即数寻址;[A6]: 存储器绝对寻址,用6位立即数表示地址;[A16]: 存储器绝对寻址,用16位立即数表示地址;R: 寄存器寻址;[R]: 寄存器间接寻址;[BP+IM6]: 变址寻址,地址偏移量为6位立即数;[BP+IM16]: 变址寻址,地址偏移量为16位立即数;{}: 可选项;D: 数据段基址,D:或省略都表示基址为0(在第0页);#: 算术逻辑运算符(不能为乘除);n 移位操作时的移位位数。
上传时间: 2013-10-23
上传用户:nanshan