数码管静态显示实验 一. 实验目的 1.熟悉数码管的功能和使用。
2.熟悉延时子程序的编写和使用。 3.初步熟悉单片机软硬件设计方法。
二.实验仪器 计算机、Keil 编程环境、普中下载软件、单片机开发实验仪。
三 .实验原理与内容 P0 口做输出口,接一个共阳极数码管,要求循环显示。共阳极数码管字形表 (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,-共 17 个字形码) 0C0H,0FCH,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0BFH。
四 . 实验线路及原理
五 . 注意事项 1.安装实验仪时,先接通讯串口线,再开电源开关。
2.实验过程中,在进行接插线操作时,必须先关闭电源。 六 . 实验步骤 1、主机连线说明:
JP10 单片机 0 P0 口(8 8 位) JP3 共阳极数码管 七 . 实验步骤 2.打开 Keil 编程软件编写程序,并进行汇编产生 HEX 文件。 (1)流程图
(2)汇编源程序 ORG 00H LJMP MAIN ;初始位置直接跳
转 MAIN 主程序 START; MOV R2,#0 ;赋值 R2=0 MOV R5,#17;赋值 R5=17 MAIN: MOV DPTR,#TAB;将 TAB 地址传送给数据指针 MOV A,R2 ;赋值累加器 A=0 MOVC A,@A+DPTR;将数组第 A+1 的数据赋值 A MOV P0,A ;赋值 P0 数据的数据 INC R2 ;R2 加一 LCALL DELAY ;调用延时子程序 DJNZ R5,MAIN ;R5 减一不为 0 跳转主程序 MAIN JMP START ;跳转 START RET DELAY: MOV R0,#5 ;延时子程序 DL2: MOV R7,#200 DL1: MOV R6,#250
DJNZ R6,$ DJNZ R7,DL1 DJNZ R0,DL2 TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH, END (1) C 语言源程序 #include #define uint unsigned int Uint table [ ]= (0xC0,0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E, 0xBF ) Void delay (int z) { int x,y; for (x=z;x>0;x--) for (y=100;y>0;i++) } Void main ( ) { int i ; While (1) { for (i=0;i<17;i++) { P0=table [i]; delay (1000) // 延时 } } } 3. 点击普中下载软件,检查设置是否正确,然后下载到实验仪的单片机中。
4. 运行程序看结果。反复修改和下载。
八.实验结果及总结 程序编译无误,生成 hex 文件通过普中下载软件,将程序下载到实验 仪 的 单 片 机 中 , 观 察 到 单 片 机 中 数 码 管 依 次 显 示
1,2,3,4,5,6,7,8,9,A,B,C,D,E,F。
总结:本次实验首先应测试静态数码管是共阴极还是共阳极,要注意区分这两种不同类型,为了显示数字与字符,必须对数字或字符进行编码。
因篇幅问题不能全部显示,请点此查看更多更全内容