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

    吉林大学单片机实验课代码.docx

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

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

    吉林大学单片机实验课代码.docx

    1、实验四LED 点阵显示屏一、实验目的和要求了解 LED 点阵显示的基本原理和实现方法。掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法。二、实验内容了解 16*16 点阵电路的原理,编写汇编语言程序。编写一行汉字字符(至少三个字)的显示程序。能够从左到右(或从右到左)循环显示(要求显示过程中字的大小与屏幕尺寸相适应)。三、思考题1. 如何使用软件调整和控制 LED 点阵的亮度调整扫描频率2. 如何尽量避免显示过程中的闪烁提高扫描频率,根据人眼的停留效应,一般刷新频率提高到 24HZ 以上时基本可以消除闪烁。3. 如何将本实验的软硬件推广到多行多列的 LED 显示屏(如 64*1280)硬件

    2、放面可以通过添加新的 LED 发光管,以及 74HC595 器件实现;软件方面,将控制行扫描的 16 为数字 0FFFEH 修改为 64 位数 0FFFF FFFF FFFF FFFEH.四、程序代码ORG 0000H LJMP START ORG 000BH LJMP EINT0 ORG 0040HSTART:OE1 EQU P0.7 ;存储器 x 方向使能端口OE2 EQU P0.4 ;存储器 y 方向使能端口SER1 EQU P0.0 ;移位寄存器串行行输入口 Dx SER2 EQU P0.3 ;移位寄存器串行列输入口 DySRCK1 EQU P0.1 ;移位寄存器 x 方向时钟输入口S

    3、RCK2 EQU P0.5 ;移位寄存器 y 方向时钟输入口RCK1 EQU P0.2 ;存储器 x 方向时钟输入口RCK2 EQU P0.6 ;存储器 y 方向时钟输入口MOV DPTR,#TABLE1;表首地址MOV TMOD,#01H;定时器控制字,选择定时器工作方式为定时MOV IE,#82H;中断允许屏蔽控制字,中断设置,定时器 0 允许中断L0:MOV R4,#0;偏移L2:MOV R3,#01FH;时间控制,一个屏幕的时间40msS0:MOV R0,#15;行控制S00:CLR SRCK1;行清零CLR SER1; 行 数 据 清 零 SETB SRCK1;上升沿读入数据DJNZ

    4、 R0,S00;自减一,循环S1:MOV R0,#0CLR SRCK1;从第一开始选中SETB SER1 SETB SRCK1S2:MOV A,R0;计数器ADD A,R4MOVC A,A+DPTR;寻址,将 R0,R4 控制的地址取出MOV R1,#8;前 8 位,循环控制S3:CLR SRCK2RRC A;向右移MOV SER2,C; 溢 出 一 位 给 C SETB SRCK2;上升沿输出数据DJNZ R1,S3;R1!=0,则跳转 S3 INC R0;重复第二组 8 位MOV A,R0 ADD A,R4MOVC A,A+DPTRMOV R1,#8S4:CLR SRCK2 RRC AMO

    5、V SER2,C SETB SRCK2 DJNZ R1,S4 INC R0S5:CLR RCK1 SETB RCK1 CLR RCK2 SETB RCK2CLR OE1 ;使能段有效CLR OE2LCALL TIME;长跳转SETB OE1 SETB OE2CLR SRCK1;下一行CLR SER1SETB SRCK1CJNE R0,#32,S2;不相等跳转,一个屏幕的 32 个 8 DJNZ R3,S0 ;不等于零跳转窗口大小固定MOV A,R4 ADD A,#2 MOV R4,ACJNE R4,#128,L2;四个字,432,32 个 8 位是一个字,结束之后,循环回到开始 。LJMP L

    6、0TIME:;延迟实现MOV TH0,#0FFHMOV TL0,#3CH;0.2ms SETB TR0MOV R7,#0H T11:CJNE R7,#1H,T11 RET;定时器 0 中断处理程序EINT0:MOV R7,#1H RETITABLE1:DB 20H,00H,24H,00H,24H,0FCH,24H,88H,24H,88H,24H,88H,0FCH,88H; DB 24H,88H,24H,88H,24H,88H,24H,0FCH,24H,00H,20H,00H,00H,00H;?,0DB 10H,40H,11H,80H,16H,00H,0FFH,0FCH,12H,00H,11H,

    7、00H,00H,20H;DB 10H,0C0H,13H,00H,0FFH,0FCH,13H,00H,10H,0C0H,10H,20H,00H,00H;?,1DB 08H,04H,08H,04H,08H,08H,08H,10H,08H,60H,0BH,80H,0FCH,00H; DB 0BH,80H,08H,60H,08H,10H,08H,08H,08H,04H,08H,04H,00H,00H;?,2DB 1CH,40H,10H,40H,92H,40H,52H,40H,12H,44H,92H,44H,52H,0FCH;DB 12H,0C0H,33H,40H,52H,40H,90H,40H,10H

    8、,40H,1CH,40H,00H,00H;?,3 END五、实验改进将实验现象从左到右显示改为从上到下显示。改进方法:将 SER1 和 SER2 以及 SRCK1 和SRCK2 调换。步进电机ORG 0000H ;复位起始地址LJMP STARTORG 000BH ;中间地址保留给中断向量表,定时器 0 中断程序入口地址LJMP EINT0ORG 0040H ;程序实际起始地址START:P4 EQU 0C0H ;单片机 P4 口地址P4SW EQU 0BBHCLK EQU P4.4 ;移位寄存器的时钟线接单片机模拟串口时钟DAT EQU P4.5 ;移位寄存器的数据线接单片机模拟串口数据MO

    9、V P4SW,#70HMOV DPTR,#TAB ;将段码表首地址传给数据指针寄存器 s = 23869 -5D3ELP:MOV R3,#0 ;数码管显示用,代表个位MOV R4,#0 ;数码管显示用,代表十位MOV R5,#0 ;数码管显示用,代表百位I1:MOV TMOD,#01H ; 选择定时工作方式,即对 TMOD 赋初值。T0 工作在方式 1,16位的计数器,GATE(门控位)等于 0,C/T 等于 0 表示定时方式MOV IE,#82H ;中断允许寄存器 IE,中断总体允许控制位置 EA 置 1,定时器 T0 溢出中断允许控制位置 1ORL IP,#2H ;优先级寄存器 IP,设置

    10、定时器 T0 中断优先级高SETB P1.1 ;步进电机驱动芯片的 CE1 置高SETB P1.4 ;步进电机驱动芯片的 CE2 置高NEXT:JB P3.7,OPP ;单片机的 P3.7 位接 S2 开关,如果 P3.7 等于 1,即 S2 按下,则跳转MOV R0,#00101101B ;松开 S2,步进电机逆时针转动MOV 20H,R0 ;将步进电机的脉冲时序保存到 20H 地址中LJMP SS1OPP:MOV R0,#01111000B ;按下 S2,步进电机顺时针转动MOV 20H,R0 ;将步进电机的脉冲时序保存到 20H 地址中SS1:JB P3.6,SPD ;单片机的 P3.6

    11、 接 S1 开关,如果 P3.6 等于 1,即 S1 按下,则跳转MOV R2,#0H ;松开 S1,步进电机慢速旋转;23870 5D3E LJMP L0SPD:MOV R2,#1H ;按下 S1,步进电机快速旋转L0:MOV R1,#4 ;根据步进电机的双四拍工作模式,将对应的循环次数 4 保存到 R1 中MOV R0,20H ;取出步进电机的脉冲时序(顺时针/逆时针),存入 R0 中L1:MOV A,R0 ;将 R0 保存的脉冲时序(顺时针/逆时针),存入累加器 A 中RLC A ;累加器 A 循环左移,进位位 C 受到影响MOV P3.2,C ;将脉冲的高一位送入步进电机驱动芯片与单片

    12、机 P3.2 相连的 IN1 中RLC A ;累加器 A 循环左移,进位位 C 受到影响MOV P1.0,C ;将脉冲的低一位送入步进电机驱动芯片与单片机 P1.0 相连的 IN2 中MOV R0,A ;将累加器 A 循环左移两次后的结果保存到 R0 中LCALL NUM ;调用 LED 显示器的子程序,显示步进电机已转动的次数LCALL TIME ;调用定时器的子程序DJNZ R1,L1 ;R4 先减 1,若不等于 0,则跳转,否则顺次执行下一条指令LJMP NEXT ;重新判断开关是否按下,这是一个死循环;定时器子程序TIME:CJNE R2,#1,SLOW ;R2 表示步进电机转速,等于

    13、 0 慢速,跳转到 SLOW;等于 1 快速,顺次执行下一条指令MOV TH0,#5DH ;快速,60 转/分MOV TL0,#3EHSETB TR0 ;TR0 置 1,定时器 0 启动MOV R7,#0H ;R7 为中断判断标志,置 0 TIM1:CJNE R7,#1H,TIM1 ;R7 若小于 1 则跳转,等待定时器中断产生;若等于 0 则顺次执行下一条指令LJMP OUTSLOW:MOV R6,#6 ;慢速,10 转/分,设置嵌套循环 6 次TIM2:MOV TH0,#5DH MOV TL0,#3EHSETB TR0 ;TR0 置 1,定时器 0 启动MOV R7,#0H ;R7 为中断

    14、判断标志,置 0 TIM3:CJNE R7,#1H,TIM3 ;R7 若小于 1 则跳转,等待定时器中断产生;若等于 0 则顺次执行下一条指令DJNZ R6,TIM2 ;先将 R6 减 1,若不为 0 则跳转,否则顺次执行下一条指令OUT:RET ;返回主程序处;定时器 0 中断处理程序EINT0:MOV R7,#1 ;中断标志置 1RETI;调用 LED 显示器的子程序,显示步进电机已转动的次数NUM:S0:MOV A,R3 ;将 R3 表示的个位传给累加器 ACALL EXP ;调用数码管显示子程序,显示个位MOV A,R4 ;将 R4 表示的十位传给累加器 A CALL EXP ;调用数

    15、码管显示子程序,显示十位MOV A,R5 ;将 R5 表示的百位传给累加器 A CALL EXP ;调用数码管显示子程序,显示百位CJNE R3,#9,S1 ;R3 表示的个位若等于 9,表示要进位,则顺次执行下一条指令,否则跳转MOV R3,#0 ;个位清零CJNE R4,#9,S2 ;R4 表示的十位若等于 9,表示要进位,则顺次执行下一条指令,否则跳转MOV R4,#0 ;十位清零CJNE R5,#9,S3 ;R5 表示的百位若等于 9,表示要进位,则顺次执行下一条指令,否则跳转MOV R5,#0 ;百位清零S1: INC R3 LJMP STOP S2: INC R4 LJMP STO

    16、P S3: INC R5 LJMP STOP STOP:RETEXP:MOV 21H,R0;相当于压栈,保存调用该子程序前 R0 的值,防止修改 R0 的值MOVC A,A+DPTR;变址寻址方式,将累加器(变址寄存器)与数据指针寄存器(基址寄存器)保存的数相加,并将该数(地址)的内容传给累加器 A,得到要显示在某一发光管上的字段码MOV R0,#8;设置循环 8 次,从高位到低位依次向移位寄存器输出 8 个比特CLY:CLR CLK ;P4.4 ;CLR 清 0,移位寄存器的时钟线给低电平RLC A ;累加器 A 的逻辑左移,C 进位位置 0 或 1MOVDAT,C;P4.5 位,即将 C

    17、所表示的 0 或 1 送入移位寄存器中(给相应的字段码低电平或高电平,即相应的数码管不亮或亮)SETB CLK ;P4.4 位置 1,即时钟线给高电平,产生上升沿,移位寄存器向低位右移一位(当 8 位都输入后,74HC164 并行输出到相应数码管)DJNZ R0,CLY;R0 先减 1,若不等于 0,则跳转MOV R0,21H;相当于出栈,还原 R0 原来的值RET;返回主程序TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90;共阴极发光二极管 0 到 9 的段选码END实验六#include #include #define uchar un

    18、signed char #define uint unsigned int/数码管初始化sfr P4=0xC0;sfr P4SW=0xBB;sbit sclk=P44;/数码管移位寄存器的时钟线sbit sdata=P45;/数码管移位寄存器的数据线/液晶屏初始化sbit CS1=P17;/片选信号,液晶左半屏显示sbit CS2=P16; /片选信号,液晶右半屏显示sbit E=P33;/液晶屏使能sbit RW=P34;/读/写选择器引脚(R/W) sbit RS=P35;/数据/命令选择器引脚(R/S) sbit RES=P15;/复位 低电平有效sbit BUSY=P27;/当前为运行

    19、状态/直流电机初始化sbit swh1=P36;/开关 1sbit swh2=P37;/开关 2sbit motor=P11;uchar code zima1032= 0x00,0x00,0xC0,0xE0,0x30,0x10,0x08,0x08,0x08,0x08,0x08,0x18,0x30,0xE0,0xC0,0 x00, 0x00,0x00,0x07,0x0F,0x18,0x10,0x20,0x20,0x20,0x20,0x20,0x10,0x18,0x0F,0x07,0x00,/*0*0/0x00,0x00,0x00,0x10,0x10,0x10,0x10,0xF0,0xF8,0x0

    20、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x3F,0x3F,0x20,0x20,0x20,0x20,0x00,0x00,0x00,/*1*1/0x00,0x00,0x60,0x50,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x98,0xF0,0x70,0x00,0x00,0x00,0x00,0x20,0x30,0x28,0x28,0x24,0x24,0x22,0x22,0x21,0x20,0x30,0x18,0x00,0x00,/*2*2/0x00,0x00,0x30,0

    21、x30,0x08,0x08,0x88,0x88,0x88,0x88,0x58,0x70,0x30,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x11,0x1F,0x0E,0x00,0x00,/*3*3/0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x20,0x10,0xF0,0xF8,0xF8,0x00,0x00,0x00,0x00,0x00,0x04,0x06,0x05,0x05,0x04,0x24,0x24,0x24,0x3F,0x3F,0x3F,0x24,0x24,

    22、0x24,0x00,/*4*4/0x00,0x00,0x00,0xC0,0x38,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x08,0x08,0x00,0 x00, 0x00,0x00,0x18,0x29,0x21,0x20,0x20,0x20,0x20,0x20,0x30,0x11,0x1F,0x0E,0x00,0x00,/*5*5/0x00,0x00,0x80,0xE0,0x30,0x10,0x98,0x88,0x88,0x88,0x88,0x88,0x98,0x10,0x00,0x00,0x00,0x00,0x07,0x0F,0x19,0x31,0x20,0

    23、x20,0x20,0x20,0x20,0x20,0x11,0x1F,0x0E,0x00,/*6*6/0x00,0x00,0x30,0x18,0x08,0x08,0x08,0x08,0x08,0x88,0x48,0x28,0x18,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x3E,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*7*7/0x00,0x00,0x70,0x70,0xD8,0x88,0x88,0x08,0x08,0x08,0x08,0x98,0x70,0x70,0x00,0 x00, 0x

    24、00,0x0C,0x1E,0x12,0x21,0x21,0x20,0x21,0x21,0x21,0x23,0x12,0x1E,0x0C,0x00,0x00,/*8*8/0x00,0xE0,0xF0,0x10,0x08,0x08,0x08,0x08,0x08,0x08,0x18,0x10,0xF0,0xC0,0x00,0x00,0x00,0x00,0x11,0x33,0x22,0x22,0x22,0x22,0x22,0x32,0x11,0x1D,0x0F,0x03,0x00,0x00,/*9*9/;uchar tab10= 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0

    25、x0F8,0x80,0x90;/0-9uchar tspeed=0;/脉冲计数uchar cspeed=0;/当前转速uchar xspeed=130;/预期转速uchar speedUp = 160;/最高转速uchar speedLow =100;/最低转速uchar t1_cnt=0; /1s=50ms*20,进入定时器 1 中断次数清 0/占空比设置int N=50;/累加变量每次加 Nint M=256;/实验中取 M=256 可以使程序更简单int X=0;/累加变量void send_byte(uchar dat ,uchar cs1,uchar cs2);/写一个数据void

    26、send_all(uint page,uint lie,uint offset); /写一个数据串void init();/数码管和中断初始化void clearscreen(); void init_yejing();void sendbyte(uchar ch); void display(uchar n); void delay1();void delay2(); void delay(uint x)while(x-) ;void main()init(); init_yejing(); motor=0;while(1)clearscreen();send_all(1,3,speedLo

    27、w/100);/最低值百位send_all(1,4,(speedLow/10)%10);/最低值十位send_all(1,5,speedLow%10);/最低值个位send_all(3,3,cspeed/100);/当前值百位send_all(3,4,(cspeed/10)%10);/当前值十位send_all(3,5,cspeed%10);/当前值个位send_all(5,3,speedUp/100);/最高值百位send_all(5,4,(speedUp/10)%10);/最高值十位send_all(5,5,speedUp%10);/最高值个位delay1();display(cspeed

    28、);/数码管显示delay(50000);/数码管和中断初始化void init()P4SW=0x30;IT0=1;/外部中断 0 边沿触发方式EA=1;/中断使能ET1=1;/定时器 1ET0=1;/定时器 0EX0=1;/ 外 部 中 断 INT0 TMOD=0x11; /16 位寄存器,模式 1/初始化 1 定时器 1 时间TH1=0x3C;TL1=0xB0;/50ms:65536-50000=15536/初始化定时器 0 时间TH0=0xFF;TL0=0x9C;/0.1ms:65536-100=65436TR0=1;/启动定时器 0TR1=1;/启动定时器 1/外部中断 0void e

    29、x_int0() interrupt 0/每次中断意味着转了一圈tspeed+;/脉冲计数值加 1/计时器中断 0void t0_int() interrupt 1/每 0.1ms 进入此中断程序一次,在中断程序中继续启动,为了稳定电机的转速/定时器,这样就能持续给直流电机供电了TH0=0xFF;TL0=0x9C;/累加进位法X+=N; if(XM)motor=0;X-=M;elsemotor=1;/计时器中断 1void t1_int() interrupt 3/50ms,每 1s 测量转速,调整一次速度if(+t1_cnt20)TH1=0x3C;TL1=0xB0;/每 50ms 进入此中断程序一次,进入 20 次后统计转了多少圈if(swh1=0)/S1 按下xspeed = speedLow;/xspeed 预期转速为低目标转速if(swh2=0)/S2 按下


    注意事项

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

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




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

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

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


    收起
    展开