实验内容:51单片机的串行口连接74LS164进行串行/并行转换,然后输出到一个七段数码管。数码管循环显示0-9这10个数字。要求采用串行通信方式0,定时间隔1秒。
工具:proteus+keil
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar i=0;
uchar TIMER=20;
void init()//定时器中断初始化
{
TR0=1;//定时器0开启
ET0=1;//启用定时器
EA=1;//开总中断
TMOD=0x01;//定时器0方式1
TL0=(65536-50000)%256;//50ms的低四位初值
TH0=(65536-50000)/256;//高四位初值
while(TIMER!=0)
;
TIMER=20;
}
void main()
{
SCON=0x00;//串行口工作方式0
TI=0;
while(i<=9)
{
SBUF=seg[i];
init();
i++;
if(i==10){i=0;}
}
}
void tm() interrupt 1//定时器子函数
{
TL0=(65536-50000)%256;//50ms的低四位初值
TH0=(65536-50000)/256;//高四位初值
TIMER--;
}
keil+proteus源文件下载:
https://download.csdn.net/download/weixin_52417692/85236594
版权声明:本文为weixin_52417692原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。