单片机驱动数码管显示设计
|
图6
|
现在让我们把目标文件"smg1.hex"烧写到单片机中去,看看实际的效果吧,将ISP编程器硬件连接好(见下图7)。
|
图7:ISP
|
将产品配套光盘中的“ISP编程器驱动软件”文件夹复制到你电脑硬盘的D盘根目录下,并将其目录下的所有文件的只读属性去掉,具体操作如下:全选文件夹中的文件,鼠标右键单击出现文件属性对话框,单击“只读”属性前面复选框中的勾,使其只读属性去掉即可。然后双击文件夹中的“ISP编程器驱动软件.exe”启动编程软件,点击"文件",在打开文件的对话框中找到工程文件夹中的目标文件"smg1.hex"打开即可,然后点击“AUTORUN”将程序烧写到单片机内部(如下图8)。
|
图8:将程序烧写到
单片机内部
|
烧写完成了,把单片机从编程器中取出,然后插到S51增强型实验板上,插上USB电源,看看显示效果是不是和上面图4显示一样,是否有一点点的成就感呀!初学者也许会问:数码管显示一个数字“6”就要15行程序,太复杂了?的确有点复杂了,在上面程序中为了显示数字“6”,数码管的段码"b"、段码"dp"输出的是高电平,其它引脚输出的是低电平,实际上从单片机的P0.0~P0.7输出的是二进制码“10000010”,转换成十六进制为82H。因此,我们只要把所有要显示的数字和字符的段码根据硬件连接编制一个字形表,显示时直接把相应的字形码送到P0口就可以了。
共阳LED数码管字形(段码)表
|
||||||||||
显示数字
(字符) |
P0.7
"dp" |
P0.6
"g" |
P0.5
"f" |
P0.4
"e" |
P0.3
"d" |
P0.2
"c" |
P0.1
"b" |
P0.0
"a" |
二进制代码
|
十六进制代码
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
11000000
|
C0H
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
1
|
11111001
|
F9H
|
2
|
1
|
0
|
1
|
0
|
0
|
1
|
0
|
0
|
10100100
|
A4H
|
3
|
1
|
0
|
1
|
1
|
0
|
0
|
0
|
0
|
10110000
|
B0H
|
4
|
1
|
0
|
0
|
1
|
1
|
0
|
0
|
1
|
10011001
|
99H
|
5
|
1
|
0
|
0
|
1
|
0
|
1
|
1
|
0
|
10010110
|
92H
|
6
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
10000010
|
82H
|
7
|
1
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
11111000
|
F8H
|
8
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
10000000
|
80H
|
9
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
0
|
10010000
|
90H
|
A
|
1
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
10001000
|
88H
|
B
|
1
|
0
|
0
|
0
|
0
|
0
|
1
|
1
|
10000011
|
83H
|
C
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
11000110
|
C6H
|
D
|
1
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
10100001
|
A1H
|
E
|
1
|
0
|
0
|
0
|
0
|
1
|
1
|
0
|
10000110
|
86H
|
F
|
1
|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
10001110
|
8EH
|
H
|
1
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
10001001
|
89H
|
O
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
0
|
11000000
|
A3H
|
P
|
1
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
10000100
|
8CH
|
N
|
1
|
1
|
0
|
0
|
1
|
0
|
0
|
0
|
11001000
|
C8H
|
从上面表格中可以看到,显示“6”的十六进制段码值为"82H",因此我们把刚才的程序修改一下,修改后的完整程序如下:
MAIN:MOV P0,#82H ;将数字"6"的段码输出到P0口
MOV P2,#0FEH;从P2口输出数码管选通代码,即输出二进制“11111110”
AJMPMAIN;跳转到开始重新进行
END ;程序结束
手机电池相关文章:手机电池修复
单片机相关文章:单片机教程
单片机相关文章:单片机视频教程
单片机相关文章:单片机工作原理
评论