ImageVerifierCode 换一换
你正在下载:

程序1.docx

[预览]
格式:DOCX , 页数:36 ,大小:95.40KB ,
资源ID:11047306      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11047306.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(程序1.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

程序1.docx

1、程序1 目录目录 1图1.10 2LM324 5LM386集成功率放大器 6CM12864-12 751单片机带字库12864液晶动态汉字显示 11单片机课程设计报告电子琴 13音频放大器: 194*4矩形式键盘原理图 22 图1.10 ORG 0000H LJMP MAIN ORG 0040HMAIN:MOV A,#FEHLOOP:MOV P2,A LCALL D01S RL A AJMP LOOP D01S:MOV R6,#100D10mS:MOV R5,#40DL:MOV R4,#123 NOP DJNZ R4,$ DJNZ R5,DL DJNZ R6,D10mSRET END硬件双机通

2、信: ORG 0000H LJMP MAIN ORG 0023H LJMP SINT ORG 0040HMAIN:MOV SP,#5FH MOV TMOD,#20H MOV TH1,#FDH MOV TL1,#FDH MOV PCON,#00H SETB TR1 MOV SCON,#50H SETB EA SETB ES SJMP $SINT:CLR RI MOV A,SBUF MOV P2,A INC A MOV SBUF,A JNB TI,$ CLR TI RETI END 独立式按键与LED显示 图4.10TEMP EQU 30H ORG 0000H JMP START ORG 0100

3、HSTART:MOV SP.#5FH MOV P0,#8CH MOV P3,#0FFHMOKEY:MOV A,P3 CPL A JZ NOKEY MOV TEMP,NOKEY MOV R7,#16 MOV R2,#0 LOOP:MOV A,R2 MOV DPTR,#CODE-P0 MOVC A,A+DPTR MOV P0,A INC R2 SETB RS0 CALL D-1S CLR RS0 DJNZ R7,LOOP JMP START D-1S:MOV R6,#100 D10:CALL D10ms RET D10ms:MOV R5,#10 D1ms:MOV R4,#249 DL:NOP NO

4、P DJNZ R4,DL DJNZ R5,D1ms RETCODE-P0:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH ENDLM324的4脚接+12V,11脚接-12V LM386集成功率放大器电压增益2645dB,电源电压+5V.集成稳压器CW317输入电压440V,输出调整电压1.237V,输出电流0.11.5A,从左到右依次是ADJ,Uo,UiCM12864-12模块基本参数:产品型号:CM12864-12显示内容:8个中文字*4行,128 * 64点阵 外形尺寸(mm):93

5、* 70 * 13.5视域尺寸(mm): 73.5 * 39 点 尺 寸(mm):0.48 * 0.48控 制 器:ST7920(1)电压:3.3V,5.0V;模块内自带-10V负压,用于LCD的驱动电压。(2)STN正视反射模式(3)显式模式:黄绿膜、灰膜、蓝膜、黑白膜、(4)显式角度:6点钟直视(5)与CPU接口采用8位数据总线并行输入输出和8条控制线(6)工作温度(Ta):-10+60,存储温度:-20+70(7)背光特征:LED背光(黄绿色、白色、蓝色、红色)(8)模块封装方式:COB(9)功耗:模块自带负压12864汉字液晶屏图形模式研究 本系统采用的显示液晶为12864,横向上有1

6、28个点,纵向上有64个点。我所购买的这块液晶的控制芯片为st7920,内置字库为曰汉字屏。汉字屏并非点阵屏,其画图能力不强大。由于本次要做的系统需要显示点阵,经过几天的研究,我成功实现定点函数Point(x,y)的编写。1.切入点 这块液晶是可以显示图片的,需要准备一张128x64的bmp图片,利用转换软件将其转换为数组,数组的存放格式为0xXX(X代表一个16进制数)。分析其画图函数可以得出,每次写入的数据恰为0xXX,即每次写入8个点。2.XY坐标研究 先分清两个概念,内部地址和物理观察地址不一样!设内部地址变量为LCD_X和LCD_Y,设直观物理观察,左上角物理坐标地址为(x,y)为(

7、0,0)。2864屏并非真正的128x64,而是由256x32人为走线成4行,并且横向X一次移动16个物理点(分两次写入),即内部横向 LCD_X坐标范围0-15,内部纵向LCD_Y坐标范围0-31。其实际初始内部坐标并非为0,而是(LCD_X,LCD_Y)=(80,80)。举例来说,LCD_X=80+8,LCD_Y=80所代表的点的位置为物理位置为从(0,32)开始的纵向16个点。3.缺点和改进 汉字液晶毕竟不是点阵液晶,通过读取数据的方式再写入数据,势必将增大液晶显示的响应时间,特别对本次示波器的高速系统影响较大。如果单片机内存空间足够,可以在其SRAM中开1KB的存储空间用来映射液晶的R

8、AM,可惜本次系统对单片机内部空间要求比较高,若外扩SRAM,必可以提高液晶的响应速度。4.LCD12864液晶图文菜单制作如果采用整屏刷新显然速度太慢,而且存储的数据量太大所以可以采用局部更新的办法,只改变屏上需要变动的某一部分以下就是用这种办法做出的菜单。/* 文件名: LCD12864.c* 功能: LCD12864液晶屏驱动程序代码 */uchar AC_TABLE=0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, 0x88,0x89,0x8a,0x8b,0x8c,0x8d

9、,0x8e,0x8f, 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, ;void delayus(uint us) while(us-);void Write_byte(uchar byte) uchar i; CLK=0; delayus(2); for(i=0;i8;i+) if(byte&0x80) SID=1; else SID=0; CLK=1; delayus(7); byte=1; CLK=0; delayus(7); void Write_command_12864(uchar com) CS=1; Write_byte(0xf8); Wri

10、te_byte(com&0xf0); Write_byte(com&0x0f)4); CS=0;void Write_data_12864(uchar data) CS=1; Write_byte(0xfa); Write_byte(data&0xf0); Write_byte(data&0x0f)4); CS=0;void PutStr(uchar row,uchar col,uchar *puts) Write_command_12864(0x30); Write_command_12864(AC_TABLE8*row+col); while(*puts!=0) if(col=8) col

