单片机lcd1602程序 c语言,单片机I2C通信及LCD1602显示C程序
/********************************************************************/
/*******************I2C模拟通信及AT24C02底层驱动程序****************/
/********************************************************************/
//AT24C02
//delayus:延时约5us
void delayus()
{
;;
}
//i2c:initI2C总线初始化
void i2c_init()
{
SCL = 1;
delayus();
SDA = 1;
delayus();
}
//lcd:start 起始信号
void start()
{
SCL = 1;
SDA = 1;
delayus();
SDA = 0;
delayus();
}
//i2c:stop停止信号
void stop()
{
SCL = 1;
SDA = 0;
delayus();
SDA = 1;
delayus();
}
//i2c:ack从机应答信号
void ack()
{
uchar i = 0;
//在SCL = 1时,读取SDA的数据判忙
SCL = 1;
delayus();
while((SDA == 1)&& i < 250)
i++;
//判忙之后,等待发送数据/命令
SCL = 0;
delayus();
}
//nack:主机非应答信号
void nack()
{
//主机发送非应答信号1
SCL = 1;
delayus();
SDA = 1;
delayus();
//等待发送数据/命令
SCL = 0;
delayus();
}
//write:byte写一个字节数据
void write_byte(uchar date)
{//从最高位发送
uchar i, temp;
temp = date;
for(i = 0; i < 8; i++)
{
temp <<= 1;
SCL = 0;
delayus();
SDA = CY;
delayus();
SCL = 1;
delayus();
SCL = 0;
delayus();
}
//等待从机应答
SCL = 0;
delayus();
SDA = 1;//置1,等待从机应答0
delayus();
}
//read:byte 读一个字节数据
uchar read_byte()
{
uchar i, j, k;
SCL = 0;
delayus();
for(i = 0; i < 8; i++)
{
SCL = 1;
delayus();
j = SDA;
k = (k << 1) | j;
delayus();
SCL = 0;
delayus();
}
delayus();
return (k);
}
//write:AT24C02 写AT24C02
void write_c02(uchar address, uchar date)
{
start();
write_byte(write_add);
ack();
write_byte(address);
ack();
write_byte(date);
ack();
stop();
delay(12);
}
//read:AT24C02读AT24C02
uchar read_c02(uchar add)
{
uchar date = 0;
start();
write_byte(write_add);
ack();
write_byte(add);
ack();
start();
write_byte(read_add);
ack();
date = read_byte();
nack();
return (date);
}
//display:数码管显示程序
void display(uchar num)
{
uchar bai, shi, ge;
bai = num / 100 % 10;
shi = num / 10 % 10;
ge = num % 10;本文引用地址:http://www.eepw.com.cn/article/201612/324620.htm
dula = 1;
P0 = table[bai];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfe;
wela = 0;
P0 = 0x00;
delay(1);
dula = 1;
P0 = table[shi];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfd;
wela = 0;
P0 = 0x00;
delay(1);
dula = 1;
P0 = table[ge];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfb;
wela = 0;
P0 = 0x00;
delay(1);
}
/********************************************************************/
/*************************UART串口通信******************************/
/********************************************************************/
//uart:initUART初始化
void uart_init()
{
TMOD = 0x20;
TH1 = 0xFD; //9600bps/s
TL1 = 0xFD;
TR1 = 1;
SM0 = 0;
SM1 = 1;
REN = 1;
EA = 1;
ES = 1;
}
//main:主程序
void main(void)
{
i2c_init();
lcd_init();
uart_init();
//LCD1602
write_cmd(0x80);
send_string(string_1);
write_cmd(0x80 + 0x40);
send_string(string_2);
//AT24C02
write_c02(0x0a, 0xaa);
num = read_c02(0x0a);
while(1)
{
display(num);
if(flag == 1)
{
ES = 0;
SBUF = num;
while(!TI);
TI = 0;
flag = 0;
ES = 1;
}
}
}
//UART:INT 串口中断程序
void uart_int() interrupt 4
{
RI = 0;
num = SBUF;
flag= 1;
}
单片机lcd1602程序 c语言,单片机I2C通信及LCD1602显示C程序相关推荐
- 单片机设计时钟程序c语言,单片机电子时钟程序设计
共用体除非必要,否则我们不推荐使用,枚举的用法比较简单,在本书 19 章的项目实践中有很好的示例,这节课我们先来练习一下结构体的使用.下边这个程序的功能是一个带日期的电子钟,相当于一个简易万年历了,并 ...
- 想设计一个母亲节小程序c语言,明天母亲节,用这款小程序,给妈妈送一张贺卡吧!...
原标题:明天母亲节,用这款小程序,给妈妈送一张贺卡吧! 小程序体验师:陈丹阳 妈妈,再打我一次吧. 明天就是一年一度的母亲节了,还没想好给妈妈送什么吗? 现在,「知晓程序」就给你推荐一款贺卡小程序「小 ...
- .net应用程序中添加chm帮助文档打开显示此程序无法显示网页问题
在做.net大作业时添加了chm帮助文档结果在打开时显示"此程序无法显示网页问题",但是把帮助文档拷到别的路径下却显示正常, 经过从网上查找,终于找到了答案: (1).chm文件的 ...
- ds18b20程序c语言,单片机中使用DS18B20温度传感器C语言程序(参考6)
/******************************************/ // // DS18B20温度计C程序 // 2007.06.08 /******** ...
- 51单片机电机测速程序c语言,单片机电机测速程序
这个51单片机+电机霍尔测速程序是从一个制作成功的智能小车里面提取出来的 原理图及其源代码压缩包的下载地址:http://www.51hei.com/bbs/dpj-19526-1.html 下面是主 ...
- 数字时钟单片机程序c语言,单片机数字时钟C语言程序
单片机程序 /********************************************************/ #include // 包含51单片机寄存器定义的头文件 unsign ...
- 散转程序c语言,单片机 散转表程序的使用
原标题:单片机 散转表程序的使用 使用散转表可以尽可能的减少程序的编写,方便. 减少判断次数. 程序名:散转程序试验 ;说明: 开使后 1亮,按下任何按键,寄存器r0从零加起,根据r0内容,程序散转到 ...
- 散转程序c语言,单片机 散转程序设计 软件实验
单片机 散转程序设计 软件实验 实验九散转程序设计 一.实验目的 1.进一步熟悉MCS-51指令系统和汇编语言程序设计. 2.学会用三种不同的方法设计散转程序,并掌握它们的区别. 二.实验内容 方法一 ...
- 单片机看门狗c语言,单片机看门狗程序
/*此程序实现单片机"看门狗"WDT的功能*/ #include"p18f458.h" unsignedlongi; /*系统初始化子程序*/ voidinit ...
- 单片机看门狗c语言,单片机看门狗程序 -解决方案-华强电子网
*此程序实现单片机"看门狗"WDT的功能*/ #include"p18f458.h" unsignedlongi; /*系统初始化子程序*/ voidiniti ...
最新文章
- linux下如何察看哪个进程在写硬盘
- sourcetree 卡顿_Android卡顿性能监测方案对比
- Integer源码解析
- robot连接mysql_Robotframework使用自写库连接mysql数据库
- Apache Shiro Java 反序列化漏洞解决修复记录
- 分享一个WIN10可用的桌面图标栅栏管理插件Fences的破解版
- 【剑桥英语I优加】剑桥pet相当于什么级别
- 使用 Python 和 Pygame 构建小行星游戏
- PB调用C#开发的控制台应用——实现WORD文档按页转存JPG图片
- 20190927CF训练
- 微信小程序--七彩爱心加载动画
- C++ 次方/次幂函数
- vue 大量图片展示_Ant Design of Vue 展示多张图片
- 产品读书《人人都是产品经理 1.0》
- 教师计算机西沃培训心得,学习使用希沃电子白板的心得体会
- [SV]SystemVerilog压缩数组(Packed Array)和非压缩数组( Unpacked Array)
- 工作三年的Java程序员应该达到什么水平?
- LeetCode Java刷题笔记—876. 链表的中间结点
- 扫雷,潜伏者(python)
- 操作Domino数据库的设计元素