#include <iom128v.h>
#include <macros.h>
#include "lcd12864.h"
#define u8 unsigned char
#define u16 unsigned int
// 阴码 逆向 列行式
const unsigned char number[11][16] =
{
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*"0",0*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"1",1*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*"2",2*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*"3",3*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*"4",4*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*"5",5*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,/*"6",6*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*"7",7*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*"8",8*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,/*"9",9*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // 10
};
// 自然风
char hz1[]=
{
0x00,0x00,0x00,0xF8,0x88,0x8C,0x8A,0x89,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0xFF,0x00,0x00,0x00,0x00,/*"自",0*/
0x40,0x20,0x58,0x97,0x24,0xC4,0x3C,0x10,0x10,0xD0,0x3F,0xD0,0x12,0x14,0x10,0x00,
0x80,0x68,0x04,0x02,0x21,0xC0,0x08,0x04,0x23,0xC0,0x00,0x00,0x23,0xC4,0x08,0x00,/*"然",1*/
0x00,0x00,0xFE,0x02,0x12,0x22,0xC2,0x02,0xC2,0x32,0x02,0xFE,0x00,0x00,0x00,0x00,
0x80,0x60,0x1F,0x00,0x20,0x10,0x0C,0x03,0x0C,0x30,0x00,0x0F,0x30,0x40,0xF8,0x00,/*"风",2*/
};
// 常风
char hz2[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x20,0x18,0x08,0xEA,0xAC,0xA8,0xA8,0xAF,0xA8,0xA8,0xAC,0xEA,0x08,0x28,0x18,0x00,
0x00,0x00,0x3E,0x02,0x02,0x02,0x02,0xFF,0x02,0x02,0x12,0x22,0x1E,0x00,0x00,0x00,/*"常",0*/
0x00,0x00,0xFE,0x02,0x12,0x22,0xC2,0x02,0xC2,0x32,0x02,0xFE,0x00,0x00,0x00,0x00,
0x80,0x60,0x1F,0x00,0x20,0x10,0x0C,0x03,0x0C,0x30,0x00,0x0F,0x30,0x40,0xF8,0x00,/*"风",1*/
};
// 睡眠风
char hz3[]=
{
0xFC,0x24,0x24,0xFC,0x00,0x20,0xE4,0x24,0x24,0xFE,0x22,0x23,0xE2,0x20,0x00,0x00,
0x3F,0x11,0x11,0x3F,0x00,0x49,0x4F,0x49,0x49,0x7F,0x49,0x49,0x4F,0x49,0x01,0x00,/*"睡",0*/
0x00,0xFC,0x24,0x24,0x24,0xFC,0x00,0xFE,0x22,0x22,0xE2,0x22,0x22,0x3E,0x00,0x00,
0x00,0x3F,0x11,0x11,0x11,0x3F,0x00,0xFF,0x41,0x21,0x07,0x19,0x21,0x41,0xF1,0x00,/*"眠",1*/
0x00,0x00,0xFE,0x02,0x12,0x22,0xC2,0x02,0xC2,0x32,0x02,0xFE,0x00,0x00,0x00,0x00,
0x80,0x60,0x1F,0x00,0x20,0x10,0x0C,0x03,0x0C,0x30,0x00,0x0F,0x30,0x40,0xF8,0x00,/*"风",2*/
};
char hz4[]=
{
0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00,/*"时",0*/
0x00,0xF8,0x01,0x06,0x00,0xF0,0x12,0x12,0x12,0xF2,0x02,0x02,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x00,0x00,0x00,0x1F,0x11,0x11,0x11,0x1F,0x00,0x40,0x80,0x7F,0x00,0x00,/*"间",1*/
};
// 4 56
void Display_Num(u8 x,u8 y,u16 num,u8 clear)
{
u8 shi,ge;
shi = num/10;
ge = num%10;
if(clear == 0)
{
Display_Char(y,x*8+8,(unsigned char*)number[shi]);
Display_Char(y,x*8+16,(unsigned char*)number[ge]);
}
else
{
Display_Char(y,x*8+8,(unsigned char*)number[10]);
Display_Char(y,x*8+16,(unsigned char*)number[10]);
}
}
// 初始化定时器1
void timer1_init()
{
TCNT1H=(65536-50000)/256;//50ms溢出中断
TCNT1L=(65536-50000)%256;
TCCR1B=0x02;//8分频,8MHz晶振,1us
TIMSK=0x04;
SREG=0x80; // 打开总中断
}
//
// pwm定时器设置
void timer0_pwm(void)
{
DDRB=0X10; //将 PB4 设置为输出
TCCR0=0X00; //关闭
TCNT0=0; //计数器初值为 0
TCCR0=0X6A; //设置为快速 pwm 模式,采取 8 分频
}
// 显示汉字
void Play_Hz(u8 x,u8 y,u8 *bmp)
{
u8 i = 0;
for(i = 0;i < 3;i++)
{
Display_Hz(y,x+16*i,bmp+32*i);
}
}
// 延时程序
void delay(u16 t)
{
u16 i = 0,j = 0;
for(i = 0; i < t;i++) // 延时计数
for(j = 0; j < 100;j++); // 延时计数
}
u8 Timer = 10; // 定时器定时器时间
u8 Mode = 1; // 模式
u8 Start = 0; // 启动标志位
void main(void)
{
DDRF = 0x00;
PORTF= 0xFF;
DDRE &= 0xFC;
PORTE = 0x03;
init_devices();
timer0_pwm(); // 初始化PWM
timer1_init(); // 初始化定时器
LCD12864_init(); // 初始化LCD
OCR0 = 0X46; // OCR0/0XFF=OCR0/256,占空比可调
// TCCR0=0X0A; // PWM关闭
while(1)
{
if((PINF&0x01)==0x00) // 自然风按下
{
Mode = 1;
OCR0 = 0X46; // 占空比 30%
}
if((PINF&0x02)==0x00) // 常风按下
{
Mode = 2;
OCR0 = 0X26; // 占空比 20%
}
if((PINF&0x04)==0x00) // 睡眠风按下
{
Mode = 3;
OCR0 = 0XA6; // 占空比 70%
}
if((PINF&0x08)==0x00) // 设置当前时间
{
delay(10);
if((PINF&0x08)==0x00) // 设置当前时间
{
Timer = Timer+10;
while(!(PINF&0x08)); // 按键释放
if(Timer > 60)
{
Timer = 0;
}
}
}
if((PINF&0x10)==0x00) // 睡眠风按下
{
if(Timer != 0) // 启动时间不能为0
Start = 1; // 启动
}
if(Mode == 1)
{
Play_Hz(16,2,hz1); // 自然风
}
else if(Mode == 2)
{
Play_Hz(16,2,hz2); // 常风
}
else if(Mode == 3)
{
Play_Hz(16,2,hz3); // 睡眠风
}
if(Start == 0)
{
TCCR0=0X0A; // PWM关闭
}
else if(Start == 1)
{
TCCR0=0X6A; // PWM打开
}
Display_Num(3,4,Timer,0); // 显示时间
}
}
#pragma interrupt_handler timer1:15/*定时器溢出中断向量标号*/
void timer1()
{
static u16 Tmr = 0;
TCNT1H=(65536-1000)/256;
TCNT1L=(65536-1000)%256; // 定时4ms
if(++Tmr >= 250)
{
Tmr = 0;
if(Start == 1) // 启动标志位启动
{
if(--Timer > 60)
{
Timer = 0;
Start = 0;
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
模拟的电风扇的工作状态有3种:自然风、常风及睡眠风。使用三个按键S1-S3设置自然风、常风及睡眠风。 再使用两个按键S4和S5,S4用于定时电风扇定时时间长短的设置,每按一次S4键,定时时间增加10秒,最长60秒,超过60秒回到0秒重新开始。按下S5键表示定时倒计时开始。 按下相应的风类键,使用处理器ATmega128定时/计数器的PWM功能生成不同占空比的1KHz的PWM信号来驱动直流电动机MOTOR-DC(模拟电风扇电机)。“自然风”:生成占空比为30%的PWM信号,“睡眠风”: 生成占空比为20%的PWM信号,“常风”:生成占空比为70%的PWM信号. 使用8LED数码管或液晶显示屏显示电风扇的工作状态、动态显示使用电风扇的定时功能时的剩余定时时间。使用8LED数码管和液晶显示屏LM041L时,“自然风”显示“1”、“常风”显示“2”及“睡眠风”显示“3”,使用12864液晶显示屏LGM12641BS1R LM3228时使用中文显示。
资源推荐
资源详情
资源评论
收起资源包目录
AVR128 智能风扇设计-proteus-程序-报告.rar (60个子文件)
AVR128 智能风扇设计-proteus-程序-报告
UI70R_]2T81T%[NYBS825`K.png 98KB
视频
LP_20210225182741.avi 17.06MB
1.程序.rar 59KB
智能风扇设计课程设计报告.doc 259KB
2.仿真.rar 40KB
1.程序
delay.c 838B
MAIN.mp 3KB
delay.lis 5KB
main.c 6KB
main.prj 1KB
MAIN.lk 28B
MAIN.dbg 6KB
lcd12864.lis 30KB
BACKUP
lcd12864.c.210224190718 4KB
lcd12864._c 4KB
lcd12864.c.200513203400 4KB
lcd12864.c.200513220802 4KB
lcd12864.c.210224191250 4KB
main.c.200510143128 1KB
lcd12864.h.200510142730 783B
main.c.200510142656 316B
lcd12864.h.200513203718 827B
lcd12864.c.210224191306 4KB
lcd12864.c.210224190452 4KB
lcd12864.c.210224191228 4KB
main._c 1KB
lcd12864.c.200513203718 5KB
lcd12864.c.210224190920 5KB
lcd12864.h.200513220802 841B
lcd12864.c.200510142314 0B
lcd12864.c.210224191042 4KB
lcd12864._h 845B
lcd12864.c.210224185346 4KB
lcd12864.h.210224190920 917B
main.c.200510142304 0B
lcd12864.h.200510142614 408B
lcd12864.c.200513220608 4KB
lcd12864.h.200513203744 785B
lcd12864.h.200510142322 0B
lcd12864.c.210224191408 4KB
lcd12864.h.200513220608 820B
main.c.200510142730 1KB
lcd12864.c.210224190700 4KB
lcd12864.c.200513203744 4KB
lcd12864.c.200510142614 4KB
lcd12864.c.210224191128 4KB
main.lis 94KB
lcd12864.c 4KB
delay.h 179B
MAIN.SRC 83B
MAIN.hex 6KB
MAIN.mak 995B
MAIN.cof 10KB
lcd12864.h 981B
2.仿真
智能风扇设计.PWI 2KB
Last Loaded 智能风扇设计.DBK 117KB
智能风扇设计.DSN 117KB
智能风扇设计.pdsprj.SD-20210509LTML.Administrator.workspace 328B
3.需求
5b4ce7a53c8d9b7d271772999f022978.jpg 308KB
[NY(XSC7S8]VNG7Q$6DN7K2.png 60KB
共 60 条
- 1
资源评论
- 大雾散尽5582023-03-10这个资源内容超赞,对我来说很有价值,很实用,感谢大佬分享~
- 大雾散尽5582023-03-10终于找到了超赞的宝藏资源,果断冲冲冲,支持!
bbxyliyang
- 粉丝: 96
- 资源: 181
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5uonly.apk
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
- 基于MIC+NE555光敏电阻的声光控电路Multisim仿真原理图
- 基于JSP毕业设计-基于WEB操作系统课程教学网站的设计与实现(源代码+论文).zip
- 基于LM324和LM386的音响放大器Multisim仿真+PCB电路原理图
- Python机器学习与数据挖掘环境配置与库验证
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功