11、=0; row+; if(row=4) row=0; Write_command_12864(AC_TABLE8*row+col); Write_data_12864(*puts); puts+; Write_data_12864(*puts); puts+; col+; void LcmClearTXT() uchar i; Write_command_12864(0x30); Write_command_12864(0x80); for(i=0;i64;i+) Write_data_12864(0x20);void LcmClearBMP() unsigned char i,j; Writ

12、e_command_12864(0x34); /8Bit扩充指令集,即使是36H也要写两次 Write_command_12864(0x36); /绘图ON,基本指令集里面36H不能开绘图 for(i=0;i32;i+) /12864实际为256x32 Write_command_12864(0x80|i); /行位置 Write_command_12864(0x80); /列位置 for(j=0;j32;j+) /256/8=32 byte Write_data_12864(0); void PutBMP(const uchar *puts) uint x=0; uchar i,j; Wri

13、te_command_12864(0x34); /8Bit扩充指令集,即使是36H也要写两次 Write_command_12864(0x36); /绘图ON,基本指令集里面36H不能开绘图 for(i=0;i32;i+) /12864实际为256x32 Write_command_12864(0x80|i); /行位置 Write_command_12864(0x80); /列位置 for(j=0;j32;j+) /256/8=32 byte /列位置每行自动增加 Write_data_12864(putsx); x+; void Write_dot(uchar add,const ucha

14、r *puts) uint x=0; uchar i,j,lie; Write_command_12864(0x34); /8Bit扩充指令集,即使是36H也要写两次 Write_command_12864(0x36); if(add0x8f) lie=16; for(i=0+lie;i16+lie;i+) Write_command_12864(0x80|i); Write_command_12864(add); for(j=0;j2;j+) Write_data_12864(putsx); x+; void LCD_12864_Init() Write_command_12864(0x30

15、); Write_command_12864(0x03); Write_command_12864(0x0c); Write_command_12864(0x01); Write_command_12864(0x06);51单片机带字库12864液晶动态汉字显示C语言源程序实验芯片为:AT89S52,带字库液晶屏:12864,实现的目的:动态一个汉字一个汉字显示。其实和显示汉字的程序一样,只是稍做一下修改即可。C语言源程序如下:#include #include #include #include sbit RS=P24;sbit WRD=P25;sbit E=P26;sbit PSB=P21

16、;sbit RES=P23;void TransferData(char data1,bit DI);void delayms(unsigned int n);void delay(unsigned int m);void lcd_mesg003(unsigned char code *addr1);unsigned char code IC_DAT=我是一个中国人啊;void initinal(void)delay(40);PSB=1; /并口工作模式delay(1);RES=0; /复位delay(1);RES=1; /复位置高delay(10);TransferData(0x30,0);

17、delay(100);TransferData(0x30,0);delay(37);TransferData(0x08,0);delay(100);TransferData(0x10,0);delay(100);TransferData(0x0C,0);delay(100);TransferData(0x01,0);delay(10);TransferData(0x06,0);delay(100);void main(void)while(1) initinal();/调用LCD字库初始化程序 delay(100); lcd_mesg003(IC_DAT);void lcd_mesg003(u

18、nsigned char code *addr1)unsigned char i;/第一行TransferData(0x80,0); delay(100); for(i=0;i16;i+) TransferData(*addr1,1); addr1+; delayms(50); void TransferData(char data1,bit DI) /传送数据或是命令,当DI=0时,传送命令,当DI=1时,传送数据WRD=0;RS=DI;delay(1);P0=data1;E=1;delay(1);E=0;void delayms(unsigned int n)unsigned int i,

19、j;for(i=0;in;i+) for(j=0;j2000;j+);void delay(unsigned int m)unsigned int i,j;for(i=0;im;i+)for(j=0;j=1&key8; key=0; TH1=high; TL1=low; TR1=1; /开始计数 pulse_cnt=500; while(pulse_cnt!=0); out=0; TR1=0; /* T1定时程序*/void t1() interrupt 3 /T1中断,方式1 TR1=0; TH1=high; TL1=low; TR1=1; out=pulse; pulse=pulse; pulse_cnt-;/* 延时程序*/void delay10ms(un

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1