欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机学习程序.docx

    • 资源ID:10023666       资源大小:25.27KB        全文页数:26页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机学习程序.docx

    1、单片机学习程序4x4键盘C语言程序:#include#define uint unsigned int#define uchar unsigned charuchar code BTNTAB=0x11,0x21,0x41,0x81, 0x12,0x22,0x42,0x82, 0x14,0x24,0x44,0x84, 0x18,0x28,0x48,0x88;uchar code LEDTAB = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, /07 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF ;void delay

    2、(uint timecount) uint i; for(i=0;itimecount;i+); return;main() uchar a,b; while(1) do P1=0xF0; a=P1&0x0F; while(a=0x00); b=0x01; do P1=b; a=P1&0xF0; if(a!=0x00) break; else b=b1; while(b!=0x10);/ delay(1000); a=P1&0xF0; b=b&0x0F; a=a|b; b=0x00; while (a!=BTNTABb) b=b+1; if(b16) P3=LEDTABb; 4x4键盘汇编语言

    3、程序:LINE EQU 30HROW EQU 31HVAL EQU 32H ORG 00HSTART: MOV DPTR,#TABLE ;段码表首地址 MOV P2,#00H ;数码管显示初始化LSCAN: MOV P3,#0F0H ;列线置高电平,行线置高电平L1: JNB P3.0,L2 ;逐行扫描 LCALL DELAY JNB P3.0,L2 MOV LINE,#00H ;存行号 LJMP RSCANL2: JNB P3.1,L3 LCALL DELAY JNB P3.1,L3 MOV LINE,#01H ;存行号 LJMP RSCANL3: JNB P3.2,L4 LCALL DEL

    4、AY JNB P3.2,L4 MOV LINE,#02H ;存行号 LJMP RSCANL4: JNB P3.3,L1 LCALL DELAY JNB P3.3,L1 MOV LINE,#03H ;存行号RSCAN: MOV P3,#0FH ;行线列线电平互换C1: JNB P3.4,C2 ;逐列扫描 MOV ROW,#00H ;存列号 LJMP CALCUC2: JNB P3.5,C3 MOV ROW,#01H ;存列号 LJMP CALCUC3: JNB P3.6,C4 MOV ROW,#02H ;存列号 LJMP CALCUC4: JNB P3.7,C1 MOV ROW,#03H ;存列

    5、号 CALCU: MOV A,LINE ;根据行号和列号计算键值 MOV B,#04H MUL AB ADD A,ROW MOV VAL,A ;存键值 MOVC A, A+DPTR ;要据键值查段码 MOV P2,A ;输出段码显示 LJMP LSCANDELAY: MOV R6,#20D1: MOV R7,#250 DJNZ R7,$ DJNZ R6,D1 RETTABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HEND音阶输出实验C语言程序:#define uchar unsigned ch

    6、ar /定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include /包括一个 52 标准内核的头文件 char code dx5163 _at_ 0x003b;/这是为了仿真设置的 sbit BEEP=P17; /喇叭输出脚 uchar th0_f; /在中断中装载的 T0 的值高 8 位 uchar tl0_f; /在中断中装载的 T0 的值低 8 位 /T0 的值,及输出频率对照表 uchar code freq36*2= 0xA9,0xEF,/00220HZ ,1 /0 0x93,0xF0,/00233

    7、HZ ,1# 0x73,0xF1,/00247HZ ,2 0x49,0xF2,/00262HZ ,2# 0x07,0xF3,/00277HZ ,3 0xC8,0xF3,/00294HZ ,4 0x73,0xF4,/00311HZ ,4# 0x1E,0xF5,/00330HZ ,5 0xB6,0xF5,/00349HZ ,5# 0x4C,0xF6,/00370HZ ,6 0xD7,0xF6,/00392HZ ,6# 0x5A,0xF7,/00415HZ ,7 0xD8,0xF7,/00440HZ 1 /12 0x4D,0xF8,/00466HZ 1# /13 0xBD,0xF8,/00494HZ

    8、 2 /14 0x24,0xF9,/00523HZ 2# /15 0x87,0xF9,/00554HZ 3 /16 0xE4,0xF9,/00587HZ 4 /17 0x3D,0xFA,/00622HZ 4# /18 0x90,0xFA,/00659HZ 5 /19 0xDE,0xFA,/00698HZ 5# /20 0x29,0xFB,/00740HZ 6 /21 0x6F,0xFB,/00784HZ 6# /22 0xB1,0xFB,/00831HZ 7 /23 0xEF,0xFB,/00880HZ 1 0x2A,0xFC,/00932HZ 1# 0x62,0xFC,/00988HZ 2

    9、0x95,0xFC,/01046HZ 2# 0xC7,0xFC,/01109HZ 3 0xF6,0xFC,/01175HZ 4 0x22,0xFD,/01244HZ 4# 0x4B,0xFD,/01318HZ 5 0x73,0xFD,/01397HZ 5# 0x98,0xFD,/01480HZ 6 0xBB,0xFD,/01568HZ 6# 0xDC,0xFD,/01661HZ 7 /35 ; /定时中断 0,用于产生唱歌频率 timer0() interrupt 1 TL0=tl0_f;TH0=th0_f; /调入预定时值 BEEP=BEEP; /取反音乐输出 IO P2=P2; /音阶声音

    10、自动输出试验 void main(void) / 主程序 ulong n; uchar i; uchar code jie88=12,14,16,17,19,21,23,24;/12345671 八个音符在频率表中的位置 TMOD = 0x01; /使用定时器 0 的 16 位工作模式 TR0 = 1; ET0 = 1; EA = 1; while(1) for(i=0;i8;i+) /循环播放 8 个音符 tl0_f=freqjie8i*2; /置一个音符的值 th0_f=freqjie8i*2+1; for(n=0;n50000;n+); /延时 1 秒左右 乐谱方式输入的音乐播放,仙剑奇

    11、侠传C语言程序:#define uchar unsigned char /定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include /包括一个 52 标准内核的头文件 char code dx5163 _at_ 0x003b;/这是为了仿真设置的 sbit BEEP=P17; /喇叭输出脚 sbit K1= P32; sbit K2= P35; sbit K3= P24; sbit K4= P25; uchar th0_f; /在中断中装载的 T0 的值高 8 位 uchar tl0_f; /在中断中装载的

    12、T0 的值低 8 位 /T0 的值,及输出频率对照表 uchar code freq36*2= 0xA9,0xEF,/00220HZ ,1 /0 0x93,0xF0,/00233HZ ,1# 0x73,0xF1,/00247HZ ,2 0x49,0xF2,/00262HZ ,2# 0x07,0xF3,/00277HZ ,3 0xC8,0xF3,/00294HZ ,4 0x73,0xF4,/00311HZ ,4# 0x1E,0xF5,/00330HZ ,5 0xB6,0xF5,/00349HZ ,5# 0x4C,0xF6,/00370HZ ,6 0xD7,0xF6,/00392HZ ,6# 0x

    13、5A,0xF7,/00415HZ ,7 0xD8,0xF7,/00440HZ 1 /12 0x4D,0xF8,/00466HZ 1# /13 0xBD,0xF8,/00494HZ 2 /14 0x24,0xF9,/00523HZ 2# /15 0x87,0xF9,/00554HZ 3 /16 0xE4,0xF9,/00587HZ 4 /17 0x3D,0xFA,/00622HZ 4# /18 0x90,0xFA,/00659HZ 5 /19 0xDE,0xFA,/00698HZ 5# /20 0x29,0xFB,/00740HZ 6 /21 0x6F,0xFB,/00784HZ 6# /22

    14、0xB1,0xFB,/00831HZ 7 /23 0xEF,0xFB,/00880HZ 1 0x2A,0xFC,/00932HZ 1# 0x62,0xFC,/00988HZ 2 0x95,0xFC,/01046HZ 2# 0xC7,0xFC,/01109HZ 3 0xF6,0xFC,/01175HZ 4 0x22,0xFD,/01244HZ 4# 0x4B,0xFD,/01318HZ 5 0x73,0xFD,/01397HZ 5# 0x98,0xFD,/01480HZ 6 0xBB,0xFD,/01568HZ 6# 0xDC,0xFD,/01661HZ 7 /35 ; /定时中断 0,用于产生

    15、唱歌频率 timer0() interrupt 1 TL0=tl0_f;TH0=th0_f; /调入预定时值 BEEP=BEEP; /取反音乐输出 IO /* /音乐符号串解释函数 /入口:要解释的音乐符号串,输出的音调串,输出的时长串 changedata(uchar *song,uchar *diao,uchar *jie) uchar i,i1,j; char gaodi; /高低+/-12 音阶 uchar banyin;/有没有半个升音阶 uchar yinchang;/音长 uchar code jie78=0,12,14,16,17,19,21,23; /C 调的 7 个值 *d

    16、iao=*song; for(i=0,i1=0;) gaodi=0; /高低=0 banyin=0;/半音=0 yinchang=4;/音长 1 拍 if(*(song+i)=|) | (*(song+i)= ) i+; /拍子间隔和一个空格过滤 switch(*(song+i) case ,: gaodi=-12;i+;/低音 break; case : gaodi=12;i+; /高音 break; if(*(song+i)=0) /遇到 0 结束 *(diao+i1)=0; /加入结束标志 0 *(jie+i1)=0; return; j=*(song+i)-0x30; i+; /取出基

    17、准音 j=jie7j+gaodi; /加上高低音 yinc: switch(*(song+i) case #: /有半音 j 加一个音阶 i+;j+; goto yinc; case -: /有一个音节加长 yinchang+=4; i+; goto yinc; case _: /有一个音节缩短 yinchang/=2; i+; goto yinc; case .: /有一个加半拍 yinchang=yinchang+yinchang/2; i+; goto yinc; *(diao+i1)=j; /记录音符 *(jie+i1)=yinchang; /记录音长 i1+; /* /奏乐函数 /入

    18、口:要演奏的音乐符号串 void play(uchar *songdata) uchar i,c,j=0; uint n; uchar xdata diaodata112; /音调缓冲 uchar xdata jiedata112; /音长缓冲 changedata(songdata,diaodata,jiedata); /解释音乐符号串 TR0=1; for(i=0;diaodatai!=0;i+) /逐个符号演奏 tl0_f=freqdiaodatai*2; /取出对应的定时值送给 T0 th0_f=freqdiaodatai*2+1; for(c=0;cjiedatai;c+) /按照音

    19、长延时 for(n=0;n32000;n+); TR0=0; for(n=0;n500;n+); /音符间延时 TR0=1; TR0=0; /仙剑 uchar code xianjian= |3_3_3_2_3-|2_3_2_2_,6,6_,7_|12_1_,7,6_,5_|,6-| 3_3_3_2_3.6_|5_6_5_5_22_3_|45_4_32_1_|3.-3_| 67_6_55_3_|5-3_5_|26_5_32_3_|3-| 26_6_6-|16_6_66_7_|17_6_76_7_|3.-3_| 67_6_55_3_|5-3_5_|67_6_76_7_|3-| 26_6_6-|1

    20、6_6_66_7_|17_6_7.5_|6-| ; /乐谱方式输入的音乐播放,仙剑奇侠传 void main(void) / 主程序 TMOD = 0x01; /使用定时器 0 的 16 位工作模式 TR0 = 0; ET0 = 1; EA = 1; while(1) play(xianjian); 三个按键选择三首不同的音乐播放,一个键停止播放的C语言程序:#define uchar unsigned char /定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include /包括一个 52 标准内核的头文件

    21、char code dx5163 _at_ 0x003b;/这是为了仿真设置的 sbit BEEP=P17; /喇叭输出脚 sbit P10=P10; sbit K1= P32; sbit K2= P35; sbit K3= P24; sbit K4= P25; uchar th0_f; /在中断中装载的 T0 的值高 8 位 uchar tl0_f; /在中断中装载的 T0 的值低 8 位 /T0 的值,及输出频率对照表 uchar code freq36*2= 0xA9,0xEF,/00220HZ ,1 /0 0x93,0xF0,/00233HZ ,1# 0x73,0xF1,/00247H

    22、Z ,2 0x49,0xF2,/00262HZ ,2# 0x07,0xF3,/00277HZ ,3 0xC8,0xF3,/00294HZ ,4 0x73,0xF4,/00311HZ ,4# 0x1E,0xF5,/00330HZ ,5 0xB6,0xF5,/00349HZ ,5# 0x4C,0xF6,/00370HZ ,6 0xD7,0xF6,/00392HZ ,6# 0x5A,0xF7,/00415HZ ,7 0xD8,0xF7,/00440HZ 1 /12 0x4D,0xF8,/00466HZ 1# /13 0xBD,0xF8,/00494HZ 2 /14 0x24,0xF9,/00523H

    23、Z 2# /15 0x87,0xF9,/00554HZ 3 /16 0xE4,0xF9,/00587HZ 4 /17 0x3D,0xFA,/00622HZ 4# /18 0x90,0xFA,/00659HZ 5 /19 0xDE,0xFA,/00698HZ 5# /20 0x29,0xFB,/00740HZ 6 /21 0x6F,0xFB,/00784HZ 6# /22 0xB1,0xFB,/00831HZ 7 /23 0xEF,0xFB,/00880HZ 1 0x2A,0xFC,/00932HZ 1# 0x62,0xFC,/00988HZ 2 0x95,0xFC,/01046HZ 2# 0x

    24、C7,0xFC,/01109HZ 3 0xF6,0xFC,/01175HZ 4 0x22,0xFD,/01244HZ 4# 0x4B,0xFD,/01318HZ 5 0x73,0xFD,/01397HZ 5# 0x98,0xFD,/01480HZ 6 0xBB,0xFD,/01568HZ 6# 0xDC,0xFD,/01661HZ 7 /35 ; /定时中断 0,用于产生唱歌频率 timer0() interrupt 1 TL0=tl0_f;TH0=th0_f; /调入预定时值 BEEP=BEEP; /取反音乐输出 IO /* /音乐符号串解释函数 /入口:要解释的音乐符号串,输出的音调串,输

    25、出的时长串 changedata(uchar *song,uchar *diao,uchar *jie) uchar i,i1,j; char gaodi; /高低+/-12 音阶 uchar banyin;/有没有半个升音阶 uchar yinchang;/音长 uchar code jie78=0,12,14,16,17,19,21,23; /C 调的 7 个值 *diao=*song; for(i=0,i1=0;) gaodi=0; /高低=0 banyin=0;/半音=0 yinchang=4;/音长 1 拍 if(*(song+i)=|) | (*(song+i)= ) i+; /拍子间隔和一个空格过滤 switch(*(song+i) case ,: gaodi=-12;i+;/低音 break; case : gaodi=12;i+; /高音 break; if(*(song+i)=0) /遇到 0 结束 *(diao+i1)=0; /加入结束标志 0 *(jie+i1)=0; return; j=*(song+i)-0x30; i+; /取出基准音 j=jie7j+gaodi; /加上高低音 yinc: switch(*(song+i) case #: /有半音 j 加一个音阶 i+;j+; goto yinc; cas


    注意事项

    本文(单片机学习程序.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开